diff options
Diffstat (limited to 'gcc/ChangeLog')
-rw-r--r-- | gcc/ChangeLog | 54877 |
1 files changed, 1 insertions, 54876 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 81595a0..a935ce0 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -56,54883 +56,8 @@ PR target/113112 * config/riscv/riscv-vector-costs.cc (compute_nregs_for_mode): Fix pointer type liveness count. - -2023-12-31 Uros Bizjak <ubizjak@gmail.com> - Roger Sayle <roger@nextmovesoftware.com> - - PR target/43644 - * config/i386/i386.md (*add<dwi>3_doubleword_concat_zext): Tweak - order of instructions after split, to minimize number of moves. - -2023-12-29 Jan Hubicka <jh@suse.cz> - - * config/i386/x86-tune.def (X86_TUNE_AVOID_128FMA_CHAINS, - X86_TUNE_AVOID_256FMA_CHAINS): Enable for znver4 and Core. - -2023-12-29 Tamar Christina <tamar.christina@arm.com> - - PR target/110625 - * config/aarch64/aarch64.cc (aarch64_vector_costs::add_stmt_cost): - Adjust throughput and latency calculations for vector conversions. - (class aarch64_vector_costs): Add m_num_last_promote_demote. - -2023-12-29 Xi Ruoyao <xry111@xry111.site> - - * config/loongarch/loongarch.md (bstrins_<mode>_for_ior_mask): - For the condition, remove unneeded trailing "\" and move "&&" to - follow GNU coding style. NFC. - -2023-12-29 Xi Ruoyao <xry111@xry111.site> - - * config/loongarch/predicates.md - (symbolic_pcrel_offset_operand): New define_predicate. - (mem_simple_ldst_operand): Likewise. - * config/loongarch/loongarch-protos.h - (loongarch_rewrite_mem_for_simple_ldst): Declare. - * config/loongarch/loongarch.cc - (loongarch_rewrite_mem_for_simple_ldst): Implement. - * config/loongarch/loongarch.md (simple_load<mode>): New - define_insn_and_rewrite. - (simple_load_<su>ext<SUBDI:mode><GPR:mode>): Likewise. - (simple_store<mode>): Likewise. - (define_peephole2): Remove la.local/[f]ld peepholes. - -2023-12-29 Uros Bizjak <ubizjak@gmail.com> - - PR target/113133 - * config/i386/i386.md - (TARGET_USE_VECTOR_FP_CONVERTS SF->DF float_extend splitter): - Do not handle xmm16+ with TARGET_EVEX512. - -2023-12-29 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv-v.cc (is_vlmax_len_p): New function. - (expand_load_store): Disallow transformation into VLMAX when len is in range of [0,31] - (expand_cond_len_op): Ditto. - (expand_gather_scatter): Ditto. - (expand_lanes_load_store): Ditto. - (expand_fold_extract_last): Ditto. - -2023-12-28 Uros Bizjak <ubizjak@gmail.com> - - * config/i386/i386.cc (ix86_unary_operator_ok): Move from here... - * config/i386/i386-expand.cc (ix86_unary_operator_ok): ... to here. - * config/i386/i386-protos.h: Re-arrange ix86_{unary|binary}_operator_ok - and ix86_expand_{unary|binary}_operator prototypes. - * config/i386/i386.md: Cosmetic changes with the usage of - TARGET_APX_NDD in ix86_expand_{unary|binary}_operator - and ix86_{unary|binary}_operator_ok function calls. - -2023-12-28 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv-vector-costs.cc (is_gimple_assign_or_call): Change interface. - (get_live_range): New function. - -2023-12-27 Xi Ruoyao <xry111@xry111.site> - - PR target/113148 - * config/loongarch/loongarch.cc (loongarch_secondary_reload): - Check if regno == -1 besides MEM_P (x) for reloading FCCmode - from/to FPR to/from memory. - -2023-12-27 Xi Ruoyao <xry111@xry111.site> - - * config/loongarch/loongarch.md (rotl<mode>3): - New define_expand. - * config/loongarch/simd.md (vrotl<mode>3): Likewise. - (rotl<mode>3): Likewise. - -2023-12-27 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - PR target/113112 - * config/riscv/riscv-vector-costs.cc (is_gimple_assign_or_call): New function. - (get_first_lane_point): Ditto. - (get_last_lane_point): Ditto. - (max_number_of_live_regs): Refine live point dump. - (compute_estimated_lmul): Make unknown NITERS loop be aware of liveness. - (costs::better_main_loop_than_p): Ditto. - * config/riscv/riscv-vector-costs.h (struct stmt_point): Add new member. - -2023-12-27 Chenghui Pan <panchenghui@loongson.cn> - - * config/loongarch/lasx.md: Use loongarch_split_move and - loongarch_split_move_p directly. - * config/loongarch/loongarch-protos.h - (loongarch_split_move): Remove unnecessary argument. - (loongarch_split_move_insn_p): Delete. - (loongarch_split_move_insn): Delete. - * config/loongarch/loongarch.cc - (loongarch_split_move_insn_p): Delete. - (loongarch_load_store_insns): Use loongarch_split_move_p - directly. - (loongarch_split_move): remove the unnecessary processing. - (loongarch_split_move_insn): Delete. - * config/loongarch/lsx.md: Use loongarch_split_move and - loongarch_split_move_p directly. - -2023-12-27 Chenghui Pan <panchenghui@loongson.cn> - - * config/loongarch/lasx.md (vec_concatv4di): Delete. - (vec_concatv8si): Delete. - (vec_concatv16hi): Delete. - (vec_concatv32qi): Delete. - (vec_concatv4df): Delete. - (vec_concatv8sf): Delete. - (vec_concat<mode>): New template with insn output fixed. - -2023-12-27 Li Wei <liwei@loongson.cn> - - * config/loongarch/loongarch.md: Adjust. - -2023-12-27 Haochen Gui <guihaoc@gcc.gnu.org> - - * config/rs6000/rs6000-string.cc (expand_block_compare): Assert - only P7 above can enter this function. Remove P7 CPU test and let - P7 BE do the expand. - -2023-12-27 Haochen Gui <guihaoc@gcc.gnu.org> - - * config/rs6000/rs6000.md (cmpmemsi): Fail when optimizing for size. - -2023-12-27 Haochen Gui <guihaoc@gcc.gnu.org> - - * config/rs6000/rs6000.h (TARGET_EFFICIENT_OVERLAPPING_UNALIGNED): - Remove. - * config/rs6000/rs6000-string.cc (select_block_compare_mode): - Replace TARGET_EFFICIENT_OVERLAPPING_UNALIGNED with - targetm.slow_unaligned_access. - (expand_block_compare_gpr): Likewise. - (expand_block_compare): Likewise. - (expand_strncmp_gpr_sequence): Likewise. - -2023-12-26 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - PR target/113112 - * config/riscv/riscv-vector-costs.cc (compute_estimated_lmul): Tweak LMUL estimation. - (has_unexpected_spills_p): Ditto. - (costs::record_potential_unexpected_spills): Ditto. - -2023-12-25 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv-vector-costs.cc (compute_estimated_lmul): Allow - fractional vecrtor. - (preferred_new_lmul_p): Move RVV V_REGS liveness computation into analyze_loop_vinfo. - (has_unexpected_spills_p): New function. - (costs::record_potential_unexpected_spills): Ditto. - (costs::better_main_loop_than_p): Move RVV V_REGS liveness computation into - analyze_loop_vinfo. - * config/riscv/riscv-vector-costs.h: New functions and variables. - -2023-12-25 Tamar Christina <tamar.christina@arm.com> - - PR bootstrap/113132 - * tree-vect-loop.cc (vect_create_epilog_for_reduction): Initialize vec_stmts; - -2023-12-25 Jeevitha Palanisamy <jeevitha@linux.ibm.com> - Peter Bergner <bergner@linux.ibm.com> - - PR target/110320 - * config/rs6000/rs6000.cc (rs6000_conditional_register_usage): Change - GPR2 to volatile and non-fixed register for PCREL. - * config/rs6000/rs6000.h (FIXED_REGISTERS): Modify GPR2 to not fixed. - -2023-12-25 Andrew Pinski <quic_apinski@quicinc.com> - - PR tree-optimization/19832 - * match.pd (`(a != b) ? (a + b) : (2 * a)`): Add `:c` - on the plus operator. - -2023-12-24 Tamar Christina <tamar.christina@arm.com> - - * doc/sourcebuild.texi (check_effective_target_vect_early_break_hw, - check_effective_target_vect_early_break): Document. - -2023-12-24 Tamar Christina <tamar.christina@arm.com> - - * config/aarch64/aarch64-simd.md (cbranch<mode>4): New. - -2023-12-24 Tamar Christina <tamar.christina@arm.com> - - * tree-if-conv.cc (idx_within_array_bound): Expose. - * tree-vect-data-refs.cc (vect_analyze_early_break_dependences): New. - (vect_analyze_data_ref_dependences): Use it. - * tree-vect-loop-manip.cc (vect_iv_increment_position): New. - (vect_set_loop_controls_directly, - vect_set_loop_condition_partial_vectors, - vect_set_loop_condition_partial_vectors_avx512, - vect_set_loop_condition_normal): Support multiple exits. - (slpeel_tree_duplicate_loop_to_edge_cfg): Support LCSAA peeling for - multiple exits. - (slpeel_can_duplicate_loop_p): Change vectorizer from looking at BB - count and instead look at loop shape. - (vect_update_ivs_after_vectorizer): Drop asserts. - (vect_gen_vector_loop_niters_mult_vf): Support peeled vector iterations. - (vect_do_peeling): Support multiple exits. - (vect_loop_versioning): Likewise. - * tree-vect-loop.cc (_loop_vec_info::_loop_vec_info): Initialise - early_breaks. - (vect_analyze_loop_form): Support loop flows with more than single BB - loop body. - (vect_create_loop_vinfo): Support niters analysis for multiple exits. - (vect_analyze_loop): Likewise. - (vect_get_vect_def): New. - (vect_create_epilog_for_reduction): Support early exit reductions. - (vectorizable_live_operation_1): New. - (find_connected_edge): New. - (vectorizable_live_operation): Support early exit live operations. - (move_early_exit_stmts): New. - (vect_transform_loop): Use it. - * tree-vect-patterns.cc (vect_init_pattern_stmt): Support gcond. - (vect_recog_bitfield_ref_pattern): Support gconds and bools. - (vect_recog_gcond_pattern): New. - (possible_vector_mask_operation_p): Support gcond masks. - (vect_determine_mask_precision): Likewise. - (vect_mark_pattern_stmts): Set gcond def type. - (can_vectorize_live_stmts): Force early break inductions to be live. - * tree-vect-stmts.cc (vect_stmt_relevant_p): Add relevancy analysis for - early breaks. - (vect_mark_stmts_to_be_vectorized): Process gcond usage. - (perm_mask_for_reverse): Expose. - (vectorizable_comparison_1): New. - (vectorizable_early_exit): New. - (vect_analyze_stmt): Support early break and gcond. - (vect_transform_stmt): Likewise. - (vect_is_simple_use): Likewise. - (vect_get_vector_types_for_stmt): Likewise. - * tree-vectorizer.cc (pass_vectorize::execute): Update exits for value - numbering. - * tree-vectorizer.h (enum vect_def_type): Add vect_condition_def. - (LOOP_VINFO_EARLY_BREAKS, LOOP_VINFO_EARLY_BRK_STORES, - LOOP_VINFO_EARLY_BREAKS_VECT_PEELED, LOOP_VINFO_EARLY_BRK_DEST_BB, - LOOP_VINFO_EARLY_BRK_VUSES): New. - (is_loop_header_bb_p): Drop assert. - (class loop): Add early_breaks, early_break_stores, early_break_dest_bb, - early_break_vuses. - (vect_iv_increment_position, perm_mask_for_reverse, - ref_within_array_bound): New. - (slpeel_tree_duplicate_loop_to_edge_cfg): Update for early breaks. - -2023-12-24 Tamar Christina <tamar.christina@arm.com> - - * tree-ssa-loop-im.cc (determine_max_movement): Import insn-codes.h - and optabs-tree.h and check for vector compare motion out of gcond. - -2023-12-24 Hans-Peter Nilsson <hp@axis.com> - - PR middle-end/113109 - * config/cris/cris.cc (cris_eh_return_handler_rtx): New function. - * config/cris/cris-protos.h (cris_eh_return_handler_rtx): Prototype. - * config/cris/cris.h (EH_RETURN_HANDLER_RTX): Redefine to call - cris_eh_return_handler_rtx. - -2023-12-23 Xi Ruoyao <xry111@xry111.site> - - * config/loongarch/loongarch.md (rotrsi3_extend): New - define_insn. - -2023-12-23 Xi Ruoyao <xry111@xry111.site> - - * config/loongarch/loongarch-tune.h - (loongarch_rtx_cost_data::movcf2gr): New field. - (loongarch_rtx_cost_data::movcf2gr_): New method. - (loongarch_rtx_cost_data::use_movcf2gr): New method. - * config/loongarch/loongarch-def.cc - (loongarch_rtx_cost_data::loongarch_rtx_cost_data): Set movcf2gr - to COSTS_N_INSNS (7) and movgr2cf to COSTS_N_INSNS (15), based - on timing on LA464. - (loongarch_cpu_rtx_cost_data): Set movcf2gr and movgr2cf to - COSTS_N_INSNS (1) for LA664. - (loongarch_rtx_cost_optimize_size): Set movcf2gr and movgr2cf to - COSTS_N_INSNS (1) + 1. - * config/loongarch/predicates.md (loongarch_fcmp_operator): New - predicate. - * config/loongarch/loongarch.md (movfcc): Change to - define_expand. - (movfcc_internal): New define_insn. - (fcc_to_<X:mode>): New define_insn. - (cstore<ANYF:mode>4): New define_expand. - * config/loongarch/loongarch.cc - (loongarch_hard_regno_mode_ok_uncached): Allow FCCmode in GPRs - and GPRs. - (loongarch_secondary_reload): Reload FCCmode via FPR and/or GPR. - (loongarch_emit_float_compare): Call gen_reg_rtx instead of - loongarch_allocate_fcc. - (loongarch_allocate_fcc): Remove. - (loongarch_move_to_gpr_cost): Handle FCC_REGS -> GR_REGS. - (loongarch_move_from_gpr_cost): Handle GR_REGS -> FCC_REGS. - (loongarch_register_move_cost): Handle FCC_REGS -> FCC_REGS, - FCC_REGS -> FP_REGS, and FP_REGS -> FCC_REGS. - -2023-12-23 YunQiang Su <syq@gcc.gnu.org> - - * config/mips/driver-native.cc (host_detect_local_cpu): - don't add nan2008 option for -mtune=native. - -2023-12-23 YunQiang Su <syq@gcc.gnu.org> - - PR target/112759 - * config/mips/driver-native.cc (host_detect_local_cpu): - Put the ret to the end of args of reconcat. - -2023-12-23 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - PR target/113112 - * config/riscv/riscv-vector-costs.cc (max_number_of_live_regs): Refine dump information. - (preferred_new_lmul_p): Make PHI initial value into live regs calculation. - -2023-12-22 Sandra Loosemore <sandra@codesourcery.com> - - * omp-general.cc (omp_context_name_list_prop): Remove static qualifer. - * omp-general.h (omp_context_name_list_prop): Declare. - * tree-cfg.cc (dump_function_to_file): Intercept - "omp declare variant base" attribute for special handling. - * tree-pretty-print.cc: Include omp-general.h. - (dump_omp_context_selector): New. - (print_omp_context_selector): New. - * tree-pretty-print.h (print_omp_context_selector): Declare. - -2023-12-22 Jakub Jelinek <jakub@redhat.com> - - PR rtl-optimization/112758 - * combine.cc (make_compopund_operation_int): Optimize AND of a SUBREG - based on nonzero_bits of SUBREG_REG and constant mask on - WORD_REGISTER_OPERATIONS targets only if it is a zero extending - MEM load. - -2023-12-22 Jakub Jelinek <jakub@redhat.com> - - PR tree-optimization/112941 - * symtab-thunks.cc (expand_thunk): Check aggregate_value_p regardless - of whether is_gimple_reg_type (restype) or not. - -2023-12-22 Jakub Jelinek <jakub@redhat.com> - - PR tree-optimization/113102 - * gimple-lower-bitint.cc (gimple_lower_bitint): Handle unreleased - large/huge _BitInt SSA_NAMEs. - -2023-12-22 Jakub Jelinek <jakub@redhat.com> - - PR tree-optimization/113102 - * gimple-lower-bitint.cc (bitint_large_huge::handle_cast): Only - use m_data[save_data_cnt] if it is non-NULL. - -2023-12-22 Christophe Lyon <christophe.lyon@linaro.org> - - * Makefile.in: Allow overriding EXEPCT. - -2023-12-22 chenxiaolong <chenxiaolong@loongson.cn> - - * doc/extend.texi:Add modifiers to the vector of asm in the doc. - * doc/md.texi:Refine the description of the modifier 'f' in the doc. - -2023-12-21 Andrew Pinski <quic_apinski@quicinc.com> - - PR middle-end/112951 - * doc/md.texi (cond_copysign): Document. - (cond_len_copysign): Likewise. - * optabs.def: Reorder cond_copysign to be before - cond_fmin. Likewise for cond_len_copysign. - -2023-12-21 Andre Vieira (lists) <andre.simoesdiasvieira@arm.com> - - PR middle-end/113040 - * omp-simd-clone.cc (simd_clone_adjust_argument_types): Add multiple - vector arguments where simdlen is larger than veclen. - -2023-12-21 Uros Bizjak <ubizjak@gmail.com> - - PR target/113044 - * config/i386/i386.md (*ashlqi_ext<mode>_1): Move from the - high register of the input operand. - (*<insn>qi_ext<mode>_1): Ditto. - -2023-12-21 Vladimir N. Makarov <vmakarov@redhat.com> - - Revert: - 2023-12-18 Vladimir N. Makarov <vmakarov@redhat.com> - - PR rtl-optimization/112918 - * lra-constraints.cc (SMALL_REGISTER_CLASS_P): Move before in_class_p. - (in_class_p): Restrict condition for narrowing class in case of - allow_all_reload_class_changes_p. - (process_alt_operands): Pass true for - allow_all_reload_class_changes_p in calls of in_class_p. - (curr_insn_transform): Ditto for reg operand win. - -2023-12-21 Julian Brown <julian@codesourcery.com> - - * gimplify.cc (omp_segregate_mapping_groups): Handle "present" groups. - (gimplify_scan_omp_clauses): Use mapping group functionality to - iterate through mapping nodes. Remove most gimplification of - OMP_CLAUSE_MAP nodes from here, but still populate ctx->variables - splay tree. - (gimplify_adjust_omp_clauses): Move most gimplification of - OMP_CLAUSE_MAP nodes here. - -2023-12-21 Alex Coplan <alex.coplan@arm.com> - - PR target/113093 - * config/aarch64/aarch64-ldp-fusion.cc (latest_hazard_before): - If the insn is throwing, record the previous insn as a hazard to - prevent moving it from the end of the BB. - -2023-12-21 Jakub Jelinek <jakub@redhat.com> - - * gimple-fold.cc (maybe_fold_comparisons_from_match_pd): - Use unsigned char buffers for lhs1 and lhs2 instead of allocating - them through XALLOCA. - * collect2.cc (maybe_run_lto_and_relink): Swap xcalloc arguments. - -2023-12-21 Richard Sandiford <richard.sandiford@arm.com> - - PR target/113094 - * config/aarch64/aarch64-early-ra.cc (apply_allocation): Stub - out instructions that are going to be deleted before iterating - over the rest. - -2023-12-21 Richard Sandiford <richard.sandiford@arm.com> - - PR target/112948 - * config/aarch64/aarch64-early-ra.cc (find_strided_accesses): Fix - cut-&-pasto. - -2023-12-21 Jakub Jelinek <jakub@redhat.com> - - PR tree-optimization/112941 - * gimple-lower-bitint.cc (gimple_lower_bitint): Disallow merging - a cast with multiplication, division or conversion to floating point - if rhs1 of the cast is result of another single use cast in the same - bb. - -2023-12-21 chenxiaolong <chenxiaolong@loongson.cn> - - * doc/extend.texi:According to the documents submitted earlier, - Two problems with function return types and using the actual types - of parameters instead of variable names were found and fixed. - -2023-12-21 Jiajie Chen <c@jia.je> - - * doc/extend.texi(__lsx_vabsd_di): remove extra `i' in name. - (__lsx_vfrintrm_d, __lsx_vfrintrm_s, __lsx_vfrintrne_d, - __lsx_vfrintrne_s, __lsx_vfrintrp_d, __lsx_vfrintrp_s, __lsx_vfrintrz_d, - __lsx_vfrintrz_s): fix return types. - (__lsx_vld, __lsx_vldi, __lsx_vldrepl_b, __lsx_vldrepl_d, - __lsx_vldrepl_h, __lsx_vldrepl_w, __lsx_vmaxi_b, __lsx_vmaxi_d, - __lsx_vmaxi_h, __lsx_vmaxi_w, __lsx_vmini_b, __lsx_vmini_d, - __lsx_vmini_h, __lsx_vmini_w, __lsx_vsrani_d_q, __lsx_vsrarni_d_q, - __lsx_vsrlni_d_q, __lsx_vsrlrni_d_q, __lsx_vssrani_d_q, - __lsx_vssrarni_d_q, __lsx_vssrarni_du_q, __lsx_vssrlni_d_q, - __lsx_vssrlrni_du_q, __lsx_vst, __lsx_vstx, __lsx_vssrani_du_q, - __lsx_vssrlni_du_q, __lsx_vssrlrni_d_q): add missing semicolon. - (__lsx_vpickve2gr_bu, __lsx_vpickve2gr_hu): fix typo in return - type. - (__lsx_vstelm_b, __lsx_vstelm_d, __lsx_vstelm_h, - __lsx_vstelm_w): use imm type for the last argument. - (__lsx_vsigncov_b, __lsx_vsigncov_h, __lsx_vsigncov_w, - __lsx_vsigncov_d): remove duplicate definitions. - -2023-12-21 Jiahao Xu <xujiahao@loongson.cn> - - * config/loongarch/lasx.md: Use zero expansion instruction. - * config/loongarch/lsx.md: Ditto. - -2023-12-21 Alexandre Oliva <oliva@adacore.com> - - PR target/112778 - * builtins.cc (try_store_by_multiple_pieces): Drop obsolete - comment. - -2023-12-21 Kewen Lin <linkw@linux.ibm.com> - - PR rtl-optimization/112995 - * sel-sched.cc (try_replace_dest_reg): Check the validity of the - replaced insn before actually replacing dest in expr. - -2023-12-21 Kewen Lin <linkw@linux.ibm.com> - - * dbgcnt.def (sched_block): Remove. - * sched-rgn.cc (schedule_region): Remove the support of debug count - sched_block. - -2023-12-21 Jason Merrill <jason@redhat.com> - - PR c++/37722 - * doc/extend.texi: Document that computed goto does not - call destructors. - -2023-12-21 Jason Merrill <jason@redhat.com> - - PR c++/106213 - * opts-common.cc (control_warning_option): Call - handle_generated_option for all cl_var_types. - -2023-12-20 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - PR target/113087 - * config/riscv/riscv-v.cc (expand_select_vl): Optimize SELECT_VL. - -2023-12-20 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - PR target/113087 - * config/riscv/riscv-vsetvl.cc: Disallow fusion when VL modification pollutes non AVL use. - -2023-12-20 Rimvydas Jasinskas <rimvydas.jas@gmail.com> - - * doc/invoke.texi: Document the new file extensions - -2023-12-20 Richard Sandiford <richard.sandiford@arm.com> - - PR rtl-optimization/111702 - * cse.cc (set::mode): Move earlier. - (set::src_in_memory, set::src_volatile): Convert to bitfields. - (set::is_fake_set): New member variable. - (add_to_set): Add an is_fake_set parameter. - (find_sets_in_insn): Update calls accordingly. - (cse_insn): Do not apply REG_EQUAL notes to fake sets. Do not - try to optimize them either, or validate changes to them. - -2023-12-20 Kuan-Lin Chen <rufus@andestech.com> - - * config/riscv/predicates.md (move_operand): Reject symbolic operands - with a type SYMBOL_FORCE_TO_MEM. - (call_insn_operand): Support for CM_Large. - (pcrel_symbol_operand): New. - * config/riscv/riscv-c.cc (riscv_cpu_cpp_builtins): Add builtin_define - "__riscv_cmodel_large". - * config/riscv/riscv-opts.h (riscv_code_model): Add CM_LARGE. - * config/riscv/riscv-protos.h (riscv_symbol_type): Add - SYMBOL_FORCE_TO_MEM. - * config/riscv/riscv.cc (riscv_classify_symbol) Support CM_LARGE model. - (riscv_symbol_insns) Add SYMBOL_FORCE_TO_MEM. - (riscv_cannot_force_const_mem): Ditto. - (riscv_split_symbol): Ditto. - (riscv_force_address): Check pseudo reg available before force_reg. - (riscv_size_ok_for_small_data_p): Disable in CM_LARGE model. - (riscv_can_use_per_function_literal_pools_p): New. - (riscv_elf_select_rtx_section): Handle per-function literal pools. - (riscv_output_mi_thunk): Add riscv_in_thunk_func. - (riscv_option_override): Support CM_LARGE model. - (riscv_function_ok_for_sibcall): Disable sibcalls in CM_LARGE model. - (riscv_in_thunk_func): New static. - * config/riscv/riscv.md (unspec): Define UNSPEC_FORCE_FOR_MEM. - (*large_load_address): New. - * config/riscv/riscv.opt (code_model): New. - -2023-12-20 Wang Pengcheng <wangpengcheng.pp@bytedance.com> - - * config/riscv/riscv.cc (riscv_macro_fusion_pair_p): Fix condition. - -2023-12-20 Andre Vieira <andre.simoesdiasvieira@arm.com> - - PR target/112787 - * tree-vect-generic.cc (type_for_widest_vector_mode): Change function to - use original vector type and check widest vector mode has at most the - same number of elements. - (get_compute_type): Pass original vector type rather than the element - type to type_for_widest_vector_mode and remove now obsolete check for - the number of elements. - -2023-12-20 Siddhesh Poyarekar <siddhesh@gotplt.org> - - * tree-object-size.cc (object_size_info): Remove UNKNOWNS. - Drop all references to it. - (object_sizes_set): Move unknowns propagation code to... - (gimplify_size_expressions): ... here. Also free reexamine - bitmap. - (propagate_unknowns): New parameter UNKNOWNS. Update callers. - -2023-12-20 Thomas Schwinge <thomas@codesourcery.com> - - * config/gcn/gcn.h (LIBSTDCXX): Define to "gcc". - -2023-12-20 Richard Biener <rguenther@suse.de> - - * tree-vect-slp.cc (vect_transform_slp_perm_load_1): Also handle - CTOR and VIEW_CONVERT up to the load when performing chain DCE. - -2023-12-20 Xi Ruoyao <xry111@xry111.site> - - * config/loongarch/loongarch.cc - (loongarch_expand_vector_init_same): Remove "temp2" and reuse - "temp" instead. - (loongarch_expand_vector_init): Use gcc_unreachable () instead - of gcc_assert (0), and fix the comment for it. - -2023-12-20 Xi Ruoyao <xry111@xry111.site> - - PR target/113033 - * config/loongarch/loongarch.cc - (loongarch_expand_vector_init_same): Replace gen_reg_rtx + - emit_move_insn with force_reg. - (loongarch_expand_vector_init): Likewise. - -2023-12-20 Xi Ruoyao <xry111@xry111.site> - - PR target/113034 - * config/loongarch/lasx.md (UNSPEC_LASX_XVFCMP_*): Remove. - (lasx_xvfcmp_caf_<flasxfmt>): Remove. - (lasx_xvfcmp_cune_<FLASX:flasxfmt>): Remove. - (FSC256_UNS): Remove. - (fsc256): Remove. - (lasx_xvfcmp_<vfcond:fcc>_<FLASX:flasxfmt>): Remove. - (lasx_xvfcmp_<fsc256>_<FLASX:flasxfmt>): Remove. - * config/loongarch/lsx.md (UNSPEC_LSX_XVFCMP_*): Remove. - (lsx_vfcmp_caf_<flsxfmt>): Remove. - (lsx_vfcmp_cune_<FLSX:flsxfmt>): Remove. - (vfcond): Remove. - (fcc): Remove. - (FSC_UNS): Remove. - (fsc): Remove. - (lsx_vfcmp_<vfcond:fcc>_<FLSX:flsxfmt>): Remove. - (lsx_vfcmp_<fsc>_<FLSX:flsxfmt>): Remove. - * config/loongarch/simd.md - (fcond_simd): New define_code_iterator. - (<simd_isa>_<x>vfcmp_<fcond:fcond_simd>_<simdfmt>): - New define_insn. - (fcond_simd_rev): New define_code_iterator. - (fcond_rev_asm): New define_code_attr. - (<simd_isa>_<x>vfcmp_<fcond:fcond_simd_rev>_<simdfmt>): - New define_insn. - (fcond_inv): New define_code_iterator. - (fcond_inv_rev): New define_code_iterator. - (fcond_inv_rev_asm): New define_code_attr. - (<simd_isa>_<x>vfcmp_<fcond_inv>_<simdfmt>): New define_insn. - (<simd_isa>_<x>vfcmp_<fcond_inv:fcond_inv_rev>_<simdfmt>): - New define_insn. - (UNSPEC_SIMD_FCMP_CAF, UNSPEC_SIMD_FCMP_SAF, - UNSPEC_SIMD_FCMP_SEQ, UNSPEC_SIMD_FCMP_SUN, - UNSPEC_SIMD_FCMP_SUEQ, UNSPEC_SIMD_FCMP_CNE, - UNSPEC_SIMD_FCMP_SOR, UNSPEC_SIMD_FCMP_SUNE): New unspecs. - (SIMD_FCMP): New define_int_iterator. - (fcond_unspec): New define_int_attr. - (<simd_isa>_<x>vfcmp_<fcond_unspec>_<simdfmt>): New define_insn. - * config/loongarch/loongarch.cc (loongarch_expand_lsx_cmp): - Remove unneeded special cases. - -2023-12-20 demin.han <demin.han@starfivetech.com> - - * config/riscv/riscv-vector-costs.cc (max_number_of_live_regs): Fix - max live vregs calc - (preferred_new_lmul_p): Ditto - -2023-12-20 Jakub Jelinek <jakub@redhat.com> - - PR target/112962 - * config/i386/i386-builtins.cc (ix86_builtins): Increase by one - element. - (def_builtin): If not -fnon-call-exceptions, set TREE_NOTHROW on - the builtin FUNCTION_DECL. Add leaf attribute to DECL_ATTRIBUTES. - (ix86_add_new_builtins): Likewise. - -2023-12-20 Jakub Jelinek <jakub@redhat.com> - - PR tree-optimization/112941 - * gimple-lower-bitint.cc (bitint_large_huge::handle_cast): If - save_cast_conditional, instead of adding assignment of t4 to - m_data[save_data_cnt + 1] before m_gsi, add phi nodes such that - t4 propagates to m_bb loop. For constant idx, use - m_data[save_data_cnt] rather than m_data[save_data_cnt + 1] if inside - of the m_bb loop. - (bitint_large_huge::lower_mergeable_stmt): Clear m_bb when no longer - expanding inside of that loop. - (bitint_large_huge::lower_comparison_stmt): Likewise. - (bitint_large_huge::lower_addsub_overflow): Likewise. - (bitint_large_huge::lower_mul_overflow): Likewise. - (bitint_large_huge::lower_bit_query): Likewise. - -2023-12-20 Jakub Jelinek <jakub@redhat.com> - - * doc/invoke.texi (-Walloc-size): Add to the list of - warning options, remove unnecessary line-break. - (-Wcalloc-transposed-args): Document new warning. - -2023-12-20 Alex Coplan <alex.coplan@arm.com> - - PR target/113062 - * config/aarch64/aarch64-ldp-fusion.cc - (ldp_bb_info::track_access): Punt on accesses with invalid - register operands, move definition of mem_size closer to its - first use. - -2023-12-20 Pan Li <pan2.li@intel.com> - - * config/riscv/riscv-v.cc (rvv_builder::npatterns_vid_diff_repeated_p): - New function to predicate the diff to vid is repeated or not. - (expand_const_vector): Add restriction - for the vid-diff code gen and implement general one. - -2023-12-20 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv.cc (riscv_legitimize_move): Fix ICE. - -2023-12-20 Alexandre Oliva <oliva@adacore.com> - - PR middle-end/112917 - * builtins.cc (expand_bultin_stack_address): Add - STACK_POINTER_OFFSET. - * doc/extend.texi (__builtin_stack_address): Adjust. - -2023-12-20 Alexandre Oliva <oliva@adacore.com> - - PR rtl-optimization/113002 - * cfgrtl.cc (commit_one_edge_insertion): Tolerate jumps in the - inserted sequence during expand. - -2023-12-20 Alexandre Oliva <oliva@adacore.com> - - * builtins.cc (delta_type): New template class. - (set_apply_args_size, get_apply_args_size): Replace with... - (saved_apply_args_size): ... this. - (set_apply_result_size, get_apply_result_size): Replace with... - (saved_apply_result_size): ... this. - (apply_args_size, apply_result_size): Adjust. - -2023-12-20 Jeff Law <jlaw@ventanamicro.com> - - * config/mcore/mcore.h (CC1_SPEC): Do not set -funsigned-bitfields. - -2023-12-20 Haochen Jiang <haochen.jiang@intel.com> - - * config/i386/avx512bwintrin.h: Allow 64 bit mask intrin usage - for -mno-evex512. - * config/i386/i386-builtin.def: Remove OPTION_MASK_ISA2_EVEX512 - for 64 bit mask builtins. - * config/i386/i386.cc (ix86_hard_regno_mode_ok): Allow 64 bit - mask register for -mno-evex512. - * config/i386/i386.md (SWI1248_AVX512BWDQ_64): Remove - TARGET_EVEX512. - (*zero_extendsidi2): Change isa attribute to avx512bw. - (kmov_isa): Ditto. - (*anddi_1): Ditto. - (*andn<mode>_1): Remove TARGET_EVEX512. - (*one_cmplsi2_1_zext): Change isa attribute to avx512bw. - (*ashl<mode>3_1): Ditto. - (*lshr<mode>3_1): Ditto. - * config/i386/sse.md (SWI1248_AVX512BWDQ): Remove TARGET_EVEX512. - (SWI1248_AVX512BW): Ditto. - (SWI1248_AVX512BWDQ2): Ditto. - (*knotsi_1_zext): Ditto. - (kunpckdi): Ditto. - (SWI24_MASK): Removed. - (vec_pack_trunc_<mode>): Change iterator from SWI24_MASK to SWI24. - (vec_unpacks_lo_di): Remove TARGET_EVEX512. - (SWI48x_MASK): Removed. - (vec_unpacks_hi_<mode>): Change iterator from SWI48x_MASK to SWI48x. - -2023-12-20 Siddhesh Poyarekar <siddhesh@gotplt.org> - - PR tree-optimization/113012 - * tree-object-size.cc (compute_builtin_object_size): Expand - comment for dynamic object sizes. - (collect_object_sizes_for): Always set COMPUTED bitmap for - dynamic object sizes. - -2023-12-20 Alexandre Oliva <oliva@adacore.com> - - * ipa-strub.cc (gsi_insert_finally_seq_after_call): Likewise. - (pass_ipa_strub::adjust_at_calls_call): Likewise. - -2023-12-20 Alexandre Oliva <oliva@adacore.com> - - * gcc.cc (process_command): Use LD_PIE_SPEC only if defined. - -2023-12-19 Marek Polacek <polacek@redhat.com> - - PR tree-optimization/113069 - * gimple-ssa-sccopy.cc (scc_discovery): Remove unused member. - -2023-12-19 Sandra Loosemore <sandra@codesourcery.com> - - * omp-general.cc (vendor_properties): Add "hpe". - (atomic_default_mem_order_properties): Add "acquire" and "release". - (omp_context_selector_matches): Handle "acquire" and "release". - -2023-12-19 Sandra Loosemore <sandra@codesourcery.com> - - * omp-selectors.h: New file. - * omp-general.h: Include omp-selectors.h. - (OMP_TSS_CODE, OMP_TSS_NAME): New. - (OMP_TS_CODE, OMP_TS_NAME): New. - (make_trait_set_selector, make_trait_selector): Adjust declarations. - (omp_construct_traits_to_codes): Likewise. - (omp_context_selector_set_compare): Likewise. - (omp_get_context_selector): Likewise. - (omp_get_context_selector_list): New. - * omp-general.cc (omp_construct_traits_to_codes): Pass length in - as argument instead of returning it. Make it table-driven. - (omp_tss_map): New. - (kind_properties, vendor_properties, extension_properties): New. - (atomic_default_mem_order_properties): New. - (omp_ts_map): New. - (omp_check_context_selector): Simplify lookup and dispatch logic. - (omp_mark_declare_variant): Ignore variants with unknown construct - selectors. Adjust for new representation. - (make_trait_set_selector, make_trait_selector): Adjust for new - representations. - (omp_context_selector_matches): Simplify dispatch logic. Avoid - fixed-sized buffers and adjust call to omp_construct_traits_to_codes. - (omp_context_selector_props_compare): Adjust for new representations - and simplify dispatch logic. - (omp_context_selector_set_compare): Likewise. - (omp_context_selector_compare): Likewise. - (omp_get_context_selector): Adjust for new representations, and split - out... - (omp_get_context_selector_list): New function. - (omp_lookup_tss_code): New. - (omp_lookup_ts_code): New. - (omp_context_compute_score): Adjust for new representations. Avoid - fixed-sized buffers and magic numbers. Adjust call to - omp_construct_traits_to_codes. - * gimplify.cc (omp_construct_selector_matches): Avoid use of - fixed-size buffer. Adjust call to omp_construct_traits_to_codes. - -2023-12-19 Sandra Loosemore <sandra@codesourcery.com> - - * omp-general.h (OMP_TP_NAMELIST_NODE): New. - * omp-general.cc (omp_context_name_list_prop): Move earlier - in the file, and adjust for new representation. - (omp_check_context_selector): Adjust this too. - (omp_context_selector_props_compare): Likewise. - -2023-12-19 Sandra Loosemore <sandra@codesourcery.com> - - * omp-general.h (OMP_TS_SCORE_NODE): New. - (OMP_TSS_ID, OMP_TSS_TRAIT_SELECTORS): New. - (OMP_TS_ID, OMP_TS_SCORE, OMP_TS_PROPERTIES): New. - (OMP_TP_NAME, OMP_TP_VALUE): New. - (make_trait_set_selector): Declare. - (make_trait_selector): Declare. - (make_trait_property): Declare. - (omp_constructor_traits_to_codes): Rename to - omp_construct_traits_to_codes. - * omp-general.cc (omp_constructor_traits_to_codes): Rename - to omp_construct_traits_to_codes. Use new accessors. - (omp_check_context_selector): Use new accessors. - (make_trait_set_selector): New. - (make_trait_selector): New. - (make_trait_property): New. - (omp_context_name_list_prop): Use new accessors. - (omp_context_selector_matches): Use new accessors. - (omp_context_selector_props_compare): Use new accessors. - (omp_context_selector_set_compare): Use new accessors. - (omp_get_context_selector): Use new accessors. - (omp_context_compute_score): Use new accessors. - * gimplify.cc (omp_construct_selector_matches): Adjust for renaming - of omp_constructor_traits_to_codes. - -2023-12-19 David Faust <david.faust@oracle.com> - - PR debug/111735 - * btfout.cc (btf_fwd_to_enum_p): New. - (btf_asm_type_ref): Special case references to enum forwards. - (btf_asm_type): Special case enum forwards. Rename btf_size_type to - btf_size, and change chained ifs switching on btf_kind into else ifs. - -2023-12-19 Richard Biener <rguenther@suse.de> - - PR tree-optimization/113080 - * tree-scalar-evolution.cc (expression_expensive_p): Allow - a tiny bit of growth due to expansion of shared trees. - (final_value_replacement_loop): Add comment. - -2023-12-19 Richard Biener <rguenther@suse.de> - - PR tree-optimization/113073 - * tree-vect-stmts.cc (vectorizable_load): Properly ensure - to exempt only vector-size aligned overreads. - -2023-12-19 Roger Sayle <roger@nextmovesoftware.com> - - * config/i386/i386-expand.cc - (ix86_convert_const_wide_int_to_broadcast): Remove static. - (ix86_expand_move): Don't attempt to convert wide constants - to SSE using ix86_convert_const_wide_int_to_broadcast here. - (ix86_split_long_move): Always un-cprop multi-word constants. - * config/i386/i386-expand.h - (ix86_convert_const_wide_int_to_broadcast): Prototype here. - * config/i386/i386-features.cc: Include i386-expand.h. - (timode_scalar_chain::convert_insn): When converting TImode to - V1TImode, try ix86_convert_const_wide_int_to_broadcast. - -2023-12-19 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv-v.cc (expand_const_vector): Use builder.inner_mode (). - -2023-12-19 Jakub Jelinek <jakub@redhat.com> - - PR target/112816 - * config/i386/mmx.md (signbitv2sf2, signbit<mode>2): Force operands[1] - into a REG. - -2023-12-19 Alex Coplan <alex.coplan@arm.com> - - PR target/113061 - * config/aarch64/predicates.md (aarch64_stp_reg_operand): Fix - parentheses to match intent. - -2023-12-19 Jiufu Guo <guojiufu@linux.ibm.com> - - PR rtl-optimization/112525 - PR target/30271 - * dse.cc (get_group_info): Add arg_pointer_rtx as frame_related. - (check_mem_read_rtx): Add parameter to indicate if it is checking mem - for call insn. - (scan_insn): Add mem checking on call usage. - -2023-12-19 Feng Wang <wangfeng@eswincomputing.com> - - * config/riscv/riscv-vector-builtins-functions.def (REQUIRED_EXTENSIONS): - Add new macro for match function. - * config/riscv/riscv-vector-builtins.cc (DEF_RVV_FUNCTION): - Add one more parameter for macro expanding. - (handle_pragma_vector): Add match function calls. - * config/riscv/riscv-vector-builtins.h (enum required_ext): - Add enum defination for required extension. - (struct function_group_info): Add one more parameter for checking required-ext. - -2023-12-18 Vladimir N. Makarov <vmakarov@redhat.com> - - PR rtl-optimization/112918 - * lra-constraints.cc (SMALL_REGISTER_CLASS_P): Move before in_class_p. - (in_class_p): Restrict condition for narrowing class in case of - allow_all_reload_class_changes_p. - (process_alt_operands): Pass true for - allow_all_reload_class_changes_p in calls of in_class_p. - (curr_insn_transform): Ditto for reg operand win. - -2023-12-18 Uros Bizjak <ubizjak@gmail.com> - - * config/i386/i386.md (redundant compare peephole2): - New peephole2 pattern. - -2023-12-18 Andreas Krebbel <krebbel@linux.ibm.com> - - * config/s390/s390.cc (s390_encode_section_info): Replace - SYMBOL_REF_LOCAL_P with decl_binds_to_current_def_p. - -2023-12-18 Andrew Pinski <quic_apinski@quicinc.com> - - PR tree-optimization/113054 - * gimple-ssa-sccopy.cc: Wrap the local types - with an anonymous namespace. - -2023-12-18 Richard Biener <rguenther@suse.de> - - PR middle-end/111975 - * tree-pretty-print.cc (dump_generic_node): Dump - sizetype as __SIZETYPE__ with TDF_GIMPLE. - Dump unnamed vector types as T [[gnu::vector_size(n)]] with - TDF_GIMPLE. - * tree-ssa-address.cc (create_mem_ref_raw): Never generate - a NULL STEP when INDEX is specified. - -2023-12-18 Gerald Pfeifer <gerald@pfeifer.com> - - PR target/69374 - * doc/install.texi (Specific) <hppa*-hp-hpux10>: Remove section. - (Specific) <hppa*-hp-hpux11>: Remove references to GCC 2.95 and - 3.0. Also libffi has been ported now. - -2023-12-18 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - PR target/112432 - * config/riscv/riscv.md (none,W21,W42,W84,W43,W86,W87): Add W0. - (none,W21,W42,W84,W43,W86,W87,W0): Ditto. - * config/riscv/vector.md: Ditto. - -2023-12-18 Richard Biener <rguenther@suse.de> - - PR c/111975 - * tree-pretty-print.cc (dump_mem_ref): Use TDF_GIMPLE path - also for TARGET_MEM_REF and amend it. - -2023-12-18 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv.cc (riscv_regmode_natural_size): Fix ICE for - FIXED-VLMAX of -march=rv32gc_zve32f. - -2023-12-18 Jakub Jelinek <jakub@redhat.com> - - PR tree-optimization/113013 - * tree-object-size.cc (alloc_object_size): Return size_unknown if - corresponding argument(s) don't have integral type or have integral - type with higher precision than sizetype. Don't check arg1 >= 0 - uselessly. Compare argument indexes against gimple_call_num_args - in unsigned type rather than int. Formatting fixes. - -2023-12-18 Pan Li <pan2.li@intel.com> - - * config/riscv/riscv-v.cc (expand_const_vector): Take step2 - instead of step1 for second series. - -2023-12-18 liushuyu <liushuyu011@gmail.com> - - * config.gcc: Add loongarch-d.o to d_target_objs for LoongArch - architecture. - * config/loongarch/t-loongarch: Add object target for loongarch-d.cc. - * config/loongarch/loongarch-d.cc - (loongarch_d_target_versions): add interface function to define builtin - D versions for LoongArch architecture. - (loongarch_d_handle_target_float_abi): add interface function to define - builtin D traits for LoongArch architecture. - (loongarch_d_register_target_info): add interface function to register - loongarch_d_handle_target_float_abi function. - * config/loongarch/loongarch-d.h - (loongarch_d_target_versions): add function prototype. - (loongarch_d_register_target_info): Likewise. - -2023-12-18 xuli <xuli1@eswincomputing.com> - - * config/riscv/vector.md: Add viota avl_type attribute. - -2023-12-18 Pan Li <pan2.li@intel.com> - - * config/riscv/riscv.cc (riscv_expand_mult_with_const_int): - Change int into HOST_WIDE_INT. - (riscv_legitimize_poly_move): Ditto. - -2023-12-17 Xi Ruoyao <xry111@xry111.site> - - * config/loongarch/loongarch.md (alslsi3_extend): New - define_insn. - -2023-12-17 Xi Ruoyao <xry111@xry111.site> - - PR target/112936 - * config/loongarch/loongarch-def.cc - (loongarch_rtx_cost_data::loongarch_rtx_cost_data): Update - instruction costs per micro-benchmark results. - (loongarch_rtx_cost_optimize_size): Set all instruction costs - to (COSTS_N_INSNS (1) + 1). - * config/loongarch/loongarch.cc (loongarch_rtx_costs): Remove - special case for multiplication when optimizing for size. - Adjust division cost when TARGET_64BIT && !TARGET_DIV32. - Account the extra cost when TARGET_CHECK_ZERO_DIV and - optimizing for speed. - -2023-12-17 Xi Ruoyao <xry111@xry111.site> - - * config/loongarch/loongarch-def.cc (rtl.h): Include. - (COSTS_N_INSNS): Remove the macro definition. - -2023-12-17 Gerald Pfeifer <gerald@pfeifer.com> - - PR target/69374 - * doc/install.texi (Specific) <hppa*-hp-hpux*>: Remove a note on - GCC 4.3. - Remove details on how the HP assembler, which we document as not - working, breaks. - <hppa*-hp-hpux11>: Note that only the HP linker is supported. - -2023-12-17 Gerald Pfeifer <gerald@pfeifer.com> - - PR other/69374 - * doc/install.texi (Installing GCC): Remove reference to - buildstat.html. - (Testing): Ditto. - (Final install): Remove section on submitting information for - buildstat.html. Adjust the request for feedback. - -2023-12-16 David Malcolm <dmalcolm@redhat.com> - - * json.cc (print_escaped_json_string): New, taken from - string::print. - (object::print): Use it for printing keys. - (string::print): Move implementation to - print_escaped_json_string. - (selftest::test_writing_objects): Add a key containing - quote, backslash, and control characters. - -2023-12-16 Andrew Carlotti <andrew.carlotti@arm.com> - - * config/aarch64/aarch64-feature-deps.h (fmv_deps_<FEAT_NAME>): - Define aarch64_feature_flags mask foreach FMV feature. - * config/aarch64/aarch64-option-extensions.def: Use new macros - to define FMV feature extensions. - * config/aarch64/aarch64.cc (aarch64_option_valid_attribute_p): - Check for target_version attribute after processing target - attribute. - (aarch64_fmv_feature_data): New. - (aarch64_parse_fmv_features): New. - (aarch64_process_target_version_attr): New. - (aarch64_option_valid_version_attribute_p): New. - (get_feature_mask_for_version): New. - (compare_feature_masks): New. - (aarch64_compare_version_priority): New. - (build_ifunc_arg_type): New. - (make_resolver_func): New. - (add_condition_to_bb): New. - (dispatch_function_versions): New. - (aarch64_generate_version_dispatcher_body): New. - (aarch64_get_function_versions_dispatcher): New. - (aarch64_common_function_versions): New. - (aarch64_mangle_decl_assembler_name): New. - (TARGET_OPTION_VALID_VERSION_ATTRIBUTE_P): New implementation. - (TARGET_OPTION_EXPANDED_CLONES_ATTRIBUTE): New implementation. - (TARGET_OPTION_FUNCTION_VERSIONS): New implementation. - (TARGET_COMPARE_VERSION_PRIORITY): New implementation. - (TARGET_GENERATE_VERSION_DISPATCHER_BODY): New implementation. - (TARGET_GET_FUNCTION_VERSIONS_DISPATCHER): New implementation. - (TARGET_MANGLE_DECL_ASSEMBLER_NAME): New implementation. - * config/aarch64/aarch64.h (TARGET_HAS_FMV_TARGET_ATTRIBUTE): - Set target macro. - * config/arm/aarch-common.h (enum aarch_parse_opt_result): Add - new value to report duplicate FMV feature. - * common/config/aarch64/cpuinfo.h: New file. - -2023-12-16 Andrew Carlotti <andrew.carlotti@arm.com> - - * attribs.cc (decl_attributes): Pass attribute name to target. - (is_function_default_version): Update comment to specify - incompatibility with target_version attributes. - * cgraphclones.cc (cgraph_node::create_version_clone_with_body): - Call valid_version_attribute_p for target_version attributes. - * defaults.h (TARGET_HAS_FMV_TARGET_ATTRIBUTE): New macro. - * target.def (valid_version_attribute_p): New hook. - * doc/tm.texi.in: Add new hook. - * doc/tm.texi: Regenerate. - * multiple_target.cc (create_dispatcher_calls): Remove redundant - is_function_default_version check. - (expand_target_clones): Use target macro to pick attribute name. - * targhooks.cc (default_target_option_valid_version_attribute_p): - New. - * targhooks.h (default_target_option_valid_version_attribute_p): - New. - * tree.h (DECL_FUNCTION_VERSIONED): Update comment to include - target_version attributes. - -2023-12-16 Andrew Carlotti <andrew.carlotti@arm.com> - - * common/config/aarch64/aarch64-common.cc - (struct aarch64_option_extension): Remove unused field. - (all_extensions): Ditto. - (aarch64_get_extension_string_for_isa_flags): Remove filtering - of features without native detection. - * config/aarch64/driver-aarch64.cc (host_detect_local_cpu): - Explicitly add expected features that lack cpuinfo detection. - -2023-12-16 Andrew Carlotti <andrew.carlotti@arm.com> - - * common/config/aarch64/aarch64-common.cc - (aarch64_get_extension_string_for_isa_flags): Fix generation of - the "+nocrypto" extension. - * config/aarch64/aarch64.h (AARCH64_ISA_CRYPTO): Remove. - (TARGET_CRYPTO): Remove. - * config/aarch64/aarch64-c.cc (aarch64_update_cpp_builtins): - Don't use TARGET_CRYPTO. - -2023-12-15 Mary Bennett <mary.bennett@embecosm.com> - - * config/riscv/constraints.md: CVP2 -> CV_alu_pow2. - * config/riscv/corev.md: Likewise. - -2023-12-15 Mary Bennett <mary.bennett@embecosm.com> - - * common/config/riscv/riscv-common.cc: Add XCVelw. - * config/riscv/corev.def: Likewise. - * config/riscv/corev.md: Likewise. - * config/riscv/riscv-builtins.cc (AVAIL): Likewise. - * config/riscv/riscv-ftypes.def: Likewise. - * config/riscv/riscv.opt: Likewise. - * doc/extend.texi: Add XCVelw builtin documentation. - * doc/sourcebuild.texi: Likewise. - -2023-12-15 Jeff Law <jlaw@ventanamicro.com> - - PR target/110201 - * config/riscv/constraints.md (D03, DsA): Remove unused constraints. - * config/riscv/predicates.md (const_0_3_operand): New predicate. - (const_0_10_operand): Likewise. - * config/riscv/crypto.md (riscv_aes32dsi): Use new predicate. Drop - unnecessary constraint. - (riscv_aes32dsmi, riscv_aes64im, riscv_aes32esi): Likewise. - (riscv_aes32esmi, *riscv_<sm4_op>_si): Likewise. - (riscv_<sm4_op>_di_extend, riscv_<sm4_op>_si): Likewise. - -2023-12-15 Alex Coplan <alex.coplan@arm.com> - - * config.gcc: Add aarch64-ldp-fusion.o to extra_objs for aarch64. - * config/aarch64/aarch64-passes.def: Add copies of pass_ldp_fusion - before and after RA. - * config/aarch64/aarch64-protos.h (make_pass_ldp_fusion): Declare. - * config/aarch64/aarch64.opt (-mearly-ldp-fusion): New. - (-mlate-ldp-fusion): New. - (--param=aarch64-ldp-alias-check-limit): New. - (--param=aarch64-ldp-writeback): New. - * config/aarch64/t-aarch64: Add rule for aarch64-ldp-fusion.o. - * config/aarch64/aarch64-ldp-fusion.cc: New file. - * doc/invoke.texi (AArch64 Options): Document new - -m{early,late}-ldp-fusion options. - -2023-12-15 Alex Coplan <alex.coplan@arm.com> - - * config/aarch64/aarch64-ldpstp.md: Abstract ldp/stp - representation from peepholes, allowing use of new form. - * config/aarch64/aarch64-modes.def (V2x4QImode): Define. - * config/aarch64/aarch64-protos.h - (aarch64_finish_ldpstp_peephole): Declare. - (aarch64_swap_ldrstr_operands): Delete declaration. - (aarch64_gen_load_pair): Adjust parameters. - (aarch64_gen_store_pair): Likewise. - * config/aarch64/aarch64-simd.md (load_pair<DREG:mode><DREG2:mode>): - Delete. - (vec_store_pair<DREG:mode><DREG2:mode>): Delete. - (load_pair<VQ:mode><VQ2:mode>): Delete. - (vec_store_pair<VQ:mode><VQ2:mode>): Delete. - * config/aarch64/aarch64.cc (aarch64_pair_mode_for_mode): New. - (aarch64_gen_store_pair): Adjust to use new unspec form of stp. - Drop second mem from parameters. - (aarch64_gen_load_pair): Likewise. - (aarch64_pair_mem_from_base): New. - (aarch64_save_callee_saves): Emit REG_CFA_OFFSET notes for - frame-related saves. Adjust call to aarch64_gen_store_pair - (aarch64_restore_callee_saves): Adjust calls to - aarch64_gen_load_pair to account for change in interface. - (aarch64_process_components): Likewise. - (aarch64_classify_address): Handle 32-byte pair mems in - LDP_STP_N case. - (aarch64_print_operand): Likewise. - (aarch64_copy_one_block_and_progress_pointers): Adjust calls to - account for change in aarch64_gen_{load,store}_pair interface. - (aarch64_set_one_block_and_progress_pointer): Likewise. - (aarch64_finish_ldpstp_peephole): New. - (aarch64_gen_adjusted_ldpstp): Adjust to use generation helper. - * config/aarch64/aarch64.md (ldpstp): New attribute. - (load_pair_sw_<SX:mode><SX2:mode>): Delete. - (load_pair_dw_<DX:mode><DX2:mode>): Delete. - (load_pair_dw_<TX:mode><TX2:mode>): Delete. - (*load_pair_<ldst_sz>): New. - (*load_pair_16): New. - (store_pair_sw_<SX:mode><SX2:mode>): Delete. - (store_pair_dw_<DX:mode><DX2:mode>): Delete. - (store_pair_dw_<TX:mode><TX2:mode>): Delete. - (*store_pair_<ldst_sz>): New. - (*store_pair_16): New. - (*load_pair_extendsidi2_aarch64): Adjust to use new form. - (*zero_extendsidi2_aarch64): Likewise. - * config/aarch64/iterators.md (VPAIR): New. - * config/aarch64/predicates.md (aarch64_mem_pair_operand): Change to - a special predicate derived from aarch64_mem_pair_operator. - -2023-12-15 Alex Coplan <alex.coplan@arm.com> - - * config/aarch64/aarch64-protos.h (aarch64_ldpstp_operand_mode_p): Declare. - * config/aarch64/aarch64.cc (aarch64_gen_storewb_pair): Build RTL - directly instead of invoking named pattern. - (aarch64_gen_loadwb_pair): Likewise. - (aarch64_ldpstp_operand_mode_p): New. - * config/aarch64/aarch64.md (loadwb_pair<GPI:mode>_<P:mode>): Replace with - ... - (*loadwb_post_pair_<ldst_sz>): ... this. Generalize as described - in cover letter. - (loadwb_pair<GPF:mode>_<P:mode>): Delete (superseded by the - above). - (*loadwb_post_pair_16): New. - (*loadwb_pre_pair_<ldst_sz>): New. - (loadwb_pair<TX:mode>_<P:mode>): Delete. - (*loadwb_pre_pair_16): New. - (storewb_pair<GPI:mode>_<P:mode>): Replace with ... - (*storewb_pre_pair_<ldst_sz>): ... this. Generalize as - described in cover letter. - (*storewb_pre_pair_16): New. - (storewb_pair<GPF:mode>_<P:mode>): Delete. - (*storewb_post_pair_<ldst_sz>): New. - (storewb_pair<TX:mode>_<P:mode>): Delete. - (*storewb_post_pair_16): New. - * config/aarch64/predicates.md (aarch64_mem_pair_operator): New. - (pmode_plus_operator): New. - (aarch64_ldp_reg_operand): New. - (aarch64_stp_reg_operand): New. - -2023-12-15 Alex Coplan <alex.coplan@arm.com> - - * config/aarch64/aarch64.cc (aarch64_print_address_internal): Handle SVE - modes when printing ldp/stp addresses. - -2023-12-15 Alex Coplan <alex.coplan@arm.com> - - * config/aarch64/aarch64-protos.h (aarch64_const_zero_rtx_p): New. - * config/aarch64/aarch64.cc (aarch64_const_zero_rtx_p): New. - Use it ... - (aarch64_print_operand): ... here. Recognize CONST0_RTXes in - modes other than VOIDmode. - -2023-12-15 Xiao Zeng <zengxiao@eswincomputing.com> - - * common/config/riscv/riscv-common.cc: - (riscv_implied_info): Add zvfbfmin item. - (riscv_ext_version_table): Ditto. - (riscv_ext_flag_table): Ditto. - * config/riscv/riscv.opt: - (MASK_ZVFBFMIN): New macro. - (MASK_VECTOR_ELEN_BF_16): Ditto. - (TARGET_ZVFBFMIN): Ditto. - -2023-12-15 Wilco Dijkstra <wilco.dijkstra@arm.com> - - * config/aarch64/aarch64.opt (aarch64_mops_memmove_size_threshold): - Change default. - * config/aarch64/aarch64.md (cpymemdi): Add a parameter. - (movmemdi): Call aarch64_expand_cpymem. - * config/aarch64/aarch64.cc (aarch64_copy_one_block): Rename function, - simplify, support storing generated loads/stores. - (aarch64_expand_cpymem): Support expansion of memmove. - * config/aarch64/aarch64-protos.h (aarch64_expand_cpymem): Add bool arg. - -2023-12-15 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv-v.cc (shuffle_merge_patterns): Fix bug. - -2023-12-15 Jakub Jelinek <jakub@redhat.com> - - * target.h (struct bitint_info): Add abi_limb_mode member, adjust - comment. - * target.def (bitint_type_info): Mention abi_limb_mode instead of - limb_mode. - * varasm.cc (output_constant): Use abi_limb_mode rather than - limb_mode. - * stor-layout.cc (finish_bitfield_representative): Likewise. Assert - that if precision is smaller or equal to abi_limb_mode precision or - if info.big_endian is different from WORDS_BIG_ENDIAN, info.limb_mode - must be the same as info.abi_limb_mode. - (layout_type): Use abi_limb_mode rather than limb_mode. - * gimple-fold.cc (clear_padding_bitint_needs_padding_p): Likewise. - (clear_padding_type): Likewise. - * config/i386/i386.cc (ix86_bitint_type_info): Also set - info->abi_limb_mode. - * doc/tm.texi: Regenerated. - -2023-12-15 Julian Brown <julian@codesourcery.com> - - * gimplify.cc (extract_base_bit_offset): Add VARIABLE_OFFSET parameter. - (omp_get_attachment, omp_group_last, omp_group_base, - omp_directive_maps_explicitly): Add GOMP_MAP_STRUCT_UNORD support. - (omp_accumulate_sibling_list): Update calls to extract_base_bit_offset. - Support GOMP_MAP_STRUCT_UNORD. - (omp_build_struct_sibling_lists, gimplify_scan_omp_clauses, - gimplify_adjust_omp_clauses, gimplify_omp_target_update): Add - GOMP_MAP_STRUCT_UNORD support. - * omp-low.cc (lower_omp_target): Add GOMP_MAP_STRUCT_UNORD support. - * tree-pretty-print.cc (dump_omp_clause): Likewise. - -2023-12-15 Alex Coplan <alex.coplan@arm.com> - - PR target/112906 - * config/aarch64/aarch64-sve.md (@aarch64_vec_duplicate_vq<mode>_le): - Use force_reload_address to reload addresses that aren't suitable for - ld1rq in the pre-RA splitter. - -2023-12-15 Alex Coplan <alex.coplan@arm.com> - - PR target/112906 - * emit-rtl.cc (address_reload_context::emit_autoinc): New. - (force_reload_address): New. - * emit-rtl.h (struct address_reload_context): Declare. - (force_reload_address): Declare. - * lra-constraints.cc (class lra_autoinc_reload_context): New. - (emit_inc): Drop IN parameter, invoke - code moved to emit-rtl.cc:address_reload_context::emit_autoinc. - (curr_insn_transform): Drop redundant IN parameter in call to - emit_inc. - * recog.h (class recog_data_saver): New. - -2023-12-15 Jakub Jelinek <jakub@redhat.com> - - PR tree-optimization/113024 - * match.pd (two conversions in a row): Simplify scalar integer - sign-extension followed by truncation. - -2023-12-15 Jakub Jelinek <jakub@redhat.com> - - PR tree-optimization/113003 - * gimple-lower-bitint.cc (arith_overflow_arg_kind): New function. - (gimple_lower_bitint): Use it to catch .{ADD,SUB,MUL}_OVERFLOW - calls with large/huge INTEGER_CST arguments. - -2023-12-15 Gerald Pfeifer <gerald@pfeifer.com> - - * doc/install.texi (Specific) <nvptx-*-none>: Update nvptx-tools - Github link. - -2023-12-15 Hongyu Wang <hongyu.wang@intel.com> - - PR target/112824 - * config/i386/i386-options.cc (ix86_option_override_internal): - Sync ix86_move_max/ix86_store_max with prefer_vector_width when - it is explicitly set. - -2023-12-15 Haochen Jiang <haochen.jiang@intel.com> - - * config/i386/driver-i386.cc (host_detect_local_cpu): Do not - set Grand Ridge depending on RAO-INT. - * config/i386/i386.h: Remove PTA_RAOINT from PTA_GRANDRIDGE. - * doc/invoke.texi: Adjust documentation. - -2023-12-15 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - PR target/112387 - * config/riscv/riscv.cc: Adapt generic cost model same ARM SVE. - -2023-12-15 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - PR target/111153 - * tree-vect-loop.cc (vect_estimate_min_profitable_iters): - Remove address cost for select_vl/decrement IV. - -2023-12-14 Andrew Pinski <quic_apinski@quicinc.com> - - PR middle-end/111260 - * optabs.cc (emit_conditional_move): Change the modes to be - equal before forcing the constant to a register. - -2023-12-14 Di Zhao <dizhao@os.amperecomputing.com> - - PR tree-optimization/110279 - * doc/invoke.texi: New parameter fully-pipelined-fma. - * params.opt: New parameter fully-pipelined-fma. - * tree-ssa-reassoc.cc (get_mult_latency_consider_fma): Return - the latency of MULT_EXPRs that can't be hidden by the FMAs. - (get_reassociation_width): Search for a smaller width - considering the benefit of fully pipelined FMA. - (rank_ops_for_fma): Return the number of MULT_EXPRs. - (reassociate_bb): Pass the number of MULT_EXPRs to - get_reassociation_width; avoid calling - get_reassociation_width twice. - -2023-12-14 Robin Dapp <rdapp@ventanamicro.com> - - PR target/112999 - * expmed.cc (extract_bit_field_1): Ensure better mode - has fitting unit_precision. - -2023-12-14 Robin Dapp <rdapp@ventanamicro.com> - - PR target/112773 - * config/riscv/autovec.md (vec_extract<mode>bi): New expander - calling vec_extract<mode>qi. - * config/riscv/riscv-protos.h (riscv_legitimize_poly_move): - Export. - (emit_vec_extract): Change argument from poly_int64 to rtx. - * config/riscv/riscv-v.cc (shuffle_extract_and_slide1up_patterns): - Ditto. - * config/riscv/riscv.cc (riscv_legitimize_poly_move): Export. - (riscv_legitimize_move): Use rtx instead of poly_int64. - * expmed.cc (store_bit_field_1): Change BITSIZE to PRECISION. - (extract_bit_field_1): Change BITSIZE to PRECISION and use - return mode from insn_data as target mode. - -2023-12-14 Alex Coplan <alex.coplan@arm.com> - - * doc/extend.texi: Document AArch64 Operand Modifiers. - -2023-12-14 Richard Biener <rguenther@suse.de> - - PR tree-optimization/113018 - * tree-vect-slp.cc (vect_slp_check_for_roots): Only start - SLP discovery from stmts with a LHS. - -2023-12-14 Richard Biener <rguenther@suse.de> - - PR tree-optimization/112793 - * tree-vect-slp.cc (vect_schedule_slp_node): Already - code-generated constant/external nodes are OK. - -2023-12-14 Richard Sandiford <richard.sandiford@arm.com> - - * config/aarch64/aarch64-early-ra.cc (allocno_info::is_equiv): New - member variable. - (allocno_info::equiv_allocno): Replace with... - (allocno_info::related_allocno): ...this member variable. - (allocno_info::chain_prev): Put into an enum with... - (allocno_info::last_use_point): ...this new member variable. - (color_info::num_fpr_preferences): New member variable. - (early_ra::m_shared_allocnos): Likewise. - (allocno_info::is_shared): New member function. - (allocno_info::is_equiv_to): Likewise. - (early_ra::dump_allocnos): Dump sharing information. Tweak column - widths. - (early_ra::fpr_preference): Check ALLOWS_NONFPR before returning -2. - (early_ra::start_new_region): Handle m_shared_allocnos. - (early_ra::create_allocno_group): Set related_allocno rather than - equiv_allocno. - (early_ra::record_allocno_use): Likewise. Detect multiple calls - for the same program point. Update last_use_point and is_equiv. - Clear is_strong_copy_src rather than is_strong_copy_dest. - (early_ra::record_allocno_def): Use related_allocno rather than - equiv_allocno. Update last_use_point. - (early_ra::valid_equivalence_p): Replace with... - (early_ra::find_related_start): ...this new function. - (early_ra::record_copy): Look for cases where a destination copy chain - can be shared with the source allocno. - (early_ra::find_strided_accesses): Update for equiv_allocno-> - related_allocno change. Only call consider_strong_copy_src_chain - at the head of a copy chain. - (early_ra::is_chain_candidate): Skip shared allocnos. Update for - new representation of equivalent allocnos. - (early_ra::chain_allocnos): Update for new representation of - equivalent allocnos. - (early_ra::try_to_chain_allocnos): Likewise. - (early_ra::merge_fpr_info): New function, split out from... - (early_ra::set_single_color_rep): ...here. - (early_ra::form_chains): Handle shared allocnos. - (early_ra::process_copies): Count the number of FPR preferences. - (early_ra::cmp_decreasing_size): Rename to... - (early_ra::cmp_allocation_order): ...this. Sort equal-sized groups - by the number of FPR preferences. - (early_ra::finalize_allocation): Handle shared allocnos. - (early_ra::process_region): Reset chain_prev as well as chain_next. - -2023-12-14 Alexandre Oliva <oliva@adacore.com> - - PR middle-end/112938 - * ipa-strub.cc (pass_ipa_strub::execute): Pass volatile args - by reference to internal strub wrapped bodies. - -2023-12-14 Alexandre Oliva <oliva@adacore.com> - - PR middle-end/112938 - * ipa-strub.cc (pass_ipa_strub::execute): Handle promoted - volatile args in internal strub. Simplify. - -2023-12-14 Thomas Schwinge <thomas@codesourcery.com> - - * gimple-ssa-sccopy.cc: '#define INCLUDE_ALGORITHM' instead of - '#include <algorithm>'. - -2023-12-14 Feng Wang <wangfeng@eswincomputing.com> - - Revert: - 2023-12-12 Feng Wang <wangfeng@eswincomputing.com> - - * config/riscv/riscv-vector-builtins-functions.def (DEF_RVV_FUNCTION): - Add AVAIL argument. - (read_vl): Using AVAIL argument default value. - (vlenb): Ditto. - (vsetvl): Ditto. - (vsetvlmax): Ditto. - (vle): Ditto. - (vse): Ditto. - (vlm): Ditto. - (vsm): Ditto. - (vlse): Ditto. - (vsse): Ditto. - (vluxei8): Ditto. - (vluxei16): Ditto. - (vluxei32): Ditto. - (vluxei64): Ditto. - (vloxei8): Ditto. - (vloxei16): Ditto. - (vloxei32): Ditto. - (vloxei64): Ditto. - (vsuxei8): Ditto. - (vsuxei16): Ditto. - (vsuxei32): Ditto. - (vsuxei64): Ditto. - (vsoxei8): Ditto. - (vsoxei16): Ditto. - (vsoxei32): Ditto. - (vsoxei64): Ditto. - (vleff): Ditto. - (vadd): Ditto. - (vsub): Ditto. - (vrsub): Ditto. - (vneg): Ditto. - (vwaddu): Ditto. - (vwsubu): Ditto. - (vwadd): Ditto. - (vwsub): Ditto. - (vwcvt_x): Ditto. - (vwcvtu_x): Ditto. - (vzext): Ditto. - (vsext): Ditto. - (vadc): Ditto. - (vmadc): Ditto. - (vsbc): Ditto. - (vmsbc): Ditto. - (vand): Ditto. - (vor): Ditto. - (vxor): Ditto. - (vnot): Ditto. - (vsll): Ditto. - (vsra): Ditto. - (vsrl): Ditto. - (vnsrl): Ditto. - (vnsra): Ditto. - (vncvt_x): Ditto. - (vmseq): Ditto. - (vmsne): Ditto. - (vmsltu): Ditto. - (vmslt): Ditto. - (vmsleu): Ditto. - (vmsle): Ditto. - (vmsgtu): Ditto. - (vmsgt): Ditto. - (vmsgeu): Ditto. - (vmsge): Ditto. - (vminu): Ditto. - (vmin): Ditto. - (vmaxu): Ditto. - (vmax): Ditto. - (vmul): Ditto. - (vmulh): Ditto. - (vmulhu): Ditto. - (vmulhsu): Ditto. - (vdivu): Ditto. - (vdiv): Ditto. - (vremu): Ditto. - (vrem): Ditto. - (vwmul): Ditto. - (vwmulu): Ditto. - (vwmulsu): Ditto. - (vmacc): Ditto. - (vnmsac): Ditto. - (vmadd): Ditto. - (vnmsub): Ditto. - (vwmaccu): Ditto. - (vwmacc): Ditto. - (vwmaccsu): Ditto. - (vwmaccus): Ditto. - (vmerge): Ditto. - (vmv_v): Ditto. - (vsaddu): Ditto. - (vsadd): Ditto. - (vssubu): Ditto. - (vssub): Ditto. - (vaaddu): Ditto. - (vaadd): Ditto. - (vasubu): Ditto. - (vasub): Ditto. - (vsmul): Ditto. - (vssrl): Ditto. - (vssra): Ditto. - (vnclipu): Ditto. - (vnclip): Ditto. - (vfadd): Ditto. - (vfsub): Ditto. - (vfrsub): Ditto. - (vfadd_frm): Ditto. - (vfsub_frm): Ditto. - (vfrsub_frm): Ditto. - (vfwadd): Ditto. - (vfwsub): Ditto. - (vfwadd_frm): Ditto. - (vfwsub_frm): Ditto. - (vfmul): Ditto. - (vfdiv): Ditto. - (vfrdiv): Ditto. - (vfmul_frm): Ditto. - (vfdiv_frm): Ditto. - (vfrdiv_frm): Ditto. - (vfwmul): Ditto. - (vfwmul_frm): Ditto. - (vfmacc): Ditto. - (vfnmsac): Ditto. - (vfmadd): Ditto. - (vfnmsub): Ditto. - (vfnmacc): Ditto. - (vfmsac): Ditto. - (vfnmadd): Ditto. - (vfmsub): Ditto. - (vfmacc_frm): Ditto. - (vfnmacc_frm): Ditto. - (vfmsac_frm): Ditto. - (vfnmsac_frm): Ditto. - (vfmadd_frm): Ditto. - (vfnmadd_frm): Ditto. - (vfmsub_frm): Ditto. - (vfnmsub_frm): Ditto. - (vfwmacc): Ditto. - (vfwnmacc): Ditto. - (vfwmsac): Ditto. - (vfwnmsac): Ditto. - (vfwmacc_frm): Ditto. - (vfwnmacc_frm): Ditto. - (vfwmsac_frm): Ditto. - (vfwnmsac_frm): Ditto. - (vfsqrt): Ditto. - (vfsqrt_frm): Ditto. - (vfrsqrt7): Ditto. - (vfrec7): Ditto. - (vfrec7_frm): Ditto. - (vfmin): Ditto. - (vfmax): Ditto. - (vfsgnj): Ditto. - (vfsgnjn): Ditto. - (vfsgnjx): Ditto. - (vfneg): Ditto. - (vfabs): Ditto. - (vmfeq): Ditto. - (vmfne): Ditto. - (vmflt): Ditto. - (vmfle): Ditto. - (vmfgt): Ditto. - (vmfge): Ditto. - (vfclass): Ditto. - (vfmerge): Ditto. - (vfmv_v): Ditto. - (vfcvt_x): Ditto. - (vfcvt_xu): Ditto. - (vfcvt_rtz_x): Ditto. - (vfcvt_rtz_xu): Ditto. - (vfcvt_f): Ditto. - (vfcvt_x_frm): Ditto. - (vfcvt_xu_frm): Ditto. - (vfcvt_f_frm): Ditto. - (vfwcvt_x): Ditto. - (vfwcvt_xu): Ditto. - (vfwcvt_rtz_x): Ditto. - (vfwcvt_rtz_xu) Ditto.: - (vfwcvt_f): Ditto. - (vfwcvt_x_frm): Ditto. - (vfwcvt_xu_frm) Ditto.: - (vfncvt_x): Ditto. - (vfncvt_xu): Ditto. - (vfncvt_rtz_x): Ditto. - (vfncvt_rtz_xu): Ditto. - (vfncvt_f): Ditto. - (vfncvt_rod_f): Ditto. - (vfncvt_x_frm): Ditto. - (vfncvt_xu_frm): Ditto. - (vfncvt_f_frm): Ditto. - (vredsum): Ditto. - (vredmaxu): Ditto. - (vredmax): Ditto. - (vredminu): Ditto. - (vredmin): Ditto. - (vredand): Ditto. - (vredor): Ditto. - (vredxor): Ditto. - (vwredsum): Ditto. - (vwredsumu): Ditto. - (vfredusum): Ditto. - (vfredosum): Ditto. - (vfredmax): Ditto. - (vfredmin): Ditto. - (vfredusum_frm): Ditto. - (vfredosum_frm): Ditto. - (vfwredosum): Ditto. - (vfwredusum): Ditto. - (vfwredosum_frm): Ditto. - (vfwredusum_frm): Ditto. - (vmand): Ditto. - (vmnand): Ditto. - (vmandn): Ditto. - (vmxor): Ditto. - (vmor): Ditto. - (vmnor): Ditto. - (vmorn): Ditto. - (vmxnor): Ditto. - (vmmv): Ditto. - (vmclr): Ditto. - (vmset): Ditto. - (vmnot): Ditto. - (vcpop): Ditto. - (vfirst): Ditto. - (vmsbf): Ditto. - (vmsif): Ditto. - (vmsof): Ditto. - (viota): Ditto. - (vid): Ditto. - (vmv_x): Ditto. - (vmv_s): Ditto. - (vfmv_f): Ditto. - (vfmv_s): Ditto. - (vslideup): Ditto. - (vslidedown): Ditto. - (vslide1up): Ditto. - (vslide1down): Ditto. - (vfslide1up): Ditto. - (vfslide1down): Ditto. - (vrgather): Ditto. - (vrgatherei16): Ditto. - (vcompress): Ditto. - (vundefined): Ditto. - (vreinterpret): Ditto. - (vlmul_ext): Ditto. - (vlmul_trunc): Ditto. - (vset): Ditto. - (vget): Ditto. - (vcreate): Ditto. - (vlseg): Ditto. - (vsseg): Ditto. - (vlsseg): Ditto. - (vssseg): Ditto. - (vluxseg): Ditto. - (vloxseg): Ditto. - (vsuxseg): Ditto. - (vsoxseg): Ditto. - (vlsegff): Ditto. - * config/riscv/riscv-vector-builtins.cc (DEF_RVV_FUNCTION): Using variadic macro. - * config/riscv/riscv-vector-builtins.h (struct function_group_info): - Add avail function interface into struct. - * config/riscv/t-riscv: Add dependency - * config/riscv/riscv-vector-builtins-avail.h: New file.The definition of AVAIL marco. - -2023-12-14 Jakub Jelinek <jakub@redhat.com> - - PR tree-optimization/112994 - * match.pd ((t * u) / (t * v) -> (u / v)): New simplification. - -2023-12-14 Jakub Jelinek <jakub@redhat.com> - - PR tree-optimization/112994 - * match.pd ((t * 2) / 2 -> t): Adjust comment to use u instead of 2. - Punt without range checks if TYPE_OVERFLOW_SANITIZED. - ((t * u) / v -> t * (u / v)): New simplification. - -2023-12-14 Filip Kastl <fkastl@suse.cz> - - * Makefile.in: Added sccopy pass. - * passes.def: Added sccopy pass before LTO streaming and before - RTL expansion. - * tree-pass.h (make_pass_sccopy): Added sccopy pass. - * gimple-ssa-sccopy.cc: New file. - -2023-12-14 Martin Jambor <mjambor@suse.cz> - - PR tree-optimization/111807 - * tree-sra.cc (build_ref_for_model): Allow offset smaller than - model->offset when gsi is non-NULL. Adjust function comment. - -2023-12-14 liuhongt <hongtao.liu@intel.com> - - PR target/112992 - * config/i386/i386-expand.cc - (ix86_convert_const_wide_int_to_broadcast): Don't convert to - broadcast for vec_dup{v4di,v8si} when TARGET_AVX2 is not - available. - (ix86_broadcast_from_constant): Allow broadcast for V4DI/V8SI - when !TARGET_AVX2 since it will be forced to memory later. - (ix86_expand_vector_move): Force constant to mem for - vec_dup{vssi,v4di} when TARGET_AVX2 is not available. - -2023-12-14 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - PR target/111153 - * config/riscv/riscv-protos.h (struct common_vector_cost): New struct. - (struct scalable_vector_cost): Ditto. - (struct cpu_vector_cost): Ditto. - * config/riscv/riscv-vector-costs.cc (costs::add_stmt_cost): Add RVV - builtin vectorization cost - * config/riscv/riscv.cc (struct riscv_tune_param): Ditto. - (get_common_costs): New function. - (riscv_builtin_vectorization_cost): Ditto. - (TARGET_VECTORIZE_BUILTIN_VECTORIZATION_COST): New targethook. - -2023-12-13 Richard Ball <richard.ball@arm.com> - - * config.gcc: Adds new header to config. - * config/aarch64/aarch64-builtins.cc (enum aarch64_type_qualifiers): - Moved to header file. - (ENTRY): Likewise. - (enum aarch64_simd_type): Likewise. - (struct aarch64_simd_type_info): Remove static. - (GTY): Likewise. - * config/aarch64/aarch64-c.cc (aarch64_pragma_aarch64): - Defines pragma for arm_neon_sve_bridge.h. - * config/aarch64/aarch64-protos.h: - Add handle_arm_neon_sve_bridge_h - * config/aarch64/aarch64-sve-builtins-base.h: New intrinsics. - * config/aarch64/aarch64-sve-builtins-base.cc - (class svget_neonq_impl): New intrinsic implementation. - (class svset_neonq_impl): Likewise. - (class svdup_neonq_impl): Likewise. - (NEON_SVE_BRIDGE_FUNCTION): New intrinsics. - * config/aarch64/aarch64-sve-builtins-functions.h - (NEON_SVE_BRIDGE_FUNCTION): Defines macro for NEON_SVE_BRIDGE - functions. - * config/aarch64/aarch64-sve-builtins-shapes.h: New shapes. - * config/aarch64/aarch64-sve-builtins-shapes.cc - (parse_element_type): Add NEON element types. - (parse_type): Likewise. - (struct get_neonq_def): Defines function shape for get_neonq. - (struct set_neonq_def): Defines function shape for set_neonq. - (struct dup_neonq_def): Defines function shape for dup_neonq. - * config/aarch64/aarch64-sve-builtins.cc - (DEF_SVE_TYPE_SUFFIX): Changed to be called through - SVE_NEON macro. - (DEF_SVE_NEON_TYPE_SUFFIX): Defines - macro for NEON_SVE_BRIDGE type suffixes. - (DEF_NEON_SVE_FUNCTION): Defines - macro for NEON_SVE_BRIDGE functions. - (function_resolver::infer_neon128_vector_type): Infers type suffix - for overloaded functions. - (handle_arm_neon_sve_bridge_h): Handles #pragma arm_neon_sve_bridge.h. - * config/aarch64/aarch64-sve-builtins.def - (DEF_SVE_NEON_TYPE_SUFFIX): Macro for handling neon_sve type suffixes. - (bf16): Replace entry with neon-sve entry. - (f16): Likewise. - (f32): Likewise. - (f64): Likewise. - (s8): Likewise. - (s16): Likewise. - (s32): Likewise. - (s64): Likewise. - (u8): Likewise. - (u16): Likewise. - (u32): Likewise. - (u64): Likewise. - * config/aarch64/aarch64-sve-builtins.h - (GCC_AARCH64_SVE_BUILTINS_H): Include aarch64-builtins.h. - (ENTRY): Add aarch64_simd_type definiton. - (enum aarch64_simd_type): Add neon information to type_suffix_info. - (struct type_suffix_info): New function. - * config/aarch64/aarch64-sve.md - (@aarch64_sve_get_neonq_<mode>): New intrinsic insn for big endian. - (@aarch64_sve_set_neonq_<mode>): Likewise. - * config/aarch64/iterators.md: Add UNSPEC_SET_NEONQ. - * config/aarch64/aarch64-builtins.h: New file. - * config/aarch64/aarch64-neon-sve-bridge-builtins.def: New file. - * config/aarch64/arm_neon_sve_bridge.h: New file. - -2023-12-13 Patrick Palka <ppalka@redhat.com> - - * doc/invoke.texi (C++ Dialect Options): Document - -fdiagnostics-all-candidates. - -2023-12-13 Julian Brown <julian@codesourcery.com> - - * gimplify.cc (omp_map_clause_descriptor_p): New function. - (build_omp_struct_comp_nodes, omp_get_attachment, omp_group_base): Use - above function. - (omp_tsort_mapping_groups): Process nodes that have - OMP_CLAUSE_MAP_RUNTIME_IMPLICIT_P set after those that don't. Add - enter_exit_data parameter. - (omp_resolve_clause_dependencies): Remove GOMP_MAP_TO_PSET mappings if - we're mapping the whole containing derived-type variable. - (omp_accumulate_sibling_list): Adjust GOMP_MAP_TO_PSET handling. - Remove GOMP_MAP_ALWAYS_POINTER handling. - (gimplify_scan_omp_clauses): Pass enter_exit argument to - omp_tsort_mapping_groups. Don't adjust/remove GOMP_MAP_TO_PSET - mappings for derived-type components here. - * tree.h (OMP_CLAUSE_RELEASE_DESCRIPTOR): New macro. - * tree-pretty-print.cc (dump_omp_clause): Show - OMP_CLAUSE_RELEASE_DESCRIPTOR in dump output (with - GOMP_MAP_TO_PSET-like syntax). - -2023-12-13 Julian Brown <julian@codesourcery.com> - - * gimplify.cc (build_struct_comp_nodes): Don't process - GOMP_MAP_ATTACH_DETACH "middle" nodes here. - (omp_mapping_group): Add REPROCESS_STRUCT and FRAGILE booleans for - nested struct handling. - (omp_strip_components_and_deref, omp_strip_indirections): Remove - functions. - (omp_get_attachment): Handle GOMP_MAP_DETACH here. - (omp_group_last): Handle GOMP_MAP_*, GOMP_MAP_DETACH, - GOMP_MAP_ATTACH_DETACH groups for "exit data" of reference-to-pointer - component array sections. - (omp_gather_mapping_groups_1): Initialise reprocess_struct and fragile - fields. - (omp_group_base): Handle GOMP_MAP_ATTACH_DETACH after GOMP_MAP_STRUCT. - (omp_index_mapping_groups_1): Skip reprocess_struct groups. - (omp_get_nonfirstprivate_group, omp_directive_maps_explicitly, - omp_resolve_clause_dependencies, omp_first_chained_access_token): New - functions. - (omp_check_mapping_compatibility): Adjust accepted node combinations - for "from" clauses using release instead of alloc. - (omp_accumulate_sibling_list): Add GROUP_MAP, ADDR_TOKENS, FRAGILE_P, - REPROCESSING_STRUCT, ADDED_TAIL parameters. Use OMP address tokenizer - to analyze addresses. Reimplement nested struct handling, and - implement "fragile groups". - (omp_build_struct_sibling_lists): Adjust for changes to - omp_accumulate_sibling_list. Recalculate bias for ATTACH_DETACH nodes - after GOMP_MAP_STRUCT nodes. - (gimplify_scan_omp_clauses): Call omp_resolve_clause_dependencies. Use - OMP address tokenizer. - (gimplify_adjust_omp_clauses_1): Use build_fold_indirect_ref_loc - instead of build_simple_mem_ref_loc. - * omp-general.cc (omp-general.h, tree-pretty-print.h): Include. - (omp_addr_tokenizer): New namespace. - (omp_addr_tokenizer::omp_addr_token): New. - (omp_addr_tokenizer::omp_parse_component_selector, - omp_addr_tokenizer::omp_parse_ref, - omp_addr_tokenizer::omp_parse_pointer, - omp_addr_tokenizer::omp_parse_access_method, - omp_addr_tokenizer::omp_parse_access_methods, - omp_addr_tokenizer::omp_parse_structure_base, - omp_addr_tokenizer::omp_parse_structured_expr, - omp_addr_tokenizer::omp_parse_array_expr, - omp_addr_tokenizer::omp_access_chain_p, - omp_addr_tokenizer::omp_accessed_addr): New functions. - (omp_parse_expr, debug_omp_tokenized_addr): New functions. - * omp-general.h (omp_addr_tokenizer::access_method_kinds, - omp_addr_tokenizer::structure_base_kinds, - omp_addr_tokenizer::token_type, - omp_addr_tokenizer::omp_addr_token, - omp_addr_tokenizer::omp_access_chain_p, - omp_addr_tokenizer::omp_accessed_addr): New. - (omp_addr_token, omp_parse_expr): New. - * omp-low.cc (scan_sharing_clauses): Skip error check for references - to pointers. - * tree.h (OMP_CLAUSE_ATTACHMENT_MAPPING_ERASED): New macro. - -2023-12-13 Andrew Stubbs <ams@codesourcery.com> - - * config/gcn/gcn-hsa.h (NO_XNACK): Change the defaults. - * config/gcn/gcn-opts.h (enum hsaco_attr_type): Add HSACO_ATTR_DEFAULT. - * config/gcn/gcn.cc (gcn_option_override): Set the default flag_xnack. - * config/gcn/gcn.opt: Add -mxnack=default. - * doc/invoke.texi: Document the -mxnack default. - -2023-12-13 Andrew Stubbs <ams@codesourcery.com> - - * config/gcn/gcn-hsa.h (NO_XNACK): Ignore missing -march. - (XNACKOPT): Match on/off; ignore any. - * config/gcn/gcn-valu.md (gather<mode>_insn_1offset<exec>): - Add xnack compatible alternatives. - (gather<mode>_insn_2offsets<exec>): Likewise. - * config/gcn/gcn.cc (gcn_option_override): Permit -mxnack for devices - other than Fiji and gfx1030. - (gcn_expand_epilogue): Remove early-clobber problems. - (gcn_hsa_declare_function_name): Obey -mxnack setting. - * config/gcn/gcn.md (xnack): New attribute. - (enabled): Rework to include "xnack" attribute. - (*movbi): Add xnack compatible alternatives. - (*mov<mode>_insn): Likewise. - (*mov<mode>_insn): Likewise. - (*mov<mode>_insn): Likewise. - (*movti_insn): Likewise. - * config/gcn/gcn.opt (-mxnack): Change the default to "any". - * doc/invoke.texi: Remove placeholder notice for -mxnack. - -2023-12-13 Andrew Carlotti <andrew.carlotti@arm.com> - - * config/aarch64/x-aarch64: Add missing dependencies. - -2023-12-13 Roger Sayle <roger@nextmovesoftware.com> - Jeff Law <jlaw@ventanamicro.com> - - * config/arc/arc.md (*extvsi_n_0): New define_insn_and_split to - implement SImode sign extract using a AND, XOR and MINUS sequence. - -2023-12-13 Feng Wang <wangfeng@eswincomputing.com> - - * common/config/riscv/riscv-common.cc: Modify implied ISA info. - * config/riscv/arch-canonicalize: Add crypto vector implied info. - -2023-12-13 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - PR target/112929 - PR target/112988 - * config/riscv/riscv-vsetvl.cc - (pre_vsetvl::compute_lcm_local_properties): Remove full available. - (pre_vsetvl::pre_global_vsetvl_info): Add full available optimization. - -2023-12-13 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - PR target/111317 - * tree-vect-loop.cc (vect_estimate_min_profitable_iters): Adjust for COST for decrement IV. - -2023-12-13 Jakub Jelinek <jakub@redhat.com> - - PR tree-optimization/112940 - * gimple-lower-bitint.cc (struct bitint_large_huge): Add another - argument to prepare_data_in_out method defaulted to NULL_TREE. - (bitint_large_huge::handle_operand): Pass another argument to - prepare_data_in_out instead of emitting an assignment to set it. - (bitint_large_huge::prepare_data_in_out): Add VAL_OUT argument. - If non-NULL, use it as PHI argument instead of creating a new - SSA_NAME. - (bitint_large_huge::handle_cast): Pass rext as another argument - to 2 prepare_data_in_out calls instead of emitting assignments - to set them. - -2023-12-13 Jakub Jelinek <jakub@redhat.com> - - PR middle-end/112953 - * attribs.cc (free_attr_data): Use delete x rather than delete[] x. - -2023-12-13 Jakub Jelinek <jakub@redhat.com> - - PR target/112962 - * config/i386/i386.cc (ix86_gimple_fold_builtin): For shifts - and abs without lhs replace with nop. - -2023-12-13 Richard Biener <rguenther@suse.de> - - * emit-rtl.cc (set_mem_attributes_minus_bitpos): Preserve - the offset when rewriting an exising MEM_REF base for - stack slot sharing. - -2023-12-13 Richard Biener <rguenther@suse.de> - - PR tree-optimization/112991 - PR tree-optimization/112961 - * tree-ssa-sccvn.h (do_rpo_vn): Add skip_entry_phis argument. - * tree-ssa-sccvn.cc (do_rpo_vn): Likewise. - (do_rpo_vn_1): Likewise, merge with auto-processing. - (run_rpo_vn): Adjust. - (pass_fre::execute): Likewise. - * tree-if-conv.cc (tree_if_conversion): Revert last change. - Value-number latch block but disable value-numbering of - entry PHIs. - * tree-ssa-uninit.cc (execute_early_warn_uninitialized): Adjust. - -2023-12-13 Richard Biener <rguenther@suse.de> - - PR tree-optimization/112990 - * match.pd (bit_insert @0 (BIT_FIELD_REF @1 ..) ..): - Restrict to vector modes after lowering. - -2023-12-13 Richard Biener <rguenther@suse.de> - - PR middle-end/111591 - * cfgexpand.cc (update_alias_info_with_stack_vars): Document - why not adjusting TBAA info on accesses is OK. - -2023-12-13 Alexandre Oliva <oliva@adacore.com> - - * doc/invoke.texi (multiflags): Drop extraneous period, use - @pxref instead. - -2023-12-13 Victor Do Nascimento <victor.donascimento@arm.com> - - * config/aarch64/aarch64-builtins.cc: - (AARCH64_PLD): New enum aarch64_builtins entry. - (AARCH64_PLDX): Likewise. - (AARCH64_PLI): Likewise. - (AARCH64_PLIX): Likewise. - (aarch64_init_prefetch_builtin): New. - (aarch64_general_init_builtins): Call prefetch init function. - (aarch64_expand_prefetch_builtin): New. - (aarch64_general_expand_builtin): Add prefetch expansion. - (require_const_argument): New. - * config/aarch64/aarch64.md (UNSPEC_PLDX): New. - (aarch64_pldx): Likewise. - * config/aarch64/arm_acle.h (__pld): Likewise. - (__pli): Likewise. - (__plix): Likewise. - (__pldx): Likewise. - -2023-12-13 Kewen Lin <linkw@linux.ibm.com> - - PR tree-optimization/112788 - * value-range.h (range_compatible_p): Workaround same type mode but - different type precision issue for rs6000 scalar float types - _Float128 and long double. - -2023-12-13 Jiufu Guo <guojiufu@linux.ibm.com> - - * config/rs6000/rs6000.cc (rs6000_emit_set_long_const): Add code to use - pli for 34bit constant. - -2023-12-13 Jiufu Guo <guojiufu@linux.ibm.com> - - * config/rs6000/rs6000.cc (rs6000_emit_set_long_const): Add new - parameter to record number of instructions to build the constant. - (num_insns_constant_gpr): Call rs6000_emit_set_long_const to compute - num_insn. - -2023-12-12 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv-vector-costs.cc (costs::analyze_loop_vinfo): New function. - (costs::record_potential_vls_unrolling): Ditto. - (costs::prefer_unrolled_loop): Ditto. - (costs::better_main_loop_than_p): Ditto. - (costs::add_stmt_cost): Ditto. - * config/riscv/riscv-vector-costs.h (enum cost_type_enum): New enum. - * config/riscv/t-riscv: Add new include files. - -2023-12-12 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv-vector-costs.cc (get_current_lmul): Remove it. - (compute_estimated_lmul): New function. - (costs::costs): Refactor. - (costs::preferred_new_lmul_p): Ditto. - (preferred_new_lmul_p): Ditto. - (costs::better_main_loop_than_p): Ditto. - * config/riscv/riscv-vector-costs.h (struct autovec_info): Remove it. - -2023-12-12 Martin Jambor <mjambor@suse.cz> - - PR tree-optimization/112822 - * tree-sra.cc (load_assign_lhs_subreplacements): Invoke - force_gimple_operand_gsi also when LHS has partial stores and RHS is a - VIEW_CONVERT_EXPR. - -2023-12-12 Jason Merrill <jason@redhat.com> - Nathaniel Shead <nathanieloshead@gmail.com> - - * tree-core.h (enum clobber_kind): Rename CLOBBER_EOL to - CLOBBER_STORAGE_END. Add CLOBBER_STORAGE_BEGIN, - CLOBBER_OBJECT_BEGIN, CLOBBER_OBJECT_END. - * gimple-lower-bitint.cc - * gimple-ssa-warn-access.cc - * gimplify.cc - * tree-inline.cc - * tree-ssa-ccp.cc: Adjust for rename. - * tree-pretty-print.cc: And handle new values. - -2023-12-12 Szabolcs Nagy <szabolcs.nagy@arm.com> - - * config/aarch64/aarch64.cc (aarch64_override_options): Update. - (aarch64_handle_attr_branch_protection): Update. - * config/arm/aarch-common-protos.h (aarch_parse_branch_protection): - Remove. - (aarch_validate_mbranch_protection): Add new argument. - * config/arm/aarch-common.cc (aarch_handle_no_branch_protection): - Update. - (aarch_handle_standard_branch_protection): Update. - (aarch_handle_pac_ret_protection): Update. - (aarch_handle_pac_ret_leaf): Update. - (aarch_handle_pac_ret_b_key): Update. - (aarch_handle_bti_protection): Update. - (aarch_parse_branch_protection): Remove. - (next_tok): New. - (aarch_validate_mbranch_protection): Rewrite. - * config/arm/aarch-common.h (struct aarch_branch_protect_type): - Add field "alone". - * config/arm/arm.cc (arm_configure_build_target): Update. - -2023-12-12 Szabolcs Nagy <szabolcs.nagy@arm.com> - - * config/aarch64/aarch64.cc (aarch64_override_options_after_change_1): - Do not override branch_protection options. - (aarch64_override_options): Remove accepted_branch_protection_string. - * config/arm/aarch-common.cc (BRANCH_PROTECT_STR_MAX): Remove. - (aarch_parse_branch_protection): Remove - accepted_branch_protection_string. - * config/arm/arm.cc: Likewise. - -2023-12-12 Richard Biener <rguenther@suse.de> - - PR tree-optimization/112736 - * tree-vect-stmts.cc (vectorizable_load): Extend optimization - to avoid peeling for gaps to handle single-element non-groups - we now allow with SLP. - -2023-12-12 Richard Biener <rguenther@suse.de> - - PR ipa/92606 - * ipa-icf.cc (sem_item_optimizer::merge_classes): Check - both source and alias for the no_icf attribute. - * doc/extend.texi (no_icf): Document variable attribute. - -2023-12-12 Richard Biener <rguenther@suse.de> - - PR tree-optimization/112961 - * tree-if-conv.cc (tree_if_conversion): Instead of excluding - the latch block from VN, add a fake entry edge. - -2023-12-12 Xi Ruoyao <xry111@xry111.site> - - PR middle-end/107723 - * convert.cc (convert_to_integer_1) [case BUILT_IN_TRUNC]: Break - early if !flag_fp_int_builtin_inexact and flag_trapping_math. - -2023-12-12 Pan Li <pan2.li@intel.com> - - * config/riscv/riscv-avlprop.cc (avl_can_be_propagated_p): - Disable the avl propogation for the vcompress. - -2023-12-12 Xi Ruoyao <xry111@xry111.site> - - * config/loongarch/loongarch-opts.h (la_target): Move into #if - for loongarch-def.h. - (loongarch_init_target): Likewise. - (loongarch_config_target): Likewise. - (loongarch_update_gcc_opt_status): Likewise. - -2023-12-12 Xi Ruoyao <xry111@xry111.site> - - * config/loongarch/loongarch.cc (loongarch_explicit_relocs_p): - Return true for SYMBOL_PCREL64. Return true for SYMBOL_GOT_DISP - if TARGET_CMODEL_EXTREME. - (loongarch_split_symbol): Check for la_opt_explicit_relocs != - EXPLICIT_RELOCS_NONE instead of TARGET_EXPLICIT_RELOCS. - (loongarch_print_operand_reloc): Likewise. - (loongarch_option_override_internal): Likewise. - (loongarch_handle_model_attribute): Likewise. - * doc/invoke.texi (-mcmodel=extreme): Update the compatibility - between it and -mexplicit-relocs=. - -2023-12-12 Richard Biener <rguenther@suse.de> - - PR tree-optimization/112939 - * tree-ssa-sccvn.cc (visit_phi): When all args are undefined - make sure we end up with a value that was visited, otherwise - fall back to .VN_TOP. - -2023-12-12 liuhongt <hongtao.liu@intel.com> - - PR target/112891 - * config/i386/i386.cc (ix86_avx_u128_mode_after): Return - AVX_U128_ANY if callee_abi doesn't clobber all_sse_regs to - align with ix86_avx_u128_mode_needed. - (ix86_avx_u128_mode_needed): Return AVX_U128_ClEAN for - sibling_call. - -2023-12-12 Alexandre Oliva <oliva@adacore.com> - - PR target/112334 - * builtins.h (target_builtins): Add fields for apply_args_size - and apply_result_size. - * builtins.cc (apply_args_size, apply_result_size): Cache - results in fields rather than in static variables. - (get_apply_args_size, set_apply_args_size): New. - (get_apply_result_size, set_apply_result_size): New. - -2023-12-12 Hongyu Wang <hongyu.wang@intel.com> - - PR target/112943 - * config/i386/i386.md (ashl<mode>3): Add TARGET_APX_NDD to - ix86_expand_binary_operator call. - (<insn><mode>3): Likewise for rshift. - (<insn>di3): Likewise for DImode rotate. - (<insn><mode>3): Likewise for SWI124 rotate. - -2023-12-12 Feng Wang <wangfeng@eswincomputing.com> - - * config/riscv/riscv-vector-builtins-functions.def (DEF_RVV_FUNCTION): - Add AVAIL argument. - (read_vl): Using AVAIL argument default value. - (vlenb): Ditto. - (vsetvl): Ditto. - (vsetvlmax): Ditto. - (vle): Ditto. - (vse): Ditto. - (vlm): Ditto. - (vsm): Ditto. - (vlse): Ditto. - (vsse): Ditto. - (vluxei8): Ditto. - (vluxei16): Ditto. - (vluxei32): Ditto. - (vluxei64): Ditto. - (vloxei8): Ditto. - (vloxei16): Ditto. - (vloxei32): Ditto. - (vloxei64): Ditto. - (vsuxei8): Ditto. - (vsuxei16): Ditto. - (vsuxei32): Ditto. - (vsuxei64): Ditto. - (vsoxei8): Ditto. - (vsoxei16): Ditto. - (vsoxei32): Ditto. - (vsoxei64): Ditto. - (vleff): Ditto. - (vadd): Ditto. - (vsub): Ditto. - (vrsub): Ditto. - (vneg): Ditto. - (vwaddu): Ditto. - (vwsubu): Ditto. - (vwadd): Ditto. - (vwsub): Ditto. - (vwcvt_x): Ditto. - (vwcvtu_x): Ditto. - (vzext): Ditto. - (vsext): Ditto. - (vadc): Ditto. - (vmadc): Ditto. - (vsbc): Ditto. - (vmsbc): Ditto. - (vand): Ditto. - (vor): Ditto. - (vxor): Ditto. - (vnot): Ditto. - (vsll): Ditto. - (vsra): Ditto. - (vsrl): Ditto. - (vnsrl): Ditto. - (vnsra): Ditto. - (vncvt_x): Ditto. - (vmseq): Ditto. - (vmsne): Ditto. - (vmsltu): Ditto. - (vmslt): Ditto. - (vmsleu): Ditto. - (vmsle): Ditto. - (vmsgtu): Ditto. - (vmsgt): Ditto. - (vmsgeu): Ditto. - (vmsge): Ditto. - (vminu): Ditto. - (vmin): Ditto. - (vmaxu): Ditto. - (vmax): Ditto. - (vmul): Ditto. - (vmulh): Ditto. - (vmulhu): Ditto. - (vmulhsu): Ditto. - (vdivu): Ditto. - (vdiv): Ditto. - (vremu): Ditto. - (vrem): Ditto. - (vwmul): Ditto. - (vwmulu): Ditto. - (vwmulsu): Ditto. - (vmacc): Ditto. - (vnmsac): Ditto. - (vmadd): Ditto. - (vnmsub): Ditto. - (vwmaccu): Ditto. - (vwmacc): Ditto. - (vwmaccsu): Ditto. - (vwmaccus): Ditto. - (vmerge): Ditto. - (vmv_v): Ditto. - (vsaddu): Ditto. - (vsadd): Ditto. - (vssubu): Ditto. - (vssub): Ditto. - (vaaddu): Ditto. - (vaadd): Ditto. - (vasubu): Ditto. - (vasub): Ditto. - (vsmul): Ditto. - (vssrl): Ditto. - (vssra): Ditto. - (vnclipu): Ditto. - (vnclip): Ditto. - (vfadd): Ditto. - (vfsub): Ditto. - (vfrsub): Ditto. - (vfadd_frm): Ditto. - (vfsub_frm): Ditto. - (vfrsub_frm): Ditto. - (vfwadd): Ditto. - (vfwsub): Ditto. - (vfwadd_frm): Ditto. - (vfwsub_frm): Ditto. - (vfmul): Ditto. - (vfdiv): Ditto. - (vfrdiv): Ditto. - (vfmul_frm): Ditto. - (vfdiv_frm): Ditto. - (vfrdiv_frm): Ditto. - (vfwmul): Ditto. - (vfwmul_frm): Ditto. - (vfmacc): Ditto. - (vfnmsac): Ditto. - (vfmadd): Ditto. - (vfnmsub): Ditto. - (vfnmacc): Ditto. - (vfmsac): Ditto. - (vfnmadd): Ditto. - (vfmsub): Ditto. - (vfmacc_frm): Ditto. - (vfnmacc_frm): Ditto. - (vfmsac_frm): Ditto. - (vfnmsac_frm): Ditto. - (vfmadd_frm): Ditto. - (vfnmadd_frm): Ditto. - (vfmsub_frm): Ditto. - (vfnmsub_frm): Ditto. - (vfwmacc): Ditto. - (vfwnmacc): Ditto. - (vfwmsac): Ditto. - (vfwnmsac): Ditto. - (vfwmacc_frm): Ditto. - (vfwnmacc_frm): Ditto. - (vfwmsac_frm): Ditto. - (vfwnmsac_frm): Ditto. - (vfsqrt): Ditto. - (vfsqrt_frm): Ditto. - (vfrsqrt7): Ditto. - (vfrec7): Ditto. - (vfrec7_frm): Ditto. - (vfmin): Ditto. - (vfmax): Ditto. - (vfsgnj): Ditto. - (vfsgnjn): Ditto. - (vfsgnjx): Ditto. - (vfneg): Ditto. - (vfabs): Ditto. - (vmfeq): Ditto. - (vmfne): Ditto. - (vmflt): Ditto. - (vmfle): Ditto. - (vmfgt): Ditto. - (vmfge): Ditto. - (vfclass): Ditto. - (vfmerge): Ditto. - (vfmv_v): Ditto. - (vfcvt_x): Ditto. - (vfcvt_xu): Ditto. - (vfcvt_rtz_x): Ditto. - (vfcvt_rtz_xu): Ditto. - (vfcvt_f): Ditto. - (vfcvt_x_frm): Ditto. - (vfcvt_xu_frm): Ditto. - (vfcvt_f_frm): Ditto. - (vfwcvt_x): Ditto. - (vfwcvt_xu): Ditto. - (vfwcvt_rtz_x): Ditto. - (vfwcvt_rtz_xu) Ditto.: - (vfwcvt_f): Ditto. - (vfwcvt_x_frm): Ditto. - (vfwcvt_xu_frm) Ditto.: - (vfncvt_x): Ditto. - (vfncvt_xu): Ditto. - (vfncvt_rtz_x): Ditto. - (vfncvt_rtz_xu): Ditto. - (vfncvt_f): Ditto. - (vfncvt_rod_f): Ditto. - (vfncvt_x_frm): Ditto. - (vfncvt_xu_frm): Ditto. - (vfncvt_f_frm): Ditto. - (vredsum): Ditto. - (vredmaxu): Ditto. - (vredmax): Ditto. - (vredminu): Ditto. - (vredmin): Ditto. - (vredand): Ditto. - (vredor): Ditto. - (vredxor): Ditto. - (vwredsum): Ditto. - (vwredsumu): Ditto. - (vfredusum): Ditto. - (vfredosum): Ditto. - (vfredmax): Ditto. - (vfredmin): Ditto. - (vfredusum_frm): Ditto. - (vfredosum_frm): Ditto. - (vfwredosum): Ditto. - (vfwredusum): Ditto. - (vfwredosum_frm): Ditto. - (vfwredusum_frm): Ditto. - (vmand): Ditto. - (vmnand): Ditto. - (vmandn): Ditto. - (vmxor): Ditto. - (vmor): Ditto. - (vmnor): Ditto. - (vmorn): Ditto. - (vmxnor): Ditto. - (vmmv): Ditto. - (vmclr): Ditto. - (vmset): Ditto. - (vmnot): Ditto. - (vcpop): Ditto. - (vfirst): Ditto. - (vmsbf): Ditto. - (vmsif): Ditto. - (vmsof): Ditto. - (viota): Ditto. - (vid): Ditto. - (vmv_x): Ditto. - (vmv_s): Ditto. - (vfmv_f): Ditto. - (vfmv_s): Ditto. - (vslideup): Ditto. - (vslidedown): Ditto. - (vslide1up): Ditto. - (vslide1down): Ditto. - (vfslide1up): Ditto. - (vfslide1down): Ditto. - (vrgather): Ditto. - (vrgatherei16): Ditto. - (vcompress): Ditto. - (vundefined): Ditto. - (vreinterpret): Ditto. - (vlmul_ext): Ditto. - (vlmul_trunc): Ditto. - (vset): Ditto. - (vget): Ditto. - (vcreate): Ditto. - (vlseg): Ditto. - (vsseg): Ditto. - (vlsseg): Ditto. - (vssseg): Ditto. - (vluxseg): Ditto. - (vloxseg): Ditto. - (vsuxseg): Ditto. - (vsoxseg): Ditto. - (vlsegff): Ditto. - * config/riscv/riscv-vector-builtins.cc (DEF_RVV_FUNCTION): Using variadic macro. - * config/riscv/riscv-vector-builtins.h (struct function_group_info): - Add avail function interface into struct. - * config/riscv/t-riscv: Add dependency - * config/riscv/riscv-vector-builtins-avail.h: New file.The definition of AVAIL marco. - -2023-12-12 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv-protos.h (estimated_poly_value): New function. - * config/riscv/riscv-v.cc (estimated_poly_value): Ditto. - * config/riscv/riscv.cc (riscv_estimated_poly_value): Move RVV POLY - VALUE estimation to riscv-v.cc - -2023-12-12 Yang Yujie <yangyujie@loongson.cn> - - * config/loongarch/loongarch.cc: Do not restore the saved eh_return - data registers ($r4-$r7) for a normal return of a function that calls - __builtin_eh_return elsewhere. - * config/loongarch/loongarch-protos.h: Same. - * config/loongarch/loongarch.md: Same. - -2023-12-11 Richard Sandiford <richard.sandiford@arm.com> - - * recog.cc (constrain_operands): Pass VOIDmode to - strict_memory_address_p for 'p' constraints in asms. - * rtl-ssa/changes.cc (recog_level2): Skip redundant constrain_operands - for asms. - -2023-12-11 Jason Merrill <jason@redhat.com> - - * common.opt: Add comment. - -2023-12-11 Alexandre Oliva <oliva@adacore.com> - - PR middle-end/112784 - * expr.cc (emit_block_move_via_loop): Call int_mode_for_size - for maybe-too-wide sizes. - (emit_block_cmp_via_loop): Likewise. - -2023-12-11 Alexandre Oliva <oliva@adacore.com> - - PR target/112778 - * builtins.cc (can_store_by_multiple_pieces): New. - (try_store_by_multiple_pieces): Call it. - -2023-12-11 Alexandre Oliva <oliva@adacore.com> - - PR target/112804 - * builtins.cc (try_store_by_multiple_pieces): Use ptr's mode - for the increment. - -2023-12-11 Alexandre Oliva <oliva@adacore.com> - - * doc/invoke.texi (multiflags): Add period after @xref to - silence warning. - -2023-12-11 Alexandre Oliva <oliva@adacore.com> - - * config/rl78/rl78.cc (TARGET_HAVE_STRUB_SUPPORT_FOR): Disable. - -2023-12-11 Alexandre Oliva <oliva@adacore.com> - - * ipa-strub.cc (pass_ipa_strub::execute): Check that we don't - add indirection to pointer parameters, and document attribute - access non-interactions. - -2023-12-11 Roger Sayle <roger@nextmovesoftware.com> - - PR rtl-optimization/112380 - * combine.cc (expand_field_assignment): Check if gen_lowpart - returned a CLOBBER, and avoid calling gen_simplify_binary with - it if so. - -2023-12-11 Andrew Pinski <quic_apinski@quicinc.com> - - PR target/111867 - * config/aarch64/aarch64.cc (aarch64_float_const_representable_p): For BFmode, - only accept +0.0. - -2023-12-11 Andrew Pinski <quic_apinski@quicinc.com> - - PR tree-optimization/111972 - PR tree-optimization/110637 - * match.pd (`(convert)(zeroone !=/== CST)`): Match - and simplify to ((convert)zeroone){,^1}. - * fold-const.cc (fold_binary_loc): Remove - transformation of `(~a) & 1` and `(a ^ 1) & 1` - into `(convert)(a == 0)`. - -2023-12-11 Andrew Pinski <quic_apinski@quicinc.com> - - PR middle-end/112935 - * expr.cc (expand_expr_real_2): Use - gimple_zero_one_valued_p instead of tree_nonzero_bits - to find boolean defined expressions. - -2023-12-11 Mikael Pettersson <mikpelinux@gmail.com> - - PR target/112413 - * config/m68k/linux.h (ASM_RETURN_CASE_JUMP): For - TARGET_LONG_JUMP_TABLE_OFFSETS, reference the jump table - via its label. - * config/m68k/m68kelf.h (ASM_RETURN_CASE_JUMP): Likewise. - * config/m68k/netbsd-elf.h (ASM_RETURN_CASE_JUMP): Likewise. - -2023-12-11 Andre Vieira <andre.simoesdiasvieira@arm.com> - - * config/aarch64/aarch64.cc (lane_size): New function. - (aarch64_simd_clone_compute_vecsize_and_simdlen): Determine simdlen according to NDS rule - and reject combination of simdlen and types that lead to vectors larger than 128bits. - -2023-12-11 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * rtl-ssa/insns.cc (function_info::record_use): Add !ordered_p case. - -2023-12-11 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv-v.cc (get_gather_index_mode): New function. - (shuffle_series_patterns): Robostify shuffle index. - (shuffle_generic_patterns): Ditto. - -2023-12-11 Victor Do Nascimento <victor.donascimento@arm.com> - - * config/aarch64/arm_neon.h (vldap1_lane_u64): Add - `const' to `__builtin_aarch64_simd_di *' cast. - (vldap1q_lane_u64): Likewise. - (vldap1_lane_s64): Cast __src to `const __builtin_aarch64_simd_di *'. - (vldap1q_lane_s64): Likewise. - (vldap1_lane_f64): Cast __src to `const __builtin_aarch64_simd_df *'. - (vldap1q_lane_f64): Cast __src to `const __builtin_aarch64_simd_df *'. - (vldap1_lane_p64): Add `const' to `__builtin_aarch64_simd_di *' cast. - (vldap1q_lane_p64): Add `const' to `__builtin_aarch64_simd_di *' cast. - (vstl1_lane_u64): remove stray `const'. - (vstl1_lane_s64): Cast __src to `__builtin_aarch64_simd_di *'. - (vstl1q_lane_s64): Likewise. - (vstl1_lane_f64): Cast __src to `const __builtin_aarch64_simd_df *'. - (vstl1q_lane_f64): Likewise. - -2023-12-11 Robin Dapp <rdapp@ventanamicro.com> - - PR target/112853 - * config/riscv/riscv-v.cc (expand_const_vector): Fix step - calculation. - (modulo_sel_indices): Also perform modulo for variable-length - constants. - (shuffle_series): Recognize series permutations. - (expand_vec_perm_const_1): Add shuffle_series. - -2023-12-11 liuhongt <hongtao.liu@intel.com> - - * match.pd (VCE (a cmp b ? -1 : 0) < 0) ? c : d ---> (VCE ((a - cmp b) ? (VCE:c) : (VCE:d))): New gimple simplication. - -2023-12-11 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - PR target/112431 - * config/riscv/vector.md: Support highest overlap for wv instructions. - -2023-12-11 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv-vsetvl.cc (extract_single_source): Fix ICE. - -2023-12-11 Jakub Jelinek <jakub@redhat.com> - - * doc/extend.texi (__sync_fetch_and_add, __sync_fetch_and_sub, - __sync_fetch_and_or, __sync_fetch_and_and, __sync_fetch_and_xor, - __sync_fetch_and_nand, __sync_add_and_fetch, __sync_sub_and_fetch, - __sync_or_and_fetch, __sync_and_and_fetch, __sync_xor_and_fetch, - __sync_nand_and_fetch, __sync_bool_compare_and_swap, - __sync_val_compare_and_swap, __sync_lock_test_and_set, - __sync_lock_release, __atomic_load_n, __atomic_load, __atomic_store_n, - __atomic_store, __atomic_exchange_n, __atomic_exchange, - __atomic_compare_exchange_n, __atomic_compare_exchange, - __atomic_add_fetch, __atomic_sub_fetch, __atomic_and_fetch, - __atomic_xor_fetch, __atomic_or_fetch, __atomic_nand_fetch, - __atomic_fetch_add, __atomic_fetch_sub, __atomic_fetch_and, - __atomic_fetch_xor, __atomic_fetch_or, __atomic_fetch_nand, - __atomic_test_and_set, __atomic_clear, __atomic_thread_fence, - __atomic_signal_fence, __atomic_always_lock_free, - __atomic_is_lock_free, __builtin_add_overflow, - __builtin_sadd_overflow, __builtin_saddl_overflow, - __builtin_saddll_overflow, __builtin_uadd_overflow, - __builtin_uaddl_overflow, __builtin_uaddll_overflow, - __builtin_sub_overflow, __builtin_ssub_overflow, - __builtin_ssubl_overflow, __builtin_ssubll_overflow, - __builtin_usub_overflow, __builtin_usubl_overflow, - __builtin_usubll_overflow, __builtin_mul_overflow, - __builtin_smul_overflow, __builtin_smull_overflow, - __builtin_smulll_overflow, __builtin_umul_overflow, - __builtin_umull_overflow, __builtin_umulll_overflow, - __builtin_add_overflow_p, __builtin_sub_overflow_p, - __builtin_mul_overflow_p, __builtin_addc, __builtin_addcl, - __builtin_addcll, __builtin_subc, __builtin_subcl, __builtin_subcll, - __builtin_alloca, __builtin_alloca_with_align, - __builtin_alloca_with_align_and_max, __builtin_speculation_safe_value, - __builtin_nan, __builtin_nand32, __builtin_nand64, __builtin_nand128, - __builtin_nanf, __builtin_nanl, __builtin_nanf@var{n}, - __builtin_nanf@var{n}x, __builtin_nans, __builtin_nansd32, - __builtin_nansd64, __builtin_nansd128, __builtin_nansf, - __builtin_nansl, __builtin_nansf@var{n}, __builtin_nansf@var{n}x, - __builtin_ffs, __builtin_clz, __builtin_ctz, __builtin_clrsb, - __builtin_popcount, __builtin_parity, __builtin_bswap16, - __builtin_bswap32, __builtin_bswap64, __builtin_bswap128, - __builtin_extend_pointer, __builtin_goacc_parlevel_id, - __builtin_goacc_parlevel_size, vec_clrl, vec_clrr, vec_mulh, vec_mul, - vec_div, vec_dive, vec_mod, __builtin_rx_mvtc): Use @var{...} around - parameter names. - (vec_rl, vec_sl, vec_sr, vec_sra): Likewise. Use @var{...} also - around A, B and R in description. - -2023-12-11 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv-selftests.cc (riscv_run_selftests): - Remove poly self test when FIXED-VLMAX. - -2023-12-11 Fei Gao <gaofei@eswincomputing.com> - Xiao Zeng <zengxiao@eswincomputing.com> - - * ifcvt.cc (noce_cond_zero_binary_op_supported): Add support for AND. - (noce_bbs_ok_for_cond_zero_arith): Likewise. - (noce_try_cond_zero_arith): Likewise. - -2023-12-11 liuhongt <hongtao.liu@intel.com> - - PR target/112904 - * config/i386/mmx.md (*xop_pcmov_<mode>): New define_insn. - -2023-12-11 Haochen Gui <guihaoc@gcc.gnu.org> - - PR target/112707 - * config/rs6000/rs6000.h (TARGET_FCTID): Define. - * config/rs6000/rs6000.md (lrint<mode>di2): Add guard TARGET_FCTID. - * (lround<mode>di2): Replace TARGET_FPRND with TARGET_FCTID. - -2023-12-11 Haochen Gui <guihaoc@gcc.gnu.org> - - PR target/112707 - * config/rs6000/rs6000.md (expand lrint<mode>si2): New. - (insn lrint<mode>si2): Rename to... - (*lrint<mode>si): ...this. - (lrint<mode>si_di): New. - -2023-12-10 Fei Gao <gaofei@eswincomputing.com> - Xiao Zeng <zengxiao@eswincomputing.com> - - * ifcvt.cc (noce_cond_zero_binary_op_supported): Add support for shift - like op. - -2023-12-10 Richard Sandiford <richard.sandiford@arm.com> - - PR target/112931 - PR target/112933 - * config/aarch64/aarch64-protos.h (aarch64_sve_reinterpret): Declare. - * config/aarch64/aarch64.cc (aarch64_sve_reinterpret): New function. - * config/aarch64/aarch64-sve-builtins-sme.cc (svread_za_impl::expand) - (svwrite_za_impl::expand): Use it to cast the SVE register to the - right mode. - -2023-12-10 Richard Sandiford <richard.sandiford@arm.com> - - PR target/112930 - * config/aarch64/aarch64.cc (aarch64_sme_mode_switch_regs::add_reg): - Force specific SVE modes for single registers as well as structures. - -2023-12-10 Jason Merrill <jason@redhat.com> - - * doc/invoke.texi (-fpermissive): Mention ObjC++ for -Wnarrowing. - -2023-12-10 Jeff Law <jlaw@ventanamicro.com> - - * config/h8300/addsub.md (uaddv<mode>4, usubv<mode>4): New expanders. - (uaddv): New define_insn_and_split plus post-reload pattern. - -2023-12-10 Jeff Law <jlaw@ventanamicro.com> - - * config/h8300/h8300-protos.h (use_extvsi): Prototype. - * config/h8300/combiner.md: Two new define_insn_and_split patterns - to implement signed bitfield extractions. - * config/h8300/h8300.cc (use_extvsi): New function. - -2023-12-10 Jeff Law <jlaw@ventanamicro.com> - - * config/h8300/combiner.md (single bit signed bitfield extraction): Fix - length computation when the bit we want is in the low half word. - -2023-12-10 Jeff Law <jlaw@ventanamicro.com> - - * config/h8300/h8300.cc (compute_a_shift_length): Fix computation - of logical shifts on the H8/SX. - -2023-12-09 Jakub Jelinek <jakub@redhat.com> - - PR tree-optimization/112887 - * tree-ssa-phiopt.cc (hoist_adjacent_loads): Change type of - param_align, param_align_bits, offset1, offset2, size2 and align1 - variables from int or unsigned int to unsigned HOST_WIDE_INT. - -2023-12-09 Costas Argyris <costas.argyris@gmail.com> - Jakub Jelinek <jakub@redhat.com> - - PR driver/93019 - * gcc.cc (driver::finalize): Call XDELETEVEC on mdswitches before - clearing it. - -2023-12-09 Jakub Jelinek <jakub@redhat.com> - - * attribs.h (any_nonignored_attribute_p): Declare. - * attribs.cc (any_nonignored_attribute_p): New function. - -2023-12-09 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - PR target/112932 - * config/riscv/vector.md (movmisalign<mode>): Fix VLSmode bugs. - -2023-12-09 Alexandre Oliva <oliva@adacore.com> - - * tree-emutls.cc: Include diagnostic-core.h. - (pass_ipa_lower_emutls::gate): Skip if errors were seen. - -2023-12-08 Vladimir N. Makarov <vmakarov@redhat.com> - - PR rtl-optimization/112875 - * lra-eliminations.cc (lra_eliminate_regs_1): Change an assert. - Add ASM_OPERANDS case. - -2023-12-08 Robin Dapp <rdapp@ventanamicro.com> - - PR target/112109 - * config/riscv/riscv-protos.h (expand_strcmp): Declare. - * config/riscv/riscv-string.cc (riscv_expand_strcmp): Add - strategy handling and delegation to scalar and vector expanders. - (expand_strcmp): Vectorized implementation. - * config/riscv/riscv.md: Add TARGET_VECTOR to strcmp and strncmp - expander. - -2023-12-08 Robin Dapp <rdapp@ventanamicro.com> - - PR target/112109 - * config/riscv/riscv-protos.h (expand_rawmemchr): Add strlen - parameter. - * config/riscv/riscv-string.cc (riscv_expand_strlen): Call - rawmemchr. - (expand_rawmemchr): Add strlen handling. - * config/riscv/riscv.md: Add TARGET_VECTOR to strlen expander. - -2023-12-08 Richard Sandiford <richard.sandiford@arm.com> - - * config/aarch64/aarch64-early-ra.cc (allocno_info::chain_next): - Put into an enum with... - (allocno_info::last_def_point): ...new member variable. - (allocno_info::m_current_bb_point): New member variable. - (likely_operand_match_p): Switch based on get_constraint_type, - rather than based on rtx code. Handle relaxed and special memory - constraints. - (early_ra::record_copy): Allow the source of an equivalence to be - assigned to more than once. - (early_ra::record_allocno_use): Invalidate any previous equivalence. - Initialize last_def_point. - (early_ra::record_allocno_def): Set last_def_point. - (early_ra::valid_equivalence_p): New function, split out from... - (early_ra::record_copy): ...here. Use last_def_point to handle - source registers that have a later definition. - (make_pass_aarch64_early_ra): Fix comment. - -2023-12-08 Richard Earnshaw <rearnsha@arm.com> - - Revert: - 2023-12-07 Ezra Sitorus <ezra.sitorus@arm.com> - - * config/arm/arm_neon.h - (vld1q_u8_x2, vld1q_u16_x2, vld1q_u32_x2, vld1q_u64_x2): New. - (vld1q_s8_x2, vld1q_s16_x2, vld1q_s32_x2, vld1q_s64_x2): New. - (vld1q_f16_x2, vld1q_f32_x2): New. - (vld1q_p8_x2, vld1q_p16_x2, vld1q_p64_x2): New. - (vld1q_bf16_x2): New. - * config/arm/arm_neon_builtins.def (vld1_x2): New entries. - * config/arm/neon.md (vld1_x2<mode>): New. - -2023-12-08 Richard Earnshaw <rearnsha@arm.com> - - Revert: - 2023-12-07 Ezra Sitorus <ezra.sitorus@arm.com> - - * config/arm/arm_neon.h - (vld1q_u8_x3, vld1q_u16_x3, vld1q_u32_x3, vld1q_u64_x3): New. - (vld1q_s8_x3, vld1q_s16_x3, vld1q_s32_x3, vld1q_s64_x3): New. - (vld1q_f16_x3, vld1q_f32_x3): New. - (vld1q_p8_x3, vld1q_p16_x3, vld1q_p64_x3): New. - (vld1q_bf16_x3): New. - * config/arm/arm_neon_builtins.def (vld1_x3): New entries. - * config/arm/neon.md (vld1_x3<mode>): New. - -2023-12-08 Richard Earnshaw <rearnsha@arm.com> - - Revert: - 2023-12-07 Ezra Sitorus <ezra.sitorus@arm.com> - - * config/arm/arm_neon.h - (vld1q_u8_x4, vld1q_u16_x4, vld1q_u32_x4, vld1q_u64_x4): New. - (vld1q_s8_x4, vld1q_s16_x4, vld1q_s32_x4, vld1q_s64_x4): New. - (vld1q_f16_x4, vld1q_f32_x4): New. - (vld1q_p8_x4, vld1q_p16_x4, vld1q_p64_x4): New. - (vld1q_bf16_x4): New. - * config/arm/arm_neon_builtins.def (vld1_x4): New entries. - * config/arm/neon.md (vld1_x4<mode>): New. - -2023-12-08 Richard Earnshaw <rearnsha@arm.com> - - Revert: - 2023-12-07 Ezra Sitorus <ezra.sitorus@arm.com> - - * config/arm/arm_neon.h - (vst1_u8_x2, vst1_u16_x2, vst1_u32_x2, vst1_u64_x2): New. - (vst1_s8_x2, vst1_s16_x2, vst1_s32_x2, vst1_s64_x2): New. - (vst1_f16_x2, vst1_f32_x2): New. - (vst1_p8_x2, vst1_p16_x2, vst1_p64_x2): New. - (vst1_bf16_x2): New. - * config/arm/arm_neon_builtins.def (vst1_x2): New entries. - * config/arm/neon.md (vst1_x2<mode>): New. - -2023-12-08 Richard Earnshaw <rearnsha@arm.com> - - Revert: - 2023-12-07 Ezra Sitorus <ezra.sitorus@arm.com> - - * config/arm/arm_neon.h - (vst1_u8_x3, vst1_u16_x3, vst1_u32_x3, vst1_u64_x3): New. - (vst1_s8_x3, vst1_s16_x3, vst1_s32_x3, vst1_s64_x3): New. - (vst1_f16_x3, vst1_f32_x3): New. - (vst1_p8_x3, vst1_p16_x3, vst1_p64_x3): New. - (vst1_bf16_x3): New. - * config/arm/arm_neon_builtins.def (vst1_x3): New entries. - * config/arm/neon.md (vst1_x3<mode>): New. - -2023-12-08 Richard Earnshaw <rearnsha@arm.com> - - Revert: - 2023-12-07 Ezra Sitorus <ezra.sitorus@arm.com> - - * config/arm/arm_neon.h - (vst1_u8_x4, vst1_u16_x4, vst1_u32_x4, vst1_u64_x4): New. - (vst1_s8_x4, vst1_s16_x4, vst1_s32_x4, vst1_s64_x4): New. - (vst1_f16_x4, vst1_f32_x4): New. - (vst1_p8_x4, vst1_p16_x4, vst1_p64_x4): New. - (vst1_bf16_x4): New. - * config/arm/arm_neon_builtins.def (vst1_x4): New entries. - * config/arm/neon.md (vst1_x4<mode>): New. - -2023-12-08 Richard Earnshaw <rearnsha@arm.com> - - Revert: - 2023-12-07 Ezra Sitorus <ezra.sitorus@arm.com> - - * config/arm/arm_neon.h - (vst1q_u8_x2, vst1q_u16_x2, vst1q_u32_x2, vst1q_u64_x2): New. - (vst1q_s8_x2, vst1q_s16_x2, vst1q_s32_x2, vst1q_s64_x2): New. - (vst1q_f16_x2, vst1q_f32_x2): New. - (vst1q_p8_x2, vst1q_p16_x2, vst1q_p64_x2): New. - (vst1q_bf16_x2): New. - * config/arm/arm_neon_builtins.def (vst1q_x2): New entries. - * config/arm/neon.md - (neon_vst1<VMEMX2_q>_x2<VDQX:mode>): Updated from - neon_vst1_x2<mode>. - * config/arm/iterators.md (VMEMX2): New mode iterator. - (VMEMX2_q): New mode attribute. - -2023-12-08 Richard Earnshaw <rearnsha@arm.com> - - Revert: - 2023-12-07 Ezra Sitorus <ezra.sitorus@arm.com> - - * config/arm/arm_neon.h - (vst1q_u8_x3, vst1q_u16_x3, vst1q_u32_x3, vst1q_u64_x3): New. - (vst1q_s8_x3, vst1q_s16_x3, vst1q_s32_x3, vst1q_s64_x3): New. - (vst1q_f16_x3, vst1q_f32_x3): New. - (vst1q_p8_x3, vst1q_p16_x3, vst1q_p64_x3): New. - (vst1q_bf16_x3): New. - * config/arm/arm_neon_builtins.def (vst1q_x3): New entries. - * config/arm/neon.md (neon_vst1q_x3<mode>): New. - -2023-12-08 Richard Earnshaw <rearnsha@arm.com> - - Revert: - 2023-12-07 Ezra Sitorus <ezra.sitorus@arm.com> - - * config/arm/arm_neon.h - (vst1q_u8_x4, vst1q_u16_x4, vst1q_u32_x4, vst1q_u64_x4): New. - (vst1q_s8_x4, vst1q_s16_x4, vst1q_s32_x4, vst1q_s64_x4): New. - (vst1q_f16_x4, vst1q_f32_x4): New. - (vst1q_p8_x4, vst1q_p16_x4, vst1q_p64_x4): New. - (vst1q_bf16_x4): New. - * config/arm/arm_neon_builtins.def (vst1q_x4): New entries. - * config/arm/neon.md (neon_vst1q_x4<mode>): New. - -2023-12-08 Richard Earnshaw <rearnsha@arm.com> - - Revert: - 2023-12-07 Ezra Sitorus <ezra.sitorus@arm.com> - - * config/arm/arm_neon.h - (vld1_u8_x2, vld1_u16_x2, vld1_u32_x2, vld1_u64_x2): New - (vld1_s8_x2, vld1_s16_x2, vld1_s32_x2, vld1_s64_x2): New. - (vld1_f16_x2, vld1_f32_x2): New. - (vld1_p8_x2, vld1_p16_x2, vld1_p64_x2): New. - (vld1_bf16_x2): New. - (vld1q_types_x2): Updated to use vld1q_x2 from - arm_neon_builtins.def - * config/arm/arm_neon_builtins.def - (vld1_x2): Updated entries. - (vld1q_x2): New entries, but comes from the old vld1_x2 - * config/arm/neon.md - (neon_vld1<VMEMX2_q>_x2<VDQX:mode>): Updated - from neon_vld1_x2<mode>. - -2023-12-08 Richard Earnshaw <rearnsha@arm.com> - - Revert: - 2023-12-07 Ezra Sitorus <ezra.sitorus@arm.com> - - * config/arm/arm_neon.h - (vld1_u8_x3, vld1_u16_x3, vld1_u32_x3, vld1_u64_x3): New - (vld1_s8_x3, vld1_s16_x3, vld1_s32_x3, vld1_s64_x3): New. - (vld1_f16_x3, vld1_f32_x3): New. - (vld1_p8_x3, vld1_p16_x3, vld1_p64_x3): New. - (vld1_bf16_x3): New. - (vld1q_types_x3): Updated to use vld1q_x3 from - arm_neon_builtins.def - * config/arm/arm_neon_builtins.def - (vld1_x3): Updated entries. - (vld1q_x3): New entries, but comes from the old vld1_x2 - * config/arm/neon.md (neon_vld1q_x3<mode>): Updated from - neon_vld1_x3<mode>. - -2023-12-08 Richard Earnshaw <rearnsha@arm.com> - - Revert: - 2023-12-07 Ezra Sitorus <ezra.sitorus@arm.com> - - * config/arm/arm_neon.h - (vld1_u8_x4, vld1_u16_x4, vld1_u32_x4, vld1_u64_x4): New - (vld1_s8_x4, vld1_s16_x4, vld1_s32_x4, vld1_s64_x4): New. - (vld1_f16_x4, vld1_f32_x4): New. - (vld1_p8_x4, vld1_p16_x4, vld1_p64_x4): New. - (vld1_bf16_x4): New. - (vld1q_types_x4): Updated to use vld1q_x4 - from arm_neon_builtins.def - * config/arm/arm_neon_builtins.def - (vld1_x4): Updated entries. - (vld1q_x4): New entries, but comes from the old vld1_x2 - * config/arm/neon.md (neon_vld1q_x4<mode>): - Updated from neon_vld1_x4<mode>. - -2023-12-08 Tobias Burnus <tobias@codesourcery.com> - - * builtin-types.def (BT_FN_PTR_PTR_SIZE_PTRMODE_PTRMODE): New. - * omp-builtins.def (BUILT_IN_GOMP_REALLOC): New. - * builtins.cc (builtin_fnspec): Handle it. - * gimple-ssa-warn-access.cc (fndecl_alloc_p, - matching_alloc_calls_p): Likewise. - * gimple.cc (nonfreeing_call_p): Likewise. - * predict.cc (expr_expected_value_1): Likewise. - * tree-ssa-ccp.cc (evaluate_stmt): Likewise. - * tree.cc (fndecl_dealloc_argno): Likewise. - -2023-12-08 Richard Biener <rguenther@suse.de> - - PR tree-optimization/112909 - * tree-ssa-uninit.cc (find_uninit_use): Look through a - single level of SSA name copies with single use. - -2023-12-08 Jiahao Xu <xujiahao@loongson.cn> - - * config/loongarch/loongarch.cc (loongarch_try_expand_lsx_vshuf_const): Use - simplify_gen_subreg instead of gen_rtx_SUBREG. - (loongarch_expand_vec_perm_const_2): Ditto. - (loongarch_expand_vec_cond_expr): Ditto. - -2023-12-08 Jiahao Xu <xujiahao@loongson.cn> - - * config/loongarch/loongarch.cc (loongarch_vector_costs::determine_suggested_unroll_factor): - If m_has_recip is true, uf return 1. - (loongarch_vector_costs::add_stmt_cost): Detect the use of approximate instruction sequence. - -2023-12-08 Jiahao Xu <xujiahao@loongson.cn> - - * config/loongarch/genopts/loongarch.opt.in (recip_mask): New variable. - (-mrecip, -mrecip): New options. - * config/loongarch/lasx.md (div<mode>3): New expander. - (*div<mode>3): Rename. - (sqrt<mode>2): New expander. - (*sqrt<mode>2): Rename. - (rsqrt<mode>2): New expander. - * config/loongarch/loongarch-protos.h (loongarch_emit_swrsqrtsf): New prototype. - (loongarch_emit_swdivsf): Ditto. - * config/loongarch/loongarch.cc (loongarch_option_override_internal): Set - recip_mask for -mrecip and -mrecip= options. - (loongarch_emit_swrsqrtsf): New function. - (loongarch_emit_swdivsf): Ditto. - * config/loongarch/loongarch.h (RECIP_MASK_NONE, RECIP_MASK_DIV, RECIP_MASK_SQRT - RECIP_MASK_RSQRT, RECIP_MASK_VEC_DIV, RECIP_MASK_VEC_SQRT, RECIP_MASK_VEC_RSQRT - RECIP_MASK_ALL): New bitmasks. - (TARGET_RECIP_DIV, TARGET_RECIP_SQRT, TARGET_RECIP_RSQRT, TARGET_RECIP_VEC_DIV - TARGET_RECIP_VEC_SQRT, TARGET_RECIP_VEC_RSQRT): New tests. - * config/loongarch/loongarch.md (sqrt<mode>2): New expander. - (*sqrt<mode>2): Rename. - (rsqrt<mode>2): New expander. - * config/loongarch/loongarch.opt (recip_mask): New variable. - (-mrecip, -mrecip): New options. - * config/loongarch/lsx.md (div<mode>3): New expander. - (*div<mode>3): Rename. - (sqrt<mode>2): New expander. - (*sqrt<mode>2): Rename. - (rsqrt<mode>2): New expander. - * config/loongarch/predicates.md (reg_or_vecotr_1_operand): New predicate. - * doc/invoke.texi (LoongArch Options): Document new options. - -2023-12-08 Jiahao Xu <xujiahao@loongson.cn> - - * config/loongarch/lasx.md (lasx_xvfrecip_<flasxfmt>): Renamed to .. - (recip<mode>3): .. this. - * config/loongarch/loongarch-builtins.cc (CODE_FOR_lsx_vfrecip_d): Redefine - to new pattern name. - (CODE_FOR_lsx_vfrecip_s): Ditto. - (CODE_FOR_lasx_xvfrecip_d): Ditto. - (CODE_FOR_lasx_xvfrecip_s): Ditto. - (loongarch_expand_builtin_direct): For the vector recip instructions, construct a - temporary parameter const1_vector. - * config/loongarch/lsx.md (lsx_vfrecip_<flsxfmt>): Renamed to .. - (recip<mode>3): .. this. - * config/loongarch/predicates.md (const_vector_1_operand): New predicate. - -2023-12-08 Jiahao Xu <xujiahao@loongson.cn> - - * config/loongarch/lasx.md (lasx_xvfrsqrt_<flasxfmt>): Renamed to .. - (rsqrt<mode>2): .. this. - * config/loongarch/loongarch-builtins.cc - (CODE_FOR_lsx_vfrsqrt_d): Redefine to standard pattern name. - (CODE_FOR_lsx_vfrsqrt_s): Ditto. - (CODE_FOR_lasx_xvfrsqrt_d): Ditto. - (CODE_FOR_lasx_xvfrsqrt_s): Ditto. - * config/loongarch/loongarch.cc (use_rsqrt_p): New function. - (loongarch_optab_supported_p): Ditto. - (TARGET_OPTAB_SUPPORTED_P): New hook. - * config/loongarch/loongarch.md (*rsqrt<mode>a): Remove. - (*rsqrt<mode>2): New insn pattern. - (*rsqrt<mode>b): Remove. - * config/loongarch/lsx.md (lsx_vfrsqrt_<flsxfmt>): Renamed to .. - (rsqrt<mode>2): .. this. - -2023-12-08 Jiahao Xu <xujiahao@loongson.cn> - - * config/loongarch/genopts/isa-evolution.in (fecipe): Add. - * config/loongarch/larchintrin.h (__frecipe_s): New intrinsic. - (__frecipe_d): Ditto. - (__frsqrte_s): Ditto. - (__frsqrte_d): Ditto. - * config/loongarch/lasx.md (lasx_xvfrecipe_<flasxfmt>): New insn pattern. - (lasx_xvfrsqrte_<flasxfmt>): Ditto. - * config/loongarch/lasxintrin.h (__lasx_xvfrecipe_s): New intrinsic. - (__lasx_xvfrecipe_d): Ditto. - (__lasx_xvfrsqrte_s): Ditto. - (__lasx_xvfrsqrte_d): Ditto. - * config/loongarch/loongarch-builtins.cc (AVAIL_ALL): Add predicates. - (LSX_EXT_BUILTIN): New macro. - (LASX_EXT_BUILTIN): Ditto. - * config/loongarch/loongarch-cpucfg-map.h: Regenerate. - * config/loongarch/loongarch-c.cc: Add builtin macro "__loongarch_frecipe". - * config/loongarch/loongarch-def.cc: Regenerate. - * config/loongarch/loongarch-str.h (OPTSTR_FRECIPE): Regenerate. - * config/loongarch/loongarch.cc (loongarch_asm_code_end): Dump status for TARGET_FRECIPE. - * config/loongarch/loongarch.md (loongarch_frecipe_<fmt>): New insn pattern. - (loongarch_frsqrte_<fmt>): Ditto. - * config/loongarch/loongarch.opt: Regenerate. - * config/loongarch/lsx.md (lsx_vfrecipe_<flsxfmt>): New insn pattern. - (lsx_vfrsqrte_<flsxfmt>): Ditto. - * config/loongarch/lsxintrin.h (__lsx_vfrecipe_s): New intrinsic. - (__lsx_vfrecipe_d): Ditto. - (__lsx_vfrsqrte_s): Ditto. - (__lsx_vfrsqrte_d): Ditto. - * doc/extend.texi: Add documentation for LoongArch new builtins and intrinsics. - -2023-12-08 Richard Biener <rguenther@suse.de> - - * tree-outof-ssa.cc (rewrite_out_of_ssa): Dump GIMPLE once only, - after final IL adjustments. - -2023-12-08 Pan Li <pan2.li@intel.com> - - * config/riscv/vector-iterators.md: Replace RVVM2SI to RVVM2SF - for mode attr V_F2DI_CONVERT_BRIDGE. - -2023-12-08 Jiahao Xu <xujiahao@loongson.cn> - - * config/loongarch/lasx.md (xorsign<mode>3): New expander. - * config/loongarch/loongarch.cc (loongarch_can_change_mode_class): Allow - conversion between LSX vector mode and scalar fp mode. - * config/loongarch/loongarch.md (@xorsign<mode>3): New expander. - * config/loongarch/lsx.md (@xorsign<mode>3): Ditto. - -2023-12-08 Jakub Jelinek <jakub@redhat.com> - - PR tree-optimization/112902 - * gimple-lower-bitint.cc (gimple_lower_bitint): For a narrowing - or same precision cast don't set SSA_NAME_VERSION in m_names only - if use_stmt is mergeable_op or fall through into the check that - use is a store or rhs1 is not mergeable or other reasons prevent - merging. - -2023-12-08 Jakub Jelinek <jakub@redhat.com> - - PR tree-optimization/112901 - * vr-values.cc - (simplify_using_ranges::simplify_float_conversion_using_ranges): - Return false if rhs1 has BITINT_TYPE type with BLKmode TYPE_MODE. - -2023-12-08 Jakub Jelinek <jakub@redhat.com> - - PR middle-end/112411 - * haifa-sched.cc (extend_h_i_d): Use 3U instead of 3 in - 3 * get_max_uid () / 2 calculation. - -2023-12-08 Lulu Cheng <chenglulu@loongson.cn> - - * config/loongarch/genopts/loongarch-strings: Delete STR_ISA_BASE_LA64V110. - * config/loongarch/genopts/loongarch.opt.in: Likewise. - * config/loongarch/loongarch-cpu.cc (ISA_BASE_LA64V110_FEATURES): Delete macro. - (fill_native_cpu_config): Define a new variable hw_isa_evolution record the - extended instruction set support read from cpucfg. - * config/loongarch/loongarch-def.cc: Set evolution at initialization. - * config/loongarch/loongarch-def.h (ISA_BASE_LA64V100): Delete. - (ISA_BASE_LA64V110): Likewise. - (N_ISA_BASE_TYPES): Likewise. - (defined): Likewise. - * config/loongarch/loongarch-opts.cc: Likewise. - * config/loongarch/loongarch-opts.h (TARGET_64BIT): Likewise. - (ISA_BASE_IS_LA64V110): Likewise. - * config/loongarch/loongarch-str.h (STR_ISA_BASE_LA64V110): Likewise. - * config/loongarch/loongarch.opt: Regenerate. - -2023-12-08 Xi Ruoyao <xry111@xry111.site> - - * config/loongarch/loongarch-def.h: Remove extern "C". - (loongarch_isa_base_strings): Declare as loongarch_def_array - instead of plain array. - (loongarch_isa_ext_strings): Likewise. - (loongarch_abi_base_strings): Likewise. - (loongarch_abi_ext_strings): Likewise. - (loongarch_cmodel_strings): Likewise. - (loongarch_cpu_strings): Likewise. - (loongarch_cpu_default_isa): Likewise. - (loongarch_cpu_issue_rate): Likewise. - (loongarch_cpu_multipass_dfa_lookahead): Likewise. - (loongarch_cpu_cache): Likewise. - (loongarch_cpu_align): Likewise. - (loongarch_cpu_rtx_cost_data): Likewise. - (loongarch_isa): Add a constructor and field setter functions. - * config/loongarch/loongarch-opts.h (loongarch-defs.h): Do not - include for target libraries. - * config/loongarch/loongarch-opts.cc: Comment code that doesn't - run and causes compilation errors. - * config/loongarch/loongarch-tune.h (LOONGARCH_TUNE_H): Likewise. - (struct loongarch_rtx_cost_data): Likewise. - (struct loongarch_cache): Likewise. - (struct loongarch_align): Likewise. - * config/loongarch/t-loongarch: Compile loongarch-def.cc with the - C++ compiler. - * config/loongarch/loongarch-def-array.h: New file for a - std:array like data structure with position setter function. - * config/loongarch/loongarch-def.c: Rename to ... - * config/loongarch/loongarch-def.cc: ... here. - (loongarch_cpu_strings): Define as loongarch_def_array instead - of plain array. - (loongarch_cpu_default_isa): Likewise. - (loongarch_cpu_cache): Likewise. - (loongarch_cpu_align): Likewise. - (loongarch_cpu_rtx_cost_data): Likewise. - (loongarch_cpu_issue_rate): Likewise. - (loongarch_cpu_multipass_dfa_lookahead): Likewise. - (loongarch_isa_base_strings): Likewise. - (loongarch_isa_ext_strings): Likewise. - (loongarch_abi_base_strings): Likewise. - (loongarch_abi_ext_strings): Likewise. - (loongarch_cmodel_strings): Likewise. - (abi_minimal_isa): Likewise. - (loongarch_rtx_cost_optimize_size): Use field setter functions - instead of designated initializers. - (loongarch_rtx_cost_data): Implement default constructor. - -2023-12-08 Jakub Jelinek <jakub@redhat.com> - - PR middle-end/112411 - * params.opt (-param=min-nondebug-insn-uid=): Add - IntegerRange(0, 1073741824). - * lra.cc (check_and_expand_insn_recog_data): Use 3U rather than 3 - in * 3 / 2 computation and if the result is smaller or equal to - index, use index + 1. - -2023-12-08 Haochen Jiang <haochen.jiang@intel.com> - - * config/i386/driver-i386.cc (host_detect_local_cpu): - Do not append "-mno-" for Xeon Phi ISAs. - * config/i386/i386-options.cc (ix86_option_override_internal): - Emit a warning for KNL/KNM targets. - * config/i386/i386.opt: Emit a warning for Xeon Phi ISAs. - -2023-12-08 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv-vector-costs.cc (costs::better_main_loop_than_p): - Remove redundant check. - -2023-12-08 Hao Liu <hliu@os.amperecomputing.com> - - PR tree-optimization/112774 - * tree-pretty-print.cc: if nonwrapping flag is set, chrec will be - printed with additional <nw> info. - * tree-scalar-evolution.cc: add record_nonwrapping_chrec and - nonwrapping_chrec_p to set and check the new flag respectively. - * tree-scalar-evolution.h: Likewise. - * tree-ssa-loop-niter.cc (idx_infer_loop_bounds, - infer_loop_bounds_from_pointer_arith, infer_loop_bounds_from_signedness, - scev_probably_wraps_p): call record_nonwrapping_chrec before - record_nonwrapping_iv, call nonwrapping_chrec_p to check the flag is - set and return false from scev_probably_wraps_p. - * tree-vect-loop.cc (vect_analyze_loop): call - free_numbers_of_iterations_estimates explicitly. - * tree-core.h: document the nothrow_flag usage in CHREC_NOWRAP - * tree.h: add CHREC_NOWRAP(NODE), base.nothrow_flag is used to - represent the nonwrapping info. - -2023-12-08 Fei Gao <gaofei@eswincomputing.com> - - * ifcvt.cc (noce_try_cond_zero_arith): New function. - (noce_emit_czero, get_base_reg): Likewise. - (noce_cond_zero_binary_op_supported): Likewise. - (noce_bbs_ok_for_cond_zero_arith): Likewise. - (noce_process_if_block): Use noce_try_cond_zero_arith. - Co-authored-by: Xiao Zeng<zengxiao@eswincomputing.com> - -2023-12-07 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv-protos.h (expand_vec_series): Adapt function. - * config/riscv/riscv-v.cc (rvv_builder::double_steps_npatterns_p): New function. - (expand_vec_series): Adapt function. - (expand_const_vector): Support new interleave vector with different step. - -2023-12-07 Richard Sandiford <richard.sandiford@arm.com> - - PR rtl-optimization/106694 - PR rtl-optimization/109078 - PR rtl-optimization/109391 - * config.gcc: Add aarch64-early-ra.o for AArch64 targets. - * config/aarch64/t-aarch64 (aarch64-early-ra.o): New rule. - * config/aarch64/aarch64-opts.h (aarch64_early_ra_scope): New enum. - * config/aarch64/aarch64.opt (mearly_ra): New option. - * doc/invoke.texi: Document it. - * common/config/aarch64/aarch64-common.cc - (aarch_option_optimization_table): Use -mearly-ra=strided by - default for -O2 and above. - * config/aarch64/aarch64-passes.def (pass_aarch64_early_ra): New pass. - * config/aarch64/aarch64-protos.h (aarch64_strided_registers_p) - (make_pass_aarch64_early_ra): Declare. - * config/aarch64/aarch64-sme.md (@aarch64_sme_lut<LUTI_BITS><mode>): - Add a stride_type attribute. - (@aarch64_sme_lut<LUTI_BITS><mode>_strided2): New pattern. - (@aarch64_sme_lut<LUTI_BITS><mode>_strided4): Likewise. - * config/aarch64/aarch64-sve-builtins-base.cc (svld1_impl::expand) - (svldnt1_impl::expand, svst1_impl::expand, svstn1_impl::expand): Handle - new way of defining multi-register loads and stores. - * config/aarch64/aarch64-sve.md (@aarch64_ld1<SVE_FULLx24:mode>) - (@aarch64_ldnt1<SVE_FULLx24:mode>, @aarch64_st1<SVE_FULLx24:mode>) - (@aarch64_stnt1<SVE_FULLx24:mode>): Delete. - * config/aarch64/aarch64-sve2.md (@aarch64_<LD1_COUNT:optab><mode>) - (@aarch64_<LD1_COUNT:optab><mode>_strided2): New patterns. - (@aarch64_<LD1_COUNT:optab><mode>_strided4): Likewise. - (@aarch64_<ST1_COUNT:optab><mode>): Likewise. - (@aarch64_<ST1_COUNT:optab><mode>_strided2): Likewise. - (@aarch64_<ST1_COUNT:optab><mode>_strided4): Likewise. - * config/aarch64/aarch64.cc (aarch64_strided_registers_p): New - function. - * config/aarch64/aarch64.md (UNSPEC_LD1_SVE_COUNT): Delete. - (UNSPEC_ST1_SVE_COUNT, UNSPEC_LDNT1_SVE_COUNT): Likewise. - (UNSPEC_STNT1_SVE_COUNT): Likewise. - (stride_type): New attribute. - * config/aarch64/constraints.md (Uwd, Uwt): New constraints. - * config/aarch64/iterators.md (UNSPEC_LD1_COUNT, UNSPEC_LDNT1_COUNT) - (UNSPEC_ST1_COUNT, UNSPEC_STNT1_COUNT): New unspecs. - (optab): Handle them. - (LD1_COUNT, ST1_COUNT): New iterators. - * config/aarch64/aarch64-early-ra.cc: New file. - -2023-12-07 Ezra Sitorus <ezra.sitorus@arm.com> - - * config/arm/arm_neon.h - (vld1_u8_x4, vld1_u16_x4, vld1_u32_x4, vld1_u64_x4): New - (vld1_s8_x4, vld1_s16_x4, vld1_s32_x4, vld1_s64_x4): New. - (vld1_f16_x4, vld1_f32_x4): New. - (vld1_p8_x4, vld1_p16_x4, vld1_p64_x4): New. - (vld1_bf16_x4): New. - (vld1q_types_x4): Updated to use vld1q_x4 - from arm_neon_builtins.def - * config/arm/arm_neon_builtins.def - (vld1_x4): Updated entries. - (vld1q_x4): New entries, but comes from the old vld1_x2 - * config/arm/neon.md (neon_vld1q_x4<mode>): - Updated from neon_vld1_x4<mode>. - -2023-12-07 Ezra Sitorus <ezra.sitorus@arm.com> - - * config/arm/arm_neon.h - (vld1_u8_x3, vld1_u16_x3, vld1_u32_x3, vld1_u64_x3): New - (vld1_s8_x3, vld1_s16_x3, vld1_s32_x3, vld1_s64_x3): New. - (vld1_f16_x3, vld1_f32_x3): New. - (vld1_p8_x3, vld1_p16_x3, vld1_p64_x3): New. - (vld1_bf16_x3): New. - (vld1q_types_x3): Updated to use vld1q_x3 from - arm_neon_builtins.def - * config/arm/arm_neon_builtins.def - (vld1_x3): Updated entries. - (vld1q_x3): New entries, but comes from the old vld1_x2 - * config/arm/neon.md (neon_vld1q_x3<mode>): Updated from - neon_vld1_x3<mode>. - -2023-12-07 Ezra Sitorus <ezra.sitorus@arm.com> - - * config/arm/arm_neon.h - (vld1_u8_x2, vld1_u16_x2, vld1_u32_x2, vld1_u64_x2): New - (vld1_s8_x2, vld1_s16_x2, vld1_s32_x2, vld1_s64_x2): New. - (vld1_f16_x2, vld1_f32_x2): New. - (vld1_p8_x2, vld1_p16_x2, vld1_p64_x2): New. - (vld1_bf16_x2): New. - (vld1q_types_x2): Updated to use vld1q_x2 from - arm_neon_builtins.def - * config/arm/arm_neon_builtins.def - (vld1_x2): Updated entries. - (vld1q_x2): New entries, but comes from the old vld1_x2 - * config/arm/neon.md - (neon_vld1<VMEMX2_q>_x2<VDQX:mode>): Updated - from neon_vld1_x2<mode>. - -2023-12-07 Ezra Sitorus <ezra.sitorus@arm.com> - - * config/arm/arm_neon.h - (vst1q_u8_x4, vst1q_u16_x4, vst1q_u32_x4, vst1q_u64_x4): New. - (vst1q_s8_x4, vst1q_s16_x4, vst1q_s32_x4, vst1q_s64_x4): New. - (vst1q_f16_x4, vst1q_f32_x4): New. - (vst1q_p8_x4, vst1q_p16_x4, vst1q_p64_x4): New. - (vst1q_bf16_x4): New. - * config/arm/arm_neon_builtins.def (vst1q_x4): New entries. - * config/arm/neon.md (neon_vst1q_x4<mode>): New. - -2023-12-07 Ezra Sitorus <ezra.sitorus@arm.com> - - * config/arm/arm_neon.h - (vst1q_u8_x3, vst1q_u16_x3, vst1q_u32_x3, vst1q_u64_x3): New. - (vst1q_s8_x3, vst1q_s16_x3, vst1q_s32_x3, vst1q_s64_x3): New. - (vst1q_f16_x3, vst1q_f32_x3): New. - (vst1q_p8_x3, vst1q_p16_x3, vst1q_p64_x3): New. - (vst1q_bf16_x3): New. - * config/arm/arm_neon_builtins.def (vst1q_x3): New entries. - * config/arm/neon.md (neon_vst1q_x3<mode>): New. - -2023-12-07 Ezra Sitorus <ezra.sitorus@arm.com> - - * config/arm/arm_neon.h - (vst1q_u8_x2, vst1q_u16_x2, vst1q_u32_x2, vst1q_u64_x2): New. - (vst1q_s8_x2, vst1q_s16_x2, vst1q_s32_x2, vst1q_s64_x2): New. - (vst1q_f16_x2, vst1q_f32_x2): New. - (vst1q_p8_x2, vst1q_p16_x2, vst1q_p64_x2): New. - (vst1q_bf16_x2): New. - * config/arm/arm_neon_builtins.def (vst1q_x2): New entries. - * config/arm/neon.md - (neon_vst1<VMEMX2_q>_x2<VDQX:mode>): Updated from - neon_vst1_x2<mode>. - * config/arm/iterators.md (VMEMX2): New mode iterator. - (VMEMX2_q): New mode attribute. - -2023-12-07 Ezra Sitorus <ezra.sitorus@arm.com> - - * config/arm/arm_neon.h - (vst1_u8_x4, vst1_u16_x4, vst1_u32_x4, vst1_u64_x4): New. - (vst1_s8_x4, vst1_s16_x4, vst1_s32_x4, vst1_s64_x4): New. - (vst1_f16_x4, vst1_f32_x4): New. - (vst1_p8_x4, vst1_p16_x4, vst1_p64_x4): New. - (vst1_bf16_x4): New. - * config/arm/arm_neon_builtins.def (vst1_x4): New entries. - * config/arm/neon.md (vst1_x4<mode>): New. - -2023-12-07 Ezra Sitorus <ezra.sitorus@arm.com> - - * config/arm/arm_neon.h - (vst1_u8_x3, vst1_u16_x3, vst1_u32_x3, vst1_u64_x3): New. - (vst1_s8_x3, vst1_s16_x3, vst1_s32_x3, vst1_s64_x3): New. - (vst1_f16_x3, vst1_f32_x3): New. - (vst1_p8_x3, vst1_p16_x3, vst1_p64_x3): New. - (vst1_bf16_x3): New. - * config/arm/arm_neon_builtins.def (vst1_x3): New entries. - * config/arm/neon.md (vst1_x3<mode>): New. - -2023-12-07 Ezra Sitorus <ezra.sitorus@arm.com> - - * config/arm/arm_neon.h - (vst1_u8_x2, vst1_u16_x2, vst1_u32_x2, vst1_u64_x2): New. - (vst1_s8_x2, vst1_s16_x2, vst1_s32_x2, vst1_s64_x2): New. - (vst1_f16_x2, vst1_f32_x2): New. - (vst1_p8_x2, vst1_p16_x2, vst1_p64_x2): New. - (vst1_bf16_x2): New. - * config/arm/arm_neon_builtins.def (vst1_x2): New entries. - * config/arm/neon.md (vst1_x2<mode>): New. - -2023-12-07 Ezra Sitorus <ezra.sitorus@arm.com> - - * config/arm/arm_neon.h - (vld1q_u8_x4, vld1q_u16_x4, vld1q_u32_x4, vld1q_u64_x4): New. - (vld1q_s8_x4, vld1q_s16_x4, vld1q_s32_x4, vld1q_s64_x4): New. - (vld1q_f16_x4, vld1q_f32_x4): New. - (vld1q_p8_x4, vld1q_p16_x4, vld1q_p64_x4): New. - (vld1q_bf16_x4): New. - * config/arm/arm_neon_builtins.def (vld1_x4): New entries. - * config/arm/neon.md (vld1_x4<mode>): New. - -2023-12-07 Ezra Sitorus <ezra.sitorus@arm.com> - - * config/arm/arm_neon.h - (vld1q_u8_x3, vld1q_u16_x3, vld1q_u32_x3, vld1q_u64_x3): New. - (vld1q_s8_x3, vld1q_s16_x3, vld1q_s32_x3, vld1q_s64_x3): New. - (vld1q_f16_x3, vld1q_f32_x3): New. - (vld1q_p8_x3, vld1q_p16_x3, vld1q_p64_x3): New. - (vld1q_bf16_x3): New. - * config/arm/arm_neon_builtins.def (vld1_x3): New entries. - * config/arm/neon.md (vld1_x3<mode>): New. - -2023-12-07 Ezra Sitorus <ezra.sitorus@arm.com> - - * config/arm/arm_neon.h - (vld1q_u8_x2, vld1q_u16_x2, vld1q_u32_x2, vld1q_u64_x2): New. - (vld1q_s8_x2, vld1q_s16_x2, vld1q_s32_x2, vld1q_s64_x2): New. - (vld1q_f16_x2, vld1q_f32_x2): New. - (vld1q_p8_x2, vld1q_p16_x2, vld1q_p64_x2): New. - (vld1q_bf16_x2): New. - * config/arm/arm_neon_builtins.def (vld1_x2): New entries. - * config/arm/neon.md (vld1_x2<mode>): New. - -2023-12-07 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com> - - * config/s390/vecintrin.h (vec_step): Expand vec_step to - __builtin_s390_vec_step. - -2023-12-07 Alexandre Oliva <oliva@adacore.com> - - * target.def (have_strub_support_for): New hook. - * doc/tm.texi.in: Document it. - * doc/tm.texi: Rebuild. - * ipa-strub.cc: Include target.h. - (strub_target_support_p): New. - (can_strub_p): Call it. Test for no flag_split_stack. - (pass_ipa_strub::adjust_at_calls_call): Check for target - support. - * config/nvptx/nvptx.cc (TARGET_HAVE_STRUB_SUPPORT_FOR): - Disable. - * doc/sourcebuild.texi (strub): Document new effective - target. - -2023-12-07 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv-avlprop.cc (simplify_replace_avl): New function. - (simplify_replace_vlmax_avl): Fix bug. - * config/riscv/t-riscv: Add a new include file. - -2023-12-07 Christoph Müllner <christoph.muellner@vrull.eu> - - * config/riscv/thead.cc (th_memidx_classify_address_index): - Require TARGET_XTHEADMEMIDX for FP modes. - * config/riscv/thead.md: Require TARGET_XTHEADMEMIDX for all - XTheadFMemIdx pattern. - -2023-12-07 Jakub Jelinek <jakub@redhat.com> - - PR middle-end/112881 - * expr.cc (count_type_elements): Handle BITINT_TYPE like INTEGER_TYPE. - -2023-12-07 Jakub Jelinek <jakub@redhat.com> - - PR tree-optimization/112880 - * tree-ssa-dce.cc (maybe_optimize_arith_overflow): Use - unsigned_type_for instead of conditionally calling - build_nonstandard_integer_type. - -2023-12-07 Victor Do Nascimento <victor.donascimento@arm.com> - - * config/aarch64/arm_neon.h (vldap1_lane_u64): New. - (vldap1q_lane_u64): Likewise. - (vldap1_lane_s64): Likewise. - (vldap1q_lane_s64): Likewise. - (vldap1_lane_f64): Likewise. - (vldap1q_lane_f64): Likewise. - (vldap1_lane_p64): Likewise. - (vldap1q_lane_p64): Likewise. - (vstl1_lane_u64): Likewise. - (vstl1q_lane_u64): Likewise. - (vstl1_lane_s64): Likewise. - (vstl1q_lane_s64): Likewise. - (vstl1_lane_f64): Likewise. - (vstl1q_lane_f64): Likewise. - (vstl1_lane_p64): Likewise. - (vstl1q_lane_p64): Likewise. - -2023-12-07 Victor Do Nascimento <victor.donascimento@arm.com> - - * config/aarch64/aarch64-simd-builtins.def - (vec_ldap1_lane): New. - (vec_stl1_lane): Likewise. - * config/aarch64/aarch64-simd.md - (aarch64_vec_stl1_lanes<mode>_lane<Vel>): New. - (aarch64_vec_stl1_lane<mode>): Likewise. - (aarch64_vec_ldap1_lanes<mode>_lane<Vel>): Likewise. - (aarch64_vec_ldap1_lane<mode>): Likewise. - * config/aarch64/aarch64.md (UNSPEC_LDAP1_LANE): New. - (UNSPEC_STL1_LANE): Likewise. - -2023-12-07 Victor Do Nascimento <victor.donascimento@arm.com> - - * config/aarch64/iterators.md (V12DIF): New. - (V12DUP): Likewise. - (VEL): Add support for all V12DIF-associated modes. - (Vetype): Add support for V1DI and V1DF. - (Vel): Likewise. - -2023-12-07 Victor Do Nascimento <victor.donascimento@arm.com> - - * config/aarch64/aarch64-option-extensions.def (rcpc3): New. - * config/aarch64/aarch64.h (AARCH64_ISA_RCPC3): Likewise. - (TARGET_RCPC3): Likewise. - * doc/invoke.texi (rcpc3): Document feature in AArch64 Options. - -2023-12-07 Hongyu Wang <hongyu.wang@intel.com> - - * config/i386/i386-expand.cc (ix86_split_ashl_ndd): New - function to split NDD form lshift. - (ix86_split_rshift_ndd): Likewise for l/ashiftrt. - * config/i386/i386-protos.h (ix86_split_ashl_ndd): New - prototype. - (ix86_split_rshift_ndd): Likewise. - * config/i386/i386.md (ashl<mode>3_doubleword): Add NDD - alternative, call ndd split function when operands[0] - not equal to operands[1]. - (define_split for doubleword lshift): Likewise. - (define_peephole for doubleword lshift): Likewise. - (<insn><mode>3_doubleword): Likewise for l/ashiftrt. - (define_split for doubleword l/ashiftrt): Likewise. - (define_peephole for doubleword l/ashiftrt): Likewise. - -2023-12-07 Hongyu Wang <hongyu.wang@intel.com> - - * config/i386/i386.md (*mov<mode>cc_noc): Extend with new constraints - to support NDD. - (*movsicc_noc_zext): Likewise. - (*movsicc_noc_zext_1): Likewise. - (*movqicc_noc): Likewise. - -2023-12-07 Hongyu Wang <hongyu.wang@intel.com> - - * config/i386/i386.md (x86_64_shld_ndd): New define_insn. - (x86_64_shld_ndd_1): Likewise. - (*x86_64_shld_ndd_2): Likewise. - (x86_shld_ndd): Likewise. - (x86_shld_ndd_1): Likewise. - (*x86_shld_ndd_2): Likewise. - (x86_64_shrd_ndd): Likewise. - (x86_64_shrd_ndd_1): Likewise. - (*x86_64_shrd_ndd_2): Likewise. - (x86_shrd_ndd): Likewise. - (x86_shrd_ndd_1): Likewise. - (*x86_shrd_ndd_2): Likewise. - (*x86_64_shld_shrd_1_nozext): Adjust codegen under TARGET_APX_NDD. - (*x86_shld_shrd_1_nozext): Likewise. - (*x86_64_shrd_shld_1_nozext): Likewise. - (*x86_shrd_shld_1_nozext): Likewise. - -2023-12-07 Hongyu Wang <hongyu.wang@intel.com> - - * config/i386/i386.md (*<insn><mode>3_1): Extend with a new - alternative to support NDD for SI/DI rotate, and adjust output - template. - (*<insn>si3_1_zext): Likewise. - (*<insn><mode>3_1): Likewise for QI/HI modes. - (rcrsi2): Likewise, and use nonimmediate_operand for operands[1] - to accept memory input for NDD alternative. - (rcrdi2): Likewise. - -2023-12-07 Hongyu Wang <hongyu.wang@intel.com> - - * config/i386/i386.md (ashr<mode>3_cvt): Extend with new - alternatives to support NDD, and adjust output templates. - (*ashr<mode>3_1): Likewise for SI/DI mode. - (*lshr<mode>3_1): Likewise. - (*<insn>si3_1_zext): Likewise. - (*ashr<mode>3_1): Likewise for QI/HI mode. - (*lshrqi3_1): Likewise. - (*lshrhi3_1): Likewise. - (<insn><mode>3_cmp): Likewise. - (*<insn><mode>3_cconly): Likewise. - (*ashrsi3_cvt_zext): Likewise, and use nonimmediate_operand for - operands[1] to accept memory input for NDD alternative. - (*highpartdisi2): Likewise. - (*<insn>si3_cmp_zext): Likewise. - (<insn><mode>3_carry): Likewise. - -2023-12-07 Hongyu Wang <hongyu.wang@intel.com> - - * config/i386/i386.md (*ashl<mode>3_1): Extend with new - alternatives to support NDD, limit the new alternative to - generate sal only, and adjust output template for NDD. - (*ashlsi3_1_zext): Likewise. - (*ashlhi3_1): Likewise. - (*ashlqi3_1): Likewise. - (*ashl<mode>3_cmp): Likewise. - (*ashlsi3_cmp_zext): Likewise, and use nonimmediate_operand for - operands[1] to accept memory input for NDD alternative. - (*ashl<mode>3_cconly): Likewise. - (*ashl<dwi>3_doubleword_highpart): Adjust codegen for NDD. - -2023-12-07 Kong Lingling <lingling.kong@intel.com> - - * config/i386/i386.md (<code><mode>3): Add new alternative for NDD - and adjust output templates. - (*<code><mode>_1): Likewise. - (*<code>qi_1): Likewise. - (*notxor<mode>_1): Likewise. - (*<code>si_1_zext): Likewise. - (*notxorqi_1): Likewise. - (*<code><mode>_2): Likewise. - (*<code>si_2_zext): Likewise. - (*<code>si_2_zext_imm): Likewise. - (*<code>si_1_zext_imm): Likewise, and use nonimmediate_operand for - operands[1] to accept memory input for NDD alternative. - (*one_cmplsi2_2_zext): Likewise. - (define_split for *one_cmplsi2_2_zext): Use nonimmediate_operand for - operands[3]. - (*<code><dwi>3_doubleword): Add NDD constraints, adopt '&' to NDD dest - and emit move for optimized case if operands[0] != operands[1] or - operands[4] != operands[5]. - (define_split for QI highpart OR/XOR): Prohibit splitter to split NDD - form OR/XOR insn to <any_logic:code>qi_ext<mode>_3. - (define_split for QI strict_lowpart optimization): Prohibit splitter to - split NDD form AND insn to *<code><mode>3_1_slp. - -2023-12-07 Kong Lingling <lingling.kong@intel.com> - - * config/i386/i386.md (and<mode>3): Add NDD alternatives and adjust - output template. - (*anddi_1): Likewise. - (*and<mode>_1): Likewise. - (*andqi_1): Likewise. - (*andsi_1_zext): Likewise. - (*anddi_2): Likewise. - (*andsi_2_zext): Likewise. - (*andqi_2_maybe_si): Likewise. - (*and<mode>_2): Likewise. - (*and<dwi>3_doubleword): Add NDD alternative, adopt '&' to NDD dest and - emit move for optimized case if operands[0] not equal to operands[1]. - (define_split for QI highpart AND): Prohibit splitter to split NDD - form AND insn to <any_logic:code>qi_ext<mode>_3. - (define_split for QI strict_lowpart optimization): Prohibit splitter to - split NDD form AND insn to *<code><mode>3_1_slp. - (define_split for zero_extend and optimization): Prohibit splitter to - split NDD form AND insn to zero_extend insn. - -2023-12-07 Kong Lingling <lingling.kong@intel.com> - - * config/i386/i386.md (one_cmpl<mode>2): Add new constraints for NDD - and adjust output template. - (*one_cmpl<mode>2_1): Likewise. - (*one_cmplqi2_1): Likewise. - (*one_cmpl<dwi>2_doubleword): Likewise, and adopt '&' to NDD dest. - (*one_cmpl<mode>2_2): Likewise. - (*one_cmplsi2_1_zext): Likewise, and use nonimmediate_operand for - operands[1] to accept memory input for NDD alternative. - -2023-12-07 Kong Lingling <lingling.kong@intel.com> - - * config/i386/i386-expand.cc (ix86_expand_unary_operator): Add use_ndd - parameter and adjust for NDD. - * config/i386/i386-protos.h: Add use_ndd parameter for - ix86_unary_operator_ok and ix86_expand_unary_operator. - * config/i386/i386.cc (ix86_unary_operator_ok): Add use_ndd parameter - and adjust for NDD. - * config/i386/i386.md (neg<mode>2): Add new constraint for NDD and - adjust output template. - (*neg<mode>_1): Likewise. - (*neg<dwi>2_doubleword): Likewise and adopt '&' to NDD dest. - (*neg<mode>_2): Likewise. - (*neg<mode>_ccc_1): Likewise. - (*neg<mode>_ccc_2): Likewise. - (*negsi_1_zext): Likewise, and use nonimmediate_operand for operands[1] - to accept memory input for NDD alternatives. - (*negsi_2_zext): Likewise. - -2023-12-07 Kong Lingling <lingling.kong@intel.com> - - * config/i386/i386.md (*sub<dwi>3_doubleword): Add new alternative for - NDD, adopt '&' modifier to NDD dest and emit move when operands[0] not - equal to operands[1]. - (*sub<dwi>3_doubleword_zext): Likewise. - (*subv<dwi>4_doubleword): Likewise. - (*subv<dwi>4_doubleword_1): Likewise. - (*subv<mode>4_overflow_1): Add NDD alternatives and adjust output - templates. - (*subv<mode>4_overflow_2): Likewise. - (@sub<mode>3_carry): Likewise. - (*addsi3_carry_zext_0r): Likewise, and use nonimmediate_operand for - operands[1] to accept memory input for NDD alternative. - (*subsi3_carry_zext): Likewise. - (subborrow<mode>): Parse TARGET_APX_NDD to ix86_binary_operator_ok. - (subborrow<mode>_0): Likewise. - (*sub<mode>3_eq): Likewise. - (*sub<mode>3_ne): Likewise. - (*sub<mode>3_eq_1): Likewise. - -2023-12-07 Kong Lingling <lingling.kong@intel.com> - - * config/i386/i386-expand.cc (ix86_fixup_binary_operands_no_copy): - Add use_ndd parameter and parse it. - * config/i386/i386-protos.h (ix86_fixup_binary_operands_no_copy): - Change define. - * config/i386/i386.md (sub<mode>3): Add new alternatives for NDD - and adjust output templates. - (*sub<mode>_1): Likewise. - (*sub<mode>_2): Likewise. - (subv<mode>4): Likewise. - (*subv<mode>4): Likewise. - (subv<mode>4_1): Likewise. - (usubv<mode>4): Likewise. - (*sub<mode>_3): Likewise. - (*subsi_1_zext): Likewise, and use nonimmediate_operand for operands[1] - to accept memory input for NDD alternatives. - (*subsi_2_zext): Likewise. - (*subsi_3_zext): Likewise. - -2023-12-07 Kong Lingling <lingling.kong@intel.com> - - * config/i386/i386.md (*add<dwi>3_doubleword): Add ndd alternatives, - adopt '&' to ndd dest and move operands[1] to operands[0] when they are - not equal. - (*add<dwi>3_doubleword_cc_overflow_1): Likewise. - (*addv<dwi>4_doubleword): Likewise. - (*addv<dwi>4_doubleword_1): Likewise. - (*add<dwi>3_doubleword_zext): Likewise. - (addv<mode>4_overflow_1): Add ndd alternatives. - (*addv<mode>4_overflow_2): Likewise. - (@add<mode>3_carry): Likewise. - (*add<mode>3_carry_0): Likewise. - (*addsi3_carry_zext): Likewise. - (addcarry<mode>): Likewise. - (addcarry<mode>_0): Likewise. - (*addcarry<mode>_1): Likewise. - (*add<mode>3_eq): Likewise. - (*add<mode>3_ne): Likewise. - (*addsi3_carry_zext_0): Likewise, and use nonimmediate_operand for - operands[1] to accept memory input for NDD alternative. - -2023-12-07 Hongyu Wang <hongyu.wang@intel.com> - - * config/i386/constraints.md (je): New constraint. - * config/i386/i386-protos.h (x86_poff_operand_p): New function to - check any *POFF constant in operand. - * config/i386/i386.cc (x86_poff_operand_p): New prototype. - * config/i386/i386.md (*add<mode>_1): Split out je alternative for add. - -2023-12-07 Kong Lingling <lingling.kong@intel.com> - - * config/i386/i386.md: (addsi_1_zext): Add new alternatives for - NDD and adjust output templates. - (*add<mode>_2): Likewise. - (*addsi_2_zext): Likewise. - (*add<mode>_3): Likewise. - (*addsi_3_zext): Likewise. - (*adddi_4): Likewise. - (*add<mode>_4): Likewise. - (*add<mode>_5): Likewise. - (*addv<mode>4): Likewise. - (*addv<mode>4_1): Likewise. - (*add<mode>3_cconly_overflow_1): Likewise. - (*add<mode>3_cc_overflow_1): Likewise. - (*addsi3_zext_cc_overflow_1): Likewise. - (*add<mode>3_cconly_overflow_2): Likewise. - (*add<mode>3_cc_overflow_2): Likewise. - (*addsi3_zext_cc_overflow_2): Likewise. - -2023-12-07 Kong Lingling <lingling.kong@intel.com> - - * config/i386/i386-expand.cc (ix86_fixup_binary_operands): Add - new use_ndd flag to check whether ndd can be used for this binop - and adjust operand emit. - (ix86_binary_operator_ok): Likewise. - (ix86_expand_binary_operator): Likewise, and void postreload - expand generate lea pattern when use_ndd is explicit parsed. - * config/i386/i386-options.cc (ix86_option_override_internal): - Prohibit apx subfeatures when not in 64bit mode. - * config/i386/i386-protos.h (ix86_binary_operator_ok): - Add use_ndd flag. - (ix86_fixup_binary_operand): Likewise. - (ix86_expand_binary_operand): Likewise. - * config/i386/i386.md (*add<mode>_1): Extend with new alternatives - to support NDD, and adjust output template. - (*addhi_1): Likewise. - (*addqi_1): Likewise. - -2023-12-07 David Malcolm <dmalcolm@redhat.com> - - PR analyzer/103546 - PR analyzer/112850 - * doc/invoke.texi: Add -Wanalyzer-symbol-too-complex. - -2023-12-06 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv-vsetvl.cc (extract_single_source): new function. - (pre_vsetvl::compute_lcm_local_properties): Fix ICE. - -2023-12-06 Victor Do Nascimento <victor.donascimento@arm.com> - - * config/aarch64/aarch64-builtins.cc (AARCH64_RSR128): New - `enum aarch64_builtins' value. - (AARCH64_WSR128): Likewise. - (aarch64_init_rwsr_builtins): Init `__builtin_aarch64_rsr128' - and `__builtin_aarch64_wsr128' builtins. - (aarch64_expand_rwsr_builtin): Extend function to handle - `__builtin_aarch64_{rsr|wsr}128'. - * config/aarch64/aarch64-protos.h (aarch64_retrieve_sysreg): - Update function signature. - * config/aarch64/aarch64.cc (F_REG_128): New. - (aarch64_retrieve_sysreg): Add 128-bit register mode check. - * config/aarch64/aarch64.md (UNSPEC_SYSREG_RTI): New. - (UNSPEC_SYSREG_WTI): Likewise. - (aarch64_read_sysregti): Likewise. - (aarch64_write_sysregti): Likewise. - * config/aarch64/arm_acle.h (__arm_rsr128): New. - (__arm_wsr128): Likewise. - -2023-12-06 Victor Do Nascimento <victor.donascimento@arm.com> - - * config/aarch64/aarch64-sys-regs.def: Copy from Binutils. - -2023-12-06 Victor Do Nascimento <victor.donascimento@arm.com> - - * config/aarch64/aarch64-option-extensions.def (gcs): New. - * config/aarch64/aarch64.h (AARCH64_ISA_GCS): New. - (TARGET_THE): Likewise. - * doc/invoke.texi (AArch64 Options): Describe GCS. - -2023-12-06 Victor Do Nascimento <victor.donascimento@arm.com> - - * config/aarch64/aarch64-c.cc (__ARM_FEATURE_SYSREG128): New. - * config/aarch64/aarch64-arches.def (armv8.9-a): New. - (armv9.4-a): Likewise. - * config/aarch64/aarch64-option-extensions.def (d128): Likewise. - (the): Likewise. - * config/aarch64/aarch64.h (AARCH64_ISA_V9_4A): Likewise. - (AARCH64_ISA_V8_9A): Likewise. - (TARGET_ARMV9_4): Likewise. - (AARCH64_ISA_D128): Likewise. - (AARCH64_ISA_THE): Likewise. - (TARGET_D128): Likewise. - * doc/invoke.texi (AArch64 Options): Document new -march flags - and extensions. - -2023-12-06 Eric Gallager <egallager@gcc.gnu.org> - - * Makefile.in: Remove qmtest-related targets. - -2023-12-06 David Malcolm <dmalcolm@redhat.com> - - * common.opt (fdiagnostics-json-formatting): New. - * diagnostic-format-json.cc: Add "formatted" boolean - to json_output_format and subclasses, and to the - diagnostic_output_format_init_json_* functions. Use it when - printing JSON. - * diagnostic-format-sarif.cc: Likewise for sarif_builder, - sarif_output_format, and the various - diagnostic_output_format_init_sarif_* functions. - * diagnostic.cc (diagnostic_output_format_init): Add - "json_formatting" boolean and pass on to the various cases. - * diagnostic.h (diagnostic_output_format_init): Add - "json_formatted" param. - (diagnostic_output_format_init_json_stderr): Add "formatted" param - (diagnostic_output_format_init_json_file): Likewise. - (diagnostic_output_format_init_sarif_stderr): Likewise. - (diagnostic_output_format_init_sarif_file): Likewise. - (diagnostic_output_format_init_sarif_stream): Likewise. - * doc/invoke.texi (-fdiagnostics-format=json): Remove discussion - about JSON output needing formatting. - (-fno-diagnostics-json-formatting): Add. - * gcc.cc (driver_handle_option): Use - opts->x_flag_diagnostics_json_formatting. - * gcov.cc (generate_results): Pass "false" for new formatting - option when printing json. - * json.cc (value::dump): Add new "formatted" param. - (object::print): Likewise, using it to add whitespace to format - the JSON output. - (array::print): Likewise. - (float_number::print): Add new "formatted" param. - (integer_number::print): Likewise. - (string::print): Likewise. - (literal::print): Likewise. - (selftest::assert_print_eq): Add "formatted" param. - (ASSERT_PRINT_EQ): Add "FORMATTED" param. - (selftest::test_writing_objects): Test both formatted and - unformatted printing. - (selftest::test_writing_arrays): Likewise. - (selftest::test_writing_float_numbers): Update for new param of - ASSERT_PRINT_EQ. - (selftest::test_writing_integer_numbers): Likewise. - (selftest::test_writing_strings): Likewise. - (selftest::test_writing_literals): Likewise. - (selftest::test_formatting): New. - (selftest::json_cc_tests): Call it. - * json.h (value::print): Add "formatted" param. - (value::dump): Likewise. - (object::print): Likewise. - (array::print): Likewise. - (float_number::print): Likewise. - (integer_number::print): Likewise. - (string::print): Likewise. - (literal::print): Likewise. - * optinfo-emit-json.cc (optrecord_json_writer::write): Pass - "false" for new formatting option when printing json. - (selftest::test_building_json_from_dump_calls): Likewise. - * opts.cc (common_handle_option): Use - opts->x_flag_diagnostics_json_formatting. - -2023-12-06 David Malcolm <dmalcolm@redhat.com> - - * diagnostic-format-json.cc (on_begin_diagnostic): Convert param - to const reference. - (on_end_diagnostic): Likewise. - (json_output_format::on_end_diagnostic): Likewise. - * diagnostic-format-sarif.cc - (sarif_invocation::add_notification_for_ice): Likewise. - (sarif_result::on_nested_diagnostic): Likewise. - (sarif_ice_notification::sarif_ice_notification): Likewise. - (sarif_builder::end_diagnostic): Likewise. - (sarif_builder::make_result_object): Likewise. - (make_reporting_descriptor_object_for_warning): Likewise. - (sarif_builder::make_locations_arr): Likewise. - (sarif_output_format::on_begin_diagnostic): Likewise. - (sarif_output_format::on_end_diagnostic): Likewise. - * diagnostic.cc (default_diagnostic_starter): Make diagnostic_info - param const. - (default_diagnostic_finalizer): Likewise. - (diagnostic_context::report_diagnostic): Pass diagnostic by - reference to on_{begin,end}_diagnostic. - (diagnostic_text_output_format::on_begin_diagnostic): Convert - param to const reference. - (diagnostic_text_output_format::on_end_diagnostic): Likewise. - * diagnostic.h (diagnostic_starter_fn): Make diagnostic_info param - const. - (diagnostic_finalizer_fn): Likeewise. - (diagnostic_output_format::on_begin_diagnostic): Convert param to - const reference. - (diagnostic_output_format::on_end_diagnostic): Likewise. - (diagnostic_text_output_format::on_begin_diagnostic): Likewise. - (diagnostic_text_output_format::on_end_diagnostic): Likewise. - (default_diagnostic_starter): Make diagnostic_info param const. - (default_diagnostic_finalizer): Likewise. - * langhooks-def.h (lhd_print_error_function): Make diagnostic_info - param const. - * langhooks.cc (lhd_print_error_function): Likewise. - * langhooks.h (lang_hooks::print_error_function): Likewise. - * tree-diagnostic.cc (diagnostic_report_current_function): - Likewise. - (default_tree_diagnostic_starter): Likewise. - (virt_loc_aware_diagnostic_finalizer): Likewise. - * tree-diagnostic.h (diagnostic_report_current_function): - Likewise. - (virt_loc_aware_diagnostic_finalizer): Likewise. - -2023-12-06 Andrew Stubbs <ams@codesourcery.com> - - * config/gcn/gcn-builtins.def (DISPATCH_PTR): New built-in. - * config/gcn/gcn.cc (gcn_init_machine_status): Disable global - addressing. - (gcn_expand_builtin_1): Implement GCN_BUILTIN_DISPATCH_PTR. - -2023-12-06 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - PR target/112855 - * config/riscv/riscv-vsetvl.cc - (pre_vsetvl::compute_lcm_local_properties): Fix transparant LCM data. - (pre_vsetvl::earliest_fuse_vsetvl_info): Disable earliest fusion for unrelated edge. - -2023-12-06 Marek Polacek <polacek@redhat.com> - - PR target/112762 - * config/linux.h: Redefine TARGET_FORTIFY_SOURCE_DEFAULT_LEVEL for - glibc only. - -2023-12-06 Victor Do Nascimento <victor.donascimento@arm.com> - - * config/aarch64/aarch64.cc - (aarch64_test_sysreg_encoding_clashes): New. - (aarch64_run_selftests): add call to - aarch64_test_sysreg_encoding_clashes selftest. - -2023-12-06 Victor Do Nascimento <victor.donascimento@arm.com> - - * config/aarch64/aarch64-builtins.cc (aarch64_general_check_builtin_call): - New. - * config/aarch64/aarch64-c.cc (aarch64_check_builtin_call): - Add `aarch64_general_check_builtin_call' call. - * config/aarch64/aarch64-protos.h (aarch64_general_check_builtin_call): - New. - -2023-12-06 Victor Do Nascimento <victor.donascimento@arm.com> - - * config/aarch64/aarch64-builtins.cc (enum aarch64_builtins): - Add enums for new builtins. - (aarch64_init_rwsr_builtins): New. - (aarch64_general_init_builtins): Call aarch64_init_rwsr_builtins. - (aarch64_expand_rwsr_builtin): New. - (aarch64_general_expand_builtin): Call aarch64_general_expand_builtin. - * config/aarch64/aarch64.md (read_sysregdi): New insn_and_split. - (write_sysregdi): Likewise. - * config/aarch64/arm_acle.h (__arm_rsr): New. - (__arm_rsrp): Likewise. - (__arm_rsr64): Likewise. - (__arm_rsrf): Likewise. - (__arm_rsrf64): Likewise. - (__arm_wsr): Likewise. - (__arm_wsrp): Likewise. - (__arm_wsr64): Likewise. - (__arm_wsrf): Likewise. - (__arm_wsrf64): Likewise. - -2023-12-06 Victor Do Nascimento <victor.donascimento@arm.com> - - * config/aarch64/aarch64-protos.h (aarch64_valid_sysreg_name_p): New. - (aarch64_retrieve_sysreg): Likewise. - * config/aarch64/aarch64.cc (is_implem_def_reg): Likewise. - (aarch64_valid_sysreg_name_p): Likewise. - (aarch64_retrieve_sysreg): Likewise. - (aarch64_register_sysreg): Likewise. - (aarch64_init_sysregs): Likewise. - (aarch64_lookup_sysreg_map): Likewise. - * config/aarch64/predicates.md (aarch64_sysreg_string): New. - -2023-12-06 Victor Do Nascimento <victor.donascimento@arm.com> - - * config/aarch64/aarch64.cc (sysreg_t): New. - (aarch64_sysregs): Likewise. - (AARCH64_FEATURE): Likewise. - (AARCH64_FEATURES): Likewise. - (AARCH64_NO_FEATURES): Likewise. - * config/aarch64/aarch64.h (AARCH64_ISA_V8A): Add missing - ISA flag. - (AARCH64_ISA_V8_1A): Likewise. - (AARCH64_ISA_V8_7A): Likewise. - (AARCH64_ISA_V8_8A): Likewise. - (AARCH64_NO_FEATURES): Likewise. - (AARCH64_FL_RAS): New ISA flag alias. - (AARCH64_FL_LOR): Likewise. - (AARCH64_FL_PAN): Likewise. - (AARCH64_FL_AMU): Likewise. - (AARCH64_FL_SCXTNUM): Likewise. - (AARCH64_FL_ID_PFR2): Likewise. - (F_DEPRECATED): New. - (F_REG_READ): Likewise. - (F_REG_WRITE): Likewise. - (F_ARCHEXT): Likewise. - (F_REG_ALIAS): Likewise. - -2023-12-06 Victor Do Nascimento <victor.donascimento@arm.com> - - * config/aarch64/aarch64-sys-regs.def: New. - -2023-12-06 Robin Dapp <rdapp@ventanamicro.com> - - PR target/112854 - PR target/112872 - * config/riscv/autovec.md (vec_init<mode>qi): New expander. - -2023-12-06 Jakub Jelinek <jakub@redhat.com> - - PR rtl-optimization/112760 - * config/i386/i386-passes.def (pass_insert_vzeroupper): Insert - after pass_postreload_cse rather than pass_reload. - * config/i386/i386-features.cc (rest_of_handle_insert_vzeroupper): - Adjust comment for it. - -2023-12-06 Jakub Jelinek <jakub@redhat.com> - - PR tree-optimization/112809 - * gimple-lower-bitint.cc (bitint_large_huge::lower_mergeable_stmt): For - separate_ext in kind == bitint_prec_huge mode if rem == 0, create for - i == cnt - 1 the loop rather than using size_int (end). - -2023-12-06 Jakub Jelinek <jakub@redhat.com> - - * gcc.cc (driver_handle_option): Add /* FALLTHROUGH */ comment - between OPT_pie and OPT_r cases. - -2023-12-06 Tobias Burnus <tobias@codesourcery.com> - - * tsystem.h (calloc, realloc): Declare when inhibit_libc. - -2023-12-06 Richard Biener <rguenther@suse.de> - - PR tree-optimization/112843 - * tree-ssa-operands.cc (update_stmt_operands): Do not call - update_stmt from ranger. - * value-query.h (range_query::update_stmt): Remove. - * gimple-range.h (gimple_ranger::update_stmt): Likewise. - * gimple-range.cc (gimple_ranger::update_stmt): Likewise. - -2023-12-06 xuli <xuli1@eswincomputing.com> - - * config/riscv/riscv.md: Remove. - -2023-12-06 Alexandre Oliva <oliva@adacore.com> - - * Makefile.in (OBJS): Add ipa-strub.o. - (GTFILES): Add ipa-strub.cc. - * builtins.def (BUILT_IN_STACK_ADDRESS): New. - (BUILT_IN___STRUB_ENTER): New. - (BUILT_IN___STRUB_UPDATE): New. - (BUILT_IN___STRUB_LEAVE): New. - * builtins.cc: Include ipa-strub.h. - (STACK_STOPS, STACK_UNSIGNED): Define. - (expand_builtin_stack_address): New. - (expand_builtin_strub_enter): New. - (expand_builtin_strub_update): New. - (expand_builtin_strub_leave): New. - (expand_builtin): Call them. - * common.opt (fstrub=*): New options. - * doc/extend.texi (strub): New type attribute. - (__builtin_stack_address): New function. - (Stack Scrubbing): New section. - * doc/invoke.texi (-fstrub=*): New options. - (-fdump-ipa-*): New passes. - * gengtype-lex.l: Ignore multi-line pp-directives. - * ipa-inline.cc: Include ipa-strub.h. - (can_inline_edge_p): Test strub_inlinable_to_p. - * ipa-split.cc: Include ipa-strub.h. - (execute_split_functions): Test strub_splittable_p. - * ipa-strub.cc, ipa-strub.h: New. - * passes.def: Add strub_mode and strub passes. - * tree-cfg.cc (gimple_verify_flow_info): Note on debug stmts. - * tree-pass.h (make_pass_ipa_strub_mode): Declare. - (make_pass_ipa_strub): Declare. - (make_pass_ipa_function_and_variable_visibility): Fix - formatting. - * tree-ssa-ccp.cc (optimize_stack_restore): Keep restores - before strub leave. - * attribs.cc: Include ipa-strub.h. - (decl_attributes): Support applying attributes to function - type, rather than pointer type, at handler's request. - (comp_type_attributes): Combine strub_comptypes and target - comp_type results. - * doc/tm.texi.in (TARGET_STRUB_USE_DYNAMIC_ARRAY): New. - (TARGET_STRUB_MAY_USE_MEMSET): New. - * doc/tm.texi: Rebuilt. - * cgraph.h (symtab_node::reset): Add preserve_comdat_group - param, with a default. - * cgraphunit.cc (symtab_node::reset): Use it. - -2023-12-05 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - PR target/112851 - PR target/112852 - * config/riscv/riscv-v.cc (vls_mode_valid_p): Block VLSmodes according - TARGET_MAX_LMUL and BITS_PER_RISCV_VECTOR. - -2023-12-05 David Faust <david.faust@oracle.com> - - PR debug/112849 - * btfout.cc (btf_collect_datasec): Avoid incorrectly creating an - entry in a BTF_KIND_DATASEC record for extern variable decls without - a known section. - -2023-12-05 Jakub Jelinek <jakub@redhat.com> - - PR target/112606 - * config/rs6000/rs6000.md (copysign<mode>3): Change predicate - of the last argument from gpc_reg_operand to any_operand. If - operands[2] is CONST_DOUBLE, emit abs or neg abs depending on - its sign, otherwise if it doesn't satisfy gpc_reg_operand, - force it to REG using copy_to_mode_reg. - -2023-12-05 Richard Sandiford <richard.sandiford@arm.com> - - * attribs.cc (handle_ignored_attributes_option): Add extra - braces to work around PR 16333 in older compilers. - * config/aarch64/aarch64.cc (aarch64_gnu_attribute_table): Likewise. - (aarch64_arm_attribute_table): Likewise. - * config/arm/arm.cc (arm_gnu_attribute_table): Likewise. - * config/i386/i386-options.cc (ix86_gnu_attribute_table): Likewise. - * config/ia64/ia64.cc (ia64_gnu_attribute_table): Likewise. - * config/rs6000/rs6000.cc (rs6000_gnu_attribute_table): Likewise. - * target-def.h (TARGET_GNU_ATTRIBUTES): Likewise. - * genhooks.cc (emit_init_macros): Likewise, when emitting the - instantiation of TARGET_ATTRIBUTE_TABLE. - * langhooks-def.h (LANG_HOOKS_INITIALIZER): Likewise, when - instantiating LANG_HOOKS_ATTRIBUTE_TABLE. - (LANG_HOOKS_ATTRIBUTE_TABLE): Define to be empty by default. - * target.def (attribute_table): Likewise. - -2023-12-05 Richard Biener <rguenther@suse.de> - - PR middle-end/112860 - * passes.cc (should_skip_pass_p): Do not skip ISEL. - -2023-12-05 Richard Biener <rguenther@suse.de> - - PR sanitizer/111736 - * asan.cc (asan_protect_global): Do not protect globals - in non-generic address-space. - -2023-12-05 Richard Biener <rguenther@suse.de> - - PR ipa/92606 - * ipa-icf.cc (sem_variable::equals_wpa): Compare address-spaces. - -2023-12-05 Richard Biener <rguenther@suse.de> - - PR middle-end/112830 - * gimplify.cc (gimplify_modify_expr): Avoid turning aggregate - copy of non-generic address-spaces to memcpy. - (gimplify_modify_expr_to_memcpy): Assert we are dealing with - a copy inside the generic address-space. - (gimplify_modify_expr_to_memset): Likewise. - * tree-cfg.cc (verify_gimple_assign_single): Allow - WITH_SIZE_EXPR as part of the RHS of an assignment. - * builtins.cc (get_memory_address): Assert we are dealing - with the generic address-space. - * tree-ssa-dce.cc (ref_may_be_aliased): Handle WITH_SIZE_EXPR. - -2023-12-05 Richard Biener <rguenther@suse.de> - - PR tree-optimization/109689 - PR tree-optimization/112856 - * cfgloopmanip.h (unloop_loops): Adjust API. - * tree-ssa-loop-ivcanon.cc (unloop_loops): Take edges_to_remove - as parameter. - (canonicalize_induction_variables): Adjust. - (tree_unroll_loops_completely): Likewise. - * tree-ssa-loop-ch.cc (ch_base::copy_headers): Rewrite into - LC SSA if we unlooped some loops and we are in LC SSA. - -2023-12-05 Jakub Jelinek <jakub@redhat.com> - - PR target/112845 - * config/i386/i386.md (movabsq $(i32 << shift), r64 peephole2): FAIL - if the new immediate is ix86_endbr_immediate_operand. - -2023-12-05 Richard Sandiford <richard.sandiford@arm.com> - - * config/aarch64/aarch64.h (TARGET_STREAMING_SME2): New macro. - (P_ALIASES): Likewise. - (REGISTER_NAMES): Add pn aliases of the predicate registers. - (W8_W11_REGNUM_P): New macro. - (W8_W11_REGS): New register class. - (REG_CLASS_NAMES, REG_CLASS_CONTENTS): Update accordingly. - * config/aarch64/aarch64.cc (aarch64_print_operand): Add support - for %K, which prints a predicate as a counter. Handle tuples of - predicates. - (aarch64_regno_regclass): Handle W8_W11_REGS. - (aarch64_class_max_nregs): Likewise. - * config/aarch64/constraints.md (Uci, Uw2, Uw4): New constraints. - (x, y): Move further up file. - (Uph): Redefine as the high predicate registers, renaming the old - constraint to... - (Uih): ...this. - * config/aarch64/predicates.md (const_0_to_7_operand): New predicate. - (const_0_to_4_step_4_operand, const_0_to_6_step_2_operand): Likewise. - (const_0_to_12_step_4_operand, const_0_to_14_step_2_operand): Likewise. - (aarch64_simd_shift_imm_qi): Use const_0_to_7_operand. - * config/aarch64/iterators.md (VNx16SI_ONLY, VNx8SI_ONLY) - (VNx8DI_ONLY, SVE_FULL_BHSIx2, SVE_FULL_HF, SVE_FULL_SIx2_SDIx4) - (SVE_FULL_BHS, SVE_FULLx24, SVE_DIx24, SVE_BHSx24, SVE_Ix24) - (SVE_Fx24, SVE_SFx24, SME_ZA_BIx24, SME_ZA_BHIx124, SME_ZA_BHIx24) - (SME_ZA_HFx124, SME_ZA_HFx24, SME_ZA_HIx124, SME_ZA_HIx24) - (SME_ZA_SDIx24, SME_ZA_SDFx24): New mode iterators. - (UNSPEC_REVD, UNSPEC_CNTP_C, UNSPEC_PEXT, UNSPEC_PEXTx2): New unspecs. - (UNSPEC_PSEL, UNSPEC_PTRUE_C, UNSPEC_SQRSHR, UNSPEC_SQRSHRN) - (UNSPEC_SQRSHRU, UNSPEC_SQRSHRUN, UNSPEC_UQRSHR, UNSPEC_UQRSHRN) - (UNSPEC_UZP, UNSPEC_UZPQ, UNSPEC_ZIP, UNSPEC_ZIPQ, UNSPEC_BFMLSLB) - (UNSPEC_BFMLSLT, UNSPEC_FCVTN, UNSPEC_FDOT, UNSPEC_SQCVT): Likewise. - (UNSPEC_SQCVTN, UNSPEC_SQCVTU, UNSPEC_SQCVTUN, UNSPEC_UQCVT): Likewise. - (UNSPEC_SME_ADD, UNSPEC_SME_ADD_WRITE, UNSPEC_SME_BMOPA): Likewise. - (UNSPEC_SME_BMOPS, UNSPEC_SME_FADD, UNSPEC_SME_FDOT, UNSPEC_SME_FVDOT) - (UNSPEC_SME_FMLA, UNSPEC_SME_FMLS, UNSPEC_SME_FSUB, UNSPEC_SME_READ) - (UNSPEC_SME_SDOT, UNSPEC_SME_SVDOT, UNSPEC_SME_SMLA, UNSPEC_SME_SMLS) - (UNSPEC_SME_SUB, UNSPEC_SME_SUB_WRITE, UNSPEC_SME_SUDOT): Likewise. - (UNSPEC_SME_SUVDOT, UNSPEC_SME_UDOT, UNSPEC_SME_UVDOT): Likewise. - (UNSPEC_SME_UMLA, UNSPEC_SME_UMLS, UNSPEC_SME_USDOT): Likewise. - (UNSPEC_SME_USVDOT, UNSPEC_SME_WRITE): Likewise. - (Vetype, VNARROW, V2XWIDE, Ventype, V_INT_EQUIV, v_int_equiv) - (VSINGLE, vsingle, b): Add tuple modes. - (v2xwide, za32_offset_range, za64_offset_range, za32_long) - (za32_last_offset, vg_modifier, z_suffix, aligned_operand) - (aligned_fpr): New mode attributes. - (SVE_INT_BINARY_MULTI, SVE_INT_BINARY_SINGLE, SVE_INT_BINARY_MULTI) - (SVE_FP_BINARY_MULTI): New int iterators. - (SVE_BFLOAT_TERNARY_LONG): Add UNSPEC_BFMLSLB and UNSPEC_BFMLSLT. - (SVE_BFLOAT_TERNARY_LONG_LANE): Likewise. - (SVE_WHILE_ORDER, SVE2_INT_SHIFT_IMM_NARROWxN, SVE_QCVTxN) - (SVE2_SFx24_UNARY, SVE2_x24_PERMUTE, SVE2_x24_PERMUTEQ) - (UNSPEC_REVD_ONLY, SME2_INT_MOP, SME2_BMOP, SME_BINARY_SLICE_SDI) - (SME_BINARY_SLICE_SDF, SME_BINARY_WRITE_SLICE_SDI, SME_INT_DOTPROD) - (SME_INT_DOTPROD_LANE, SME_FP_DOTPROD, SME_FP_DOTPROD_LANE) - (SME_INT_TERNARY_SLICE, SME_FP_TERNARY_SLICE, BHSD_BITS) - (LUTI_BITS): New int iterators. - (optab, sve_int_op): Handle the new unspecs. - (sme_int_op, has_16bit_form): New int attributes. - (bits_etype): Handle 64. - * config/aarch64/aarch64.md (UNSPEC_LD1_SVE_COUNT): New unspec. - (UNSPEC_ST1_SVE_COUNT, UNSPEC_LDNT1_SVE_COUNT): Likewise. - (UNSPEC_STNT1_SVE_COUNT): Likewise. - * config/aarch64/atomics.md (cas_short_expected_imm): Use Uhi - rather than Uph for HImode immediates. - * config/aarch64/aarch64-sve.md (@aarch64_ld1<SVE_FULLx24:mode>) - (@aarch64_ldnt1<SVE_FULLx24:mode>, @aarch64_st1<SVE_FULLx24:mode>) - (@aarch64_stnt1<SVE_FULLx24:mode>): New patterns. - (@aarch64_<sur>dot_prod_lane<vsi2qi>): Extend to... - (@aarch64_<sur>dot_prod_lane<SVE_FULL_SDI:mode><SVE_FULL_BHI:mode>) - (@aarch64_<sur>dot_prod_lane<VNx4SI_ONLY:mode><VNx16QI_ONLY:mode>): - ...these new patterns. - (SVE_WHILE_B, SVE_WHILE_B_X2, SVE_WHILE_C): New constants. Add - SVE_WHILE_B to existing while patterns. - * config/aarch64/aarch64-sve2.md (@aarch64_sve_ptrue_c<BHSD_BITS>) - (@aarch64_sve_pext<BHSD_BITS>, @aarch64_sve_pext<BHSD_BITS>x2) - (@aarch64_sve_psel<BHSD_BITS>, *aarch64_sve_psel<BHSD_BITS>_plus) - (@aarch64_sve_cntp_c<BHSD_BITS>, <frint_pattern><mode>2) - (<optab><mode>3, *<optab><mode>3, @aarch64_sve_single_<optab><mode>) - (@aarch64_sve_<sve_int_op><mode>): New patterns. - (@aarch64_sve_single_<sve_int_op><mode>, @aarch64_sve_<su>clamp<mode>) - (*aarch64_sve_<su>clamp<mode>_x, @aarch64_sve_<su>clamp_single<mode>) - (@aarch64_sve_fclamp<mode>, *aarch64_sve_fclamp<mode>_x) - (@aarch64_sve_fclamp_single<mode>, <optab><mode><v2xwide>2) - (@aarch64_sve_<sur>dotvnx4sivnx8hi): New patterns. - (@aarch64_sve_<maxmin_uns_op><mode>): Likewise. - (*aarch64_sve_<maxmin_uns_op><mode>): Likewise. - (@aarch64_sve_single_<maxmin_uns_op><mode>): Likewise. - (aarch64_sve_fdotvnx4sfvnx8hf): Likewise. - (aarch64_fdot_prod_lanevnx4sfvnx8hf): Likewise. - (@aarch64_sve_<optab><VNx16QI_ONLY:mode><VNx16SI_ONLY:mode>): Likewise. - (@aarch64_sve_<optab><VNx8HI_ONLY:mode><VNx8SI_ONLY:mode>): Likewise. - (@aarch64_sve_<optab><VNx8HI_ONLY:mode><VNx8DI_ONLY:mode>): Likewise. - (truncvnx8sf<mode>2, @aarch64_sve_cvtn<mode>): Likewise. - (<optab><v_int_equiv><mode>2, <optab><mode><v_int_equiv>2): Likewise. - (@aarch64_sve_sel<mode>): Likewise. - (@aarch64_sve_while<while_optab_cmp>_b<BHSD_BITS>_x2): Likewise. - (@aarch64_sve_while<while_optab_cmp>_c<BHSD_BITS>): Likewise. - (@aarch64_pred_<optab><mode>, @cond_<optab><mode>): Likewise. - (@aarch64_sve_<optab><mode>): Likewise. - * config/aarch64/aarch64-sme.md (@aarch64_sme_<optab><mode><mode>) - (*aarch64_sme_<optab><mode><mode>_plus, @aarch64_sme_read<mode>) - (*aarch64_sme_read<mode>_plus, @aarch64_sme_write<mode>): New patterns. - (*aarch64_sme_write<mode>_plus aarch64_sme_zero_zt0): Likewise. - (@aarch64_sme_<optab><mode>, *aarch64_sme_<optab><mode>_plus) - (@aarch64_sme_single_<optab><mode>): Likewise. - (*aarch64_sme_single_<optab><mode>_plus): Likewise. - (@aarch64_sme_<optab><SME_ZA_SDI:mode><SME_ZA_BHIx24:mode>) - (*aarch64_sme_<optab><SME_ZA_SDI:mode><SME_ZA_BHIx24:mode>_plus) - (@aarch64_sme_single_<optab><SME_ZA_SDI:mode><SME_ZA_BHIx24:mode>) - (*aarch64_sme_single_<optab><SME_ZA_SDI:mode><SME_ZA_BHIx24:mode>_plus) - (@aarch64_sme_single_sudot<VNx4SI_ONLY:mode><SME_ZA_BIx24:mode>) - (*aarch64_sme_single_sudot<VNx4SI_ONLY:mode><SME_ZA_BIx24:mode>_plus) - (@aarch64_sme_lane_<optab><SME_ZA_SDI:mode><SME_ZA_BHIx24:mode>) - (*aarch64_sme_lane_<optab><SME_ZA_SDI:mode><SME_ZA_BHIx24:mode>_plus) - (@aarch64_sme_<optab><VNx4SI_ONLY:mode><SVE_FULL_BHI:mode>) - (*aarch64_sme_<optab><VNx4SI_ONLY:mode><SVE_FULL_BHI:mode>_plus) - (@aarch64_sme_<optab><VNx4SI_ONLY:mode><SME_ZA_BHIx24:mode>) - (*aarch64_sme_<optab><VNx4SI_ONLY:mode><SME_ZA_BHIx24:mode>_plus) - (@aarch64_sme_single_<optab><VNx4SI_ONLY:mode><SME_ZA_BHIx24:mode>) - (*aarch64_sme_single_<optab><VNx4SI_ONLY:mode><SME_ZA_BHIx24:mode>_plus) - (@aarch64_sme_lane_<optab><VNx4SI_ONLY:mode><SME_ZA_BHIx124:mode>) - (*aarch64_sme_lane_<optab><VNx4SI_ONLY:mode><SME_ZA_BHIx124:mode>) - (@aarch64_sme_<optab><VNx2DI_ONLY:mode><VNx8HI_ONLY:mode>) - (*aarch64_sme_<optab><VNx2DI_ONLY:mode><VNx8HI_ONLY:mode>_plus) - (@aarch64_sme_<optab><VNx2DI_ONLY:mode><SME_ZA_HIx24:mode>) - (*aarch64_sme_<optab><VNx2DI_ONLY:mode><SME_ZA_HIx24:mode>_plus) - (@aarch64_sme_single_<optab><VNx2DI_ONLY:mode><SME_ZA_HIx24:mode>) - (*aarch64_sme_single_<optab><VNx2DI_ONLY:mode><SME_ZA_HIx24:mode>_plus) - (@aarch64_sme_lane_<optab><VNx2DI_ONLY:mode><SME_ZA_HIx124:mode>) - (*aarch64_sme_lane_<optab><VNx2DI_ONLY:mode><SME_ZA_HIx124:mode>) - (@aarch64_sme_<optab><VNx4SI_ONLY:mode><VNx8HI_ONLY:mode>) - (@aarch64_sme_<optab><VNx4SI_ONLY:mode><VNx4SI_ONLY:mode>) - (@aarch64_sme_<optab><VNx4SI_ONLY:mode><SME_ZA_HFx24:mode>) - (*aarch64_sme_<optab><VNx4SI_ONLY:mode><SME_ZA_HFx24:mode>_plus) - (@aarch64_sme_single_<optab><VNx4SI_ONLY:mode><SME_ZA_HFx24:mode>) - (*aarch64_sme_single_<optab><VNx4SI_ONLY:mode><SME_ZA_HFx24:mode>_plus) - (@aarch64_sme_lane_<optab><VNx4SI_ONLY:mode><SME_ZA_HFx24:mode>) - (*aarch64_sme_lane_<optab><VNx4SI_ONLY:mode><SME_ZA_HFx24:mode>_plus) - (@aarch64_sme_<optab><SME_ZA_SDF_I:mode><SME_ZA_SDFx24:mode>) - (*aarch64_sme_<optab><SME_ZA_SDF_I:mode><SME_ZA_SDFx24:mode>_plus) - (@aarch64_sme_single_<optab><SME_ZA_SDF_I:mode><SME_ZA_SDFx24:mode>) - (*aarch64_sme_single_<optab><SME_ZA_SDF_I:mode><SME_ZA_SDFx24:mode>_plus) - (@aarch64_sme_lane_<optab><SME_ZA_SDF_I:mode><SME_ZA_SDFx24:mode>) - (*aarch64_sme_lane_<optab><SME_ZA_SDF_I:mode><SME_ZA_SDFx24:mode>) - (@aarch64_sme_<optab><VNx4SI_ONLY:mode><SVE_FULL_HF:mode>) - (*aarch64_sme_<optab><VNx4SI_ONLY:mode><SVE_FULL_HF:mode>_plus) - (@aarch64_sme_lane_<optab><VNx4SI_ONLY:mode><SME_ZA_HFx124:mode>) - (*aarch64_sme_lane_<optab><VNx4SI_ONLY:mode><SME_ZA_HFx124:mode>) - (@aarch64_sme_lut<LUTI_BITS><mode>): Likewise. - (UNSPEC_SME_LUTI): New unspec. - * config/aarch64/aarch64-sve-builtins.def (single): New mode suffix. - (c8, c16, c32, c64): New type suffixes. - (vg1x2, vg1x4, vg2, vg2x1, vg2x2, vg2x4, vg4, vg4x1, vg4x2) - (vg4x4): New group suffixes. - * config/aarch64/aarch64-sve-builtins.h (CP_READ_ZT0) - (CP_WRITE_ZT0): New constants. - (get_svbool_t): Delete. - (function_resolver::report_mismatched_num_vectors): New member - function. - (function_resolver::resolve_conversion): Likewise. - (function_resolver::infer_predicate_type): Likewise. - (function_resolver::infer_64bit_scalar_integer_pair): Likewise. - (function_resolver::require_matching_predicate_type): Likewise. - (function_resolver::require_nonscalar_type): Likewise. - (function_resolver::finish_opt_single_resolution): Likewise. - (function_resolver::require_derived_vector_type): Add an - expected_num_vectors parameter. - (function_expander::map_to_rtx_codes): Add an extra parameter - for unconditional FP unspecs. - (function_instance::gp_type_index): New member function. - (function_instance::gp_type): Likewise. - (function_instance::gp_mode): Handle multi-vector operations. - * config/aarch64/aarch64-sve-builtins.cc (TYPES_all_count) - (TYPES_all_pred_count, TYPES_c, TYPES_bhs_data, TYPES_bhs_widen) - (TYPES_hs_data, TYPES_cvt_h_s_float, TYPES_cvt_s_s, TYPES_qcvt_x2) - (TYPES_qcvt_x4, TYPES_qrshr_x2, TYPES_qrshru_x2, TYPES_qrshr_x4) - (TYPES_qrshru_x4, TYPES_while_x, TYPES_while_x_c, TYPES_s_narrow_fsu) - (TYPES_za_s_b_signed, TYPES_za_s_b_unsigned, TYPES_za_s_b_integer) - (TYPES_za_s_h_integer, TYPES_za_s_h_data, TYPES_za_s_unsigned) - (TYPES_za_s_float, TYPES_za_s_data, TYPES_za_d_h_integer): New type - macros. - (groups_x2, groups_x12, groups_x4, groups_x24, groups_x124) - (groups_vg1x2, groups_vg1x4, groups_vg1x24, groups_vg2, groups_vg4) - (groups_vg24): New group arrays. - (function_instance::reads_global_state_p): Handle CP_READ_ZT0. - (function_instance::modifies_global_state_p): Handle CP_WRITE_ZT0. - (add_shared_state_attribute): Handle zt0 state. - (function_builder::add_overloaded_functions): Skip MODE_single - for non-tuple groups. - (function_resolver::report_mismatched_num_vectors): New function. - (function_resolver::resolve_to): Add a fallback error message for - the general two-type case. - (function_resolver::resolve_conversion): New function. - (function_resolver::infer_predicate_type): Likewise. - (function_resolver::infer_64bit_scalar_integer_pair): Likewise. - (function_resolver::require_matching_predicate_type): Likewise. - (function_resolver::require_matching_vector_type): Specifically - diagnose mismatched vector counts. - (function_resolver::require_derived_vector_type): Add an - expected_num_vectors parameter. Extend to handle cases where - tuples are expected. - (function_resolver::require_nonscalar_type): New function. - (function_resolver::check_gp_argument): Use gp_type_index rather - than hard-coding VECTOR_TYPE_svbool_t. - (function_resolver::finish_opt_single_resolution): New function. - (function_checker::require_immediate_either_or): Remove hard-coded - constants. - (function_expander::direct_optab_handler): New function. - (function_expander::use_pred_x_insn): Only add a strictness flag - is the insn has an operand for it. - (function_expander::map_to_rtx_codes): Take an unconditional - FP unspec as an extra parameter. Handle tuples and MODE_single. - (function_expander::map_to_unspecs): Handle tuples and MODE_single. - * config/aarch64/aarch64-sve-builtins-functions.h (read_zt0) - (write_zt0): New typedefs. - (full_width_access::memory_vector): Use the function's - vectors_per_tuple. - (rtx_code_function_base): Add an optional unconditional FP unspec. - (rtx_code_function::expand): Update accordingly. - (rtx_code_function_rotated::expand): Likewise. - (unspec_based_function_exact_insn::expand): Use tuple_mode instead - of vector_mode. - (unspec_based_uncond_function): New typedef. - (cond_or_uncond_unspec_function): New class. - (sme_1mode_function::expand): Handle single forms. - (sme_2mode_function_t): Likewise, adding a template parameter for them. - (sme_2mode_function): Update accordingly. - (sme_2mode_lane_function): New typedef. - (multireg_permute): New class. - (class integer_conversion): Likewise. - (while_comparison::expand): Handle svcount_t and svboolx2_t results. - * config/aarch64/aarch64-sve-builtins-shapes.h - (binary_int_opt_single_n, binary_opt_single_n, binary_single) - (binary_za_slice_lane, binary_za_slice_int_opt_single) - (binary_za_slice_opt_single, binary_za_slice_uint_opt_single) - (binaryx, clamp, compare_scalar_count, count_pred_c) - (dot_za_slice_int_lane, dot_za_slice_lane, dot_za_slice_uint_lane) - (extract_pred, inherent_zt, ldr_zt, read_za, read_za_slice) - (select_pred, shift_right_imm_narrowxn, storexn, str_zt) - (unary_convertxn, unary_za_slice, unaryxn, write_za) - (write_za_slice): Declare. - * config/aarch64/aarch64-sve-builtins-shapes.cc - (za_group_is_pure_overload): New function. - (apply_predication): Use the function's gp_type for the predicate, - instead of hard-coding the use of svbool_t. - (parse_element_type): Add support for "c" (svcount_t). - (parse_type): Add support for "c0" and "c1" (conversion destination - and source types). - (binary_za_slice_lane_base): New class. - (binary_za_slice_opt_single_base): Likewise. - (load_contiguous_base::resolve): Pass the group suffix to r.resolve. - (luti_lane_zt_base): New class. - (binary_int_opt_single_n, binary_opt_single_n, binary_single) - (binary_za_slice_lane, binary_za_slice_int_opt_single) - (binary_za_slice_opt_single, binary_za_slice_uint_opt_single) - (binaryx, clamp): New shapes. - (compare_scalar_def::build): Allow the return type to be a tuple. - (compare_scalar_def::expand): Pass the group suffix to r.resolve. - (compare_scalar_count, count_pred_c, dot_za_slice_int_lane) - (dot_za_slice_lane, dot_za_slice_uint_lane, extract_pred, inherent_zt) - (ldr_zt, read_za, read_za_slice, select_pred, shift_right_imm_narrowxn) - (storexn, str_zt): New shapes. - (ternary_qq_lane_def, ternary_qq_opt_n_def): Replace with... - (ternary_qq_or_011_lane_def, ternary_qq_opt_n_or_011_def): ...these - new classes. Allow a second suffix that specifies the type of the - second vector argument, and that is used to derive the third. - (unary_def::build): Extend to handle tuple types. - (unary_convert_def::build): Use the new c0 and c1 format specifiers. - (unary_convertxn, unary_za_slice, unaryxn, write_za): New shapes. - (write_za_slice): Likewise. - * config/aarch64/aarch64-sve-builtins-base.cc (svbic_impl::expand) - (svext_bhw_impl::expand): Update call to map_to_rtx_costs. - (svcntp_impl::expand): Handle svcount_t variants. - (svcvt_impl::expand): Handle unpredicated conversions separately, - dealing with tuples. - (svdot_impl::expand): Handle 2-way dot products. - (svdotprod_lane_impl::expand): Likewise. - (svld1_impl::fold): Punt on tuple loads. - (svld1_impl::expand): Handle tuple loads. - (svldnt1_impl::expand): Likewise. - (svpfalse_impl::fold): Punt on svcount_t forms. - (svptrue_impl::fold): Likewise. - (svptrue_impl::expand): Handle svcount_t forms. - (svrint_impl): New class. - (svsel_impl::fold): Punt on tuple forms. - (svsel_impl::expand): Handle tuple forms. - (svst1_impl::fold): Punt on tuple loads. - (svst1_impl::expand): Handle tuple loads. - (svstnt1_impl::expand): Likewise. - (svwhilelx_impl::fold): Punt on tuple forms. - (svdot_lane): Use UNSPEC_FDOT. - (svmax, svmaxnm, svmin, svminmm): Add unconditional FP unspecs. - (rinta, rinti, rintm, rintn, rintp, rintx, rintz): Use svrint_impl. - * config/aarch64/aarch64-sve-builtins-base.def (svcreate2, svget2) - (svset2, svundef2): Add _b variants. - (svcvt): Use unary_convertxn. - (svdot): Use ternary_qq_opt_n_or_011. - (svdot_lane): Use ternary_qq_or_011_lane. - (svmax, svmaxnm, svmin, svminnm): Use binary_opt_single_n. - (svpfalse): Add a form that returns svcount_t results. - (svrinta, svrintm, svrintn, svrintp): Use unaryxn. - (svsel): Use binaryxn. - (svst1, svstnt1): Use storexn. - * config/aarch64/aarch64-sve-builtins-sme.h - (svadd_za, svadd_write_za, svbmopa_za, svbmops_za, svdot_za) - (svdot_lane_za, svldr_zt, svluti2_lane_zt, svluti4_lane_zt) - (svmla_za, svmla_lane_za, svmls_za, svmls_lane_za, svread_za) - (svstr_zt, svsub_za, svsub_write_za, svsudot_za, svsudot_lane_za) - (svsuvdot_lane_za, svusdot_za, svusdot_lane_za, svusvdot_lane_za) - (svvdot_lane_za, svwrite_za, svzero_zt): Declare. - * config/aarch64/aarch64-sve-builtins-sme.cc (load_store_za_base): - Rename to... - (load_store_za_zt0_base): ...this and extend to tuples. - (load_za_base, store_za_base): Update accordingly. - (expand_ldr_str_zt0): New function. - (svldr_zt_impl, svluti_lane_zt_impl, svread_za_impl, svstr_zt_impl) - (svsudot_za_impl, svwrite_za_impl, svzero_zt_impl): New classes. - (svadd_za, svadd_write_za, svbmopa_za, svbmops_za, svdot_za) - (svdot_lane_za, svldr_zt, svluti2_lane_zt, svluti4_lane_zt) - (svmla_za, svmla_lane_za, svmls_za, svmls_lane_za, svread_za) - (svstr_zt, svsub_za, svsub_write_za, svsudot_za, svsudot_lane_za) - (svsuvdot_lane_za, svusdot_za, svusdot_lane_za, svusvdot_lane_za) - (svvdot_lane_za, svwrite_za, svzero_zt): New functions. - * config/aarch64/aarch64-sve-builtins-sme.def: Add SME2 intrinsics. - * config/aarch64/aarch64-sve-builtins-sve2.h - (svbfmlslb, svbfmlslb_lane, svbfmlslt, svbfmlslt_lane, svclamp) - (svcvtn, svpext, svpsel, svqcvt, svqcvtn, svqrshr, svqrshrn) - (svqrshru, svqrshrun, svrevd, svunpk, svuzp, svuzpq, svzip) - (svzipq): Declare. - * config/aarch64/aarch64-sve-builtins-sve2.cc (svclamp_impl) - (svcvtn_impl, svpext_impl, svpsel_impl): New classes. - (svqrshl_impl::fold): Update for change to svrshl shape. - (svrshl_impl::fold): Punt on tuple forms. - (svsqadd_impl::expand): Update call to map_to_rtx_codes. - (svunpk_impl): New class. - (svbfmlslb, svbfmlslb_lane, svbfmlslt, svbfmlslt_lane, svclamp) - (svcvtn, svpext, svpsel, svqcvt, svqcvtn, svqrshr, svqrshrn) - (svqrshru, svqrshrun, svrevd, svunpk, svuzp, svuzpq, svzip) - (svzipq): New functions. - * config/aarch64/aarch64-sve-builtins-sve2.def: Add SME2 intrinsics. - * config/aarch64/aarch64-c.cc (aarch64_update_cpp_builtins): Define - or undefine __ARM_FEATURE_SME2. - -2023-12-05 Richard Sandiford <richard.sandiford@arm.com> - - * config/aarch64/aarch64.md (ZT0_REGNUM): New constant. - (LAST_FAKE_REGNUM): Bump to include it. - * config/aarch64/aarch64.h (FIXED_REGISTERS): Add an entry for ZT0. - (CALL_REALLY_USED_REGISTERS, REGISTER_NAMES): Likewise. - (REG_CLASS_CONTENTS): Likewise. - (machine_function): Add zt0_save_buffer. - (CUMULATIVE_ARGS): Add shared_zt0_flags; - * config/aarch64/aarch64.cc (aarch64_check_state_string): Handle zt0. - (aarch64_fntype_pstate_za, aarch64_fndecl_pstate_za): Likewise. - (aarch64_function_arg): Add the shared ZT0 flags as an extra - limb of the parallel. - (aarch64_init_cumulative_args): Initialize shared_zt0_flags. - (aarch64_extra_live_on_entry): Handle ZT0_REGNUM. - (aarch64_epilogue_uses): Likewise. - (aarch64_get_zt0_save_buffer, aarch64_save_zt0): New functions. - (aarch64_restore_zt0): Likewise. - (aarch64_start_call_args): Reject calls to functions that share - ZT0 from functions that have no ZT0 state. Save ZT0 around shared-ZA - calls that do not share ZT0. - (aarch64_expand_call): Handle ZT0. Reject calls to functions that - share ZT0 but not ZA from functions with ZA state. - (aarch64_end_call_args): Restore ZT0 after calls to shared-ZA functions - that do not share ZT0. - (aarch64_set_current_function): Require +sme2 for functions that - have ZT0 state. - (aarch64_function_attribute_inlinable_p): Don't allow functions to - be inlined if they have local zt0 state. - (AARCH64_IPA_CLOBBERS_ZT0): New constant. - (aarch64_update_ipa_fn_target_info): Record asms that clobber ZT0. - (aarch64_can_inline_p): Don't inline callees that clobber ZT0 - into functions that have ZT0 state. - (aarch64_comp_type_attributes): Check for compatible ZT0 sharing. - (aarch64_optimize_mode_switching): Use mode switching if the - function has ZT0 state. - (aarch64_mode_emit_local_sme_state): Save and restore ZT0 around - calls to private-ZA functions. - (aarch64_mode_needed_local_sme_state): Require ZA to be active - for instructions that access ZT0. - (aarch64_mode_entry): Mark ZA as dead on entry if the function - only shares state other than "za" itself. - (aarch64_mode_exit): Likewise mark ZA as dead on return. - (aarch64_md_asm_adjust): Extend handling of ZA clobbers to ZT0. - * config/aarch64/aarch64-c.cc (aarch64_define_unconditional_macros): - Define __ARM_STATE_ZT0. - * config/aarch64/aarch64-sme.md (UNSPECV_ASM_UPDATE_ZT0): New unspecv. - (aarch64_asm_update_zt0): New insn. - (UNSPEC_RESTORE_ZT0): New unspec. - (aarch64_sme_ldr_zt0, aarch64_restore_zt0): New insns. - (aarch64_sme_str_zt0): Likewise. - -2023-12-05 Richard Sandiford <richard.sandiford@arm.com> - - * config/aarch64/aarch64-modes.def (VNx32BI): New mode. - * config/aarch64/aarch64-protos.h (aarch64_split_double_move): Declare. - * config/aarch64/aarch64-sve-builtins.cc - (register_tuple_type): Handle tuples of predicates. - (handle_arm_sve_h): Define svboolx2_t as a pair of two svbool_ts. - * config/aarch64/aarch64-sve.md (movvnx32bi): New insn. - * config/aarch64/aarch64.cc - (pure_scalable_type_info::piece::get_rtx): Use VNx32BI for pairs - of predicates. - (pure_scalable_type_info::add_piece): Don't try to form pairs of - predicates. - (VEC_STRUCT): Generalize comment. - (aarch64_classify_vector_mode): Handle VNx32BI. - (aarch64_array_mode): Likewise. Return BLKmode for arrays of - predicates that have no associated mode, rather than allowing - an integer mode to be chosen. - (aarch64_hard_regno_nregs): Handle VNx32BI. - (aarch64_hard_regno_mode_ok): Likewise. - (aarch64_split_double_move): New function, split out from... - (aarch64_split_128bit_move): ...here. - (aarch64_ptrue_reg): Tighten assert to aarch64_sve_pred_mode_p. - (aarch64_pfalse_reg): Likewise. - (aarch64_sve_same_pred_for_ptest_p): Likewise. - (aarch64_sme_mode_switch_regs::add_reg): Handle VNx32BI. - (aarch64_expand_mov_immediate): Restrict handling of boolean vector - constants to single-predicate modes. - (aarch64_classify_address): Handle VNx32BI, ensuring that both halves - can be addressed. - (aarch64_class_max_nregs): Handle VNx32BI. - (aarch64_member_type_forces_blk): Don't for BLKmode for svboolx2_t. - (aarch64_simd_valid_immediate): Allow all-zeros and all-ones for - VNx32BI. - (aarch64_mov_operand_p): Restrict predicate constant canonicalization - to single-predicate modes. - (aarch64_evpc_ext): Generalize exclusion to all predicate modes. - (aarch64_evpc_rev_local, aarch64_evpc_dup): Likewise. - * config/aarch64/constraints.md (PR_REGS): New predicate. - -2023-12-05 Richard Sandiford <richard.sandiford@arm.com> - - * config/aarch64/aarch64-sve-builtins-base.cc - (svreinterpret_impl::fold): Handle reinterprets between svbool_t - and svcount_t. - (svreinterpret_impl::expand): Likewise. - * config/aarch64/aarch64-sve-builtins-base.def (svreinterpret): Add - b<->c forms. - * config/aarch64/aarch64-sve-builtins.cc (TYPES_reinterpret_b): New - type suffix list. - (wrap_type_in_struct, register_type_decl): New functions, split out - from... - (register_tuple_type): ...here. - (register_builtin_types): Handle svcount_t. - (handle_arm_sve_h): Don't create tuples of svcount_t. - * config/aarch64/aarch64-sve-builtins.def (svcount_t): New type. - (c): New type suffix. - * config/aarch64/aarch64-sve-builtins.h (TYPE_count): New type class. - -2023-12-05 Richard Sandiford <richard.sandiford@arm.com> - - * doc/invoke.texi: Document +sme2. - * doc/sourcebuild.texi: Document aarch64_sme2. - * config/aarch64/aarch64-option-extensions.def (AARCH64_OPT_EXTENSION): - Add sme2. - * config/aarch64/aarch64.h (AARCH64_ISA_SME2, TARGET_SME2): New macros. - -2023-12-05 Richard Sandiford <richard.sandiford@arm.com> - - * config/aarch64/aarch64.cc (aarch64_function_ok_for_sibcall): - Enforce PSTATE.SM and PSTATE.ZA restrictions. - (aarch64_expand_epilogue): Save and restore the arguments - to a sibcall around any change to PSTATE.SM. - -2023-12-05 Richard Sandiford <richard.sandiford@arm.com> - - * config/aarch64/aarch64.cc: Include symbol-summary.h, ipa-prop.h, - and ipa-fnsummary.h - (aarch64_function_attribute_inlinable_p): New function. - (AARCH64_IPA_SM_FIXED, AARCH64_IPA_CLOBBERS_ZA): New constants. - (aarch64_need_ipa_fn_target_info): New function. - (aarch64_update_ipa_fn_target_info): Likewise. - (aarch64_can_inline_p): Restrict the previous ISA flag checks - to non-modal features. Prevent callees that require a particular - PSTATE.SM state from being inlined into callers that can't guarantee - that state. Also prevent callees that have ZA state from being - inlined into callers that don't. Finally, prevent callees that - clobber ZA from being inlined into callers that have ZA state. - (TARGET_FUNCTION_ATTRIBUTE_INLINABLE_P): Define. - (TARGET_NEED_IPA_FN_TARGET_INFO): Likewise. - (TARGET_UPDATE_IPA_FN_TARGET_INFO): Likewise. - -2023-12-05 Richard Sandiford <richard.sandiford@arm.com> - - * config/aarch64/aarch64.cc: Include except.h - (aarch64_sme_mode_switch_regs::add_call_preserved_reg): New function. - (aarch64_sme_mode_switch_regs::add_call_preserved_regs): Likewise. - (aarch64_need_old_pstate_sm): Return true if the function has - a nonlocal-goto or exception receiver. - (aarch64_switch_pstate_sm_for_landing_pad): New function. - (aarch64_switch_pstate_sm_for_jump): Likewise. - (pass_switch_pstate_sm::gate): Enable the pass for all - streaming and streaming-compatible functions. - (pass_switch_pstate_sm::execute): Handle non-local gotos and their - receivers. Handle exception handler entry points. - -2023-12-05 Richard Sandiford <richard.sandiford@arm.com> - - * config/aarch64/aarch64.cc (aarch64_arm_attribute_table): Add - arm::locally_streaming. - (aarch64_fndecl_is_locally_streaming): New function. - (aarch64_fndecl_sm_state): Handle locally-streaming functions. - (aarch64_cfun_enables_pstate_sm): New function. - (aarch64_add_offset): Add an argument that specifies whether - the streaming vector length should be used instead of the - prevailing one. - (aarch64_split_add_offset, aarch64_add_sp, aarch64_sub_sp): Likewise. - (aarch64_allocate_and_probe_stack_space): Likewise. - (aarch64_expand_mov_immediate): Update calls accordingly. - (aarch64_need_old_pstate_sm): Return true for locally-streaming - streaming-compatible functions. - (aarch64_layout_frame): Force all call-preserved Z and P registers - to be saved and restored if the function switches PSTATE.SM in the - prologue. - (aarch64_get_separate_components): Disable shrink-wrapping of - such Z and P saves and restores. - (aarch64_use_late_prologue_epilogue): New function. - (aarch64_expand_prologue): Measure SVE lengths in the streaming - vector length for locally-streaming functions, then emit code - to enable streaming mode. - (aarch64_expand_epilogue): Likewise in reverse. - (TARGET_USE_LATE_PROLOGUE_EPILOGUE): Define. - * config/aarch64/aarch64-c.cc (aarch64_define_unconditional_macros): - Define __arm_locally_streaming. - -2023-12-05 Richard Sandiford <richard.sandiford@arm.com> - - * doc/invoke.texi: Document +sme-i16i64 and +sme-f64f64. - * config.gcc (aarch64*-*-*): Add arm_sme.h to the list of headers - to install and aarch64-sve-builtins-sme.o to the list of objects - to build. - * config/aarch64/aarch64-c.cc (aarch64_update_cpp_builtins): Define - or undefine TARGET_SME, TARGET_SME_I16I64 and TARGET_SME_F64F64. - (aarch64_pragma_aarch64): Handle arm_sme.h. - * config/aarch64/aarch64-option-extensions.def (sme-i16i64) - (sme-f64f64): New extensions. - * config/aarch64/aarch64-protos.h (aarch64_sme_vq_immediate) - (aarch64_addsvl_addspl_immediate_p, aarch64_output_addsvl_addspl) - (aarch64_output_sme_zero_za): Declare. - (aarch64_output_move_struct): Delete. - (aarch64_sme_ldr_vnum_offset): Declare. - (aarch64_sve::handle_arm_sme_h): Likewise. - * config/aarch64/aarch64.h (AARCH64_ISA_SM_ON): New macro. - (AARCH64_ISA_SME_I16I64, AARCH64_ISA_SME_F64F64): Likewise. - (TARGET_STREAMING, TARGET_STREAMING_SME): Likewise. - (TARGET_SME_I16I64, TARGET_SME_F64F64): Likewise. - * config/aarch64/aarch64.cc (aarch64_sve_rdvl_factor_p): Rename to... - (aarch64_sve_rdvl_addvl_factor_p): ...this. - (aarch64_sve_rdvl_immediate_p): Update accordingly. - (aarch64_rdsvl_immediate_p, aarch64_add_offset): Likewise. - (aarch64_sme_vq_immediate): Likewise. Make public. - (aarch64_sve_addpl_factor_p): New function. - (aarch64_sve_addvl_addpl_immediate_p): Use - aarch64_sve_rdvl_addvl_factor_p and aarch64_sve_addpl_factor_p. - (aarch64_addsvl_addspl_immediate_p): New function. - (aarch64_output_addsvl_addspl): Likewise. - (aarch64_cannot_force_const_mem): Return true for RDSVL immediates. - (aarch64_classify_index): Handle .Q scaling for VNx1TImode. - (aarch64_classify_address): Likewise for vnum offsets. - (aarch64_output_sme_zero_za): New function. - (aarch64_sme_ldr_vnum_offset_p): Likewise. - * config/aarch64/predicates.md (aarch64_addsvl_addspl_immediate): - New predicate. - (aarch64_pluslong_operand): Include it for SME. - * config/aarch64/constraints.md (Ucj, Uav): New constraints. - * config/aarch64/iterators.md (VNx1TI_ONLY): New mode iterator. - (SME_ZA_I, SME_ZA_SDI, SME_ZA_SDF_I, SME_MOP_BHI): Likewise. - (SME_MOP_HSDF): Likewise. - (UNSPEC_SME_ADDHA, UNSPEC_SME_ADDVA, UNSPEC_SME_FMOPA) - (UNSPEC_SME_FMOPS, UNSPEC_SME_LD1_HOR, UNSPEC_SME_LD1_VER) - (UNSPEC_SME_READ_HOR, UNSPEC_SME_READ_VER, UNSPEC_SME_SMOPA) - (UNSPEC_SME_SMOPS, UNSPEC_SME_ST1_HOR, UNSPEC_SME_ST1_VER) - (UNSPEC_SME_SUMOPA, UNSPEC_SME_SUMOPS, UNSPEC_SME_UMOPA) - (UNSPEC_SME_UMOPS, UNSPEC_SME_USMOPA, UNSPEC_SME_USMOPS) - (UNSPEC_SME_WRITE_HOR, UNSPEC_SME_WRITE_VER): New unspecs. - (elem_bits): Handle x2 and x4 structure modes, plus VNx1TI. - (Vetype, Vesize, VPRED): Handle VNx1TI. - (b): New mode attribute. - (SME_LD1, SME_READ, SME_ST1, SME_WRITE, SME_BINARY_SDI, SME_INT_MOP) - (SME_FP_MOP): New int iterators. - (optab): Handle SME unspecs. - (hv): New int attribute. - * config/aarch64/aarch64.md (*add<mode>3_aarch64): Handle ADDSVL - and ADDSPL. - * config/aarch64/aarch64-sme.md (UNSPEC_SME_LDR): New unspec. - (@aarch64_sme_<optab><mode>, @aarch64_sme_<optab><mode>_plus) - (aarch64_sme_ldr0, @aarch64_sme_ldrn<mode>): New patterns. - (UNSPEC_SME_STR): New unspec. - (@aarch64_sme_<optab><mode>, @aarch64_sme_<optab><mode>_plus) - (aarch64_sme_str0, @aarch64_sme_strn<mode>): New patterns. - (@aarch64_sme_<optab><v_int_container><mode>): Likewise. - (*aarch64_sme_<optab><v_int_container><mode>_plus): Likewise. - (@aarch64_sme_<optab><VNx1TI_ONLY:mode><SVE_FULL:mode>): Likewise. - (@aarch64_sme_<optab><v_int_container><mode>): Likewise. - (*aarch64_sme_<optab><v_int_container><mode>_plus): Likewise. - (@aarch64_sme_<optab><VNx1TI_ONLY:mode><SVE_FULL:mode>): Likewise. - (UNSPEC_SME_ZERO): New unspec. - (aarch64_sme_zero): New pattern. - (@aarch64_sme_<SME_BINARY_SDI:optab><mode>): Likewise. - (@aarch64_sme_<SME_INT_MOP:optab><mode>): Likewise. - (@aarch64_sme_<SME_FP_MOP:optab><mode>): Likewise. - * config/aarch64/aarch64-sve-builtins.def: Add ZA type suffixes. - Include aarch64-sve-builtins-sme.def. - (DEF_SME_ZA_FUNCTION): New macro. - * config/aarch64/aarch64-sve-builtins.h (CP_READ_ZA): New call - property. - (CP_WRITE_ZA): Likewise. - (PRED_za_m): New predication type. - (type_suffix_index): Handle DEF_SME_ZA_SUFFIX. - (type_suffix_info): Add vector_p and za_p fields. - (function_instance::num_za_tiles): New member function. - (function_builder::get_attributes): Add an aarch64_feature_flags - argument. - (function_expander::get_contiguous_base): Take a base argument - number, a vnum argument number, and an argument that indicates - whether the vnum parameter is a factor of the SME vector length - or the prevailing vector length. - (function_expander::add_integer_operand): Take a poly_int64. - (sve_switcher::sve_switcher): Take a base set of flags. - (sme_switcher): New class. - (scalar_types): Add a null entry for NUM_VECTOR_TYPES. - * config/aarch64/aarch64-sve-builtins.cc: Include - aarch64-sve-builtins-sme.h. - (pred_suffixes): Add an entry for PRED_za_m. - (type_suffixes): Initialize vector_p and za_p. Handle ZA suffixes. - (TYPES_all_za, TYPES_d_za, TYPES_za_bhsd_data, TYPES_za_all_data) - (TYPES_za_s_integer, TYPES_za_d_integer, TYPES_mop_base) - (TYPES_mop_base_signed, TYPES_mop_base_unsigned, TYPES_mop_i16i64) - (TYPES_mop_i16i64_signed, TYPES_mop_i16i64_unsigned, TYPES_za): New - type suffix macros. - (preds_m, preds_za_m): New predication lists. - (function_groups): Handle DEF_SME_ZA_FUNCTION. - (scalar_types): Add an entry for NUM_VECTOR_TYPES. - (find_type_suffix_for_scalar_type): Check positively for vectors - rather than negatively for predicates. - (check_required_extensions): Handle PSTATE.SM and PSTATE.ZA - requirements. - (report_out_of_range): Handle the case where the minimum and - maximum are the same. - (function_instance::reads_global_state_p): Return true for functions - that read ZA. - (function_instance::modifies_global_state_p): Return true for functions - that write to ZA. - (sve_switcher::sve_switcher): Add a base flags argument. - (function_builder::get_name): Handle "__arm_" prefixes. - (add_attribute): Add an overload that takes a namespaces. - (add_shared_state_attribute): New function. - (function_builder::get_attributes): Take the required feature flags - as argument. Add streaming and ZA attributes where appropriate. - (function_builder::add_unique_function): Update calls accordingly. - (function_resolver::check_gp_argument): Assert that the predication - isn't ZA _m predication. - (function_checker::function_checker): Don't bias the argument - number for ZA _m predication. - (function_expander::get_contiguous_base): Add arguments that - specify the base argument number, the vnum argument number, - and an argument that indicates whether the vnum parameter is - a factor of the SME vector length or the prevailing vector length. - Handle the SME case. - (function_expander::add_input_operand): Handle pmode_register_operand. - (function_expander::add_integer_operand): Take a poly_int64. - (init_builtins): Call handle_arm_sme_h for LTO. - (handle_arm_sve_h): Skip SME intrinsics. - (handle_arm_sme_h): New function. - * config/aarch64/aarch64-sve-builtins-functions.h - (read_write_za, write_za): New classes. - (unspec_based_sme_function, za_arith_function): New using aliases. - (quiet_za_arith_function): Likewise. - * config/aarch64/aarch64-sve-builtins-shapes.h - (binary_za_int_m, binary_za_m, binary_za_uint_m, bool_inherent) - (inherent_za, inherent_mask_za, ldr_za, load_za, read_za_m, store_za) - (str_za, unary_za_m, write_za_m): Declare. - * config/aarch64/aarch64-sve-builtins-shapes.cc (apply_predication): - Expect za_m functions to have an existing governing predicate. - (binary_za_m_base, binary_za_int_m_def, binary_za_m_def): New classes. - (binary_za_uint_m_def, bool_inherent_def, inherent_za_def): Likewise. - (inherent_mask_za_def, ldr_za_def, load_za_def, read_za_m_def) - (store_za_def, str_za_def, unary_za_m_def, write_za_m_def): Likewise. - * config/aarch64/arm_sme.h: New file. - * config/aarch64/aarch64-sve-builtins-sme.h: Likewise. - * config/aarch64/aarch64-sve-builtins-sme.cc: Likewise. - * config/aarch64/aarch64-sve-builtins-sme.def: Likewise. - * config/aarch64/t-aarch64 (aarch64-sve-builtins.o): Depend on - aarch64-sve-builtins-sme.def and aarch64-sve-builtins-sme.h. - (aarch64-sve-builtins-sme.o): New rule. - -2023-12-05 Richard Sandiford <richard.sandiford@arm.com> - - * config/aarch64/aarch64-sve-builtins.h - (function_shape::has_merge_argument_p): New member function. - * config/aarch64/aarch64-sve-builtins.cc: - (function_resolver::check_gp_argument): Use it. - (function_expander::get_fallback_value): Likewise. - * config/aarch64/aarch64-sve-builtins-shapes.cc - (apply_predication): Likewise. - (unary_convert_narrowt_def::has_merge_argument_p): New function. - -2023-12-05 Richard Sandiford <richard.sandiford@arm.com> - - * config/aarch64/aarch64-sve-builtins-functions.h - (unspec_based_function_base): Allow type suffix 1 to determine - the mode of the operation. - (unspec_based_function): Update accordingly. - (unspec_based_fused_function): Likewise. - (unspec_based_fused_lane_function): Likewise. - -2023-12-05 Richard Sandiford <richard.sandiford@arm.com> - - * config/aarch64/aarch64-modes.def: Add VNx1TI. - -2023-12-05 Richard Sandiford <richard.sandiford@arm.com> - - * config/aarch64/aarch64.h (W12_W15_REGNUM_P): New macro. - (W12_W15_REGS): New register class. - (REG_CLASS_NAMES, REG_CLASS_CONTENTS): Add entries for it. - * config/aarch64/aarch64.cc (aarch64_regno_regclass) - (aarch64_class_max_nregs, aarch64_register_move_cost): Handle - W12_W15_REGS. - -2023-12-05 Richard Sandiford <richard.sandiford@arm.com> - - * config/aarch64/aarch64-isa-modes.def (ZA_ON): New ISA mode. - * config/aarch64/aarch64-protos.h (aarch64_rdsvl_immediate_p) - (aarch64_output_rdsvl, aarch64_optimize_mode_switching) - (aarch64_restore_za): Declare. - * config/aarch64/constraints.md (UsR): New constraint. - * config/aarch64/aarch64.md (LOWERING_REGNUM, TPIDR_BLOCK_REGNUM) - (SME_STATE_REGNUM, TPIDR2_SETUP_REGNUM, ZA_FREE_REGNUM) - (ZA_SAVED_REGNUM, ZA_REGNUM, FIRST_FAKE_REGNUM): New constants. - (LAST_FAKE_REGNUM): Likewise. - (UNSPEC_SAVE_NZCV, UNSPEC_RESTORE_NZCV, UNSPEC_SME_VQ): New unspecs. - (arches): Add sme. - (arch_enabled): Handle it. - (*cb<optab><mode>1): Rename to... - (aarch64_cb<optab><mode>1): ...this. - (*movsi_aarch64): Add an alternative for RDSVL. - (*movdi_aarch64): Likewise. - (aarch64_save_nzcv, aarch64_restore_nzcv): New insns. - * config/aarch64/aarch64-sme.md (UNSPEC_SMSTOP_ZA) - (UNSPEC_INITIAL_ZERO_ZA, UNSPEC_TPIDR2_SAVE, UNSPEC_TPIDR2_RESTORE) - (UNSPEC_READ_TPIDR2, UNSPEC_WRITE_TPIDR2, UNSPEC_SETUP_LOCAL_TPIDR2) - (UNSPEC_RESTORE_ZA, UNSPEC_START_PRIVATE_ZA_CALL): New unspecs. - (UNSPEC_END_PRIVATE_ZA_CALL, UNSPEC_COMMIT_LAZY_SAVE): Likewise. - (UNSPECV_ASM_UPDATE_ZA): New unspecv. - (aarch64_tpidr2_save, aarch64_smstart_za, aarch64_smstop_za) - (aarch64_initial_zero_za, aarch64_setup_local_tpidr2) - (aarch64_clear_tpidr2, aarch64_write_tpidr2, aarch64_read_tpidr2) - (aarch64_tpidr2_restore, aarch64_restore_za, aarch64_asm_update_za) - (aarch64_start_private_za_call, aarch64_end_private_za_call) - (aarch64_commit_lazy_save): New patterns. - * config/aarch64/aarch64.h (AARCH64_ISA_ZA_ON, TARGET_ZA): New macros. - (FIXED_REGISTERS, REGISTER_NAMES): Add the new fake ZA registers. - (CALL_USED_REGISTERS): Replace with... - (CALL_REALLY_USED_REGISTERS): ...this and add the fake ZA registers. - (FIRST_PSEUDO_REGISTER): Bump to include the fake ZA registers. - (FAKE_REGS): New register class. - (REG_CLASS_NAMES): Update accordingly. - (REG_CLASS_CONTENTS): Likewise. - (machine_function::tpidr2_block): New member variable. - (machine_function::tpidr2_block_ptr): Likewise. - (machine_function::za_save_buffer): Likewise. - (machine_function::next_asm_update_za_id): Likewise. - (CUMULATIVE_ARGS::shared_za_flags): Likewise. - (aarch64_mode_entity, aarch64_local_sme_state): New enums. - (aarch64_tristate_mode): Likewise. - (OPTIMIZE_MODE_SWITCHING, NUM_MODES_FOR_MODE_SWITCHING): Define. - * config/aarch64/aarch64.cc (AARCH64_STATE_SHARED, AARCH64_STATE_IN) - (AARCH64_STATE_OUT): New constants. - (aarch64_attribute_shared_state_flags): New function. - (aarch64_lookup_shared_state_flags, aarch64_fndecl_has_new_state) - (aarch64_check_state_string, cmp_string_csts): Likewise. - (aarch64_merge_string_arguments, aarch64_check_arm_new_against_type) - (handle_arm_new, handle_arm_shared): Likewise. - (handle_arm_new_za_attribute): New - (aarch64_arm_attribute_table): Add new, preserves, in, out, and inout. - (aarch64_hard_regno_nregs): Handle FAKE_REGS. - (aarch64_hard_regno_mode_ok): Likewise. - (aarch64_fntype_shared_flags, aarch64_fntype_pstate_za): New functions. - (aarch64_fntype_isa_mode): Include aarch64_fntype_pstate_za. - (aarch64_fndecl_has_state, aarch64_fndecl_pstate_za): New functions. - (aarch64_fndecl_isa_mode): Include aarch64_fndecl_pstate_za. - (aarch64_cfun_incoming_pstate_za, aarch64_cfun_shared_flags) - (aarch64_cfun_has_new_state, aarch64_cfun_has_state): New functions. - (aarch64_sme_vq_immediate, aarch64_sme_vq_unspec_p): Likewise. - (aarch64_rdsvl_immediate_p, aarch64_output_rdsvl): Likewise. - (aarch64_expand_mov_immediate): Handle RDSVL immediates. - (aarch64_function_arg): Add the ZA sharing flags as a third limb - of the PARALLEL. - (aarch64_init_cumulative_args): Record the ZA sharing flags. - (aarch64_extra_live_on_entry): New function. Handle the new - ZA-related fake registers. - (aarch64_epilogue_uses): Handle the new ZA-related fake registers. - (aarch64_cannot_force_const_mem): Handle UNSPEC_SME_VQ constants. - (aarch64_get_tpidr2_block, aarch64_get_tpidr2_ptr): New functions. - (aarch64_init_tpidr2_block, aarch64_restore_za): Likewise. - (aarch64_layout_frame): Check whether the current function creates - new ZA state. Record that it clobbers LR if so. - (aarch64_expand_prologue): Handle functions that create new ZA state. - (aarch64_expand_epilogue): Likewise. - (aarch64_create_tpidr2_block): New function. - (aarch64_restore_za): Likewise. - (aarch64_start_call_args): Disallow calls to shared-ZA functions - from functions that have no ZA state. Emit a marker instruction - before calls to private-ZA functions from functions that have - SME state. - (aarch64_expand_call): Add return registers for state that is - managed via attributes. Record the use and clobber information - for the ZA registers. - (aarch64_end_call_args): New function. - (aarch64_regno_regclass): Handle FAKE_REGS. - (aarch64_class_max_nregs): Likewise. - (aarch64_override_options_internal): Require TARGET_SME for - functions that have ZA state. - (aarch64_conditional_register_usage): Handle FAKE_REGS. - (aarch64_mov_operand_p): Handle RDSVL immediates. - (aarch64_comp_type_attributes): Check that the ZA sharing flags - are equal. - (aarch64_merge_decl_attributes): New function. - (aarch64_optimize_mode_switching, aarch64_mode_emit_za_save_buffer) - (aarch64_mode_emit_local_sme_state, aarch64_mode_emit): Likewise. - (aarch64_insn_references_sme_state_p): Likewise. - (aarch64_mode_needed_local_sme_state): Likewise. - (aarch64_mode_needed_za_save_buffer, aarch64_mode_needed): Likewise. - (aarch64_mode_after_local_sme_state, aarch64_mode_after): Likewise. - (aarch64_local_sme_confluence, aarch64_mode_confluence): Likewise. - (aarch64_one_shot_backprop, aarch64_local_sme_backprop): Likewise. - (aarch64_mode_backprop, aarch64_mode_entry): Likewise. - (aarch64_mode_exit, aarch64_mode_eh_handler): Likewise. - (aarch64_mode_priority, aarch64_md_asm_adjust): Likewise. - (TARGET_END_CALL_ARGS, TARGET_MERGE_DECL_ATTRIBUTES): Define. - (TARGET_MODE_EMIT, TARGET_MODE_NEEDED, TARGET_MODE_AFTER): Likewise. - (TARGET_MODE_CONFLUENCE, TARGET_MODE_BACKPROP): Likewise. - (TARGET_MODE_ENTRY, TARGET_MODE_EXIT): Likewise. - (TARGET_MODE_EH_HANDLER, TARGET_MODE_PRIORITY): Likewise. - (TARGET_EXTRA_LIVE_ON_ENTRY): Likewise. - (TARGET_MD_ASM_ADJUST): Use aarch64_md_asm_adjust. - * config/aarch64/aarch64-c.cc (aarch64_define_unconditional_macros): - Define __arm_new, __arm_preserves,__arm_in, __arm_out, and __arm_inout. - -2023-12-05 Richard Sandiford <richard.sandiford@arm.com> - - * config/aarch64/aarch64-passes.def - (pass_late_thread_prologue_and_epilogue): New pass. - * config/aarch64/aarch64-sme.md: New file. - * config/aarch64/aarch64.md: Include it. - (*tb<optab><mode>1): Rename to... - (@aarch64_tb<optab><mode>): ...this. - (call, call_value, sibcall, sibcall_value): Don't require operand 2 - to be a CONST_INT. - * config/aarch64/aarch64-protos.h (aarch64_emit_call_insn): Return - the insn. - (make_pass_switch_sm_state): Declare. - * config/aarch64/aarch64.h (TARGET_STREAMING_COMPATIBLE): New macro. - (CALL_USED_REGISTER): Mark VG as call-preserved. - (aarch64_frame::old_svcr_offset): New member variable. - (machine_function::call_switches_sm_state): Likewise. - (CUMULATIVE_ARGS::num_sme_mode_switch_args): Likewise. - (CUMULATIVE_ARGS::sme_mode_switch_args): Likewise. - * config/aarch64/aarch64.cc: Include tree-pass.h and cfgbuild.h. - (aarch64_cfun_incoming_pstate_sm): New function. - (aarch64_call_switches_pstate_sm): Likewise. - (aarch64_reg_save_mode): Return DImode for VG_REGNUM. - (aarch64_callee_isa_mode): New function. - (aarch64_insn_callee_isa_mode): Likewise. - (aarch64_guard_switch_pstate_sm): Likewise. - (aarch64_switch_pstate_sm): Likewise. - (aarch64_sme_mode_switch_regs): New class. - (aarch64_record_sme_mode_switch_args): New function. - (aarch64_finish_sme_mode_switch_args): Likewise. - (aarch64_function_arg): Handle the end marker by returning a - PARALLEL that contains the ABI cookie that we used previously - alongside the result of aarch64_finish_sme_mode_switch_args. - (aarch64_init_cumulative_args): Initialize num_sme_mode_switch_args. - (aarch64_function_arg_advance): If a call would switch SM state, - record all argument registers that would need to be saved around - the mode switch. - (aarch64_need_old_pstate_sm): New function. - (aarch64_layout_frame): Decide whether the frame needs to store the - incoming value of PSTATE.SM and allocate a save slot for it if so. - If a function switches SME state, arrange to save the old value - of the DWARF VG register. Handle the case where this is the only - register save slot above the FP. - (aarch64_save_callee_saves): Handles saves of the DWARF VG register. - (aarch64_get_separate_components): Prevent such saves from being - shrink-wrapped. - (aarch64_old_svcr_mem): New function. - (aarch64_read_old_svcr): Likewise. - (aarch64_guard_switch_pstate_sm): Likewise. - (aarch64_expand_prologue): Handle saves of the DWARF VG register. - Initialize any SVCR save slot. - (aarch64_expand_call): Allow the cookie to be PARALLEL that contains - both the UNSPEC_CALLEE_ABI value and a list of registers that need - to be preserved across a change to PSTATE.SM. If the call does - involve such a change to PSTATE.SM, record the registers that - would be clobbered by this process. Also emit an instruction - to mark the temporary change in VG. Update call_switches_pstate_sm. - (aarch64_emit_call_insn): Return the emitted instruction. - (aarch64_frame_pointer_required): New function. - (aarch64_conditional_register_usage): Prevent VG_REGNUM from being - treated as a register operand. - (aarch64_switch_pstate_sm_for_call): New function. - (pass_data_switch_pstate_sm): New pass variable. - (pass_switch_pstate_sm): New pass class. - (make_pass_switch_pstate_sm): New function. - (TARGET_FRAME_POINTER_REQUIRED): Define. - * config/aarch64/t-aarch64 (s-check-sve-md): Add aarch64-sme.md. - -2023-12-05 Richard Sandiford <richard.sandiford@arm.com> - - * config/aarch64/aarch64.h (TARGET_NON_STREAMING): New macro. - (TARGET_SVE2_AES, TARGET_SVE2_BITPERM): Use it. - (TARGET_SVE2_SHA3, TARGET_SVE2_SM4): Likewise. - * config/aarch64/aarch64-sve-builtins-base.def: Separate out - the functions that require PSTATE.SM to be 0 and guard them - with AARCH64_FL_SM_OFF. - * config/aarch64/aarch64-sve-builtins-sve2.def: Likewise. - * config/aarch64/aarch64-sve-builtins.cc (check_required_extensions): - Enforce AARCH64_FL_SM_OFF requirements. - * config/aarch64/aarch64-sve.md (aarch64_wrffr): Require - TARGET_NON_STREAMING - (aarch64_rdffr, aarch64_rdffr_z, *aarch64_rdffr_z_ptest): Likewise. - (*aarch64_rdffr_ptest, *aarch64_rdffr_z_cc, *aarch64_rdffr_cc) - (@aarch64_ld<fn>f1<mode>): Likewise. - (@aarch64_ld<fn>f1_<ANY_EXTEND:optab><SVE_HSDI:mode><SVE_PARTIAL_I:mode>) - (gather_load<mode><v_int_container>): Likewise - (mask_gather_load<mode><v_int_container>): Likewise. - (mask_gather_load<mode><v_int_container>): Likewise. - (*mask_gather_load<mode><v_int_container>_<su>xtw_unpacked): Likewise. - (*mask_gather_load<mode><v_int_container>_sxtw): Likewise. - (*mask_gather_load<mode><v_int_container>_uxtw): Likewise. - (@aarch64_gather_load_<ANY_EXTEND:optab><SVE_4HSI:mode><SVE_4BHI:mode>) - (@aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode> - <SVE_2BHSI:mode>): Likewise. - (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode> - <SVE_2BHSI:mode>_<ANY_EXTEND2:su>xtw_unpacked) - (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode> - <SVE_2BHSI:mode>_sxtw): Likewise. - (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode> - <SVE_2BHSI:mode>_uxtw): Likewise. - (@aarch64_ldff1_gather<mode>, @aarch64_ldff1_gather<mode>): Likewise. - (*aarch64_ldff1_gather<mode>_sxtw): Likewise. - (*aarch64_ldff1_gather<mode>_uxtw): Likewise. - (@aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx4_WIDE:mode> - <VNx4_NARROW:mode>): Likewise. - (@aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode> - <VNx2_NARROW:mode>): Likewise. - (*aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode> - <VNx2_NARROW:mode>_sxtw): Likewise. - (*aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode> - <VNx2_NARROW:mode>_uxtw): Likewise. - (@aarch64_sve_gather_prefetch<SVE_FULL_I:mode><VNx4SI_ONLY:mode>) - (@aarch64_sve_gather_prefetch<SVE_FULL_I:mode><VNx2DI_ONLY:mode>) - (*aarch64_sve_gather_prefetch<SVE_FULL_I:mode><VNx2DI_ONLY:mode>_sxtw) - (*aarch64_sve_gather_prefetch<SVE_FULL_I:mode><VNx2DI_ONLY:mode>_uxtw) - (scatter_store<mode><v_int_container>): Likewise. - (mask_scatter_store<mode><v_int_container>): Likewise. - (*mask_scatter_store<mode><v_int_container>_<su>xtw_unpacked) - (*mask_scatter_store<mode><v_int_container>_sxtw): Likewise. - (*mask_scatter_store<mode><v_int_container>_uxtw): Likewise. - (@aarch64_scatter_store_trunc<VNx4_NARROW:mode><VNx4_WIDE:mode>) - (@aarch64_scatter_store_trunc<VNx2_NARROW:mode><VNx2_WIDE:mode>) - (*aarch64_scatter_store_trunc<VNx2_NARROW:mode><VNx2_WIDE:mode>_sxtw) - (*aarch64_scatter_store_trunc<VNx2_NARROW:mode><VNx2_WIDE:mode>_uxtw) - (@aarch64_sve_ld1ro<mode>, @aarch64_adr<mode>): Likewise. - (*aarch64_adr_sxtw, *aarch64_adr_uxtw_unspec): Likewise. - (*aarch64_adr_uxtw_and, @aarch64_adr<mode>_shift): Likewise. - (*aarch64_adr<mode>_shift, *aarch64_adr_shift_sxtw): Likewise. - (*aarch64_adr_shift_uxtw, @aarch64_sve_add_<optab><vsi2qi>): Likewise. - (@aarch64_sve_<sve_fp_op><mode>, fold_left_plus_<mode>): Likewise. - (mask_fold_left_plus_<mode>, @aarch64_sve_compact<mode>): Likewise. - * config/aarch64/aarch64-sve2.md (@aarch64_gather_ldnt<mode>) - (@aarch64_gather_ldnt_<ANY_EXTEND:optab><SVE_FULL_SDI:mode> - <SVE_PARTIAL_I:mode>): Likewise. - (@aarch64_sve2_histcnt<mode>, @aarch64_sve2_histseg<mode>): Likewise. - (@aarch64_pred_<SVE2_MATCH:sve_int_op><mode>): Likewise. - (*aarch64_pred_<SVE2_MATCH:sve_int_op><mode>_cc): Likewise. - (*aarch64_pred_<SVE2_MATCH:sve_int_op><mode>_ptest): Likewise. - * config/aarch64/iterators.md (SVE_FP_UNARY_INT): Make FEXPA - depend on TARGET_NON_STREAMING. - (SVE_BFLOAT_TERNARY_LONG): Likewise BFMMLA. - -2023-12-05 Richard Sandiford <richard.sandiford@arm.com> - - * config/aarch64/aarch64.h (TARGET_BASE_SIMD): New macro. - (TARGET_SIMD): Require PSTATE.SM to be 0. - (AARCH64_ISA_SM_OFF): New macro. - * config/aarch64/aarch64.cc (aarch64_array_mode_supported_p): - Allow Advanced SIMD structure modes for TARGET_BASE_SIMD. - (aarch64_print_operand): Support '%Z'. - (aarch64_secondary_reload): Expect SVE moves to be used for - Advanced SIMD modes if SVE is enabled and non-streaming - Advanced SIMD isn't. - (aarch64_register_move_cost): Likewise. - (aarch64_simd_container_mode): Extend Advanced SIMD mode - handling to TARGET_BASE_SIMD. - (aarch64_expand_cpymem): Expand commentary. - * config/aarch64/aarch64.md (arches): Add base_simd and nobase_simd. - (arch_enabled): Handle it. - (*mov<mode>_aarch64): Extend UMOV alternative to TARGET_BASE_SIMD. - (*movti_aarch64): Use an SVE move instruction if non-streaming - SIMD isn't available. - (*mov<TFD:mode>_aarch64): Likewise. - (load_pair_dw_tftf): Extend to TARGET_BASE_SIMD. - (store_pair_dw_tftf): Likewise. - (loadwb_pair<TX:mode>_<P:mode>): Likewise. - (storewb_pair<TX:mode>_<P:mode>): Likewise. - * config/aarch64/aarch64-simd.md (*aarch64_simd_mov<VDMOV:mode>): - Allow UMOV in streaming mode. - (*aarch64_simd_mov<VQMOV:mode>): Use an SVE move instruction - if non-streaming SIMD isn't available. - (aarch64_store_lane0<mode>): Depend on TARGET_FLOAT rather than - TARGET_SIMD. - (aarch64_simd_mov_from_<mode>low): Likewise. Use fmov if - Advanced SIMD is completely disabled. - (aarch64_simd_mov_from_<mode>high): Use SVE EXT instructions if - non-streaming SIMD isn't available. - -2023-12-05 Richard Sandiford <richard.sandiford@arm.com> - - * doc/invoke.texi: Document SME. - * doc/sourcebuild.texi: Document aarch64_sve. - * config/aarch64/aarch64-option-extensions.def (sme): Define. - * config/aarch64/aarch64.h (AARCH64_ISA_SME): New macro. - (TARGET_SME): Likewise. - * config/aarch64/aarch64.cc (aarch64_override_options_internal): - Ensure that SME is present when compiling streaming code. - -2023-12-05 Richard Sandiford <richard.sandiford@arm.com> - - * config/aarch64/aarch64-isa-modes.def: New file. - * config/aarch64/aarch64.h: Include it in the feature enumerations. - (AARCH64_FL_SM_STATE, AARCH64_FL_ISA_MODES): New constants. - (AARCH64_FL_DEFAULT_ISA_MODE): Likewise. - (AARCH64_ISA_MODE): New macro. - (CUMULATIVE_ARGS): Add an isa_mode field. - * config/aarch64/aarch64-protos.h (aarch64_gen_callee_cookie): Declare. - (aarch64_tlsdesc_abi_id): Return an arm_pcs. - * config/aarch64/aarch64.cc (attr_streaming_exclusions) - (aarch64_gnu_attributes, aarch64_gnu_attribute_table) - (aarch64_arm_attributes, aarch64_arm_attribute_table): New tables. - (aarch64_attribute_table): Redefine to include the gnu and arm - attributes. - (aarch64_fntype_pstate_sm, aarch64_fntype_isa_mode): New functions. - (aarch64_fndecl_pstate_sm, aarch64_fndecl_isa_mode): Likewise. - (aarch64_gen_callee_cookie, aarch64_callee_abi): Likewise. - (aarch64_insn_callee_cookie, aarch64_insn_callee_abi): Use them. - (aarch64_function_arg, aarch64_output_mi_thunk): Likewise. - (aarch64_init_cumulative_args): Initialize the isa_mode field. - (aarch64_output_mi_thunk): Use aarch64_gen_callee_cookie to get - the ABI cookie. - (aarch64_override_options): Add the ISA mode to the feature set. - (aarch64_temporary_target::copy_from_fndecl): Likewise. - (aarch64_fndecl_options, aarch64_handle_attr_arch): Likewise. - (aarch64_set_current_function): Maintain the correct ISA mode. - (aarch64_tlsdesc_abi_id): Return an arm_pcs. - (aarch64_comp_type_attributes): Handle arm::streaming and - arm::streaming_compatible. - * config/aarch64/aarch64-c.cc (aarch64_define_unconditional_macros): - Define __arm_streaming and __arm_streaming_compatible. - * config/aarch64/aarch64.md (tlsdesc_small_<mode>): Use - aarch64_gen_callee_cookie to get the ABI cookie. - * config/aarch64/t-aarch64 (TM_H): Add all feature-related .def files. - -2023-12-05 Richard Sandiford <richard.sandiford@arm.com> - - * config/aarch64/aarch64-sve-builtins-base.cc - (svreinterpret_impl::fold): Punt on tuple forms. - (svreinterpret_impl::expand): Use tuple_mode instead of vector_mode. - * config/aarch64/aarch64-sve-builtins-base.def (svreinterpret): - Extend to x1234 groups. - * config/aarch64/aarch64-sve-builtins-functions.h - (multi_vector_function::vectors_per_tuple): If the function has - a group suffix, get the number of vectors from there. - * config/aarch64/aarch64-sve-builtins-shapes.h (reinterpret): Declare. - * config/aarch64/aarch64-sve-builtins-shapes.cc (reinterpret_def) - (reinterpret): New function shape. - * config/aarch64/aarch64-sve-builtins.cc (function_groups): Handle - DEF_SVE_FUNCTION_GS. - * config/aarch64/aarch64-sve-builtins.def (DEF_SVE_FUNCTION_GS): New - macro. - (DEF_SVE_FUNCTION): Forward to DEF_SVE_FUNCTION_GS by default. - * config/aarch64/aarch64-sve-builtins.h - (function_instance::tuple_mode): New member function. - (function_base::vectors_per_tuple): Take the function instance - as argument and get the number from the group suffix. - (function_instance::vectors_per_tuple): Update accordingly. - * config/aarch64/iterators.md (SVE_FULLx2, SVE_FULLx3, SVE_FULLx4) - (SVE_ALL_STRUCT): New mode iterators. - (SVE_STRUCT): Redefine in terms of SVE_FULL*. - * config/aarch64/aarch64-sve.md (@aarch64_sve_reinterpret<mode>) - (*aarch64_sve_reinterpret<mode>): Extend to SVE structure modes. - -2023-12-05 Richard Sandiford <richard.sandiford@arm.com> - - * config/aarch64/aarch64-sve-builtins.cc - (function_resolver::require_derived_vector_type): Add a specific - error message for the case in which the caller wants a single - vector whose element type matches a previous tuyple argument. - -2023-12-05 Richard Sandiford <richard.sandiford@arm.com> - - * config/aarch64/aarch64-sve-builtins.h - (function_resolver::lookup_form): Add an overload that takes - an sve_type rather than type and group suffixes. - (function_resolver::resolve_to): Likewise. - (function_resolver::infer_vector_or_tuple_type): Return an sve_type. - (function_resolver::infer_tuple_type): Likewise. - (function_resolver::require_matching_vector_type): Take an sve_type - rather than a type_suffix_index. - (function_resolver::require_derived_vector_type): Likewise. - * config/aarch64/aarch64-sve-builtins.cc (num_vectors_to_group): - New function. - (function_resolver::lookup_form): Add an overload that takes - an sve_type rather than type and group suffixes. - (function_resolver::resolve_to): Likewise. - (function_resolver::infer_vector_or_tuple_type): Return an sve_type. - (function_resolver::infer_tuple_type): Likewise. - (function_resolver::infer_vector_type): Update accordingly. - (function_resolver::require_matching_vector_type): Take an sve_type - rather than a type_suffix_index. - (function_resolver::require_derived_vector_type): Likewise. - * config/aarch64/aarch64-sve-builtins-shapes.cc (get_def::resolve) - (set_def::resolve, store_def::resolve, tbl_tuple_def::resolve): Update - calls accordingly. - -2023-12-05 Richard Sandiford <richard.sandiford@arm.com> - - * config/aarch64/aarch64-sve-builtins.h - (function_resolver::require_matching_vector_type): Add a parameter - that specifies the number of the earlier argument that is being - matched against. - * config/aarch64/aarch64-sve-builtins.cc - (function_resolver::require_matching_vector_type): Likewise. - (require_derived_vector_type): Update calls accordingly. - (function_resolver::resolve_unary): Likewise. - (function_resolver::resolve_uniform): Likewise. - (function_resolver::resolve_uniform_opt_n): Likewise. - * config/aarch64/aarch64-sve-builtins-shapes.cc - (binary_long_lane_def::resolve): Likewise. - (clast_def::resolve, ternary_uint_def::resolve): Likewise. - -2023-12-05 Richard Sandiford <richard.sandiford@arm.com> - - * config/aarch64/aarch64-sve-builtins.h - (function_resolver::infer_sve_type): New member function. - (function_resolver::report_incorrect_num_vectors): Likewise. - * config/aarch64/aarch64-sve-builtins.cc - (function_resolver::infer_sve_type): New function,. - (function_resolver::report_incorrect_num_vectors): New function, - split out from... - (function_resolver::infer_vector_or_tuple_type): ...here. Use - infer_sve_type. - -2023-12-05 Richard Sandiford <richard.sandiford@arm.com> - - * config/aarch64/aarch64-sve-builtins.h (sve_type): New struct. - (sve_type::operator==): New function. - (function_resolver::get_vector_type): Delete. - (function_resolver::report_no_such_form): Take an sve_type rather - than a type_suffix_index. - * config/aarch64/aarch64-sve-builtins.cc (get_vector_type): New - function. - (function_resolver::get_vector_type): Delete. - (function_resolver::report_no_such_form): Take an sve_type rather - than a type_suffix_index. - (find_sve_type): New function, split out from... - (function_resolver::infer_vector_or_tuple_type): ...here. - -2023-12-05 Richard Sandiford <richard.sandiford@arm.com> - - * config/aarch64/aarch64-sve-builtins-shapes.cc (build_one): Take - a group suffix index parameter. - (build_32_64, build_all): Update accordingly. Iterate over all - group suffixes. - * config/aarch64/aarch64-sve-builtins-sve2.cc (svqrshl_impl::fold) - (svqshl_impl::fold, svrshl_impl::fold): Update function_instance - constructors. - * config/aarch64/aarch64-sve-builtins.cc (group_suffixes): New array. - (groups_none): New constant. - (function_groups): Initialize the groups field. - (function_instance::hash): Hash the group index. - (function_builder::get_name): Add the group suffix. - (function_builder::add_overloaded_functions): Iterate over all - group suffixes. - (function_resolver::lookup_form): Take a group suffix parameter. - (function_resolver::resolve_to): Likewise. - * config/aarch64/aarch64-sve-builtins.def (DEF_SVE_GROUP_SUFFIX): New - macro. - (x2, x3, x4): New group suffixes. - * config/aarch64/aarch64-sve-builtins.h (group_suffix_index): New enum. - (group_suffix_info): New structure. - (function_group_info::groups): New member variable. - (function_instance::group_suffix_id): Likewise. - (group_suffixes): New array. - (function_instance::operator==): Compare the group suffixes. - (function_instance::group_suffix): New function. - -2023-12-05 Richard Sandiford <richard.sandiford@arm.com> - - * config/aarch64/aarch64-sve-builtins.cc (function_groups): Remove - implied requirement on SVE. - * config/aarch64/aarch64-sve-builtins-base.def: Explicitly require SVE. - * config/aarch64/aarch64-sve-builtins-sve2.def: Likewise. - -2023-12-05 Richard Sandiford <richard.sandiford@arm.com> - - * config/aarch64/aarch64-protos.h (aarch64_sve_rdvl_immediate_p) - (aarch64_output_sve_rdvl): Declare. - * config/aarch64/aarch64.cc (aarch64_sve_cnt_factor_p): New - function, split out from... - (aarch64_sve_cnt_immediate_p): ...here. - (aarch64_sve_rdvl_factor_p): New function. - (aarch64_sve_rdvl_immediate_p): Likewise. - (aarch64_output_sve_rdvl): Likewise. - (aarch64_offset_temporaries): Rewrite the SVE handling to use RDVL - for some cases. - (aarch64_expand_mov_immediate): Handle RDVL immediates. - (aarch64_mov_operand_p): Likewise. - * config/aarch64/constraints.md (Usr): New constraint. - * config/aarch64/aarch64.md (*mov<SHORT:mode>_aarch64): Add an RDVL - alternative. - (*movsi_aarch64, *movdi_aarch64): Likewise. - -2023-12-05 Richard Sandiford <richard.sandiford@arm.com> - - * config/aarch64/aarch64-sve-builtins.h: - (function_checker::require_immediate_lane_index): Add an argument - for the index of the indexed vector argument. - * config/aarch64/aarch64-sve-builtins.cc - (function_checker::require_immediate_lane_index): Likewise. - * config/aarch64/aarch64-sve-builtins-shapes.cc - (ternary_bfloat_lane_base::check): Update accordingly. - (ternary_qq_lane_base::check): Likewise. - (binary_lane_def::check): Likewise. - (binary_long_lane_def::check): Likewise. - (ternary_lane_def::check): Likewise. - (ternary_lane_rotate_def::check): Likewise. - (ternary_long_lane_def::check): Likewise. - (ternary_qq_lane_rotate_def::check): Likewise. - -2023-12-05 Richard Sandiford <richard.sandiford@arm.com> - - * target.def (md_asm_adjust): Add a uses parameter. - * doc/tm.texi: Regenerate. - * cfgexpand.cc (expand_asm_loc): Update call to md_asm_adjust. - Handle any USEs created by the target. - (expand_asm_stmt): Likewise. - * recog.cc (asm_noperands): Handle asms with USEs. - (decode_asm_operands): Likewise. - * config/arm/aarch-common-protos.h (arm_md_asm_adjust): Add uses - parameter. - * config/arm/aarch-common.cc (arm_md_asm_adjust): Likewise. - * config/arm/arm.cc (thumb1_md_asm_adjust): Likewise. - * config/avr/avr.cc (avr_md_asm_adjust): Likewise. - * config/cris/cris.cc (cris_md_asm_adjust): Likewise. - * config/i386/i386.cc (ix86_md_asm_adjust): Likewise. - * config/mn10300/mn10300.cc (mn10300_md_asm_adjust): Likewise. - * config/nds32/nds32.cc (nds32_md_asm_adjust): Likewise. - * config/pdp11/pdp11.cc (pdp11_md_asm_adjust): Likewise. - * config/rs6000/rs6000.cc (rs6000_md_asm_adjust): Likewise. - * config/s390/s390.cc (s390_md_asm_adjust): Likewise. - * config/vax/vax.cc (vax_md_asm_adjust): Likewise. - * config/visium/visium.cc (visium_md_asm_adjust): Likewise. - -2023-12-05 Richard Sandiford <richard.sandiford@arm.com> - - * doc/tm.texi.in: Add TARGET_START_CALL_ARGS. - * doc/tm.texi: Regenerate. - * target.def (start_call_args): New hook. - (call_args, end_call_args): Add a parameter for the cumulative - argument information. - * hooks.h (hook_void_rtx_tree): Delete. - * hooks.cc (hook_void_rtx_tree): Likewise. - * targhooks.h (hook_void_CUMULATIVE_ARGS): Declare. - (hook_void_CUMULATIVE_ARGS_rtx_tree): Likewise. - * targhooks.cc (hook_void_CUMULATIVE_ARGS): New function. - (hook_void_CUMULATIVE_ARGS_rtx_tree): Likewise. - * calls.cc (expand_call): Call start_call_args before computing - and storing stack parameters. Pass the cumulative argument - information to call_args and end_call_args. - (emit_library_call_value_1): Likewise. - * config/nvptx/nvptx.cc (nvptx_call_args): Add a cumulative - argument parameter. - (nvptx_end_call_args): Likewise. - -2023-12-05 Richard Sandiford <richard.sandiford@arm.com> - - * doc/tm.texi.in: Add TARGET_EMIT_EPILOGUE_FOR_SIBCALL. - * doc/tm.texi: Regenerate. - * target.def (emit_epilogue_for_sibcall): New hook. - * calls.cc (can_implement_as_sibling_call_p): Use it. - * function.cc (thread_prologue_and_epilogue_insns): Likewise. - (reposition_prologue_and_epilogue_notes): Likewise. - * config/aarch64/aarch64-protos.h (aarch64_expand_epilogue): Take - an rtx_call_insn * rather than a bool. - * config/aarch64/aarch64.cc (aarch64_expand_epilogue): Likewise. - (TARGET_EMIT_EPILOGUE_FOR_SIBCALL): Define. - * config/aarch64/aarch64.md (epilogue): Update call. - (sibcall_epilogue): Delete. - -2023-12-05 Richard Sandiford <richard.sandiford@arm.com> - - * target.def (use_late_prologue_epilogue): New hook. - * doc/tm.texi.in: Add TARGET_USE_LATE_PROLOGUE_EPILOGUE. - * doc/tm.texi: Regenerate. - * passes.def (pass_late_thread_prologue_and_epilogue): New pass. - * tree-pass.h (make_pass_late_thread_prologue_and_epilogue): Declare. - * function.cc (pass_thread_prologue_and_epilogue::gate): New function. - (pass_data_late_thread_prologue_and_epilogue): New pass variable. - (pass_late_thread_prologue_and_epilogue): New pass class. - (make_pass_late_thread_prologue_and_epilogue): New function. - -2023-12-05 Kito Cheng <kito.cheng@sifive.com> - - * common/config/riscv/riscv-common.cc - (riscv_subset_list::check_conflict_ext): Check zcd conflicts - with zcmt and zcmp. - -2023-12-05 Richard Sandiford <richard.sandiford@arm.com> - - PR rtl-optimization/112278 - * lra-int.h (lra_update_biggest_mode): New function. - * lra-coalesce.cc (merge_pseudos): Use it. - * lra-lives.cc (process_bb_lives): Likewise. - * lra.cc (new_insn_reg): Likewise. - -2023-12-05 Jakub Jelinek <jakub@redhat.com> - - PR tree-optimization/112843 - * gimple-lower-bitint.cc (gimple_lower_bitint): Change lhs of stmt - to lhs2 before building and inserting lhs = (cast) lhs2; assignment. - Adjust stmt operands before adjusting lhs. - -2023-12-05 xuli <xuli1@eswincomputing.com> - - * config/riscv/riscv-v.cc (sew64_scalar_helper): Bugfix. - -2023-12-05 Jakub Jelinek <jakub@redhat.com> - - PR target/112816 - * config/i386/sse.md ((eq (eq (lshiftrt x elt_bits-1) 0) 0)): New - splitter to turn psrld $31; pcmpeq; pcmpeq into psrad $31. - -2023-12-05 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/autovec.md: Add blocker. - * config/riscv/riscv-protos.h (gather_scatter_valid_offset_p): New function. - * config/riscv/riscv-v.cc (gather_scatter_valid_offset_p): Ditto. - -2023-12-05 Richard Biener <rguenther@suse.de> - - PR tree-optimization/112827 - PR tree-optimization/112848 - * tree-scalar-evolution.cc (final_value_replacement_loop): - Compute the insert location for each insert. - -2023-12-05 liuhongt <hongtao.liu@intel.com> - - * config/i386/i386.cc (ix86_vector_costs::add_stmt_cost): - Count sse_reg/gpr_regs for components not loaded from memory. - (ix86_vector_costs:ix86_vector_costs): New constructor. - (ix86_vector_costs::m_num_gpr_needed[3]): New private memeber. - (ix86_vector_costs::m_num_sse_needed[3]): Ditto. - (ix86_vector_costs::finish_cost): Estimate overall register - pressure cost. - (ix86_vector_costs::ix86_vect_estimate_reg_pressure): New - function. - -2023-12-05 liuhongt <hongtao.liu@intel.com> - - * config/i386/sse.md (udot_prodv64qi): New expander. - (udot_prod<mode>): Emulates with VEC_UNPACKU_EXPR + - DOT_PROD (short, int). - -2023-12-05 Marek Polacek <polacek@redhat.com> - - PR c++/107687 - PR c++/110997 - * doc/invoke.texi: Document -fno-immediate-escalation. - -2023-12-04 Andrew Pinski <quic_apinski@quicinc.com> - - * match.pd (zero_one_valued_p): For convert - make sure type is not a signed 1-bit integer. - -2023-12-04 Jeff Law <jlaw@ventanamicro.com> - - * config/microblaze/microblaze.md (movhi): Use %i for half-word - loads to properly select between lhu/lhui. - -2023-12-04 Robin Dapp <rdapp@ventanamicro.com> - - * config/riscv/riscv-string.cc (expand_rawmemchr): Increment - source address by vl * element_size. - -2023-12-04 Robin Dapp <rdapp@ventanamicro.com> - - * config/riscv/riscv-opts.h (enum riscv_stringop_strategy_enum): - Rename... - (enum stringop_strategy_enum): ... to this. - * config/riscv/riscv-string.cc (riscv_expand_block_move): New - wrapper expander handling the strategies and delegation. - (riscv_expand_block_move_scalar): Rename function and make - static. - (expand_block_move): Remove strategy handling. - * config/riscv/riscv.md: Call expander wrapper. - * config/riscv/riscv.opt: Rename. - -2023-12-04 Richard Biener <rguenther@suse.de> - - PR middle-end/112785 - * function.h (get_new_clique): New inline function handling - last_clique overflow. - * cfgrtl.cc (duplicate_insn_chain): Use it. - * tree-cfg.cc (gimple_duplicate_bb): Likewise. - * tree-inline.cc (remap_dependence_clique): Likewise. - -2023-12-04 Christoph Müllner <christoph.muellner@vrull.eu> - - PR target/112650 - * doc/invoke.texi: Document riscv-strcmp-inline-limit. - -2023-12-04 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - PR target/112431 - * config/riscv/vector.md: Fix incorrect overlap in v0. - -2023-12-04 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - PR target/112431 - * config/riscv/vector.md: Add highest-number overlap support. - -2023-12-04 Richard Biener <rguenther@suse.de> - - PR tree-optimization/112818 - * tree-vect-stmts.cc (vectorizable_bswap): Check input and - output vector types have the same size. - -2023-12-04 Richard Biener <rguenther@suse.de> - - PR tree-optimization/112827 - * tree-scalar-evolution.cc (final_value_replacement_loop): - Do not release SSA name but keep a dead initialization around. - -2023-12-04 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - PR target/112431 - * config/riscv/vector.md: Remove earlyclobber from widen reduction. - -2023-12-04 Indu Bhagat <indu.bhagat@oracle.com> - - PR debug/112656 - * btfout.cc (btf_asm_type): Fixup ctti_name for all - BTF types of kind BTF_KIND_FUNC_PROTO. - -2023-12-04 Indu Bhagat <indu.bhagat@oracle.com> - - PR debug/112768 - * btfout.cc (get_btf_type_name): New definition. - (btf_collect_datasec): Update dtd_name to the original type name - string. - (btf_asm_type_ref): Use the new get_btf_type_name function - instead. - (btf_asm_type): Likewise. - (btf_asm_func_type): Likewise. - -2023-12-04 Jakub Jelinek <jakub@redhat.com> - - PR target/112837 - * config/i386/i386.cc (ix86_elim_entry_set_got): Before checking - for UNSPEC_SET_GOT check that SET_SRC is UNSPEC. Use SET_SRC and - SET_DEST macros instead of XEXP, rename vec variable to set. - -2023-12-04 Jakub Jelinek <jakub@redhat.com> - - PR target/112816 - * config/i386/sse.md (signbit<mode>2): Force operands[1] into a REG. - -2023-12-04 Feng Wang <wangfeng@eswincomputing.com> - - * common/config/riscv/riscv-common.cc: Add zvkb ISA info. - * config/riscv/riscv.opt: Add Mask(ZVKB) - -2023-12-04 Fei Gao <gaofei@eswincomputing.com> - Xiao Zeng <zengxiao@eswincomputing.com> - - * config/riscv/riscv.md (*mov<GPR:mode><X:mode>cc):move to sfb.md - * config/riscv/sfb.md: New file. - -2023-12-04 Kito Cheng <kito.cheng@sifive.com> - - * config/riscv/riscv-cores.def: Add sifive-x280. - * doc/invoke.texi (RISC-V Options): Add sifive-x280 - -2023-12-04 Kito Cheng <kito.cheng@sifive.com> - - * common/config/riscv/riscv-common.cc (riscv_implied_predicator_t): New. - (riscv_implied_info_t::riscv_implied_info_t): New. - (riscv_implied_info_t::match): New. - (riscv_implied_info): New entry for zcf. - (riscv_subset_list::handle_implied_ext): Use - riscv_implied_info_t::match. - (riscv_subset_list::check_implied_ext): Ditto. - (riscv_subset_list::handle_combine_ext): Ditto. - (riscv_subset_list::parse): Move zcf implication handling to - riscv_implied_infos. - -2023-12-04 Kito Cheng <kito.cheng@sifive.com> - - * common/config/riscv/riscv-common.cc - (riscv_subset_list::check_conflict_ext): New. - (riscv_subset_list::parse): Move checking conflict ext. to - check_conflict_ext. - * config/riscv/riscv-subset.h: - Add riscv_subset_list::check_conflict_ext. - -2023-12-04 Hu, Lin1 <lin1.hu@intel.com> - - * common/config/i386/cpuinfo.h (get_available_features): Move USER_MSR - to the correct location. - -2023-12-04 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv.md: Rostify the constraints. - -2023-12-04 chenxiaolong <chenxiaolong@loongson.cn> - - * doc/extend.texi: Add information about the intrinsic function of the vector - instruction. - -2023-12-03 Jakub Jelinek <jakub@redhat.com> - - PR middle-end/112807 - * gimple-lower-bitint.cc (bitint_large_huge::lower_addsub_overflow): - When choosing type0 and type1 types, if prec3 has small/middle bitint - kind, use maximum of type0 and type1's precision instead of prec3. - -2023-12-03 Jeff Law <jlaw@ventanamicro.com> - - * config/frv/frv.h (TRANSFER_FROM_TRAMPOLINE): Add prototype for exit. - -2023-12-02 Richard Sandiford <richard.sandiford@arm.com> - - * attribs.cc (comp_type_attributes): Pass the full TREE_PURPOSE - to lookup_attribute_spec, rather than just the name. - (remove_attributes_matching): Likewise. - -2023-12-02 Richard Sandiford <richard.sandiford@arm.com> - - * attribs.cc (find_same_attribute): New function. - (decl_attributes, comp_type_attributes): Use it when looking - up one list's attributes in another list. - -2023-12-02 Richard Sandiford <richard.sandiford@arm.com> - - * Makefile.in (GTFILES): Add attribs.cc. - * attribs.cc (gnu_namespace_cache): New variable. - (get_gnu_namespace): New function. - (lookup_attribute_spec): Use it instead of get_identifier ("gnu"). - (get_attribute_namespace, attribs_cc_tests): Likewise. - -2023-12-02 Richard Sandiford <richard.sandiford@arm.com> - - * attribs.h (scoped_attribute_specs): New structure. - (register_scoped_attributes): Take a reference to a - scoped_attribute_specs instead of separate namespace and array - parameters. - * plugin.h (register_scoped_attributes): Likewise. - * attribs.cc (register_scoped_attributes): Likewise. - (attribute_tables): Change into an array of scoped_attribute_specs - pointers. Reduce to 1 element for frontends and 1 element for targets. - (empty_attribute_table): Delete. - (check_attribute_tables): Update for changes to attribute_tables. - Use a hash_set to identify duplicates. - (handle_ignored_attributes_option): Update for above changes. - (init_attributes): Likewise. - (excl_pair): Delete. - (test_attribute_exclusions): Update for above changes. Don't - enforce symmetry for standard attributes in the top-level namespace. - * langhooks-def.h (LANG_HOOKS_COMMON_ATTRIBUTE_TABLE): Delete. - (LANG_HOOKS_FORMAT_ATTRIBUTE_TABLE): Likewise. - (LANG_HOOKS_INITIALIZER): Update accordingly. - (LANG_HOOKS_ATTRIBUTE_TABLE): Define to an empty constructor. - * langhooks.h (lang_hooks::common_attribute_table): Delete. - (lang_hooks::format_attribute_table): Likewise. - (lang_hooks::attribute_table): Redefine to an array of - scoped_attribute_specs pointers. - * target-def.h (TARGET_GNU_ATTRIBUTES): New macro. - * target.def (attribute_spec): Redefine to return an array of - scoped_attribute_specs pointers. - * tree-inline.cc (function_attribute_inlinable_p): Update accordingly. - * doc/tm.texi: Regenerate. - * config/aarch64/aarch64.cc (aarch64_attribute_table): Define using - TARGET_GNU_ATTRIBUTES. - * config/alpha/alpha.cc (vms_attribute_table): Likewise. - * config/avr/avr.cc (avr_attribute_table): Likewise. - * config/bfin/bfin.cc (bfin_attribute_table): Likewise. - * config/bpf/bpf.cc (bpf_attribute_table): Likewise. - * config/csky/csky.cc (csky_attribute_table): Likewise. - * config/epiphany/epiphany.cc (epiphany_attribute_table): Likewise. - * config/gcn/gcn.cc (gcn_attribute_table): Likewise. - * config/h8300/h8300.cc (h8300_attribute_table): Likewise. - * config/loongarch/loongarch.cc (loongarch_attribute_table): Likewise. - * config/m32c/m32c.cc (m32c_attribute_table): Likewise. - * config/m32r/m32r.cc (m32r_attribute_table): Likewise. - * config/m68k/m68k.cc (m68k_attribute_table): Likewise. - * config/mcore/mcore.cc (mcore_attribute_table): Likewise. - * config/microblaze/microblaze.cc (microblaze_attribute_table): - Likewise. - * config/mips/mips.cc (mips_attribute_table): Likewise. - * config/msp430/msp430.cc (msp430_attribute_table): Likewise. - * config/nds32/nds32.cc (nds32_attribute_table): Likewise. - * config/nvptx/nvptx.cc (nvptx_attribute_table): Likewise. - * config/riscv/riscv.cc (riscv_attribute_table): Likewise. - * config/rl78/rl78.cc (rl78_attribute_table): Likewise. - * config/rx/rx.cc (rx_attribute_table): Likewise. - * config/s390/s390.cc (s390_attribute_table): Likewise. - * config/sh/sh.cc (sh_attribute_table): Likewise. - * config/sparc/sparc.cc (sparc_attribute_table): Likewise. - * config/stormy16/stormy16.cc (xstormy16_attribute_table): Likewise. - * config/v850/v850.cc (v850_attribute_table): Likewise. - * config/visium/visium.cc (visium_attribute_table): Likewise. - * config/arc/arc.cc (arc_attribute_table): Likewise. Move further - down file. - * config/arm/arm.cc (arm_attribute_table): Update for above changes, - using... - (arm_gnu_attributes, arm_gnu_attribute_table): ...these new globals. - * config/i386/i386-options.h (ix86_attribute_table): Delete. - (ix86_gnu_attribute_table): Declare. - * config/i386/i386-options.cc (ix86_attribute_table): Replace with... - (ix86_gnu_attributes, ix86_gnu_attribute_table): ...these two globals. - * config/i386/i386.cc (ix86_attribute_table): Define as an array of - scoped_attribute_specs pointers. - * config/ia64/ia64.cc (ia64_attribute_table): Update for above changes, - using... - (ia64_gnu_attributes, ia64_gnu_attribute_table): ...these new globals. - * config/rs6000/rs6000.cc (rs6000_attribute_table): Update for above - changes, using... - (rs6000_gnu_attributes, rs6000_gnu_attribute_table): ...these new - globals. - -2023-12-02 Roger Sayle <roger@nextmovesoftware.com> - - * config/riscv/riscv-vsetvl.cc (csetvl_info::parse_insn): Rename - local variable from demand_flags to dflags, to avoid conflicting - with (enumeration) type of the same name. - -2023-12-02 Li Wei <liwei@loongson.cn> - - * config/loongarch/loongarch.cc (loongarch_is_odd_extraction): - Supplementary function prototype. - (loongarch_is_even_extraction): Adjust. - (loongarch_try_expand_lsx_vshuf_const): Adjust. - (loongarch_is_extraction_permutation): Adjust. - (loongarch_expand_vec_perm_const_2): Adjust. - -2023-12-02 Li Wei <liwei@loongson.cn> - - * config/loongarch/loongarch.md (v2di): Used to simplify the - following templates. - (popcount<mode>2): New. - -2023-12-02 Li Wei <liwei@loongson.cn> - - * config/loongarch/loongarch.h (CTZ_DEFINED_VALUE_AT_ZERO): Add - description. - (CLZ_DEFINED_VALUE_AT_ZERO): Remove duplicate definition. - -2023-12-02 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - PR target/112801 - * config/riscv/vector.md: Add !TARGET_64BIT. - -2023-12-02 Pan Li <pan2.li@intel.com> - - PR target/112743 - * config/riscv/riscv.cc (riscv_legitimize_move): Take the - exist (U *mode) and handle DFmode like DImode when EEW is - 32bits for ZVE32F. - -2023-12-01 Andrew MacLeod <amacleod@redhat.com> - - * gimple-range-fold.h (range_compatible_p): Relocate. - * value-range.h (range_compatible_p): Here. - * range-op-mixed.h (operand_equal::operand_check_p): Call - range_compatible_p rather than comparing precision. - (operand_not_equal::operand_check_p): Ditto. - (operand_not_lt::operand_check_p): Ditto. - (operand_not_le::operand_check_p): Ditto. - (operand_not_gt::operand_check_p): Ditto. - (operand_not_ge::operand_check_p): Ditto. - (operand_plus::operand_check_p): Ditto. - (operand_abs::operand_check_p): Ditto. - (operand_minus::operand_check_p): Ditto. - (operand_negate::operand_check_p): Ditto. - (operand_mult::operand_check_p): Ditto. - (operand_bitwise_not::operand_check_p): Ditto. - (operand_bitwise_xor::operand_check_p): Ditto. - (operand_bitwise_and::operand_check_p): Ditto. - (operand_bitwise_or::operand_check_p): Ditto. - (operand_min::operand_check_p): Ditto. - (operand_max::operand_check_p): Ditto. - * range-op.cc (operand_lshift::operand_check_p): Ditto. - (operand_rshift::operand_check_p): Ditto. - (operand_logical_and::operand_check_p): Ditto. - (operand_logical_or::operand_check_p): Ditto. - (operand_logical_not::operand_check_p): Ditto. - -2023-12-01 Vladimir N. Makarov <vmakarov@redhat.com> - - PR target/112445 - * lra.h (lra): Add one more arg. - * lra-int.h (lra_verbose, lra_dump_insns): New externals. - (lra_dump_insns_if_possible): Ditto. - * lra.cc (lra_dump_insns): Dump all insns. - (lra_dump_insns_if_possible): Dump all insns for lra_verbose >= 7. - (lra_verbose): New global. - (lra): Add new arg. Setup lra_verbose from its value. - * lra-assigns.cc (lra_split_hard_reg_for): Dump insns if rtl - was changed. - * lra-remat.cc (lra_remat): Dump insns if rtl was changed. - * lra-constraints.cc (lra_inheritance): Dump insns. - (lra_constraints, lra_undo_inheritance): Dump insns if rtl - was changed. - (remove_inheritance_pseudos): Use restore reg if it is set up. - * ira.cc: (lra): Pass internal_flag_ira_verbose. - -2023-12-01 Jakub Jelinek <jakub@redhat.com> - - * doc/extend.texi (__builtin_addc, __builtin_addcl, __builtin_addcll, - __builtin_subc, __builtin_subcl, __builtin_subcll, - __builtin_stdc_bit_width, __builtin_stdc_count_ones, - __builtin_stdc_count_zeros, __builtin_stdc_first_leading_one, - __builtin_stdc_first_leading_zero, __builtin_stdc_first_trailing_one, - __builtin_stdc_first_trailing_zero, __builtin_stdc_has_single_bit, - __builtin_stdc_leading_ones, __builtin_stdc_leading_zeros, - __builtin_stdc_trailing_ones, __builtin_stdc_trailing_zeros, - __builtin_nvptx_brev, __builtin_nvptx_brevll, __builtin_darn, - __builtin_darn_raw, __builtin_ia32_vec_ext_v2di, - __builtin_ia32_crc32qi, __builtin_ia32_crc32hi, - __builtin_ia32_crc32si, __builtin_ia32_crc32di): Put {}s around - return type with spaces in it. - (__builtin_rx_mvfachi, __builtin_rx_mvfacmi): Remove superfluous - whitespace. - -2023-12-01 David Malcolm <dmalcolm@redhat.com> - - * diagnostic-core.h (emit_diagnostic_valist): New overload decl. - * diagnostic-format-sarif.cc (sarif_builder::make_result_object): - When we have metadata, call its maybe_add_sarif_properties vfunc. - * diagnostic-metadata.h (class sarif_object): Forward decl. - (diagnostic_metadata::~diagnostic_metadata): New. - (diagnostic_metadata::maybe_add_sarif_properties): New vfunc. - * diagnostic.cc (emit_diagnostic_valist): New overload. - -2023-12-01 David Malcolm <dmalcolm@redhat.com> - - PR analyzer/103533 - * doc/extend.texi: Remove stray reference to - -fanalyzer-checker=taint. - -2023-12-01 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - PR target/112431 - * config/riscv/vector.md: Support highpart overlap for vx/vf. - -2023-12-01 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - PR target/112431 - * config/riscv/vector.md: Support highpart overlap for indexed load. - -2023-12-01 Richard Biener <rguenther@suse.de> - - * tree-vectorizer.h (vect_get_vec_defs): Re-order arguments. - * tree-vect-stmts.cc (vect_get_vec_defs): Likewise. - (vectorizable_condition): Update caller. - (vectorizable_comparison_1): Likewise. - (vectorizable_conversion): Specify the vector type to be - used for invariant/external defs. - * tree-vect-loop.cc (vect_transform_reduction): Update caller. - -2023-12-01 Jakub Jelinek <jakub@redhat.com> - - PR middle-end/112770 - * gimple-lower-bitint.cc (gimple_lower_bitint): When adjusting - lhs of middle _BitInt setter which ends bb, insert cast on - the fallthru edge rather than after stmt. - -2023-12-01 Jakub Jelinek <jakub@redhat.com> - - PR middle-end/112771 - * gimple-lower-bitint.cc (bitint_large_huge::handle_operand_addr): - Use mp = 1 if it is zero. - -2023-12-01 Jose E. Marchesi <jose.marchesi@oracle.com> - - * config/bpf/bpf.cc (bpf_asm_named_section): New function. - (TARGET_ASM_NAMED_SECTION): Set to bpf_asm_named_section. - -2023-12-01 Di Zhao <dizhao@os.amperecomputing.com> - - * config/aarch64/aarch64-tuning-flags.def - (AARCH64_EXTRA_TUNING_OPTION): New tuning option to avoid - cross-loop FMA. - * config/aarch64/aarch64.cc - (aarch64_override_options_internal): Set - param_avoid_fma_max_bits according to tuning option. - * config/aarch64/tuning_models/ampere1.h (ampere1_tunings): - Modify tunings related with FMA. - * config/aarch64/tuning_models/ampere1a.h (ampere1a_tunings): - Likewise. - * config/aarch64/tuning_models/ampere1b.h (ampere1b_tunings): - Likewise. - -2023-12-01 Richard Sandiford <richard.sandiford@arm.com> - - * config/aarch64/aarch64-sve-builtins.h - (function_expander::result_mode): New member function. - * config/aarch64/aarch64-sve-builtins-base.cc - (svld234_impl::expand): Use it. - * config/aarch64/aarch64-sve-builtins.cc - (function_expander::get_reg_target): Likewise. - -2023-12-01 Jakub Jelinek <jakub@redhat.com> - - * gimple-lower-bitint.cc (range_to_prec): Don't return -1 for - signed types. - (bitint_large_huge::lower_addsub_overflow): Fix up computation of - prec2. - (bitint_large_huge::lower_mul_overflow): Likewise. - -2023-12-01 Jakub Jelinek <jakub@redhat.com> - - * gimple-lower-bitint.cc (bitint_large_huge::finish_arith_overflow): - When replacing use_stmt which is gsi_stmt (m_gsi), update m_gsi to - the new statement. - -2023-12-01 Jakub Jelinek <jakub@redhat.com> - - PR middle-end/112750 - * gimple-lower-bitint.cc (bitint_large_huge::lower_addsub_overflow): - Use NE_EXPR rather than EQ_EXPR for g2 if !single_comparison and - adjust probabilities. - -2023-12-01 Xi Ruoyao <xry111@xry111.site> - - * doc/install.texi: Deem srcdir == objdir broken, but objdir - as a subdirectory of srcdir fine. - -2023-12-01 Juergen Christ <jchrist@linux.ibm.com> - - PR target/112753 - * config/s390/s390.cc (s390_md_asm_adjust): Return after dealing - with the outputs, if no further processing of long doubles is - required. - -2023-12-01 Jakub Jelinek <jakub@redhat.com> - - PR target/112725 - * config/s390/s390.cc (s390_invalid_arg_for_unprototyped_fn): Return - NULL for __builtin_classify_type calls with vector arguments. - -2023-12-01 Florian Weimer <fweimer@redhat.com> - - * doc/invoke.texi (Warning Options): Document - -Wdeclaration-missing-parameter-type. - -2023-12-01 Florian Weimer <fweimer@redhat.com> - - * doc/invoke.texi (Warning Options): Document changes. - -2023-12-01 Florian Weimer <fweimer@redhat.com> - - * doc/invoke.texi (Warning Options): Document that - -Wreturn-mismatch is a permerror in C99 and later. - -2023-12-01 Florian Weimer <fweimer@redhat.com> - - PR c/91093 - PR c/96284 - * doc/invoke.texi (Warning Options): Document changes. - -2023-12-01 Florian Weimer <fweimer@redhat.com> - - * doc/invoke.texi (Warning Options): Document changes. - -2023-12-01 Florian Weimer <fweimer@redhat.com> - - * doc/invoke.texi (Warning Options): Document changes. - -2023-12-01 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - PR target/112776 - * config/riscv/riscv-vsetvl.cc (pre_vsetvl::pre_global_vsetvl_info): Fix ratio. - -2023-11-30 Wilco Dijkstra <wilco.dijkstra@arm.com> - - PR target/111404 - * config/aarch64/aarch64.cc (aarch64_split_compare_and_swap): - For 128-bit store the loaded value and loop if needed. - -2023-11-30 Wilco Dijkstra <wilco.dijkstra@arm.com> - - PR target/103100 - * config/aarch64/aarch64.md (cpymemdi): Remove pattern condition. - (setmemdi): Likewise. - * config/aarch64/aarch64.cc (aarch64_expand_cpymem): Support - strict-align. Cleanup condition for using MOPS. - (aarch64_expand_setmem): Likewise. - -2023-11-30 Richard Biener <rguenther@suse.de> - - PR tree-optimization/112767 - * tree-scalar-evolution.cc (final_value_replacement_loop): - Propagate constants to immediate uses immediately. - -2023-11-30 Richard Biener <rguenther@suse.de> - - PR tree-optimization/112766 - * gimple-predicate-analysis.cc (find_var_cmp_const): - Support continuing the iteration and report every candidate. - (uninit_analysis::overlap): Iterate over all flag var - candidates. - -2023-11-30 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - PR target/112431 - * config/riscv/vector.md: Add widening overlap of vf2/vf4. - -2023-11-30 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - PR target/112431 - * config/riscv/vector.md: Remove earlyclobber for wx/wf instructions. - -2023-11-30 Jakub Jelinek <jakub@redhat.com> - - PR middle-end/112733 - * wide-int.cc (wi::mul_internal): Don't allocate twice as much - space for u, v and r as needed. - (divmod_internal_2): Change return type from void to int, for n == 1 - return 1, otherwise before writing b_dividend into b_remainder set - n to MIN (n, m) and at the end return it. - (wi::divmod_internal): Don't allocate 4 times as much space for - b_quotient, b_remainder, b_dividend and b_divisor. Set n to - result of divmod_internal_2. - (wide_int_cc_tests): Add test for unsigned widest_int - wi::multiple_of_p of 1 and -128. - -2023-11-30 liuhongt <hongtao.liu@intel.com> - - * config/i386/sse.md (sdot_prodv64qi): New expander. - (sseunpackmodelower): New mode attr. - (sdot_prod<mode>): Emulate sdot_prodv*qi with sodt_prov*hi - when TARGET_VNNIINT8 is not available. - -2023-11-30 liuhongt <hongtao.liu@intel.com> - - * config/i386/sse.md: (reduc_plus_scal_<mode>): Use - vec_extract_lo instead of subreg. - (reduc_<code>_scal_<mode>): Ditto. - (reduc_<code>_scal_<mode>): Ditto. - (reduc_<code>_scal_<mode>): Ditto. - (reduc_<code>_scal_<mode>): Ditto. - -2023-11-30 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - PR target/112431 - * config/riscv/vector.md: Add widenning overlap. - -2023-11-30 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/constraints.md (TARGET_VECTOR ? V_REGS : NO_REGS): Fix constraint. - * config/riscv/riscv.md (no,W21,W42,W84,W41,W81,W82): Rename vconstraint into group_overlap. - (no,yes): Ditto. - (none,W21,W42,W84,W43,W86,W87): Ditto. - * config/riscv/vector.md: Ditto. - -2023-11-30 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/vector.md: Support highpart overlap for vext.vf2 - -2023-11-29 Philipp Tomsich <philipp.tomsich@vrull.eu> - - * config/aarch64/aarch64-cores.def (AARCH64_CORE): Add ampere-1b - * config/aarch64/aarch64-cost-tables.h: Add ampere1b_extra_costs - * config/aarch64/aarch64-tune.md: Regenerate - * config/aarch64/aarch64.cc: Include ampere1b tuning model - * doc/invoke.texi: Document -mcpu=ampere1b - * config/aarch64/tuning_models/ampere1b.h: New file. - -2023-11-29 David Faust <david.faust@oracle.com> - - * config/bpf/bpf.h (ASM_COMMENT_START): Change from ';' to '#'. - -2023-11-29 Jakub Jelinek <jakub@redhat.com> - - PR target/112725 - * config/rs6000/rs6000.cc (invalid_arg_for_unprototyped_fn): Return - NULL for __builtin_classify_type calls with vector arguments. - -2023-11-29 Andrew MacLeod <amacleod@redhat.com> - - PR tree-optimization/111922 - * ipa-cp.cc (ipa_vr_operation_and_type_effects): Check the - operands are valid before calling fold_range. - -2023-11-29 Andrew MacLeod <amacleod@redhat.com> - - * range-op-mixed.h (operator_equal::operand_check_p): New. - (operator_not_equal::operand_check_p): New. - (operator_lt::operand_check_p): New. - (operator_le::operand_check_p): New. - (operator_gt::operand_check_p): New. - (operator_ge::operand_check_p): New. - (operator_plus::operand_check_p): New. - (operator_abs::operand_check_p): New. - (operator_minus::operand_check_p): New. - (operator_negate::operand_check_p): New. - (operator_mult::operand_check_p): New. - (operator_bitwise_not::operand_check_p): New. - (operator_bitwise_xor::operand_check_p): New. - (operator_bitwise_and::operand_check_p): New. - (operator_bitwise_or::operand_check_p): New. - (operator_min::operand_check_p): New. - (operator_max::operand_check_p): New. - * range-op.cc (range_op_handler::fold_range): Check operand - parameter types. - (range_op_handler::op1_range): Ditto. - (range_op_handler::op2_range): Ditto. - (range_op_handler::operand_check_p): New. - (range_operator::operand_check_p): New. - (operator_lshift::operand_check_p): New. - (operator_rshift::operand_check_p): New. - (operator_logical_and::operand_check_p): New. - (operator_logical_or::operand_check_p): New. - (operator_logical_not::operand_check_p): New. - * range-op.h (range_operator::operand_check_p): New. - (range_op_handler::operand_check_p): New. - -2023-11-29 Martin Jambor <mjambor@suse.cz> - - PR tree-optimization/112711 - PR tree-optimization/112721 - * tree-sra.cc (build_access_from_call_arg): New parameter - CAN_BE_RETURNED, disqualify any candidate passed by reference if it is - true. Adjust leading comment. - (scan_function): Pass appropriate value to CAN_BE_RETURNED of - build_access_from_call_arg. - -2023-11-29 Thomas Schwinge <thomas@codesourcery.com> - - * doc/sourcebuild.texi (Final Actions): Document - 'only_for_offload_target' wrapper. - -2023-11-29 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> - - PR testsuite/112729 - * doc/sourcebuild.texi (Effective-Target Keywords, Environment - attributes): Document cfi. - -2023-11-29 Richard Biener <rguenther@suse.de> - - PR middle-end/110237 - * internal-fn.cc (expand_partial_load_optab_fn): Clear - MEM_EXPR and MEM_OFFSET. - (expand_partial_store_optab_fn): Likewise. - -2023-11-29 Jakub Jelinek <jakub@redhat.com> - - PR middle-end/112733 - * fold-const.cc (multiple_of_p): Pass SIGNED rather than - UNSIGNED for wi::multiple_of_p on widest_int arguments. - -2023-11-29 Juzhe-Zhong <juzhe.zhong@rivai.ai> - kito-cheng <kito.cheng@sifive.com> - kito-cheng <kito.cheng@gmail.com> - - PR target/112431 - * config/riscv/constraints.md (TARGET_VECTOR ? V_REGS : NO_REGS): New register filters. - * config/riscv/riscv.md (no,W21,W42,W84,W41,W81,W82): Ditto. - (no,yes): Ditto. - * config/riscv/vector.md: Support highpart register overlap for vwcvt. - -2023-11-29 xuli <xuli1@eswincomputing.com> - - * config/riscv/riscv.cc (riscv_option_override): Eliminate warning. - -2023-11-29 Jakub Jelinek <jakub@redhat.com> - - PR bootstrap/111601 - * fold-mem-offsets.cc (get_uses): Ignore DEBUG_INSN uses. Otherwise, - punt if use is in a different basic block from INSN or appears before - INSN in the same basic block. Formatting fixes. - (get_single_def_in_bb): Formatting fixes. - (fold_offsets_1, pass_fold_mem_offsets::execute): Comment formatting - fixes. - -2023-11-29 Xi Ruoyao <xry111@xry111.site> - - * config/loongarch/simd.md (LSX_SCALAR_FRINT): New int iterator. - (VLSX_FOR_FMODE): New mode attribute. - (<simd_for_scalar_frint_pattern><mode>2): New expander, - expanding to vreplvei.{w/d} + frint{rp/rz/rm/rne}.{s.d}. - -2023-11-29 Xi Ruoyao <xry111@xry111.site> - - * config/loongarch/loongarch.md (lrint_allow_inexact): Remove. - (<lrint_pattern><ANYF:mode><ANYFI:mode>2): Check if <LRINT> - == UNSPEC_FTINT instead of <lrint_allow_inexact>. - -2023-11-29 Xi Ruoyao <xry111@xry111.site> - - * config/loongarch/lsx.md (bitimm): Move to ... - (UNSPEC_LSX_VROTR): Remove. - (lsx_vrotr_<lsxfmt>): Remove. - (lsx_vrotri_<lsxfmt>): Remove. - * config/loongarch/lasx.md (UNSPEC_LASX_XVROTR): Remove. - (lsx_vrotr_<lsxfmt>): Remove. - (lsx_vrotri_<lsxfmt>): Remove. - * config/loongarch/simd.md (bitimm): ... here. Expand it to - cover LASX modes. - (vrotr<mode>3): New define_insn. - (vrotri<mode>3): New define_insn. - * config/loongarch/loongarch-builtins.cc: - (CODE_FOR_lsx_vrotr_b): Use standard pattern name. - (CODE_FOR_lsx_vrotr_h): Likewise. - (CODE_FOR_lsx_vrotr_w): Likewise. - (CODE_FOR_lsx_vrotr_d): Likewise. - (CODE_FOR_lasx_xvrotr_b): Likewise. - (CODE_FOR_lasx_xvrotr_h): Likewise. - (CODE_FOR_lasx_xvrotr_w): Likewise. - (CODE_FOR_lasx_xvrotr_d): Likewise. - (CODE_FOR_lsx_vrotri_b): Define to standard pattern name. - (CODE_FOR_lsx_vrotri_h): Likewise. - (CODE_FOR_lsx_vrotri_w): Likewise. - (CODE_FOR_lsx_vrotri_d): Likewise. - (CODE_FOR_lasx_xvrotri_b): Likewise. - (CODE_FOR_lasx_xvrotri_h): Likewise. - (CODE_FOR_lasx_xvrotri_w): Likewise. - (CODE_FOR_lasx_xvrotri_d): Likewise. - -2023-11-29 Xi Ruoyao <xry111@xry111.site> - - * config/loongarch/simd.md (muh): New code attribute mapping - any_extend to smul_highpart or umul_highpart. - (<su>mul<mode>3_highpart): New define_insn. - * config/loongarch/lsx.md (UNSPEC_LSX_VMUH_S): Remove. - (UNSPEC_LSX_VMUH_U): Remove. - (lsx_vmuh_s_<lsxfmt>): Remove. - (lsx_vmuh_u_<lsxfmt>): Remove. - * config/loongarch/lasx.md (UNSPEC_LASX_XVMUH_S): Remove. - (UNSPEC_LASX_XVMUH_U): Remove. - (lasx_xvmuh_s_<lasxfmt>): Remove. - (lasx_xvmuh_u_<lasxfmt>): Remove. - * config/loongarch/loongarch-builtins.cc (CODE_FOR_lsx_vmuh_b): - Redefine to standard pattern name. - (CODE_FOR_lsx_vmuh_h): Likewise. - (CODE_FOR_lsx_vmuh_w): Likewise. - (CODE_FOR_lsx_vmuh_d): Likewise. - (CODE_FOR_lsx_vmuh_bu): Likewise. - (CODE_FOR_lsx_vmuh_hu): Likewise. - (CODE_FOR_lsx_vmuh_wu): Likewise. - (CODE_FOR_lsx_vmuh_du): Likewise. - (CODE_FOR_lasx_xvmuh_b): Likewise. - (CODE_FOR_lasx_xvmuh_h): Likewise. - (CODE_FOR_lasx_xvmuh_w): Likewise. - (CODE_FOR_lasx_xvmuh_d): Likewise. - (CODE_FOR_lasx_xvmuh_bu): Likewise. - (CODE_FOR_lasx_xvmuh_hu): Likewise. - (CODE_FOR_lasx_xvmuh_wu): Likewise. - (CODE_FOR_lasx_xvmuh_du): Likewise. - -2023-11-29 Xi Ruoyao <xry111@xry111.site> - - PR target/112578 - * config/loongarch/lsx.md (UNSPEC_LSX_VFTINT_S, - UNSPEC_LSX_VFTINTRNE, UNSPEC_LSX_VFTINTRP, - UNSPEC_LSX_VFTINTRM, UNSPEC_LSX_VFRINTRNE_S, - UNSPEC_LSX_VFRINTRNE_D, UNSPEC_LSX_VFRINTRZ_S, - UNSPEC_LSX_VFRINTRZ_D, UNSPEC_LSX_VFRINTRP_S, - UNSPEC_LSX_VFRINTRP_D, UNSPEC_LSX_VFRINTRM_S, - UNSPEC_LSX_VFRINTRM_D): Remove. - (ILSX, FLSX): Move into ... - (VIMODE): Move into ... - (FRINT_S, FRINT_D): Remove. - (frint_pattern_s, frint_pattern_d, frint_suffix): Remove. - (lsx_vfrint_<flsxfmt>, lsx_vftint_s_<ilsxfmt>_<flsxfmt>, - lsx_vftintrne_w_s, lsx_vftintrne_l_d, lsx_vftintrp_w_s, - lsx_vftintrp_l_d, lsx_vftintrm_w_s, lsx_vftintrm_l_d, - lsx_vfrintrne_s, lsx_vfrintrne_d, lsx_vfrintrz_s, - lsx_vfrintrz_d, lsx_vfrintrp_s, lsx_vfrintrp_d, - lsx_vfrintrm_s, lsx_vfrintrm_d, - <FRINT_S:frint_pattern_s>v4sf2, - <FRINT_D:frint_pattern_d>v2df2, round<mode>2, - fix_trunc<mode>2): Remove. - * config/loongarch/lasx.md: Likewise. - * config/loongarch/simd.md: New file. - (ILSX, ILASX, FLSX, FLASX, VIMODE): ... here. - (IVEC, FVEC): New mode iterators. - (VIMODE): ... here. Extend it to work for all LSX/LASX vector - modes. - (x, wu, simd_isa, WVEC, vimode, simdfmt, simdifmt_for_f, - elebits): New mode attributes. - (UNSPEC_SIMD_FRINTRP, UNSPEC_SIMD_FRINTRZ, UNSPEC_SIMD_FRINT, - UNSPEC_SIMD_FRINTRM, UNSPEC_SIMD_FRINTRNE): New unspecs. - (SIMD_FRINT): New int iterator. - (simd_frint_rounding, simd_frint_pattern): New int attributes. - (<simd_isa>_<x>vfrint<simd_frint_rounding>_<simdfmt>): New - define_insn template for frint instructions. - (<simd_isa>_<x>vftint<simd_frint_rounding>_<simdifmt_for_f>_<simdfmt>): - Likewise, but for ftint instructions. - (<simd_frint_pattern><mode>2): New define_expand with - flag_fp_int_builtin_inexact checked. - (l<simd_frint_pattern><mode><vimode>2): Likewise. - (ftrunc<mode>2): New define_expand. It does not require - flag_fp_int_builtin_inexact. - (fix_trunc<mode><vimode>2): New define_insn_and_split. It does - not require flag_fp_int_builtin_inexact. - (include): Add lsx.md and lasx.md. - * config/loongarch/loongarch.md (include): Include simd.md, - instead of including lsx.md and lasx.md directly. - * config/loongarch/loongarch-builtins.cc - (CODE_FOR_lsx_vftint_w_s, CODE_FOR_lsx_vftint_l_d, - CODE_FOR_lasx_xvftint_w_s, CODE_FOR_lasx_xvftint_l_d): - Remove. - -2023-11-29 Alexandre Oliva <oliva@adacore.com> - - * doc/extend.texi (hardbool): New type attribute. - * doc/invoke.texi (-ftrivial-auto-var-init): Document - representation vs values. - -2023-11-29 Alexandre Oliva <oliva@adacore.com> - - * expr.cc (emit_block_move_hints): Take ctz of len. Obey - -finline-stringops. Use oriented or sized loop. - (emit_block_move): Take ctz of len, and pass it on. - (emit_block_move_via_sized_loop): New. - (emit_block_move_via_oriented_loop): New. - (emit_block_move_via_loop): Take incr. Move an incr-sized - block per iteration. - (emit_block_cmp_via_cmpmem): Take ctz of len. Obey - -finline-stringops. - (emit_block_cmp_via_loop): New. - * expr.h (emit_block_move): Add ctz of len defaulting to zero. - (emit_block_move_hints): Likewise. - (emit_block_cmp_hints): Likewise. - * builtins.cc (expand_builtin_memory_copy_args): Pass ctz of - len to emit_block_move_hints. - (try_store_by_multiple_pieces): Support starting with a loop. - (expand_builtin_memcmp): Pass ctz of len to - emit_block_cmp_hints. - (expand_builtin): Allow inline expansion of memset, memcpy, - memmove and memcmp if requested. - * common.opt (finline-stringops): New. - (ilsop_fn): New enum. - * flag-types.h (enum ilsop_fn): New. - * doc/invoke.texi (-finline-stringops): Add. - -2023-11-29 Pan Li <pan2.li@intel.com> - - PR target/112743 - * config/riscv/riscv-string.cc (expand_block_move): Add - precondition check for exact_div. - -2023-11-28 Roger Sayle <roger@nextmovesoftware.com> - - * config/arc/arc.md: Make output template whitespace consistent. - -2023-11-28 Jose E. Marchesi <jose.marchesi@oracle.com> - - * varasm.cc (assemble_external_libcall): Refer in assert only ifdef - ASM_OUTPUT_EXTERNAL. - -2023-11-28 Andrew Pinski <quic_apinski@quicinc.com> - - PR tree-optimization/112738 - * match.pd (`(nop_convert)-(convert)a`): Reject - when the outer type is boolean. - -2023-11-28 Richard Biener <rguenther@suse.de> - - PR middle-end/112732 - * tree.cc (build_opaque_vector_type): Reset TYPE_ALIAS_SET - of the newly built type. - -2023-11-28 Uros Bizjak <ubizjak@gmail.com> - - PR target/112494 - * config/i386/i386.md (cmpstrnqi_1): Set FLAGS_REG to its previous - value when operand 2 equals zero. - (*cmpstrnqi_1): Ditto. - (*cmpstrnqi_1 peephole2): Ditto. - -2023-11-28 Cupertino Miranda <cupertino.miranda@oracle.com> - - Revert: - 2023-11-28 Cupertino Miranda <cupertino.miranda@oracle.com> - - * config/bpf/bpf.cc (bpf_output_call): Report error in case the - function call is for a builtin. - (bpf_external_libcall): Added target hook to detect and report - error when other external calls that are not builtins. - -2023-11-28 Jose E. Marchesi <jose.marchesi@oracle.com> - - PR target/109253 - * varasm.cc (pending_libcall_symbols): New variable. - (process_pending_assemble_externals): Process - pending_libcall_symbols. - (assemble_external_libcall): Defer emitting external libcall - symbols to process_pending_assemble_externals. - -2023-11-28 Cupertino Miranda <cupertino.miranda@oracle.com> - - * btfout.cc (btf_calc_num_vbytes): Fixed logic for enum64. - (btf_asm_enum_const): Corrected logic for enum64 and smaller - than 4 bytes values. - -2023-11-28 Cupertino Miranda <cupertino.miranda@oracle.com> - - * config/bpf/bpf.cc (bpf_output_call): Report error in case the - function call is for a builtin. - (bpf_external_libcall): Added target hook to detect and report - error when other external calls that are not builtins. - -2023-11-28 Cupertino Miranda <cupertino.miranda@oracle.com> - - * config/bpf/bpf.cc (bpf_use_by_pieces_infrastructure_p): Added - function to bypass default behaviour. - * config/bpf/bpf.h (COMPARE_MAX_PIECES): Defined to 1024 bytes. - -2023-11-28 Cupertino Miranda <cupertino.miranda@oracle.com> - - * config/bpf/core-builtins.cc (core_mark_as_access_index): - Corrected check. - -2023-11-28 Cupertino Miranda <cupertino.miranda@oracle.com> - - * config/bpf/core-builtins.cc - (bpf_resolve_overloaded_core_builtin): Removed call. - (execute_lower_bpf_core): Added all to remove_parser_plugin. - -2023-11-28 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - PR target/112694 - * config/riscv/riscv-v.cc (expand_vec_perm_const): Disallow poly size (1, 1) VLA SLP. - -2023-11-28 Jakub Jelinek <jakub@redhat.com> - - PR tree-optimization/112719 - * match.pd (parity(X)^parity(Y) -> parity(X^Y)): Handle case of - mismatched types. - * gimple-match-exports.cc (build_call_internal): Add special-case for - bit query ifns on large/huge BITINT_TYPE before bitint lowering. - -2023-11-28 Jakub Jelinek <jakub@redhat.com> - - PR tree-optimization/112719 - * match.pd (popcount (X) + popcount (Y) -> POPCOUNT (X | Y)): Deal - with argument types with different precisions. - -2023-11-28 David Malcolm <dmalcolm@redhat.com> - - PR analyzer/109077 - * Makefile.in (PLUGIN_HEADERS): Add analyzer headers. - (install-plugin): Keep the directory structure for files in - "analyzer". - -2023-11-28 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - PR target/112713 - * config/riscv/riscv-vsetvl.cc (pre_vsetvl::compute_lcm_local_properties): Fix regression. - -2023-11-28 David Malcolm <dmalcolm@redhat.com> - - * diagnostic-show-locus.cc (layout::maybe_add_location_range): - Don't print annotation lines for ranges when there's no column - info. - (selftest::test_one_liner_no_column): New. - (selftest::test_diagnostic_show_locus_one_liner): Call it. - -2023-11-28 David Malcolm <dmalcolm@redhat.com> - - * diagnostic.cc (diagnostic_get_location_text): Convert to... - (diagnostic_context::get_location_text): ...this, and convert - return type from char * to label_text. - (diagnostic_build_prefix): Update for above change. - (default_diagnostic_start_span_fn): Likewise. - (selftest::assert_location_text): Likewise. - * diagnostic.h (diagnostic_context::get_location_text): New decl. - -2023-11-27 Andrew Pinski <quic_apinski@quicinc.com> - - * config/aarch64/aarch64.cc (aarch64_if_then_else_costs): - Handle csinv/csinc case of 1/-1. - -2023-11-27 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org> - Richard Sandiford <richard.sandiford@arm.com> - - PR middle-end/111754 - * fold-const.cc (fold_vec_perm_cst): Set result's encoding to sel's - encoding, and set res_nelts_per_pattern to 2 if sel contains stepped - sequence but input vectors do not. - (test_nunits_min_2): New test Case 8. - (test_nunits_min_4): New tests Case 8 and Case 9. - -2023-11-27 Szabolcs Nagy <szabolcs.nagy@arm.com> - - * config/aarch64/aarch64.cc (aarch64_needs_frame_chain): Do not - force frame chain for eh_return. - -2023-11-27 Szabolcs Nagy <szabolcs.nagy@arm.com> - - * config/aarch64/aarch64-protos.h (aarch64_eh_return_handler_rtx): - Remove. - * config/aarch64/aarch64.cc (aarch64_return_address_signing_enabled): - Sign return address even in functions with eh_return. - (aarch64_expand_epilogue): Conditionally return with br or ret. - (aarch64_eh_return_handler_rtx): Remove. - * config/aarch64/aarch64.h (EH_RETURN_TAKEN_RTX): Define. - (EH_RETURN_STACKADJ_RTX): Change to R5. - (EH_RETURN_HANDLER_RTX): Change to R6. - * df-scan.cc: Handle EH_RETURN_TAKEN_RTX. - * doc/tm.texi: Regenerate. - * doc/tm.texi.in: Document EH_RETURN_TAKEN_RTX. - * except.cc (expand_eh_return): Handle EH_RETURN_TAKEN_RTX. - -2023-11-27 Thomas Schwinge <thomas@codesourcery.com> - - * config.gcc <amdgcn-*-amdhsa> (extra_gcc_objs): Don't set. - * config/gcn/driver-gcn.cc: Remove. - * config/gcn/gcn-hsa.h (ASM_SPEC, EXTRA_SPEC_FUNCTIONS): Remove - 'last_arg' spec function. - * config/gcn/t-gcn-hsa (driver-gcn.o): Remove. - -2023-11-27 Thomas Schwinge <thomas@codesourcery.com> - - PR target/112669 - * config/gcn/gcn.opt (march=, mtune=): Tag as 'Negative' of - themselves. - -2023-11-27 Samuel Thibault <samuel.thibault@gnu.org> - - * config/i386/gnu.h: Use PIE_SPEC, add static-pie case. - * config/i386/gnu64.h: Use PIE_SPEC, add static-pie case. - -2023-11-27 Samuel Thibault <samuel.thibault@gnu.org> - - * config/i386/t-gnu64: New file. - * config.gcc [x86_64-*-gnu*]: Add i386/t-gnu64 to - tmake_file. - -2023-11-27 Richard Sandiford <richard.sandiford@arm.com> - - PR target/106326 - * config/aarch64/aarch64-sve-builtins.h (is_ptrue): Declare. - * config/aarch64/aarch64-sve-builtins.cc (is_ptrue): New function. - (gimple_folder::redirect_pred_x): Likewise. - (gimple_folder::fold): Use it. - -2023-11-27 Richard Sandiford <richard.sandiford@arm.com> - - * config/aarch64/aarch64-sve-builtins.h (vector_cst_all_same): Declare. - * config/aarch64/aarch64-sve-builtins.cc (vector_cst_all_same): New - function, a generalized replacement of... - * config/aarch64/aarch64-sve-builtins-base.cc - (svlast_impl::vect_all_same): ...this. - (svlast_impl::fold): Update accordingly. - -2023-11-27 Richard Biener <rguenther@suse.de> - - PR tree-optimization/112653 - * gimple-ssa.h (gimple_df): Add escaped_return solution. - * tree-ssa.cc (init_tree_ssa): Reset it. - (delete_tree_ssa): Likewise. - * tree-ssa-structalias.cc (escaped_return_id): New. - (find_func_aliases): Handle non-IPA return stmts by - adding to ESCAPED_RETURN. - (set_uids_in_ptset): Adjust HEAP escaping to also cover - escapes through return. - (init_base_vars): Initialize ESCAPED_RETURN. - (compute_points_to_sets): Replace ESCAPED post-processing - with recording the ESCAPED_RETURN solution. - * tree-ssa-alias.cc (ref_may_alias_global_p_1): Check - the ESCAPED_RETUNR solution. - (dump_alias_info): Dump it. - * cfgexpand.cc (update_alias_info_with_stack_vars): Update it. - * ipa-icf.cc (sem_item_optimizer::fixup_points_to_sets): - Likewise. - * tree-inline.cc (expand_call_inline): Reset it. - * tree-parloops.cc (parallelize_loops): Likewise. - * tree-sra.cc (maybe_add_sra_candidate): Check it. - -2023-11-27 Richard Biener <rguenther@suse.de> - Richard Sandiford <richard.sandiford@arm.com> - - PR tree-optimization/112661 - * tree-vect-slp.cc (vect_get_and_check_slp_defs): Defer duplicate-and- - interleave test to... - (vect_build_slp_tree_2): ...here, once we have all the operands. - Skip the test for uniform vectors. - (vect_create_constant_vectors): Detect uniform vectors. Avoid - redundant conversions in that case. Use gimple_build_vector_from_val - to build the vector. - -2023-11-27 Richard Sandiford <richard.sandiford@arm.com> - - * attribs.cc (excl_hash_traits): Delete. - (test_attribute_exclusions): Use pair_hash and nofree_string_hash - instead. - -2023-11-27 Andrew Stubbs <ams@codesourcery.com> - - * config/gcn/gcn.cc (gcn_vectorize_vec_perm_const): Disallow TImode. - -2023-11-27 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com> - - * config/s390/s390-builtin-types.def (BT_FN_UV8HI_UV8HI_UINT): - Add missing builtin type. - -2023-11-27 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com> - - * config/s390/s390-builtin-types.def: Remove types. - * config/s390/s390-builtins.def (O_U64): Remove 64-bit literal support. - Don't restrict s390_vec_rli and s390_verll[bhfg] to immediates. - * config/s390/s390.cc (s390_const_operand_ok): Remove 64-bit - literal support. - -2023-11-27 Alex Coplan <alex.coplan@arm.com> - Iain Sandoe <iain@sandoe.co.uk> - - PR c++/60512 - * doc/cpp.texi: Document __has_{feature,extension}. - -2023-11-27 Richard Biener <rguenther@suse.de> - - PR tree-optimization/112706 - * match.pd (ptr + o ==/!=/- ptr + o'): New patterns. - -2023-11-27 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com> - - * config/s390/s390-builtin-types.def: Add/remove types. - * config/s390/s390-builtins.def - (s390_vclfnhs,s390_vclfnls,s390_vcrnfs,s390_vcfn,s390_vcnf): - Replace type V8HI with UV8HI. - -2023-11-27 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com> - - * config/s390/s390-builtins.def - (s390_vcefb,s390_vcdgb,s390_vcelfb,s390_vcdlgb,s390_vcfeb,s390_vcgdb, - s390_vclfeb,s390_vclgdb): Remove flags for non-existing operands - 2 and 3. - -2023-11-27 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com> - - * config/s390/s390.md (*cmphi_ccu): For immediate operand 1 make - use of constraint n instead of D and chop of high bits in the - output template. - -2023-11-27 Jakub Jelinek <jakub@redhat.com> - - PR target/112300 - * config.gcc (mips*-sde-elf*): Append to tm_defines rather than - overwriting them. - -2023-11-27 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/autovec.md - (mask_len_gather_load<RATIO1:mode><RATIO1:mode>): - Remove gather_scatter_valid_offset_mode_p. - (mask_len_gather_load<mode><mode>): Ditto. - (mask_len_scatter_store<RATIO1:mode><RATIO1:mode>): Ditto. - (mask_len_scatter_store<mode><mode>): Ditto. - * config/riscv/predicates.md (const_1_or_8_operand): New predicate. - (vector_gs_scale_operand_64): Remove. - * config/riscv/riscv-protos.h (gather_scatter_valid_offset_mode_p): Remove. - * config/riscv/riscv-v.cc (expand_gather_scatter): Refine code. - (gather_scatter_valid_offset_mode_p): Remove. - * config/riscv/vector-iterators.md: Fix iterator bugs. - -2023-11-27 Tsukasa OI <research_trasio@irq.a4lg.com> - - * common/config/riscv/riscv-common.cc - (riscv_ext_version_table): Set version to ratified 2.0. - (riscv_subset_list::parse_std_ext): Allow RV64E. - * config.gcc: Parse base ISA 'rv64e' and ABI 'lp64e'. - * config/riscv/arch-canonicalize: Parse base ISA 'rv64e'. - * config/riscv/riscv-c.cc (riscv_cpu_cpp_builtins): - Define different macro per XLEN. Add handling for ABI_LP64E. - * config/riscv/riscv-d.cc (riscv_d_handle_target_float_abi): - Add handling for ABI_LP64E. - * config/riscv/riscv-opts.h (enum riscv_abi_type): Add ABI_LP64E. - * config/riscv/riscv.cc (riscv_option_override): Enhance error - handling to support RV64E and LP64E. - (riscv_conditional_register_usage): Change "RV32E" in a comment - to "RV32E/RV64E". - * config/riscv/riscv.h - (UNITS_PER_FP_ARG): Add handling for ABI_LP64E. - (STACK_BOUNDARY): Ditto. - (ABI_STACK_BOUNDARY): Ditto. - (MAX_ARGS_IN_REGISTERS): Ditto. - (ABI_SPEC): Add support for "lp64e". - * config/riscv/riscv.opt: Parse -mabi=lp64e as ABI_LP64E. - * doc/invoke.texi: Add documentation of the LP64E ABI. - -2023-11-27 Jose E. Marchesi <jose.marchesi@oracle.com> - - * config/bpf/bpf-helpers.h: Remove. - * config.gcc: Adapt accordingly. - -2023-11-27 Guo Jie <guojie@loongson.cn> - - * config/loongarch/loongarch.cc (loongarch_split_plus_constant): - avoid left shift of negative value -0x8000. - -2023-11-27 Guo Jie <guojie@loongson.cn> - - * config/loongarch/loongarch.cc - (enum loongarch_load_imm_method): Add new method. - (loongarch_build_integer): Add relevant implementations for - new method. - (loongarch_move_integer): Ditto. - -2023-11-26 Alexander Monakov <amonakov@ispras.ru> - - * sort.cc: Use 'sorting networks' in comments. - -2023-11-26 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - PR target/112599 - * config/riscv/riscv-avlprop.cc (avl_can_be_propagated_p): Add slidedown. - (vlmax_ta_p): Ditto. - (pass_avlprop::get_vlmax_ta_preferred_avl): Ditto. - -2023-11-26 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv-avlprop.cc (alv_can_be_propagated_p): Fix typo. - (avl_can_be_propagated_p): Ditto. - (vlmax_ta_p): Ditto. - -2023-11-25 Gerald Pfeifer <gerald@pfeifer.com> - - PR other/69374 - * doc/install.texi (Downloading the source): Sort the list of - front ends and add D, Go, and Modula-2. - -2023-11-25 Gerald Pfeifer <gerald@pfeifer.com> - - PR target/69374 - * doc/install.texi (Specific) <*-*-freebsd*>: Remove older - contents referencing GCC 4.x. - -2023-11-25 Gerald Pfeifer <gerald@pfeifer.com> - - * doc/standards.texi (Standards): Update ISO C++ reference. - -2023-11-25 Jakub Jelinek <jakub@redhat.com> - - PR target/111408 - * config/i386/i386.md (*jcc_bt<mode>_mask, - *jcc_bt<SWI48:mode>_mask_1): Add (const_int 0) as expected - second operand of bt_comparison_operator. - -2023-11-25 Andrew Pinski <pinskia@gmail.com> - Jakub Jelinek <jakub@redhat.com> - - PR target/109977 - * config/aarch64/aarch64-simd.md (aarch64_simd_stp<mode>): Use <vwcore> - rather than %<vw> for alternative with r constraint on input operand. - -2023-11-24 Tobias Burnus <tobias@codesourcery.com> - - * doc/install.texi (amdgcn-*-amdhsa): Fix URL to ROCm; - change 'in the future' to 'in LLVM 18'. - -2023-11-24 John David Anglin <danglin@gcc.gnu.org> - - * config/pa/pa.cc (pa_emit_move_sequence): Use INT14_OK_STRICT - in a couple of places. - -2023-11-24 Martin Jambor <mjambor@suse.cz> - - PR middle-end/109849 - * tree-sra.cc (passed_by_ref_in_call): New. - (sra_initialize): Allocate passed_by_ref_in_call. - (sra_deinitialize): Free passed_by_ref_in_call. - (create_access): Add decl pool candidates only if they are not - already candidates. - (build_access_from_expr_1): Bail out on ADDR_EXPRs. - (build_access_from_call_arg): New function. - (asm_visit_addr): Rename to scan_visit_addr, change the - disqualification dump message. - (scan_function): Check taken addresses for all non-call statements, - including phi nodes. Process all call arguments, including the static - chain, build_access_from_call_arg. - (maybe_add_sra_candidate): Relax need_to_live_in_memory check to allow - non-escaped local variables. - (sort_and_splice_var_accesses): Disallow smaller-than-precision - replacements for aggregates passed by reference to functions. - (sra_modify_expr): Use a separate stmt iterator for adding satements - before the processed statement and after it. - (enum out_edge_check): New type. - (abnormal_edge_after_stmt_p): New function. - (sra_modify_call_arg): New function. - (sra_modify_assign): Adjust calls to sra_modify_expr. - (sra_modify_function_body): Likewise, use sra_modify_call_arg to - process call arguments, including the static chain. - -2023-11-24 Uros Bizjak <ubizjak@gmail.com> - - PR target/112686 - * config/i386/i386.cc (ix86_expand_split_stack_prologue): Load - function address to a register for ix86_cmodel == CM_LARGE. - -2023-11-24 Tobias Burnus <tobias@codesourcery.com> - - * doc/invoke.texi (-Wopenmp): Add. - * gimplify.cc (gimplify_omp_for): Add OPT_Wopenmp to warning_at. - * omp-expand.cc (expand_omp_ordered_sink): Likewise. - * omp-general.cc (omp_check_context_selector): Likewise. - * omp-low.cc (scan_omp_for, check_omp_nesting_restrictions, - lower_omp_ordered_clauses): Likewise. - * omp-simd-clone.cc (simd_clone_clauses_extract): Likewise. - -2023-11-24 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - PR target/112694 - * config/riscv/riscv-v.cc (preferred_simd_mode): Allow poly_int (1,1) vectors. - -2023-11-24 Alexander Monakov <amonakov@ispras.ru> - - * config.in: Regenerate. - * configure: Regenerate. - * configure.ac: Delete manual checks for old Valgrind headers. - * system.h (VALGRIND_MAKE_MEM_NOACCESS): Delete. - (VALGRIND_MAKE_MEM_DEFINED): Delete. - (VALGRIND_MAKE_MEM_UNDEFINED): Delete. - (VALGRIND_MALLOCLIKE_BLOCK): Delete. - (VALGRIND_FREELIKE_BLOCK): Delete. - -2023-11-24 Jakub Jelinek <jakub@redhat.com> - - PR target/112681 - * config/i386/i386-expand.cc (ix86_expand_branch): Use - ix86_expand_vector_logical_operator to expand vector XOR rather than - gen_rtx_SET on gen_rtx_XOR. - -2023-11-24 Alex Coplan <alex.coplan@arm.com> - - * rtl-ssa/access-utils.h (filter_accesses): New. - (remove_regno_access): New. - (check_remove_regno_access): New. - * rtl-ssa/accesses.cc (rtl_ssa::remove_note_accesses_base): Use - new filter_accesses helper. - -2023-11-24 Alex Coplan <alex.coplan@arm.com> - - * rtl-ssa/accesses.cc (function_info::create_set): New. - * rtl-ssa/accesses.h (access_info::is_temporary): New. - * rtl-ssa/changes.cc (move_insn): Handle new (temporary) insns. - (function_info::finalize_new_accesses): Handle new/temporary - user-created accesses. - (function_info::apply_changes_to_insn): Ensure m_is_temp flag - on new insns gets cleared. - (function_info::change_insns): Handle new/temporary insns. - (function_info::create_insn): New. - * rtl-ssa/changes.h (class insn_change): Make function_info a - friend class. - * rtl-ssa/functions.h (function_info): Declare new entry points: - create_set, create_insn. Declare new change_alloc helper. - * rtl-ssa/insns.cc (insn_info::print_full): Identify temporary insns in - dump. - * rtl-ssa/insns.h (insn_info): Add new m_is_temp flag and accompanying - is_temporary accessor. - * rtl-ssa/internals.inl (insn_info::insn_info): Initialize m_is_temp to - false. - * rtl-ssa/member-fns.inl (function_info::change_alloc): New. - * rtl-ssa/movement.h (restrict_movement_for_defs_ignoring): Add - handling for temporary defs. - -2023-11-24 Jakub Jelinek <jakub@redhat.com> - - PR tree-optimization/112673 - * match.pd (bit_field_ref (vce @0) -> bit_field_ref @0): Only simplify - if either @0 doesn't have scalar integral type or if it has mode - precision. - -2023-11-24 Jakub Jelinek <jakub@redhat.com> - - PR middle-end/112679 - * gimple-lower-bitint.cc (gimple_lower_bitint): Also stop first loop on - floating point SSA_NAME set in FLOAT_EXPR assignment from BITINT_TYPE - INTEGER_CST. Set has_large_huge for those if that BITINT_TYPE is large - or huge. Set kind to such FLOAT_EXPR assignment rhs1 BITINT_TYPE's kind. - -2023-11-24 Richard Biener <rguenther@suse.de> - - PR tree-optimization/112677 - * tree-vect-loop.cc (vectorizable_reduction): Use alloca - to allocate vectype_op. - -2023-11-24 Haochen Gui <guihaoc@gcc.gnu.org> - - * expr.cc (by_pieces_ninsns): Include by pieces compare when - do the adjustment for overlap operations. Replace mov_optab - checks with gcc assertion. - -2023-11-24 Jakub Jelinek <jakub@redhat.com> - - PR middle-end/112668 - * gimple-iterator.h (gsi_end, gsi_end_bb): New inline functions. - * gimple-lower-bitint.cc (bitint_large_huge::handle_cast): After - temporarily adding statements after m_init_gsi, update m_init_gsi - such that later additions after it will be after the added statements. - (bitint_large_huge::handle_load): Likewise. When splitting - gsi_bb (m_init_gsi) basic block, update m_preheader_bb if needed - and update saved m_gsi as well if needed. - (bitint_large_huge::lower_mergeable_stmt, - bitint_large_huge::lower_comparison_stmt, - bitint_large_huge::lower_mul_overflow, - bitint_large_huge::lower_bit_query): Use gsi_end_bb. - -2023-11-24 Jakub Jelinek <jakub@redhat.com> - - PR c++/112619 - * tree.cc (try_catch_may_fallthru): If second operand of - TRY_CATCH_EXPR is not a STATEMENT_LIST, handle it as if it was a - STATEMENT_LIST containing a single statement. - -2023-11-24 Richard Biener <rguenther@suse.de> - - PR tree-optimization/112344 - * tree-chrec.cc (chrec_apply): Only use an unsigned add - when the overall increment doesn't fit the signed type. - -2023-11-24 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - PR target/112599 - * config/riscv/riscv-v.cc (shuffle_extract_and_slide1up_patterns): New function. - (expand_vec_perm_const_1): Add new optimization. - -2023-11-24 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv-v.cc (shuffle_bswap_pattern): Disable for NUNIT < 4. - -2023-11-24 Haochen Jiang <haochen.jiang@intel.com> - - PR target/112643 - * config/i386/driver-i386.cc (check_avx10_avx512_features): - Renamed to ... - (check_avx512_features): this and remove avx10 check. - (host_detect_local_cpu): Never append -mno-avx10.1-{256,512} to - avoid emitting warnings when building GCC with native arch. - * config/i386/i386-builtin.def (BDESC): Add missing AVX512VL for - 128/256 bit builtin for AVX512VP2INTERSECT. - * config/i386/i386-options.cc (ix86_option_override_internal): - Also check whether the AVX512 flags is set when trying to reset. - * config/i386/i386.h - (PTA_SKYLAKE_AVX512): Add missing PTA_EVEX512. - (PTA_ZNVER4): Ditto. - -2023-11-23 Georg-Johann Lay <avr@gjlay.de> - - PR target/86776 - * config/avr/avr.cc (TARGET_HAVE_SPECULATION_SAFE_VALUE): Define - to speculation_safe_value_not_needed. - -2023-11-23 Marek Polacek <polacek@redhat.com> - - * common.opt (Whardened, fhardened): New options. - * config.in: Regenerate. - * config/bpf/bpf.cc: Include "opts.h". - (bpf_option_override): If flag_stack_protector_set_by_fhardened_p, do - not inform that -fstack-protector does not work. - * config/i386/i386-options.cc (ix86_option_override_internal): When - -fhardened, maybe enable -fcf-protection=full. - * config/linux-protos.h (linux_fortify_source_default_level): Declare. - * config/linux.cc (linux_fortify_source_default_level): New. - * config/linux.h (TARGET_FORTIFY_SOURCE_DEFAULT_LEVEL): Redefine. - * configure: Regenerate. - * configure.ac: Check if the linker supports '-z now' and '-z relro'. - Check if -fhardened is supported on $target_os. - * doc/invoke.texi: Document -fhardened and -Whardened. - * doc/tm.texi: Regenerate. - * doc/tm.texi.in (TARGET_FORTIFY_SOURCE_DEFAULT_LEVEL): Add. - * gcc.cc (driver_handle_option): Remember if any link options or -static - were specified on the command line. - (process_command): When -fhardened, maybe enable -pie and - -Wl,-z,relro,-z,now. - * opts.cc (flag_stack_protector_set_by_fhardened_p): New global. - (finish_options): When -fhardened, enable - -ftrivial-auto-var-init=zero and -fstack-protector-strong. - (print_help_hardened): New. - (print_help): Call it. - * opts.h (flag_stack_protector_set_by_fhardened_p): Declare. - * target.def (fortify_source_default_level): New target hook. - * targhooks.cc (default_fortify_source_default_level): New. - * targhooks.h (default_fortify_source_default_level): Declare. - * toplev.cc (process_options): When -fhardened, enable - -fstack-clash-protection. If flag_stack_protector_set_by_fhardened_p, - do not warn that -fstack-protector not supported for this target. - Don't enable -fhardened when !HAVE_FHARDENED_SUPPORT. - -2023-11-23 Christophe Lyon <christophe.lyon@linaro.org> - - * config/arm/arm-mve-builtins-functions.h - (full_width_access::memory_vector_mode): Add default clause. - -2023-11-23 Uros Bizjak <ubizjak@gmail.com> - - PR target/112672 - * config/i386/i386.md (parityhi2): - Use temporary register in the call to gen_parityhi2_cmp. - -2023-11-23 Uros Bizjak <ubizjak@gmail.com> - - PR target/89316 - * config/i386/i386.cc (ix86_expand_split_stack_prologue): Obtain - scratch regno when flag_force_indirect_call is set. On 64-bit - targets, call __morestack_large_model when flag_force_indirect_call - is set and on 32-bit targets with -fpic, manually expand PIC sequence - to call __morestack. Move the function address to an indirect - call scratch register. - -2023-11-23 Sebastian Huber <sebastian.huber@embedded-brains.de> - - PR tree-optimization/112678 - * tree-profile.cc (tree_profiling): Do not use atomic operations - for -fprofile-update=single. - -2023-11-23 Juergen Christ <jchrist@linux.ibm.com> - - * config/s390/s390-c.cc (s390_cpu_cpp_builtins): Define - __GCC_ASM_FLAG_OUTPUTS__. - * config/s390/s390.cc (s390_canonicalize_comparison): More - UNSPEC_CC_TO_INT cases. - (s390_md_asm_adjust): Implement flags output. - * config/s390/s390.md (ccstore4): Allow mask operands. - * doc/extend.texi: Document flags output. - -2023-11-23 Juergen Christ <jchrist@linux.ibm.com> - - * config/s390/s390.md: Split TImode loads. - -2023-11-23 Juergen Christ <jchrist@linux.ibm.com> - - * config/s390/vector.md: (*vec_extract) Fix. - -2023-11-23 Di Zhao <dizhao@os.amperecomputing.com> - - * tree-ssa-reassoc.cc (get_reassociation_width): check - for loop dependent FMAs. - (reassociate_bb): For 3 ops, refine the condition to call - swap_ops_for_binary_stmt. - -2023-11-23 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv-protos.h (emit_vec_extract): New function. - * config/riscv/riscv-v.cc (emit_vec_extract): Ditto. - * config/riscv/riscv.cc (riscv_legitimize_move): Refine codes. - -2023-11-23 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - PR target/112599 - PR target/112670 - * config/riscv/riscv-avlprop.cc (alv_can_be_propagated_p): New function. - (vlmax_ta_p): Disable vrgather AVL propagation. - -2023-11-23 Jakub Jelinek <jakub@redhat.com> - - PR middle-end/112336 - * expr.cc (EXTEND_BITINT): Don't call reduce_to_bit_field_precision - if modifier is EXPAND_INITIALIZER. - -2023-11-23 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv-v.cc (emit_vlmax_gather_insn): Refine codes. - (emit_vlmax_masked_gather_mu_insn): Ditto. - (modulo_sel_indices): Ditto. - (expand_vec_perm): Ditto. - (shuffle_generic_patterns): Ditto. - -2023-11-23 Jakub Jelinek <jakub@redhat.com> - - * doc/extend.texi (__builtin_stdc_bit_ceil, __builtin_stdc_bit_floor, - __builtin_stdc_bit_width, __builtin_stdc_count_ones, - __builtin_stdc_count_zeros, __builtin_stdc_first_leading_one, - __builtin_stdc_first_leading_zero, __builtin_stdc_first_trailing_one, - __builtin_stdc_first_trailing_zero, __builtin_stdc_has_single_bit, - __builtin_stdc_leading_ones, __builtin_stdc_leading_zeros, - __builtin_stdc_trailing_ones, __builtin_stdc_trailing_zeros): Document. - -2023-11-23 Richard Biener <rguenther@suse.de> - - PR middle-end/32667 - * doc/md.texi (cpymem): Document that exact overlap of source - and destination needs to work. - * doc/standards.texi (ffreestanding): Mention memcpy is required - to handle the exact overlap case. - -2023-11-23 Jakub Jelinek <jakub@redhat.com> - - PR c++/110348 - * doc/invoke.texi (-Wno-c++26-extensions): Document. - -2023-11-23 Manolis Tsamis <manolis.tsamis@vrull.eu> - - * ifcvt.cc (noce_convert_multiple_sets_1): Remove old code. - -2023-11-23 Pan Li <pan2.li@intel.com> - - PR target/111720 - * dse.cc (get_stored_val): Allow vector mode if read size is - less than or equal to stored size. - -2023-11-23 Costas Argyris <costas.argyris@gmail.com> - - * configure.ac: Handle new --enable-win32-utf8-manifest - option. - * config.host: allow win32 utf8 manifest to be disabled - by user. - * configure: Regenerate. - -2023-11-22 John David Anglin <danglin@gcc.gnu.org> - - PR target/112592 - * config/pa/pa.h (MAX_FIXED_MODE_SIZE): Define. - -2023-11-22 John David Anglin <danglin@gcc.gnu.org> - - PR target/112617 - * config/pa/predicates.md (integer_store_memory_operand): Return - true for REG+D addresses when reload_in_progress is true. - -2023-11-22 Richard Biener <rguenther@suse.de> - - PR tree-optimization/112344 - * tree-chrec.cc (chrec_apply): Perform the overall increment - calculation and increment in an unsigned type. - -2023-11-22 Andrew Stubbs <ams@codesourcery.com> - - * config/gcn/gcn-valu.md (*mov<mode>_4reg): Disparage AVGPR use when a - reload is required. - -2023-11-22 Vladimir N. Makarov <vmakarov@redhat.com> - - PR rtl-optimization/112610 - * ira-costs.cc: (find_costs_and_classes): Remove arg. - Use ira_dump_file for printing. - (print_allocno_costs, print_pseudo_costs): Ditto. - (ira_costs): Adjust call of find_costs_and_classes. - (ira_set_pseudo_classes): Set up and restore ira_dump_file. - -2023-11-22 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - PR target/112598 - * config/riscv/riscv-v.cc (shuffle_compress_patterns): Fix vcompress bug. - -2023-11-22 Tamar Christina <tamar.christina@arm.com> - - * config/aarch64/aarch64-simd.md - (aarch64_uaddw<mode>_<PERM_EXTEND:perm_hilo>_zip, - aarch64_usubw<mode>_<PERM_EXTEND:perm_hilo>_zip): Split into... - (aarch64_uaddw<mode>_lo_zip, aarch64_uaddw<mode>_hi_zip, - "aarch64_usubw<mode>_lo_zip, "aarch64_usubw<mode>_hi_zip): ... This. - * config/aarch64/iterators.md (PERM_EXTEND, perm_index): Remove. - (perm_hilo): Remove UNSPEC_ZIP1, UNSPEC_ZIP2. - -2023-11-22 Christophe Lyon <christophe.lyon@linaro.org> - - * config/arm/arm-mve-builtins.cc - (function_resolver::infer_pointer_type): Remove spurious line. - -2023-11-22 Xi Ruoyao <xry111@xry111.site> - - * config/loongarch/lsx.md (vec_perm<mode:LSX>): Make the - selector VIMODE. - * config/loongarch/loongarch.cc (loongarch_expand_vec_perm): - Use the mode of the selector (instead of the shuffled vector) - for truncating it. Operate on subregs in the selector mode if - the shuffled vector has a different mode (i. e. it's a - floating-point vector). - -2023-11-22 Hongyu Wang <hongyu.wang@intel.com> - - * config/i386/i386.md (push2_di): Adjust operand order for AT&T - syntax. - (pop2_di): Likewise. - (push2p_di): Likewise. - (pop2p_di): Likewise. - -2023-11-22 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - PR target/112598 - * config/riscv/riscv-v.cc (emit_vlmax_gather_insn): Adapt the priority. - (shuffle_generic_patterns): Fix permutation indice bug. - * config/riscv/vector-iterators.md: Fix VEI16 bug. - -2023-11-22 liuhongt <hongtao.liu@intel.com> - - * config/i386/sse.md (cbranch<mode>4): Extend to Vector - HI/QImode. - -2023-11-22 Maciej W. Rozycki <macro@embecosm.com> - - PR target/111815 - * config/vax/vax.cc (index_term_p): Only accept the index scaler - as the RHS operand to ASHIFT. - -2023-11-22 Maciej W. Rozycki <macro@embecosm.com> - - * config/riscv/predicates.md (order_operator): Remove predicate. - * config/riscv/riscv.cc (riscv_rtx_costs): Update accordingly. - * config/riscv/riscv.md (*branch<mode>, *mov<GPR:mode><X:mode>cc) - (cstore<mode>4): Likewise. - -2023-11-22 Maciej W. Rozycki <macro@embecosm.com> - - * config/riscv/riscv-protos.h (riscv_expand_float_scc): Add - `invert_ptr' parameter. - * config/riscv/riscv.cc (riscv_emit_float_compare): Add NE - inversion handling. - (riscv_expand_float_scc): Pass `invert_ptr' through to - `riscv_emit_float_compare'. - (riscv_expand_conditional_move): Pass `&invert' to - `riscv_expand_float_scc'. - * config/riscv/riscv.md (add<mode>cc): Likewise. - -2023-11-22 Maciej W. Rozycki <macro@embecosm.com> - - * config/riscv/riscv.cc (riscv_emit_float_compare) <NE>: Handle - separately. - <EQ, LE, LT, GE, GT>: Return operands supplied as is. - (riscv_emit_binary): Call `riscv_emit_binary' directly rather - than going through a temporary register for word-mode targets. - (riscv_expand_conditional_branch): Canonicalize the comparison - if not against constant zero. - -2023-11-22 Maciej W. Rozycki <macro@embecosm.com> - - * config/riscv/predicates.md (ne_operator): New predicate. - * config/riscv/riscv.cc (riscv_insn_cost): Handle branches on a - floating-point condition. - * config/riscv/riscv.md (@cbranch<mode>4): Rename expander to... - (@cbranch<ANYF:mode>4): ... this. Only expand the RTX via - `riscv_expand_conditional_branch' for `!signed_order_operator' - operators, otherwise let it through. - (*cbranch<ANYF:mode>4, *cbranch<ANYF:mode>4): New insns and - splitters. - -2023-11-22 Maciej W. Rozycki <macro@embecosm.com> - - * config/riscv/riscv.cc (riscv_expand_conditional_move): Don't - bail out in floating-point conditions. - -2023-11-22 Maciej W. Rozycki <macro@embecosm.com> - - * config/riscv/riscv.cc (riscv_expand_float_scc): Suppress the - use of SUBREG if the conditional-set target is word-mode. - -2023-11-22 Maciej W. Rozycki <macro@embecosm.com> - - * config/riscv/riscv.md (add<mode>cc): New expander. - -2023-11-22 Maciej W. Rozycki <macro@embecosm.com> - - * config/riscv/predicates.md (movcc_operand): New predicate. - * config/riscv/riscv.cc (riscv_expand_conditional_move): Handle - generic targets. - * config/riscv/riscv.md (mov<mode>cc): Likewise. - * config/riscv/riscv.opt (mmovcc): New option. - * doc/invoke.texi (Option Summary): Document it. - -2023-11-22 Maciej W. Rozycki <macro@embecosm.com> - - * config/riscv/riscv-protos.h (riscv_emit_unary): New prototype. - * config/riscv/riscv.cc (riscv_emit_unary): New function. - -2023-11-22 Maciej W. Rozycki <macro@embecosm.com> - - * config/riscv/riscv.cc (riscv_expand_conditional_move): Unify - conditional-move handling across all the relevant targets. - -2023-11-22 Maciej W. Rozycki <macro@embecosm.com> - - * config/riscv/riscv.cc (riscv_expand_conditional_move): Also - accept constants for T-Head data input operands. - -2023-11-22 Maciej W. Rozycki <macro@embecosm.com> - - * config/riscv/riscv.cc (riscv_expand_conditional_move): Also - accept constants for T-Head comparison operands. - -2023-11-22 Maciej W. Rozycki <macro@embecosm.com> - - * config/riscv/riscv.cc (riscv_expand_conditional_move): Remove - the check for operand 1 being constant 0 in the Ventana/Zicond - case for equality comparisons. - -2023-11-22 Maciej W. Rozycki <macro@embecosm.com> - - * config/riscv/riscv.cc (riscv_expand_conditional_move): Also - invert the condition for GEU and LEU. - -2023-11-22 Maciej W. Rozycki <macro@embecosm.com> - - * config/riscv/riscv.cc (riscv_insn_cost): New function. - (riscv_max_noce_ifcvt_seq_cost): Likewise. - (riscv_noce_conversion_profitable_p): Likewise. - (TARGET_INSN_COST): New macro. - (TARGET_MAX_NOCE_IFCVT_SEQ_COST): New macro. - (TARGET_NOCE_CONVERSION_PROFITABLE_P): New macro. - -2023-11-22 Maciej W. Rozycki <macro@embecosm.com> - - * config/riscv/riscv.cc (riscv_expand_conditional_move): Remove - extraneous variable for EQ vs NE operation selection. - -2023-11-22 Maciej W. Rozycki <macro@embecosm.com> - - * config/riscv/riscv.cc (riscv_expand_conditional_move): Use - `nullptr' rather than 0 to initialize a pointer. - -2023-11-22 Maciej W. Rozycki <macro@embecosm.com> - - * config/riscv/riscv.cc (riscv_expand_conditional_move): Use - `mode0' and `mode1' for `GET_MODE (op0)' and `GET_MODE (op1)'. - -2023-11-22 Maciej W. Rozycki <macro@embecosm.com> - - * config/riscv/riscv.cc (riscv_expand_conditional_move): Use - `mode' for `GET_MODE (dest)' throughout. - -2023-11-22 Maciej W. Rozycki <macro@embecosm.com> - - * config/riscv/riscv.cc (riscv_emit_int_compare): Bail out if - NEED_EQ_NE_P but the comparison is neither EQ nor NE. - -2023-11-22 Maciej W. Rozycki <macro@embecosm.com> - - * config/riscv/riscv.md (mov<mode>cc): Move comment on SFB - patterns over to... - (*mov<GPR:mode><X:mode>cc): ... here. - -2023-11-21 Robin Dapp <rdapp@ventanamicro.com> - - PR middle-end/112406 - * tree-vect-loop.cc (vectorize_fold_left_reduction): Allow - reduction index != 1. - (vect_transform_reduction): Handle reduction index != 1. - -2023-11-21 Richard Sandiford <richard.sandiford@arm.com> - - * common.md (aligned_register_operand): New predicate. - -2023-11-21 Richard Sandiford <richard.sandiford@arm.com> - - * ira-int.h (ira_allocno): Add a register_filters field. - (ALLOCNO_REGISTER_FILTERS): New macro. - (ALLOCNO_SET_REGISTER_FILTERS): Likewise. - * ira-build.cc (ira_create_allocno): Initialize register_filters. - (create_cap_allocno): Propagate register_filters. - (propagate_allocno_info): Likewise. - (propagate_some_info_from_allocno): Likewise. - * ira-lives.cc (process_register_constraint_filters): New function. - (process_bb_node_lives): Use it to record register filter - information. - * ira-color.cc (assign_hard_reg): Check register filters. - (improve_allocation, fast_allocation): Likewise. - -2023-11-21 Richard Sandiford <richard.sandiford@arm.com> - - * lra-constraints.cc (process_alt_operands): Check register filters. - -2023-11-21 Richard Sandiford <richard.sandiford@arm.com> - - * recog.h (operand_alternative): Add a register_filters field. - (alternative_register_filters): New function. - * recog.cc (preprocess_constraints): Calculate the filters field. - (constrain_operands): Check register filters. - -2023-11-21 Richard Sandiford <richard.sandiford@arm.com> - - * rtl.def (DEFINE_REGISTER_CONSTRAINT): Add an optional filter - operand. - * doc/md.texi (define_register_constraint): Document it. - * doc/tm.texi.in: Reference it in discussion about aligned registers. - * doc/tm.texi: Regenerate. - * gensupport.h (register_filters, get_register_filter_id): Declare. - * gensupport.cc (register_filter_map, register_filters): New variables. - (get_register_filter_id): New function. - (process_define_register_constraint): Likewise. - (process_rtx): Pass define_register_constraints to - process_define_register_constraint. - * genconfig.cc (main): Emit a definition of NUM_REGISTER_FILTERS. - * genpreds.cc (constraint_data): Add a filter field. - (add_constraint): Update accordingly. - (process_define_register_constraint): Pass the filter operand. - (write_init_reg_class_start_regs): New function. - (write_get_register_filter): Likewise. - (write_get_register_filter_id): Likewise. - (write_tm_preds_h): Write a definition of target_constraints, - plus helpers to test its contents. Write the get_register_filter* - functions. - (write_insn_preds_c): Write init_reg_class_start_regs. - * reginfo.cc (init_reg_class_start_regs): Declare. - (init_reg_sets): Call it. - * target-globals.h (this_target_constraints): Declare. - (target_globals): Add a constraints field. - (restore_target_globals): Update accordingly. - * target-globals.cc: Include tm_p.h. - (default_target_globals): Initialize the constraints field. - (save_target_globals): Handle the constraints field. - (target_globals::~target_globals): Likewise. - -2023-11-21 Richard Biener <rguenther@suse.de> - - PR tree-optimization/112623 - * tree-ssa-forwprop.cc (simplify_vector_constructor): - Check the source mode of the insn for vector pack/unpacks. - -2023-11-21 Richard Biener <rguenther@suse.de> - - * tree-vect-loop.cc (vect_analyze_loop_2): Move check - of VF against max_vf until VF is final. - -2023-11-21 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - PR target/112598 - * config/riscv/riscv.cc (riscv_const_insns): Disallow DI CONST_VECTOR on RV32. - -2023-11-21 Tamar Christina <tamar.christina@arm.com> - - * config/aarch64/aarch64.cc (aarch64_override_options): Rework warnings. - -2023-11-21 Tamar Christina <tamar.christina@arm.com> - - PR target/111370 - * config/aarch64/aarch64-arches.def (armv9-a, armv9.1-a, armv9.2-a, - armv9.3-a): Update to generic-armv9-a. - * config/aarch64/aarch64-cores.def (generic-armv9-a): New. - * config/aarch64/aarch64-tune.md: Regenerate. - * config/aarch64/aarch64.cc: Include generic_armv9_a.h. - * config/aarch64/tuning_models/generic_armv9_a.h: New file. - -2023-11-21 Tamar Christina <tamar.christina@arm.com> - - PR target/111370 - * config/aarch64/aarch64-arches.def (armv8-9, armv8-a, armv8.1-a, - armv8.2-a, armv8.3-a, armv8.4-a, armv8.5-a, armv8.6-a, armv8.7-a, - armv8.8-a): Update to generic_armv8_a. - * config/aarch64/aarch64-cores.def (generic-armv8-a): New. - * config/aarch64/aarch64-tune.md: Regenerate. - * config/aarch64/aarch64.cc: Include generic_armv8_a.h - * config/aarch64/aarch64.h (TARGET_CPU_DEFAULT): Change to - TARGET_CPU_generic_armv8_a. - * config/aarch64/tuning_models/generic_armv8_a.h: New file. - -2023-11-21 Tamar Christina <tamar.christina@arm.com> - - PR target/111370 - * config/aarch64/aarch64-cores.def: Add generic. - * config/aarch64/aarch64-opts.h (enum aarch64_proc): Remove generic. - * config/aarch64/aarch64-tune.md: Regenerate - * config/aarch64/aarch64.cc (all_cores): Remove generic - * config/aarch64/aarch64.h (enum target_cpus): Remove - TARGET_CPU_generic. - -2023-11-21 Tamar Christina <tamar.christina@arm.com> - - PR target/111370 - * config/aarch64/aarch64.cc (generic_addrcost_table, - exynosm1_addrcost_table, - xgene1_addrcost_table, - thunderx2t99_addrcost_table, - thunderx3t110_addrcost_table, - tsv110_addrcost_table, - qdf24xx_addrcost_table, - a64fx_addrcost_table, - neoversev1_addrcost_table, - neoversen2_addrcost_table, - neoversev2_addrcost_table, - generic_regmove_cost, - cortexa57_regmove_cost, - cortexa53_regmove_cost, - exynosm1_regmove_cost, - thunderx_regmove_cost, - xgene1_regmove_cost, - qdf24xx_regmove_cost, - thunderx2t99_regmove_cost, - thunderx3t110_regmove_cost, - tsv110_regmove_cost, - a64fx_regmove_cost, - neoversen2_regmove_cost, - neoversev1_regmove_cost, - neoversev2_regmove_cost, - generic_vector_cost, - a64fx_vector_cost, - qdf24xx_vector_cost, - thunderx_vector_cost, - tsv110_vector_cost, - cortexa57_vector_cost, - exynosm1_vector_cost, - xgene1_vector_cost, - thunderx2t99_vector_cost, - thunderx3t110_vector_cost, - ampere1_vector_cost, - generic_branch_cost, - generic_tunings, - cortexa35_tunings, - cortexa53_tunings, - cortexa57_tunings, - cortexa72_tunings, - cortexa73_tunings, - exynosm1_tunings, - thunderxt88_tunings, - thunderx_tunings, - tsv110_tunings, - xgene1_tunings, - emag_tunings, - qdf24xx_tunings, - saphira_tunings, - thunderx2t99_tunings, - thunderx3t110_tunings, - neoversen1_tunings, - ampere1_tunings, - ampere1a_tunings, - neoversev1_vector_cost, - neoversev1_tunings, - neoverse512tvb_vector_cost, - neoverse512tvb_tunings, - neoversen2_vector_cost, - neoversen2_tunings, - neoversev2_vector_cost, - neoversev2_tunings - a64fx_tunings): Split into own files. - * config/aarch64/tuning_models/a64fx.h: New file. - * config/aarch64/tuning_models/ampere1.h: New file. - * config/aarch64/tuning_models/ampere1a.h: New file. - * config/aarch64/tuning_models/cortexa35.h: New file. - * config/aarch64/tuning_models/cortexa53.h: New file. - * config/aarch64/tuning_models/cortexa57.h: New file. - * config/aarch64/tuning_models/cortexa72.h: New file. - * config/aarch64/tuning_models/cortexa73.h: New file. - * config/aarch64/tuning_models/emag.h: New file. - * config/aarch64/tuning_models/exynosm1.h: New file. - * config/aarch64/tuning_models/generic.h: New file. - * config/aarch64/tuning_models/neoverse512tvb.h: New file. - * config/aarch64/tuning_models/neoversen1.h: New file. - * config/aarch64/tuning_models/neoversen2.h: New file. - * config/aarch64/tuning_models/neoversev1.h: New file. - * config/aarch64/tuning_models/neoversev2.h: New file. - * config/aarch64/tuning_models/qdf24xx.h: New file. - * config/aarch64/tuning_models/saphira.h: New file. - * config/aarch64/tuning_models/thunderx.h: New file. - * config/aarch64/tuning_models/thunderx2t99.h: New file. - * config/aarch64/tuning_models/thunderx3t110.h: New file. - * config/aarch64/tuning_models/thunderxt88.h: New file. - * config/aarch64/tuning_models/tsv110.h: New file. - * config/aarch64/tuning_models/xgene1.h: New file. - -2023-11-21 Tamar Christina <tamar.christina@arm.com> - - * config/aarch64/aarch64-simd.md (vec_unpack<su>_lo_<mode, - vec_unpack<su>_lo_<mode): Split into... - (vec_unpacku_lo_<mode, vec_unpacks_lo_<mode, - vec_unpacku_lo_<mode, vec_unpacks_lo_<mode): ...These. - (aarch64_usubw<mode>_<PERM_EXTEND:perm_hilo>_zip): New. - (aarch64_uaddw<mode>_<PERM_EXTEND:perm_hilo>_zip): New. - * config/aarch64/iterators.md (PERM_EXTEND, perm_index): New. - (perm_hilo): Add UNSPEC_ZIP1, UNSPEC_ZIP2. - -2023-11-21 Tamar Christina <tamar.christina@arm.com> - - * config/aarch64/aarch64.cc (aarch64_adjust_stmt_cost): Guard mla. - (aarch64_vector_costs::count_ops): Likewise. - -2023-11-21 Sebastian Huber <sebastian.huber@embedded-brains.de> - - PR middle-end/112634 - * tree-profile.cc (gen_assign_counter_update): Cast the unsigned result type of - __atomic_add_fetch() to the signed counter type. - (gen_counter_update): Fix formatting. - -2023-11-21 Jakub Jelinek <jakub@redhat.com> - - * tree-profile.cc (gen_counter_update, tree_profiling): Formatting - fixes. - -2023-11-21 Jakub Jelinek <jakub@redhat.com> - - PR middle-end/112639 - * builtins.cc (fold_builtin_bit_query): If arg0 has side-effects, arg1 - is specified but cleared, call save_expr on arg0. - -2023-11-21 Hongyu Wang <hongyu.wang@intel.com> - - * config/i386/i386-expand.h (gen_push): Add default bool - parameter. - (gen_pop): Likewise. - * config/i386/i386-opts.h (enum apx_features): Add apx_ppx, add - it to apx_all. - * config/i386/i386.cc (ix86_emit_restore_reg_using_pop): Add - ppx_p parameter for function declaration. - (gen_push2): Add ppx_p parameter, emit push2p if ppx_p is true. - (gen_push): Likewise. - (ix86_emit_restore_reg_using_pop2): Likewise for pop2p. - (ix86_emit_save_regs): Emit pushp/push2p under TARGET_APX_PPX. - (ix86_emit_restore_reg_using_pop): Add ppx_p, emit popp insn - and adjust cfi when ppx_p is ture. - (ix86_emit_restore_reg_using_pop2): Add ppx_p and parse to its - callee. - (ix86_emit_restore_regs_using_pop2): Likewise. - (ix86_expand_epilogue): Parse TARGET_APX_PPX to - ix86_emit_restore_reg_using_pop. - * config/i386/i386.h (TARGET_APX_PPX): New. - * config/i386/i386.md (UNSPEC_APX_PPX): New unspec. - (pushp_di): New define_insn. - (popp_di): Likewise. - (push2p_di): Likewise. - (pop2p_di): Likewise. - * config/i386/i386.opt: Add apx_ppx enum. - -2023-11-21 Richard Biener <rguenther@suse.de> - - PR tree-optimization/111970 - * tree-vect-stmts.cc (vectorizable_load): Fix offset calculation - for SLP gather load. - (vectorizable_store): Likewise for SLP scatter store. - -2023-11-21 Xi Ruoyao <xry111@xry111.site> - - * config/loongarch/loongarch-def.h (stdint.h): Guard with #if to - exclude it for target libraries. - (loongarch_isa_base_features): Likewise. - (loongarch_isa): Likewise. - (loongarch_abi): Likewise. - (loongarch_target): Likewise. - (loongarch_cpu_default_isa): Likewise. - -2023-11-21 liuhongt <hongtao.liu@intel.com> - - PR target/112325 - * config/i386/i386-expand.cc (emit_reduc_half): Hanlde - V8QImode. - * config/i386/mmx.md (reduc_<code>_scal_<mode>): New expander. - (reduc_<code>_scal_v4qi): Ditto. - -2023-11-20 Marc Poulhiès <dkm@kataplop.net> - - * config/nvptx/nvptx.h (struct machine_function): Fix typo in variadic. - * config/nvptx/nvptx.cc (nvptx_function_arg_advance): Adjust to use fixed name. - (nvptx_declare_function_name): Likewise. - (nvptx_call_args): Likewise. - (nvptx_expand_call): Likewise. - -2023-11-20 Sebastian Huber <sebastian.huber@embedded-brains.de> - - * tree-profile.cc (gen_counter_update): Use unshare_expr() for the - counter expression in the second gimple_build_assign(). - -2023-11-20 Jan Hubicka <jh@suse.cz> - - * cgraph.cc (add_detected_attribute_1): New function. - (cgraph_node::add_detected_attribute): Likewise. - * cgraph.h (cgraph_node::add_detected_attribute): Declare. - * common.opt: Add -Wsuggest-attribute=returns_nonnull. - * doc/invoke.texi: Document new flag. - * gimple-range-fold.cc (fold_using_range::range_of_call): - Use known reutrn value ranges. - * ipa-prop.cc (struct ipa_return_value_summary): New type. - (class ipa_return_value_sum_t): New type. - (ipa_return_value_sum): New summary. - (ipa_record_return_value_range): New function. - (ipa_return_value_range): New function. - * ipa-prop.h (ipa_return_value_range): Declare. - (ipa_record_return_value_range): Declare. - * ipa-pure-const.cc (warn_function_returns_nonnull): New funcion. - * ipa-utils.h (warn_function_returns_nonnull): Declare. - * symbol-summary.h: Fix comment. - * tree-vrp.cc (execute_ranger_vrp): Record return values. - -2023-11-20 Richard Biener <rguenther@suse.de> - - PR tree-optimization/112618 - * tree-vect-loop.cc (vect_transform_loop_stmt): For not - relevant and unused .MASK_CALL make sure we remove the - scalar stmt. - -2023-11-20 Richard Biener <rguenther@suse.de> - - PR tree-optimization/112281 - * tree-loop-distribution.cc - (loop_distribution::pg_add_dependence_edges): For = in the - innermost common loop record a partition conflict. - -2023-11-20 Richard Biener <rguenther@suse.de> - - PR middle-end/112622 - * convert.cc (convert_to_real_1): Use element_precision - where a vector type might appear. Provide specific - diagnostic for unexpected vector argument. - -2023-11-20 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - PR target/112597 - * config/riscv/vector-iterators.md: Remove VDEMOTE and VMDEMOTE. - * config/riscv/vector.md: Fix slide1 intermediate mode bug. - -2023-11-20 Robin Dapp <rdapp@ventanamicro.com> - - * config/riscv/riscv-v.cc (gather_scatter_valid_offset_mode_p): - Add check for XLEN == 32. - * config/riscv/vector-iterators.md: Change VLS part of the - demote iterator to 2x elements modes - * config/riscv/vector.md: Adjust iterators and insn conditions. - -2023-11-20 Christophe Lyon <christophe.lyon@linaro.org> - - * config/arm/arm-mve-builtins-base.cc (vld1_impl, vld1q) - (vst1_impl, vst1q): New. - * config/arm/arm-mve-builtins-base.def (vld1q, vst1q): New. - * config/arm/arm-mve-builtins-base.h (vld1q, vst1q): New. - * config/arm/arm_mve.h - (vld1q): Delete. - (vst1q): Delete. - (vld1q_s8): Delete. - (vld1q_s32): Delete. - (vld1q_s16): Delete. - (vld1q_u8): Delete. - (vld1q_u32): Delete. - (vld1q_u16): Delete. - (vld1q_f32): Delete. - (vld1q_f16): Delete. - (vst1q_f32): Delete. - (vst1q_f16): Delete. - (vst1q_s8): Delete. - (vst1q_s32): Delete. - (vst1q_s16): Delete. - (vst1q_u8): Delete. - (vst1q_u32): Delete. - (vst1q_u16): Delete. - (__arm_vld1q_s8): Delete. - (__arm_vld1q_s32): Delete. - (__arm_vld1q_s16): Delete. - (__arm_vld1q_u8): Delete. - (__arm_vld1q_u32): Delete. - (__arm_vld1q_u16): Delete. - (__arm_vst1q_s8): Delete. - (__arm_vst1q_s32): Delete. - (__arm_vst1q_s16): Delete. - (__arm_vst1q_u8): Delete. - (__arm_vst1q_u32): Delete. - (__arm_vst1q_u16): Delete. - (__arm_vld1q_f32): Delete. - (__arm_vld1q_f16): Delete. - (__arm_vst1q_f32): Delete. - (__arm_vst1q_f16): Delete. - (__arm_vld1q): Delete. - (__arm_vst1q): Delete. - * config/arm/mve.md (mve_vld1q_f<mode>): Rename into ... - (@mve_vld1q_f<mode>): ... this. - (mve_vld1q_<supf><mode>): Rename into ... - (@mve_vld1q_<supf><mode>) ... this. - (mve_vst1q_f<mode>): Rename into ... - (@mve_vst1q_f<mode>): ... this. - (mve_vst1q_<supf><mode>): Rename into ... - (@mve_vst1q_<supf><mode>) ... this. - -2023-11-20 Christophe Lyon <christophe.lyon@linaro.org> - - * config/arm/arm-mve-builtins-shapes.cc (load, store): New. - * config/arm/arm-mve-builtins-shapes.h (load, store): New. - -2023-11-20 Christophe Lyon <christophe.lyon@linaro.org> - - * config/arm/arm-mve-builtins-functions.h (multi_vector_function) - (full_width_access): New classes. - * config/arm/arm-mve-builtins.cc - (find_type_suffix_for_scalar_type, infer_pointer_type) - (require_pointer_type, get_contiguous_base, add_mem_operand) - (add_fixed_operand, use_contiguous_load_insn) - (use_contiguous_store_insn): New. - * config/arm/arm-mve-builtins.h (memory_vector_mode) - (infer_pointer_type, require_pointer_type, get_contiguous_base) - (add_mem_operand) - (add_fixed_operand, use_contiguous_load_insn) - (use_contiguous_store_insn): New. - -2023-11-20 Christophe Lyon <christophe.lyon@linaro.org> - - * config/arm/arm-mve-builtins-shapes.cc (build_const_pointer): - New. - (parse_type): Add support for '_', 'al' and 'as'. - * config/arm/arm-mve-builtins.h (function_instance): Add - memory_scalar_type. - (function_base): Likewise. - -2023-11-20 Christophe Lyon <christophe.lyon@linaro.org> - - * config/arm/arm-builtins.cc (arm_init_simd_builtin_types): Fix - initialization of arm_simd_types[].eltype. - * config/arm/arm-mve-builtins.def (DEF_MVE_TYPE): Fix scalar - types. - -2023-11-20 Jakub Jelinek <jakub@redhat.com> - - * typeclass.h (enum type_class): Add vector_type_class. - * builtins.cc (type_to_class): Return vector_type_class for - VECTOR_TYPE. - * doc/extend.texi (__builtin_classify_type): Mention bit-precise - integer types and vector types. - -2023-11-20 Robin Dapp <rdapp@ventanamicro.com> - - PR middle-end/112406 - * tree-vect-patterns.cc (vect_recog_mask_conversion_pattern): - Convert masks for conditional operations as well. - -2023-11-20 Jakub Jelinek <jakub@redhat.com> - - PR tree-optimization/90693 - * tree-ssa-math-opts.cc (match_single_bit_test): Mark POPCOUNT with - result only used in equality comparison against 1 with direct optab - support as .POPCOUNT call with 2 arguments. - * internal-fn.h (expand_POPCOUNT): Declare. - * internal-fn.def (DEF_INTERNAL_INT_EXT_FN): New macro, document it, - undefine at the end. - (POPCOUNT): Use it instead of DEF_INTERNAL_INT_FN. - * internal-fn.cc (DEF_INTERNAL_INT_EXT_FN): Define to nothing before - inclusion to define expanders. - (expand_POPCOUNT): New function. - -2023-11-20 Jakub Jelinek <jakub@redhat.com> - - PR tree-optimization/90693 - * tree-ssa-math-opts.cc (match_single_bit_test): New function. - (math_opts_dom_walker::after_dom_children): Call it for EQ_EXPR - and NE_EXPR assignments and GIMPLE_CONDs. - -2023-11-20 Jakub Jelinek <jakub@redhat.com> - - * internal-fn.def: Document missing DEF_INTERNAL* macros and make sure - they are all undefined at the end. - * internal-fn.cc (lookup_hilo_internal_fn, lookup_evenodd_internal_fn, - widening_fn_p, get_len_internal_fn): Don't undef DEF_INTERNAL_*FN - macros after inclusion of internal-fn.def. - -2023-11-20 Haochen Jiang <haochen.jiang@intel.com> - - * common/config/i386/cpuinfo.h (get_available_features): - Add avx10_set and version and detect avx10.1. - (cpu_indicator_init): Handle avx10.1-512. - * common/config/i386/i386-common.cc - (OPTION_MASK_ISA2_AVX10_1_256_SET): New. - (OPTION_MASK_ISA2_AVX10_1_256_SET): Ditto. - (OPTION_MASK_ISA2_AVX10_1_512_UNSET): Ditto. - (OPTION_MASK_ISA2_AVX10_1_512_UNSET): Ditto. - (OPTION_MASK_ISA2_AVX2_UNSET): Modify for AVX10.1. - (ix86_handle_option): Handle -mavx10.1-256 and -mavx10.1-512. - Add indicator for explicit no-avx512 and no-avx10.1 options. - * common/config/i386/i386-cpuinfo.h (enum processor_features): - Add FEATURE_AVX10_1_256 and FEATURE_AVX10_1_512. - * common/config/i386/i386-isas.h: Add ISA_NAME_TABLE_ENTRY for - AVX10_1_256 and AVX10_1_512. - * config/i386/cpuid.h (bit_AVX10): New. - (bit_AVX10_256): Ditto. - (bit_AVX10_512): Ditto. - * config/i386/driver-i386.cc (check_avx10_avx512_features): New. - (host_detect_local_cpu): Do not append "-mno-" options under - specific scenarios to avoid emitting a warning. - * config/i386/i386-isa.def - (EVEX512): Add DEF_PTA(EVEX512). - (AVX10_1_256): Add DEF_PTA(AVX10_1_256). - (AVX10_1_512): Add DEF_PTA(AVX10_1_512). - * config/i386/i386-options.cc (isa2_opts): Add -mavx10.1-256 and - -mavx10.1-512. - (ix86_function_specific_save): Save explicit no indicator. - (ix86_function_specific_restore): Restore explicit no indicator. - (ix86_valid_target_attribute_inner_p): Handle avx10.1, avx10.1-256 and - avx10.1-512. - (ix86_valid_target_attribute_tree): Handle avx512 function - attributes with avx10.1 command line option. - (ix86_option_override_internal): Handle AVX10.1 options. - * config/i386/i386.h: Add PTA_EVEX512 for AVX512 target - machines. - * config/i386/i386.opt: Add variable ix86_no_avx512_explicit and - ix86_no_avx10_1_explicit, option -mavx10.1, -mavx10.1-256 and - -mavx10.1-512. - * doc/extend.texi: Document avx10.1, avx10.1-256 and avx10.1-512. - * doc/invoke.texi: Document -mavx10.1, -mavx10.1-256 and -mavx10.1-512. - * doc/sourcebuild.texi: Document target avx10.1, avx10.1-256 - and avx10.1-512. - -2023-11-20 liuhongt <hongtao.liu@intel.com> - - PR target/112325 - * config/i386/sse.md (reduc_<code>_scal_<mode>): New expander. - (REDUC_ANY_LOGIC_MODE): New iterator. - (REDUC_PLUS_MODE): Extend to VxHI/SI/DImode. - (REDUC_SSE_PLUS_MODE): Ditto. - -2023-11-20 xuli <xuli1@eswincomputing.com> - - PR target/112537 - * config/riscv/riscv-opts.h (enum riscv_stringop_strategy_enum): Strategy enum. - * config/riscv/riscv-string.cc (riscv_expand_block_move): Disabled based on options. - (expand_block_move): Ditto. - * config/riscv/riscv.opt: Add -mmemcpy-strategy=. - -2023-11-20 Lulu Cheng <chenglulu@loongson.cn> - - * config/loongarch/gnu-user.h (MUSL_ABI_SPEC): Modify suffix. - -2023-11-19 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv-v.cc (emit_vlmax_insn_lra): Optimize constant AVL. - -2023-11-19 Philipp Tomsich <philipp.tomsich@vrull.eu> - - * config/riscv/riscv-protos.h (extract_base_offset_in_addr): Prototype. - * config/riscv/riscv.cc (riscv_fusion_pairs): New enum. - (riscv_tune_param): Add fusible_ops field. - (riscv_tune_param_rocket_tune_info): Initialize new field. - (riscv_tune_param_sifive_7_tune_info): Likewise. - (thead_c906_tune_info): Likewise. - (generic_oo_tune_info): Likewise. - (optimize_size_tune_info): Likewise. - (riscv_macro_fusion_p): New function. - (riscv_fusion_enabled_p): Likewise. - (riscv_macro_fusion_pair_p): Likewise. - (TARGET_SCHED_MACRO_FUSION_P): Define. - (TARGET_SCHED_MACRO_FUSION_PAIR_P): Likewise. - (extract_base_offset_in_addr): Moved into riscv.cc from... - * config/riscv/thead.cc: Here. - Co-authored-by: Raphael Zinsly <rzinsly@ventanamicro.com> - Co-authored-by: Jeff Law <jlaw@ventanamicro.com> - -2023-11-19 Jeff Law <jlaw@ventanamicro.com> - - * config/c6x/c6x.md (mvilc): Add mode to UNSPEC source. - * config/mips/mips.md (rdhwr_synci_step_<mode>): Likewise. - * config/riscv/riscv.md (riscv_frcsr, riscv_frflags): Likewise. - * config/s390/s390.md (@split_stack_call<mode>): Likewise. - (@split_stack_cond_call<mode>): Likewise. - * config/sh/sh.md (sp_switch_1): Likewise. - -2023-11-19 David Malcolm <dmalcolm@redhat.com> - - * diagnostic.h: Include "rich-location.h". - * edit-context.h (class fixit_hint): New forward decl. - * gcc-rich-location.h: Include "rich-location.h". - * genmatch.cc: Likewise. - * pretty-print.h: Likewise. - -2023-11-19 David Malcolm <dmalcolm@redhat.com> - - * Makefile.in (CPPLIB_H): Add libcpp/include/rich-location.h. - * coretypes.h (class rich_location): New forward decl. - -2023-11-19 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv-v.cc (expand_tuple_move): Fix bug. - -2023-11-19 David Malcolm <dmalcolm@redhat.com> - - PR analyzer/107573 - * doc/invoke.texi: Add -Wanalyzer-undefined-behavior-strtok. - -2023-11-18 Xi Ruoyao <xry111@xry111.site> - - * config/loongarch/predicates.md (const_call_insn_operand): - Remove buggy "HAVE_AS_SUPPORT_CALL36" conditions. Change "1" to - "true" to make the coding style consistent. - -2023-11-18 Xi Ruoyao <xry111@xry111.site> - - * config/loongarch/genopts/isa-evolution.in: (lam-bh, lamcas): - Add. - * config/loongarch/loongarch-str.h: Regenerate. - * config/loongarch/loongarch.opt: Regenerate. - * config/loongarch/loongarch-cpucfg-map.h: Regenerate. - * config/loongarch/loongarch-cpu.cc - (ISA_BASE_LA64V110_FEATURES): Include OPTION_MASK_ISA_LAM_BH - and OPTION_MASK_ISA_LAMCAS. - * config/loongarch/sync.md (atomic_add<mode:SHORT>): Use - TARGET_LAM_BH instead of ISA_BASE_IS_LA64V110. Remove empty - lines from assembly output. - (atomic_exchange<mode>_short): Likewise. - (atomic_exchange<mode:SHORT>): Likewise. - (atomic_fetch_add<mode>_short): Likewise. - (atomic_fetch_add<mode:SHORT>): Likewise. - (atomic_cas_value_strong<mode>_amcas): Use TARGET_LAMCAS instead - of ISA_BASE_IS_LA64V110. - (atomic_compare_and_swap<mode>): Likewise. - (atomic_compare_and_swap<mode:GPR>): Likewise. - (atomic_compare_and_swap<mode:SHORT>): Likewise. - * config/loongarch/loongarch.cc (loongarch_asm_code_end): Dump - status if -mlam-bh and -mlamcas if -fverbose-asm. - -2023-11-18 Xi Ruoyao <xry111@xry111.site> - - * config/loongarch/loongarch.cc (loongarch_print_operand): Don't - print dbar 0x700 if TARGET_LD_SEQ_SA. - * config/loongarch/sync.md (atomic_load<mode>): Likewise. - -2023-11-18 Xi Ruoyao <xry111@xry111.site> - - * config/loongarch/loongarch.md (DIV): New mode iterator. - (<optab:ANY_DIV><mode:GPR>3): Don't expand if TARGET_DIV32. - (<optab:ANY_DIV>di3_fake): Disable if TARGET_DIV32. - (*<optab:ANY_DIV><mode:GPR>3): Allow SImode if TARGET_DIV32. - (<optab:ANY_DIV>si3_extended): New insn if TARGET_DIV32. - -2023-11-18 Xi Ruoyao <xry111@xry111.site> - - * config/loongarch/loongarch-def.h: - (loongarch_isa_base_features): Declare. Define it in ... - * config/loongarch/loongarch-cpu.cc - (loongarch_isa_base_features): ... here. - (fill_native_cpu_config): If we know the base ISA of the CPU - model from PRID, use it instead of la64 (v1.0). Check if all - expected features of this base ISA is available, emit a warning - if not. - * config/loongarch/loongarch-opts.cc (config_target_isa): Enable - the features implied by the base ISA if not -march=native. - -2023-11-18 Xi Ruoyao <xry111@xry111.site> - - * config/loongarch/genopts/isa-evolution.in: New data file. - * config/loongarch/genopts/genstr.sh: Translate info in - isa-evolution.in when generating loongarch-str.h, loongarch.opt, - and loongarch-cpucfg-map.h. - * config/loongarch/genopts/loongarch.opt.in (isa_evolution): - New variable. - * config/loongarch/t-loongarch: (loongarch-cpucfg-map.h): New - rule. - (loongarch-str.h): Depend on isa-evolution.in. - (loongarch.opt): Depend on isa-evolution.in. - (loongarch-cpu.o): Depend on loongarch-cpucfg-map.h. - * config/loongarch/loongarch-str.h: Regenerate. - * config/loongarch/loongarch-def.h (loongarch_isa): Add field - for evolution features. Add helper function to enable features - in this field. - Probe native CPU capability and save the corresponding options - into preset. - * config/loongarch/loongarch-cpu.cc (fill_native_cpu_config): - Probe native CPU capability and save the corresponding options - into preset. - (cache_cpucfg): Simplify with C++11-style for loop. - (cpucfg_useful_idx, N_CPUCFG_WORDS): Move to ... - * config/loongarch/loongarch.cc - (loongarch_option_override_internal): Enable the ISA evolution - feature options implied by -march and not explicitly disabled. - (loongarch_asm_code_end): New function, print ISA information as - comments in the assembly if -fverbose-asm. It makes easier to - debug things like -march=native. - (TARGET_ASM_CODE_END): Define. - * config/loongarch/loongarch.opt: Regenerate. - * config/loongarch/loongarch-cpucfg-map.h: Generate. - (cpucfg_useful_idx, N_CPUCFG_WORDS) ... here. - -2023-11-18 Xi Ruoyao <xry111@xry111.site> - - * config/loongarch/genopts/loongarch-strings: - (STR_ISA_BASE_LA64V110): Add. - * config/loongarch/genopts/loongarch.opt.in: - (ISA_BASE_LA64V110): Add. - * config/loongarch/loongarch-def.c - (loongarch_isa_base_strings): Initialize [ISA_BASE_LA64V110] - to STR_ISA_BASE_LA64V110. - * config/loongarch/loongarch.opt: Regenerate. - * config/loongarch/loongarch-str.h: Regenerate. - -2023-11-18 Sebastian Huber <sebastian.huber@embedded-brains.de> - - * doc/invoke.texi (-fprofile-update): Clarify default method. Document - the atomic method behaviour. - * tree-profile.cc (enum counter_update_method): New. - (counter_update): Likewise. - (gen_counter_update): Use counter_update_method. Split the - atomic counter update in two 32-bit atomic operations if - necessary. - (tree_profiling): Select counter_update_method. - -2023-11-18 Sebastian Huber <sebastian.huber@embedded-brains.de> - - * tree-profile.cc (gen_assign_counter_update): New. - (gen_counter_update): Likewise. - (gimple_gen_edge_profiler): Use gen_counter_update(). - (gimple_gen_time_profiler): Likewise. - -2023-11-18 Sebastian Huber <sebastian.huber@embedded-brains.de> - - * config/rtems.h (TARGET_HAVE_LIBATOMIC): Define. - * doc/tm.texi: Regenerate. - * doc/tm.texi.in (TARGET_HAVE_LIBATOMIC): Add. - * target.def (have_libatomic): New. - -2023-11-18 Sebastian Huber <sebastian.huber@embedded-brains.de> - - Revert: - 2023-11-18 Sebastian Huber <sebastian.huber@embedded-brains.de> - - * config/sparc/rtemself.h (SPARC_GCOV_TYPE_SIZE): Define. - * config/sparc/sparc.c (sparc_gcov_type_size): New. - (TARGET_GCOV_TYPE_SIZE): Redefine if SPARC_GCOV_TYPE_SIZE is defined. - * coverage.c (get_gcov_type): Use targetm.gcov_type_size(). - * doc/tm.texi (TARGET_GCOV_TYPE_SIZE): Add hook under "Misc". - * doc/tm.texi.in: Regenerate. - * target.def (gcov_type_size): New target hook. - * targhooks.c (default_gcov_type_size): New. - * targhooks.h (default_gcov_type_size): Declare. - * tree-profile.c (gimple_gen_edge_profiler): Use precision of - gcov_type_node. - (gimple_gen_time_profiler): Likewise. - -2023-11-18 Kito Cheng <kito.cheng@sifive.com> - - * config/riscv/riscv-target-attr.cc - (riscv_target_attr_parser::parse_arch): Use char[] for - std::unique_ptr to prevent mismatched new delete issue. - (riscv_process_one_target_attr): Ditto. - (riscv_process_target_attr): Ditto. - -2023-11-18 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/vector-iterators.md: Refactor iterators. - -2023-11-18 Lulu Cheng <chenglulu@loongson.cn> - - * config/loongarch/sync.md (atomic_load<mode>): New template. - -2023-11-18 Lulu Cheng <chenglulu@loongson.cn> - - * config/loongarch/loongarch-def.h: Add comments. - * config/loongarch/loongarch-opts.h (ISA_BASE_IS_LA64V110): Define macro. - * config/loongarch/loongarch.cc (loongarch_memmodel_needs_rel_acq_fence): - Remove redundant code implementations. - * config/loongarch/sync.md (d): Added QI, HI support. - (atomic_add<mode>): New template. - (atomic_exchange<mode>_short): Likewise. - (atomic_cas_value_strong<mode>_amcas): Likewise.. - (atomic_fetch_add<mode>_short): Likewise. - -2023-11-18 Lulu Cheng <chenglulu@loongson.cn> - - * config.gcc: Support LA664. - * config/loongarch/genopts/loongarch-strings: Likewise. - * config/loongarch/genopts/loongarch.opt.in: Likewise. - * config/loongarch/loongarch-cpu.cc (fill_native_cpu_config): Likewise. - * config/loongarch/loongarch-def.c: Likewise. - * config/loongarch/loongarch-def.h (N_ISA_BASE_TYPES): Likewise. - (ISA_BASE_LA64V110): Define macro. - (N_ARCH_TYPES): Update value. - (N_TUNE_TYPES): Update value. - (CPU_LA664): New macro. - * config/loongarch/loongarch-opts.cc (isa_default_abi): Likewise. - (isa_base_compat_p): Likewise. - * config/loongarch/loongarch-opts.h (TARGET_64BIT): This parameter is enabled - when la_target.isa.base is equal to ISA_BASE_LA64V100 or ISA_BASE_LA64V110. - (TARGET_uARCH_LA664): Define macro. - * config/loongarch/loongarch-str.h (STR_CPU_LA664): Likewise. - * config/loongarch/loongarch.cc (loongarch_cpu_sched_reassociation_width): - Add LA664 support. - * config/loongarch/loongarch.opt: Regenerate. - -2023-11-18 Lulu Cheng <chenglulu@loongson.cn> - Xi Ruoyao <xry111@xry111.site> - - * config.in: Regenerate. - * config/loongarch/loongarch-opts.h (HAVE_AS_SUPPORT_CALL36): Define macro. - * config/loongarch/loongarch.cc (loongarch_legitimize_call_address): - If binutils supports call36, the function call is not split over expand. - * config/loongarch/loongarch.md: Add call36 generation code. - * config/loongarch/predicates.md: Likewise. - * configure: Regenerate. - * configure.ac: Check whether binutils supports call36. - -2023-11-18 David Malcolm <dmalcolm@redhat.com> - - PR analyzer/106147 - * Makefile.in (ANALYZER_OBJS): Add analyzer/infinite-loop.o. - * doc/invoke.texi: Add -fdump-analyzer-infinite-loop and - -Wanalyzer-infinite-loop. Add missing CWE link for - -Wanalyzer-infinite-recursion. - * timevar.def (TV_ANALYZER_INFINITE_LOOPS): New. - -2023-11-17 Robin Dapp <rdapp@ventanamicro.com> - - PR middle-end/112406 - PR middle-end/112552 - * tree-vect-loop.cc (vect_transform_reduction): Pass truth - vectype for mask operand. - -2023-11-17 Jakub Jelinek <jakub@redhat.com> - - PR c++/107571 - * gimplify.cc (expand_FALLTHROUGH_r): Use wi->removed_stmt after - gsi_remove, change the way of passing fallthrough stmt at the end - of sequence to expand_FALLTHROUGH. Diagnose IFN_FALLTHROUGH - with GF_CALL_NOTHROW flag. - (expand_FALLTHROUGH): Change loc into array of 2 location_t elts, - don't test wi.callback_result, instead check whether first - elt is not UNKNOWN_LOCATION and in that case pedwarn with the - second location. - * gimple-walk.cc (walk_gimple_seq_mod): Clear wi->removed_stmt - after the flag has been used. - * internal-fn.def (FALLTHROUGH): Mention in comment the special - meaning of the TREE_NOTHROW/GF_CALL_NOTHROW flag on the calls. - -2023-11-17 Jakub Jelinek <jakub@redhat.com> - - PR tree-optimization/112566 - PR tree-optimization/83171 - * match.pd (ctz(ext(X)) -> ctz(X), popcount(zext(X)) -> popcount(X), - parity(ext(X)) -> parity(X), ffs(ext(X)) -> ffs(X)): New - simplifications. - ( __builtin_ffs (X) == 0 -> X == 0): Use FFS rather than - BUILT_IN_FFS BUILT_IN_FFSL BUILT_IN_FFSLL BUILT_IN_FFSIMAX. - -2023-11-17 Jakub Jelinek <jakub@redhat.com> - - PR tree-optimization/112374 - * tree-vect-loop.cc (check_reduction_path): Perform the cond_fn_p - special case only if op_use_stmt == use_stmt, use as_a rather than - dyn_cast in that case. - -2023-11-17 Richard Biener <rguenther@suse.de> - - Revert: - 2023-11-14 Richard Biener <rguenther@suse.de> - - PR tree-optimization/112281 - * tree-loop-distribution.cc (pg_add_dependence_edges): - Preserve stmt order when the innermost loop has exact - overlap. - -2023-11-17 Georg-Johann Lay <avr@gjlay.de> - - PR target/53372 - * config/avr/avr.cc (avr_asm_named_section) [AVR_SECTION_PROGMEM]: - Only return some .progmem*.data section if the user did not - specify a section attribute. - (avr_section_type_flags) [avr_progmem_p]: Unset SECTION_NOTYPE - in returned section flags. - -2023-11-17 Xi Ruoyao <xry111@xry111.site> - - * config/loongarch/lsx.md (copysign<mode>3): Allow operand[2] to - be an reg_or_vector_same_val_operand. If it's a const vector - with same negative elements, expand the copysign with a bitset - instruction. Otherwise, force it into an register. - * config/loongarch/lasx.md (copysign<mode>3): Likewise. - -2023-11-17 Haochen Gui <guihaoc@gcc.gnu.org> - - PR target/111449 - * config/rs6000/vsx.md (*vsx_le_mem_to_mem_mov_ti): New. - -2023-11-17 Haochen Gui <guihaoc@gcc.gnu.org> - - PR target/111449 - * config/rs6000/altivec.md (cbranchv16qi4): New expand pattern. - * config/rs6000/rs6000.cc (rs6000_generate_compare): Generate - insn sequence for V16QImode equality compare. - * config/rs6000/rs6000.h (MOVE_MAX_PIECES): Define. - (STORE_MAX_PIECES): Define. - -2023-11-17 Li Wei <liwei@loongson.cn> - - * config/loongarch/loongarch.h (CLZ_DEFINED_VALUE_AT_ZERO): - Implement. - (CTZ_DEFINED_VALUE_AT_ZERO): Same. - -2023-11-17 Richard Biener <rguenther@suse.de> - - * dwarf2out.cc (add_AT_die_ref): Assert we do not add - a self-ref DW_AT_abstract_origin or DW_AT_specification. - -2023-11-17 Jiahao Xu <xujiahao@loongson.cn> - - * config/loongarch/loongarch.cc - (loongarch_builtin_vectorization_cost): Adjust. - -2023-11-16 Andrew Pinski <pinskia@gmail.com> - - PR rtl-optimization/112483 - * simplify-rtx.cc (simplify_binary_operation_1) <case COPYSIGN>: - Call simplify_unary_operation for NEG instead of - simplify_gen_unary. - -2023-11-16 Edwin Lu <ewlu@rivosinc.com> - - PR target/111557 - * config/riscv/riscv-c.cc (riscv_cpu_cpp_builtins): update macro name - -2023-11-16 Uros Bizjak <ubizjak@gmail.com> - - PR target/78904 - * config/i386/i386.md (*addqi_ext2<mode>_0): - New define_insn_and_split pattern. - (*subqi_ext2<mode>_0): Ditto. - (*<code>qi_ext2<mode>_0): Ditto. - -2023-11-16 John David Anglin <danglin@gcc.gnu.org> - - PR rtl-optimization/112415 - * config/pa/pa.cc (pa_legitimate_address_p): Allow 14-bit - displacements before reload. Simplify logic flow. Revise - comments. - * config/pa/pa.h (TARGET_ELF64): New define. - (INT14_OK_STRICT): Update define and comment. - * config/pa/pa64-linux.h (TARGET_ELF64): Define. - * config/pa/predicates.md (base14_operand): Don't check - alignment of short displacements. - (integer_store_memory_operand): Don't return true when - reload_in_progress is true. Remove INT_5_BITS check. - (floating_point_store_memory_operand): Don't return true when - reload_in_progress is true. Use INT14_OK_STRICT to check - whether long displacements are always okay. - -2023-11-16 Uros Bizjak <ubizjak@gmail.com> - - PR target/112567 - * config/i386/i386.md (*<any_logic:code>qi_ext<mode>_1_slp): - Fix generation of invalid RTX in split pattern. - -2023-11-16 David Malcolm <dmalcolm@redhat.com> - - * diagnostic.cc (diagnostic_context::set_option_hooks): Add - "lang_mask" param. - * diagnostic.h (diagnostic_context::option_enabled_p): Update for - move of m_lang_mask. - (diagnostic_context::set_option_hooks): Add "lang_mask" param. - (diagnostic_context::get_lang_mask): New. - (diagnostic_context::m_lang_mask): Move into m_option_callbacks, - thus making private. - * lto-wrapper.cc (main): Update for new lang_mask param of - set_option_hooks. - * toplev.cc (init_asm_output): Use get_lang_mask. - (general_init): Move initialization of global_dc's lang_mask to - new lang_mask param of set_option_hooks. - -2023-11-16 Tamar Christina <tamar.christina@arm.com> - - PR tree-optimization/111878 - * tree-vect-loop-manip.cc (find_loop_location): Skip edges check if - latch incorrect. - -2023-11-16 Kito Cheng <kito.cheng@sifive.com> - - * config.gcc (riscv): Add riscv-target-attr.o. - * config/riscv/riscv-protos.h (riscv_declare_function_size) New. - (riscv_option_valid_attribute_p): New. - (riscv_override_options_internal): New. - (struct riscv_tune_info): New. - (riscv_parse_tune): New. - * config/riscv/riscv-target-attr.cc - (class riscv_target_attr_parser): New. - (struct riscv_attribute_info): New. - (riscv_attributes): New. - (riscv_target_attr_parser::parse_arch): New. - (riscv_target_attr_parser::handle_arch): New. - (riscv_target_attr_parser::handle_cpu): New. - (riscv_target_attr_parser::handle_tune): New. - (riscv_target_attr_parser::update_settings): New. - (riscv_process_one_target_attr): New. - (num_occurences_in_str): New. - (riscv_process_target_attr): New. - (riscv_option_valid_attribute_p): New. - * config/riscv/riscv.cc: Include target-globals.h and - riscv-subset.h. - (struct riscv_tune_info): Move to riscv-protos.h. - (get_tune_str): New. - (riscv_parse_tune): New parameter null_p. - (riscv_declare_function_size): New. - (riscv_option_override): Build target_option_default_node and - target_option_current_node. - (riscv_save_restore_target_globals): New. - (riscv_option_restore): New. - (riscv_previous_fndecl): New. - (riscv_set_current_function): Apply the target attribute. - (TARGET_OPTION_RESTORE): Define. - (TARGET_OPTION_VALID_ATTRIBUTE_P): Ditto. - * config/riscv/riscv.h (SWITCHABLE_TARGET): Define to 1. - (ASM_DECLARE_FUNCTION_SIZE) Define. - * config/riscv/riscv.opt (mtune=): Add Save attribute. - (mcpu=): Ditto. - (mcmodel=): Ditto. - * config/riscv/t-riscv: Add build rule for riscv-target-attr.o - * doc/extend.texi: Add doc for target attribute. - -2023-11-16 Kito Cheng <kito.cheng@sifive.com> - - PR target/112478 - * config/riscv/riscv.cc (riscv_save_return_addr_reg_p): Check ra - is ever lived. - -2023-11-16 liuhongt <hongtao.liu@intel.com> - - PR target/112532 - * config/i386/mmx.md (*vec_dup<mode>): Extend for V4HI and - V2HI. - -2023-11-16 Jakub Jelinek <jakub@redhat.com> - - PR target/112526 - * config/i386/i386.md - (mov imm,%rax; mov %rdi,%rdx; mulx %rax -> mov imm,%rdx; mulx %rdi): - Verify in define_peephole2 that operands[2] dies or is overwritten - at the end of multiplication. - -2023-11-16 Jakub Jelinek <jakub@redhat.com> - - PR tree-optimization/112536 - * tree-vect-slp.cc (arg0_map): New variable. - (vect_get_operand_map): For IFN_CLZ or IFN_CTZ, return arg0_map. - -2023-11-16 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - PR middle-end/112554 - * tree-vect-loop.cc (vect_determine_partial_vectors_and_peeling): - Clear SELECT_VL_P for non-partial vectorization. - -2023-11-16 Hongyu Wang <hongyu.wang@intel.com> - - * config/i386/sse.md (vec_extract_hi_<mode>): Add noavx512vl - alternative with attr addr gpr16 and "jm" constraint. - (vec_extract_hi_<mode>): Likewise for SF vector modes. - (@vec_extract_hi_<mode>): Likewise. - (*vec_extractv2ti): Likewise. - (vec_set_hi_<mode><mask_name>): Likewise. - * config/i386/mmx.md (@sse4_1_insertps_<mode>): Correct gpr16 attr for - each alternative. - -2023-11-15 Uros Bizjak <ubizjak@gmail.com> - - PR target/78904 - * config/i386/i386.md (*movstrictqi_ext<mode>_1): New insn pattern. - (*addqi_ext<mode>_2_slp): New define_insn_and_split pattern. - (*subqi_ext<mode>_2_slp): Ditto. - (*<any_logic:code>qi_ext<mode>_2_slp): Ditto. - -2023-11-15 Patrick O'Neill <patrick@rivosinc.com> - - * common/config/riscv/riscv-common.cc - (riscv_subset_list::parse_std_ext): Emit an error and skip to - the next extension when a non-canonical ordering is detected. - -2023-11-15 Bernhard Reutner-Fischer <aldot@gcc.gnu.org> - - * gcc-rich-location.cc (maybe_range_label_for_tree_type_mismatch::get_text): - Revert using the macro CAN_HAVE_LOCATION_P. - -2023-11-15 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - PR target/112447 - * config/riscv/riscv-vsetvl.cc (pre_vsetvl::emit_vsetvl): Insert - local vsetvl info before LCM suggested one. - Tested-by: Patrick O'Neill <patrick@rivosinc.com> # pre-commit-CI #679 - Co-developed-by: Vineet Gupta <vineetg@rivosinc.com> - -2023-11-15 Vineet Gupta <vineetg@rivosinc.com> - - * config/riscv/riscv.cc (riscv_sign_extend_if_not_subreg_prom): New. - * (riscv_extend_comparands): Call New function on operands. - -2023-11-15 Uros Bizjak <ubizjak@gmail.com> - - * config/i386/i386.md (*addqi_ext<mode>_1_slp): - Add "&& " before "reload_completed" in split condition. - (*subqi_ext<mode>_1_slp): Ditto. - (*<any_logic:code>qi_ext<mode>_1_slp): Ditto. - -2023-11-15 Uros Bizjak <ubizjak@gmail.com> - - PR target/112540 - * config/i386/i386.md (*addqi_ext<mode>_1_slp): - Correct operand numbers in split pattern. Replace !Q constraint - of operand 1 with !qm. Add insn constrain. - (*subqi_ext<mode>_1_slp): Ditto. - (*<any_logic:code>qi_ext<mode>_1_slp): Ditto. - -2023-11-15 Thomas Schwinge <thomas@codesourcery.com> - - * doc/extend.texi (Nvidia PTX Built-in Functions): Fix - copy'n'paste-o in '__builtin_nvptx_brev' description. - -2023-11-15 Roger Sayle <roger@nextmovesoftware.com> - Thomas Schwinge <thomas@codesourcery.com> - - * config/nvptx/nvptx.md (UNSPEC_BITREV): Delete. - (bitrev<mode>2): Represent using bitreverse. - -2023-11-15 Andrew Stubbs <ams@codesourcery.com> - Andrew Jenner <andrew@codesourcery.com> - - * config/gcn/constraints.md: Add "a" AVGPR constraint. - * config/gcn/gcn-valu.md (*mov<mode>): Add AVGPR alternatives. - (*mov<mode>_4reg): Likewise. - (@mov<mode>_sgprbase): Likewise. - (gather<mode>_insn_1offset<exec>): Likewise. - (gather<mode>_insn_1offset_ds<exec>): Likewise. - (gather<mode>_insn_2offsets<exec>): Likewise. - (scatter<mode>_expr<exec_scatter>): Likewise. - (scatter<mode>_insn_1offset_ds<exec_scatter>): Likewise. - (scatter<mode>_insn_2offsets<exec_scatter>): Likewise. - * config/gcn/gcn.cc (MAX_NORMAL_AVGPR_COUNT): Define. - (gcn_class_max_nregs): Handle AVGPR_REGS and ALL_VGPR_REGS. - (gcn_hard_regno_mode_ok): Likewise. - (gcn_regno_reg_class): Likewise. - (gcn_spill_class): Allow spilling to AVGPRs on TARGET_CDNA1_PLUS. - (gcn_sgpr_move_p): Handle AVGPRs. - (gcn_secondary_reload): Reload AVGPRs via VGPRs. - (gcn_conditional_register_usage): Handle AVGPRs. - (gcn_vgpr_equivalent_register_operand): New function. - (gcn_valid_move_p): Check for validity of AVGPR moves. - (gcn_compute_frame_offsets): Handle AVGPRs. - (gcn_memory_move_cost): Likewise. - (gcn_register_move_cost): Likewise. - (gcn_vmem_insn_p): Handle TYPE_VOP3P_MAI. - (gcn_md_reorg): Handle AVGPRs. - (gcn_hsa_declare_function_name): Likewise. - (print_reg): Likewise. - (gcn_dwarf_register_number): Likewise. - * config/gcn/gcn.h (FIRST_AVGPR_REG): Define. - (AVGPR_REGNO): Define. - (LAST_AVGPR_REG): Define. - (SOFT_ARG_REG): Update. - (FRAME_POINTER_REGNUM): Update. - (DWARF_LINK_REGISTER): Update. - (FIRST_PSEUDO_REGISTER): Update. - (AVGPR_REGNO_P): Define. - (enum reg_class): Add AVGPR_REGS and ALL_VGPR_REGS. - (REG_CLASS_CONTENTS): Add new register classes and add entries for - AVGPRs to all classes. - (REGISTER_NAMES): Add AVGPRs. - * config/gcn/gcn.md (FIRST_AVGPR_REG, LAST_AVGPR_REG): Define. - (AP_REGNUM, FP_REGNUM): Update. - (define_attr "type"): Add vop3p_mai. - (define_attr "unit"): Handle vop3p_mai. - (define_attr "gcn_version"): Add "cdna2". - (define_attr "enabled"): Handle cdna2. - (*mov<mode>_insn): Add AVGPR alternatives. - (*movti_insn): Likewise. - * config/gcn/mkoffload.cc (isa_has_combined_avgprs): New. - (process_asm): Process avgpr_count. - * config/gcn/predicates.md (gcn_avgpr_register_operand): New. - (gcn_avgpr_hard_register_operand): New. - * doc/md.texi: Document the "a" constraint. - -2023-11-15 Andrew Stubbs <ams@codesourcery.com> - - * config/gcn/gcn-valu.md (mov<mode>_sgprbase): Add @ modifier. - (reload_in<mode>): Delete. - (reload_out<mode>): Delete. - * config/gcn/gcn.cc (CODE_FOR): Delete. - (get_code_for_##PREFIX##vN##SUFFIX): Delete. - (CODE_FOR_OP): Delete. - (get_code_for_##PREFIX): Delete. - (gcn_secondary_reload): Replace "get_code_for" with "code_for". - -2023-11-15 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com> - - * config/s390/t-s390: Generate s390-gen-builtins.h without - linemarkers. - -2023-11-15 Richard Biener <rguenther@suse.de> - - PR tree-optimization/112282 - * tree-if-conv.cc (ifcvt_hoist_invariants): Only hoist from - the loop header. - -2023-11-15 Richard Biener <rguenther@suse.de> - - * tree-vect-slp.cc (vect_slp_region): Also clear visited flag when - we skipped an instance due to -fdbg-cnt. - -2023-11-15 Xi Ruoyao <xry111@xry111.site> - - * config/loongarch/loongarch.cc - (loongarch_memmodel_needs_release_fence): Remove. - (loongarch_cas_failure_memorder_needs_acquire): New static - function. - (loongarch_print_operand): Redefine 'G' for the barrier on CAS - failure. - * config/loongarch/sync.md (atomic_cas_value_strong<mode>): - Remove the redundant barrier before the LL instruction, and - emit an acquire barrier on failure if needed by - failure_memorder. - (atomic_cas_value_cmp_and_7_<mode>): Likewise. - (atomic_cas_value_add_7_<mode>): Remove the unnecessary barrier - before the LL instruction. - (atomic_cas_value_sub_7_<mode>): Likewise. - (atomic_cas_value_and_7_<mode>): Likewise. - (atomic_cas_value_xor_7_<mode>): Likewise. - (atomic_cas_value_or_7_<mode>): Likewise. - (atomic_cas_value_nand_7_<mode>): Likewise. - (atomic_cas_value_exchange_7_<mode>): Likewise. - -2023-11-15 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv-v.cc (expand_vector_init_trailing_same_elem): New function. - (expand_vec_init): Add trailing optimization. - -2023-11-15 Pan Li <pan2.li@intel.com> - - * config/riscv/riscv-v.cc (rvv_builder::get_merge_scalar_mask): - Add inner_mode mask arg for mask int mode. - (get_repeating_sequence_dup_machine_mode): Add mask_bit_mode arg - to get the good enough vector int mode on precision. - (expand_vector_init_merge_repeating_sequence): Pass required args - to above func. - -2023-11-15 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - PR target/112535 - * config/riscv/riscv.cc (riscv_legitimate_address_p): Disallow RVV modes base address. - -2023-11-15 David Malcolm <dmalcolm@redhat.com> - - * json.cc (selftest::assert_print_eq): Add "loc" param and use - ASSERT_STREQ_AT. - (ASSERT_PRINT_EQ): New macro. - (selftest::test_writing_objects): Use ASSERT_PRINT_EQ to capture - source location of assertion. - (selftest::test_writing_arrays): Likewise. - (selftest::test_writing_float_numbers): Likewise. - (selftest::test_writing_integer_numbers): Likewise. - (selftest::test_writing_strings): Likewise. - (selftest::test_writing_literals): Likewise. - -2023-11-14 David Malcolm <dmalcolm@redhat.com> - - PR analyzer/103533 - * doc/invoke.texi (Static Analyzer Options): Add the six - -Wanalyzer-tainted-* warnings. Update documentation of each - warning to reflect removed requirement to use - -fanalyzer-checker=taint. Remove discussion of - -fanalyzer-checker=taint. - -2023-11-14 David Malcolm <dmalcolm@redhat.com> - - * diagnostic-format-json.cc - (json_output_format::on_end_diagnostic): Update calls to m_context - callbacks to use member functions; tighten up scopes. - * diagnostic-format-sarif.cc (sarif_builder::make_result_object): - Likewise. - (sarif_builder::make_reporting_descriptor_object_for_warning): - Likewise. - * diagnostic.cc (diagnostic_context::initialize): Update for - callbacks being moved into m_option_callbacks and being renamed. - (diagnostic_context::set_option_hooks): New. - (diagnostic_option_classifier::classify_diagnostic): Update call - to global_dc->m_option_enabled to use option_enabled_p. - (diagnostic_context::print_option_information): Update calls to - m_context callbacks to use member functions; tighten up scopes. - (diagnostic_context::diagnostic_enabled): Likewise. - * diagnostic.h (diagnostic_option_enabled_cb): New typedef. - (diagnostic_make_option_name_cb): New typedef. - (diagnostic_make_option_url_cb): New typedef. - (diagnostic_context::option_enabled_p): New. - (diagnostic_context::make_option_name): New. - (diagnostic_context::make_option_url): New. - (diagnostic_context::set_option_hooks): New decl. - (diagnostic_context::m_option_enabled): Rename to - m_option_enabled_cb and move within m_option_callbacks, using - typedef. - (diagnostic_context::m_option_state): Move within - m_option_callbacks. - (diagnostic_context::m_option_name): Rename to - m_make_option_name_cb and move within m_option_callbacks, using - typedef. - (diagnostic_context::m_get_option_url): Likewise, renaming to - m_make_option_url_cb. - * lto-wrapper.cc (print_lto_docs_link): Update call to m_context - callback to use member function. - (main): Use diagnostic_context::set_option_hooks. - * opts-diagnostic.h (option_name): Make context param const. - (get_option_url): Likewise. - * opts.cc (option_name): Likewise. - (get_option_url): Likewise. - * toplev.cc (general_init): Use - diagnostic_context::set_option_hooks. - -2023-11-14 David Malcolm <dmalcolm@redhat.com> - - * selftest-diagnostic.cc - (test_diagnostic_context::test_diagnostic_context): Use - diagnostic_start_span. - * tree-diagnostic-path.cc (struct event_range): Likewise. - -2023-11-14 David Malcolm <dmalcolm@redhat.com> - - * diagnostic-show-locus.cc (diagnostic_context::show_locus): - Update for renaming of text callbacks fields. - * diagnostic.cc (diagnostic_context::initialize): Likewise. - * diagnostic.h (class diagnostic_context): Add "friend" for - accessors to m_text_callbacks. - (diagnostic_context::m_text_callbacks): Make private, and add an - "m_" prefix to field names. - (diagnostic_starter): Convert from macro to inline function. - (diagnostic_start_span): New. - (diagnostic_finalizer): Convert from macro to inline function. - -2023-11-14 David Malcolm <dmalcolm@redhat.com> - - * diagnostic.h (diagnostic_ready_p): Convert from macro to inline - function. - -2023-11-14 Uros Bizjak <ubizjak@gmail.com> - - PR target/78904 - * config/i386/i386.md (*addqi_ext<mode>_1_slp): - New define_insn_and_split pattern. - (*subqi_ext<mode>_1_slp): Ditto. - (*<any_logic:code>qi_ext<mode>_1_slp): Ditto. - -2023-11-14 Andrew Stubbs <ams@codesourcery.com> - - PR target/112481 - * expr.cc (store_constructor): Use OPTAB_WIDEN for mask adjustment. - -2023-11-14 David Malcolm <dmalcolm@redhat.com> - - * diagnostic-format-sarif.cc (sarif_builder::get_sarif_column): - Use m_context's file_cache. - (sarif_builder::maybe_make_artifact_content_object): Likewise. - (sarif_builder::get_source_lines): Likewise. - * diagnostic-show-locus.cc - (exploc_with_display_col::exploc_with_display_col): Add file_cache - param. - (layout::m_file_cache): New field. - (make_range): Add file_cache param. - (selftest::test_layout_range_for_single_point): Create and use a - temporary file_cache. - (selftest::test_layout_range_for_single_line): Likewise. - (selftest::test_layout_range_for_multiple_lines): Likewise. - (layout::layout): Initialize m_file_cache from the context and use it. - (layout::maybe_add_location_range): Use m_file_cache. - (layout::calculate_x_offset_display): Likewise. - (get_affected_range): Add file_cache param. - (get_printed_columns): Likewise. - (line_corrections::line_corrections): Likewwise. - (line_corrections::m_file_cache): New field. - (source_line::source_line): Add file_cache param. - (line_corrections::add_hint): Use m_file_cache. - (layout::print_trailing_fixits): Likewise. - (layout::print_line): Likewise. - (selftest::test_layout_x_offset_display_utf8): Create and use a - temporary file_cache. - (selftest::test_layout_x_offset_display_tab): Likewise. - (selftest::test_diagnostic_show_locus_one_liner_utf8): Likewise. - (selftest::test_add_location_if_nearby): Pass global_dc's - file_cache to temp_source_file ctor. - (selftest::test_overlapped_fixit_printing): Create and use a - temporary file_cache. - (selftest::test_overlapped_fixit_printing_utf8): Likewise. - (selftest::test_overlapped_fixit_printing_2): Use dc's file_cache. - * diagnostic.cc (diagnostic_context::initialize): Always create a - file_cache. - (diagnostic_context::initialize_input_context): Assume - m_file_cache has already been created. - (diagnostic_context::create_edit_context): Pass m_file_cache to - edit_context. - (convert_column_unit): Add file_cache param. - (diagnostic_context::converted_column): Use context's file_cache. - (print_parseable_fixits): Add file_cache param. - (diagnostic_context::report_diagnostic): Use context's file_cache. - (selftest::test_print_parseable_fixits_none): Create and use a - temporary file_cache. - (selftest::test_print_parseable_fixits_insert): Likewise. - (selftest::test_print_parseable_fixits_remove): Likewise. - (selftest::test_print_parseable_fixits_replace): Likewise. - (selftest::test_print_parseable_fixits_bytes_vs_display_columns): - Likewise. - * diagnostic.h (diagnostic_context::file_cache_init): Delete. - (diagnostic_context::get_file_cache): Convert return type from - pointer to reference. - * edit-context.cc (edited_file::get_file_cache): New. - (edited_file::m_edit_context): New. - (edit_context::edit_context): Add file_cache param. - (edit_context::get_or_insert_file): Pass this to edited_file's - ctor. - (edited_file::edited_file): Add edit_context param. - (edited_file::print_content): Use get_file_cache. - (edited_file::print_diff_hunk): Likewise. - (edited_file::print_run_of_changed_lines): Likewise. - (edited_file::get_or_insert_line): Likewise. - (edited_file::get_num_lines): Likewise. - (edited_line::edited_line): Pass in file_cache and use it. - (selftest::test_get_content): Create and use a - temporary file_cache. - (selftest::test_applying_fixits_insert_before): Likewise. - (selftest::test_applying_fixits_insert_after): Likewise. - (selftest::test_applying_fixits_insert_after_at_line_end): - Likewise. - (selftest::test_applying_fixits_insert_after_failure): Likewise. - (selftest::test_applying_fixits_insert_containing_newline): - Likewise. - (selftest::test_applying_fixits_growing_replace): Likewise. - (selftest::test_applying_fixits_shrinking_replace): Likewise. - (selftest::test_applying_fixits_replace_containing_newline): - Likewise. - (selftest::test_applying_fixits_remove): Likewise. - (selftest::test_applying_fixits_multiple): Likewise. - (selftest::test_applying_fixits_multiple_lines): Likewise. - (selftest::test_applying_fixits_modernize_named_init): Likewise. - (selftest::test_applying_fixits_modernize_named_init): Likewise. - (selftest::test_applying_fixits_unreadable_file): Likewise. - (selftest::test_applying_fixits_line_out_of_range): Likewise. - (selftest::test_applying_fixits_column_validation): Likewise. - (selftest::test_applying_fixits_column_validation): Likewise. - (selftest::test_applying_fixits_column_validation): Likewise. - (selftest::test_applying_fixits_column_validation): Likewise. - * edit-context.h (edit_context::edit_context): Add file_cache - param. - (edit_context::get_file_cache): New. - (edit_context::m_file_cache): New. - * final.cc: Include "diagnostic.h". - (asm_show_source): Use global_dc's file_cache. - * gcc-rich-location.cc (blank_line_before_p): Add file_cache - param. - (use_new_line): Likewise. - (gcc_rich_location::add_fixit_insert_formatted): Use global dc's - file_cache. - * input.cc (diagnostic_file_cache_init): Delete. - (diagnostic_context::file_cache_init): Delete. - (diagnostics_file_cache_forcibly_evict_file): Delete. - (file_cache::missing_trailing_newline_p): New. - (file_cache::evicted_cache_tab_entry): Don't call - diagnostic_file_cache_init. - (location_get_source_line): Delete. - (get_source_text_between): Add file_cache param. - (get_source_file_content): Delete. - (location_missing_trailing_newline): Delete. - (location_compute_display_column): Add file_cache param. - (dump_location_info): Create and use temporary file_cache. - (get_substring_ranges_for_loc): Add file_cache param. - (get_location_within_string): Likewise. - (get_source_range_for_char): Likewise. - (get_num_source_ranges_for_substring): Likewise. - (selftest::test_reading_source_line): Create and use temporary - file_cache. - (selftest::lexer_test::m_file_cache): New field. - (selftest::assert_char_at_range): Use test.m_file_cache. - (selftest::assert_num_substring_ranges): Likewise. - (selftest::assert_has_no_substring_ranges): Likewise. - (selftest::test_lexer_string_locations_concatenation_2): Likewise. - * input.h (class file_cache): New forward decl. - (location_compute_display_column): Add file_cache param. - (location_get_source_line): Delete. - (get_source_text_between): Add file_cache param. - (get_source_file_content): Delete. - (location_missing_trailing_newline): Delete. - (file_cache::missing_trailing_newline_p): New decl. - (diagnostics_file_cache_forcibly_evict_file): Delete. - * selftest.cc (named_temp_file::named_temp_file): Add file_cache - param. - (named_temp_file::~named_temp_file): Optionally evict the file - from the given file_cache. - (temp_source_file::temp_source_file): Add file_cache param. - * selftest.h (class file_cache): New forward decl. - (named_temp_file::named_temp_file): Add file_cache param. - (named_temp_file::m_file_cache): New field. - (temp_source_file::temp_source_file): Add file_cache param. - * substring-locations.h (get_location_within_string): Add - file_cache param. - -2023-11-14 David Malcolm <dmalcolm@redhat.com> - - * diagnostic-format-json.cc: Use type-specific "set_*" functions - of json::object to avoid naked new of json value subclasses. - * diagnostic-format-sarif.cc: Likewise. - * gcov.cc: Likewise. - * json.cc (object::set_string): New. - (object::set_integer): New. - (object::set_float): New. - (object::set_bool): New. - (selftest::test_writing_objects): Use object::set_string. - * json.h (object::set_string): New decl. - (object::set_integer): New decl. - (object::set_float): New decl. - (object::set_bool): New decl. - * optinfo-emit-json.cc: Use type-specific "set_*" functions of - json::object to avoid naked new of json value subclasses. - * timevar.cc: Likewise. - * tree-diagnostic-path.cc: Likewise. - -2023-11-14 Andrew MacLeod <amacleod@redhat.com> - - PR tree-optimization/112509 - * tree-vrp.cc (find_case_label_range): Create range from case labels. - -2023-11-14 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com> - - * config/s390/s390-builtin-types.def: Add/remove types. - * config/s390/s390-builtins.def (s390_vec_scatter_element_flt): - The type for the offset should be UV4SI instead of V4SF. - -2023-11-14 Saurabh Jha <saurabh.jha@arm.com> - - PR target/112337 - * config/arm/arm.cc (mve_vector_mem_operand): Add a REG_P check for INC - and DEC operations. - -2023-11-14 Richard Biener <rguenther@suse.de> - - PR tree-optimization/111233 - PR tree-optimization/111652 - PR tree-optimization/111727 - PR tree-optimization/111838 - PR tree-optimization/112113 - * tree-ssa-loop-split.cc (patch_loop_exit): Get the new - guard code instead of the old guard stmt. - (split_loop): Adjust. - -2023-11-14 Richard Biener <rguenther@suse.de> - - * tree-loop-distribution.cc (loop_distribution::data_dep_in_cycle_p): - Consider all loops in the nest when looking for - lambda_vector_zerop. - -2023-11-14 Richard Biener <rguenther@suse.de> - - PR tree-optimization/112281 - * tree-loop-distribution.cc (pg_add_dependence_edges): - Preserve stmt order when the innermost loop has exact - overlap. - -2023-11-14 Jakub Jelinek <jakub@redhat.com> - - PR target/112523 - PR ada/112514 - * config/i386/i386.md (<insn><dwi>3_doubleword_lowpart): Move - operands[1] aka low part of input rather than operands[3] aka high - part of input to output if not the same register. - -2023-11-14 Andreas Krebbel <krebbel@linux.ibm.com> - - * config.gcc: Add s390-gen-builtins.h to target_gtfiles. - * config/s390/s390-builtins.h (s390_builtin_types) - (s390_builtin_fn_types, s390_builtin_decls): Add GTY marker. - * config/s390/t-s390 (EXTRA_GTYPE_DEPS): Add s390-gen-builtins.h. - Add build rule for s390-gen-builtins.h. - -2023-11-14 Andreas Krebbel <krebbel@linux.ibm.com> - - * config/s390/s390-c.cc (s390_fn_types_compatible): Add a check - for error_mark_node. - -2023-11-14 Jakub Jelinek <jakub@redhat.com> - - PR c/111309 - * builtins.def (BUILT_IN_CLZG, BUILT_IN_CTZG, BUILT_IN_CLRSBG, - BUILT_IN_FFSG, BUILT_IN_PARITYG, BUILT_IN_POPCOUNTG): New - builtins. - * builtins.cc (fold_builtin_bit_query): New function. - (fold_builtin_1): Use it for - BUILT_IN_{CLZ,CTZ,CLRSB,FFS,PARITY,POPCOUNT}G. - (fold_builtin_2): Use it for BUILT_IN_{CLZ,CTZ}G. - * fold-const-call.cc: Fix comment typo on tm.h inclusion. - (fold_const_call_ss): Handle - CFN_BUILT_IN_{CLZ,CTZ,CLRSB,FFS,PARITY,POPCOUNT}G. - (fold_const_call_sss): New function. - (fold_const_call_1): Call it for 2 argument functions returning - scalar when passed 2 INTEGER_CSTs. - * genmatch.cc (cmp_operand): For function calls also compare - number of arguments. - (fns_cmp): New function. - (dt_node::gen_kids): Sort fns and generic_fns. - (dt_node::gen_kids_1): Handle fns with the same id but different - number of arguments. - * match.pd (CLZ simplifications): Drop checks for defined behavior - at zero. Add variant of simplifications for IFN_CLZ with 2 arguments. - (CTZ simplifications): Drop checks for defined behavior at zero, - don't optimize precisions above MAX_FIXED_MODE_SIZE. Add variant of - simplifications for IFN_CTZ with 2 arguments. - (a != 0 ? CLZ(a) : CST -> .CLZ(a)): Use TREE_TYPE (@3) instead of - type, add BITINT_TYPE handling, create 2 argument IFN_CLZ rather than - one argument. Add variant for matching CLZ with 2 arguments. - (a != 0 ? CTZ(a) : CST -> .CTZ(a)): Similarly. - * gimple-lower-bitint.cc (bitint_large_huge::lower_bit_query): New - method. - (bitint_large_huge::lower_call): Use it for IFN_{CLZ,CTZ,CLRSB,FFS} - and IFN_{PARITY,POPCOUNT} calls. - * gimple-range-op.cc (cfn_clz::fold_range): Don't check - CLZ_DEFINED_VALUE_AT_ZERO for m_gimple_call_internal_p, instead - assume defined value at zero if the call has 2 arguments and use - second argument value for that case. - (cfn_ctz::fold_range): Similarly. - (gimple_range_op_handler::maybe_builtin_call): Use op_cfn_clz_internal - or op_cfn_ctz_internal only if internal fn call has 2 arguments and - set m_op2 in that case. - * tree-vect-patterns.cc (vect_recog_ctz_ffs_pattern, - vect_recog_popcount_clz_ctz_ffs_pattern): For value defined at zero - use second argument of calls if present, otherwise assume UB at zero, - create 2 argument .CLZ/.CTZ calls if needed. - * tree-vect-stmts.cc (vectorizable_call): Handle 2 argument .CLZ/.CTZ - calls. - * tree-ssa-loop-niter.cc (build_cltz_expr): Create 2 argument - .CLZ/.CTZ calls if needed. - * tree-ssa-forwprop.cc (simplify_count_trailing_zeroes): Create 2 - argument .CTZ calls if needed. - * tree-ssa-phiopt.cc (cond_removal_in_builtin_zero_pattern): Handle - 2 argument .CLZ/.CTZ calls, handle BITINT_TYPE, create 2 argument - .CLZ/.CTZ calls. - * doc/extend.texi (__builtin_clzg, __builtin_ctzg, __builtin_clrsbg, - __builtin_ffsg, __builtin_parityg, __builtin_popcountg): Document. - -2023-11-14 Xi Ruoyao <xry111@xry111.site> - - PR target/112330 - * config/loongarch/genopts/loongarch.opt.in: Add - -m[no]-pass-relax-to-as. Change the default of -m[no]-relax to - account conditional branch relaxation support status. - * config/loongarch/loongarch.opt: Regenerate. - * configure.ac (gcc_cv_as_loongarch_cond_branch_relax): Check if - the assembler supports conditional branch relaxation. - * configure: Regenerate. - * config.in: Regenerate. Note that there are some unrelated - changes introduced by r14-5424 (which does not contain a - config.in regeneration). - * config/loongarch/loongarch-opts.h - (HAVE_AS_COND_BRANCH_RELAXATION): Define to 0 if not defined. - * config/loongarch/loongarch-driver.h (ASM_MRELAX_DEFAULT): - Define. - (ASM_MRELAX_SPEC): Define. - (ASM_SPEC): Use ASM_MRELAX_SPEC instead of "%{mno-relax}". - * config/loongarch/loongarch.cc: Take the setting of - -m[no-]relax into account when determining the default of - -mexplicit-relocs=. - * doc/invoke.texi: Document -m[no-]relax and - -m[no-]pass-mrelax-to-as for LoongArch. Update the default - value of -mexplicit-relocs=. - -2023-11-14 liuhongt <hongtao.liu@intel.com> - - PR tree-optimization/112496 - * tree-vect-loop.cc (vectorizable_nonlinear_induction): Return - false when !tree_nop_conversion_p (TREE_TYPE (vectype), - TREE_TYPE (init_expr)). - -2023-11-14 Xi Ruoyao <xry111@xry111.site> - - * config/loongarch/sync.md (mem_thread_fence): Remove redundant - check. - (mem_thread_fence_1): Emit finer-grained DBAR hints for - different memory models, instead of 0. - -2023-11-14 Jakub Jelinek <jakub@redhat.com> - - PR middle-end/112511 - * tree.cc (type_contains_placeholder_1): Handle BITINT_TYPE like - INTEGER_TYPE. - -2023-11-14 Jakub Jelinek <jakub@redhat.com> - Hu, Lin1 <lin1.hu@intel.com> - - PR target/112435 - * config/i386/sse.md (avx512vl_shuf_<shuffletype>32x4_1<mask_name>, - <mask_codefor>avx512dq_shuf_<shuffletype>64x2_1<mask_name>): Add - alternative with just x instead of v constraints and xjm instead of - vm and use vblendps as optimization only with that alternative. - -2023-11-14 liuhongt <hongtao.liu@intel.com> - - PR tree-optimization/105735 - PR tree-optimization/111972 - * tree-scalar-evolution.cc - (analyze_and_compute_bitop_with_inv_effect): Handle bitop with - INTEGER_CST. - -2023-11-13 Arsen Arsenović <arsen@aarsen.me> - - * configure: Regenerate. - * aclocal.m4: Regenerate. - * Makefile.in (LIBDEPS): Remove (potential) ./ prefix from - LIBINTL_DEP. - * doc/install.texi: Document new (notable) flags added by the - optional gettext tree and by AM_GNU_GETTEXT. Document libintl/libc - with gettext dependency. - -2023-11-13 Uros Bizjak <ubizjak@gmail.com> - - * config/i386/i386-expand.h (gen_pushfl): New prototype. - (gen_popfl): Ditto. - * config/i386/i386-expand.cc (ix86_expand_builtin) - [case IX86_BUILTIN_READ_FLAGS]: Use gen_pushfl. - [case IX86_BUILTIN_WRITE_FLAGS]: Use gen_popfl. - * config/i386/i386.cc (gen_pushfl): New function. - (gen_popfl): Ditto. - * config/i386/i386.md (unspec): Add UNSPEC_PUSHFL and UNSPEC_POPFL. - (@pushfl<mode>2): Rename from *pushfl<mode>2. - Rewrite as unspec using UNSPEC_PUSHFL. - (@popfl<mode>1): Rename from *popfl<mode>1. - Rewrite as unspec using UNSPEC_POPFL. - -2023-11-13 Uros Bizjak <ubizjak@gmail.com> - - PR target/112494 - * config/i386/i386.cc (ix86_cc_mode) [default]: Return CCmode. - -2023-11-13 Robin Dapp <rdapp@ventanamicro.com> - - * config/riscv/riscv-vsetvl.cc (source_equal_p): Use pointer - equality for REG_EQUAL. - -2023-11-13 Richard Biener <rguenther@suse.de> - - PR tree-optimization/112495 - * tree-data-ref.cc (runtime_alias_check_p): Reject checks - between different address spaces. - -2023-11-13 Richard Biener <rguenther@suse.de> - - PR middle-end/112487 - * tree-inline.cc (setup_one_parameter): When the parameter - is unused only insert a debug bind when there's not a gross - mismatch in value and declared parameter type. Do not assert - there effectively isn't. - -2023-11-13 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv-v.cc - (rvv_builder::combine_sequence_use_merge_profitable_p): New function. - (expand_vector_init_merge_combine_sequence): Ditto. - (expand_vec_init): Adapt for new optimization. - -2023-11-13 liuhongt <hongtao.liu@intel.com> - - * config/i386/i386-expand.cc - (ix86_expand_vector_init_duplicate): Handle V4HF/V4BF and - V2HF/V2BF. - (ix86_expand_vector_init_one_nonzero): Ditto. - (ix86_expand_vector_init_one_var): Ditto. - (ix86_expand_vector_init_general): Ditto. - (ix86_expand_vector_set_var): Ditto. - (ix86_expand_vector_set): Ditto. - (ix86_expand_vector_extract): Ditto. - * config/i386/mmx.md - (mmxdoublevecmode): Extend to V4HF/V4BF/V2HF/V2BF. - (*mmx_pinsrw): Extend to V4FI_64, add a new alternative (&x, - x, x), add a new define_split after the pattern. - (*mmx_pextrw<mode>): New define_insn. - (mmx_pshufw_1): Rename to .. - (mmx_pshufw<mode>_1): .. this, extend to V4FI_64. - (*mmx_pblendw64): Extend to V4FI_64. - (*vec_dup<mode>): New define_insn. - (vec_setv4hi): Rename to .. - (vec_set<mode>): .. this, and extend to V4FI_64 - (vec_extractv4hihi): Rename to .. - (vec_extract<mode><mmxscalarmodelower>): .. this, and extend - to V4FI_64. - (vec_init<mode><mmxscalarmodelower>): New define_insn. - (*pinsrw): Extend to V2FI_32, add a new alternative (&x, - x, x), and add a new define_split after it. - (*pextrw<mode>): New define_insn. - (vec_setv2hi): Rename to .. - (vec_set<mode>): .. this, extend to V2FI_32. - (vec_extractv2hihi): Rename to .. - (vec_extract<mode><mmxscalarmodelower>): .. this, extend to - V2FI_32. - (*punpckwd): Extend to V2FI_32. - (*pshufw_1): Rename to .. - (*pshufw<mode>_1): .. this, extend to V2FI_32. - (vec_initv2hihi): Rename to .. - (vec_init<mode><mmxscalarmodelower>): .. this, and extend to - V2FI_32. - (*vec_dup<mode>): New define_insn. - * config/i386/sse.md (*vec_extract<mode>): Refine constraint - from v to Yw. - -2023-11-13 Roger Sayle <roger@nextmovesoftware.com> - - * config/arc/arc.md (UNSPEC_ARC_CC_NEZ): New UNSPEC that - represents the carry flag being set if the operand is non-zero. - (adc_f): New define_insn representing adc with updated flags. - (ashrdi3): New define_expand that only handles shifts by 1. - (ashrdi3_cnt1): New pre-reload define_insn_and_split. - (lshrdi3): New define_expand that only handles shifts by 1. - (lshrdi3_cnt1): New pre-reload define_insn_and_split. - (rrcsi2): New define_insn for rrc (SImode rotate right through carry). - (rrcsi2_carry): Likewise for rrc.f, as above but updating flags. - (rotldi3): New define_expand that only handles rotates by 1. - (rotldi3_cnt1): New pre-reload define_insn_and_split. - (rotrdi3): New define_expand that only handles rotates by 1. - (rotrdi3_cnt1): New pre-reload define_insn_and_split. - (lshrsi3_cnt1_carry): New define_insn for lsr.f. - (ashrsi3_cnt1_carry): New define_insn for asr.f. - (btst_0_carry): New define_insn for asr.f without result. - -2023-11-13 Roger Sayle <roger@nextmovesoftware.com> - - * config/arc/arc.cc (TARGET_FOLD_BUILTIN): Define to - arc_fold_builtin. - (arc_fold_builtin): New function. Convert ARC_BUILTIN_SWAP - into a rotate. Evaluate ARC_BUILTIN_NORM and - ARC_BUILTIN_NORMW of constant arguments. - * config/arc/arc.md (UNSPEC_ARC_SWAP): Delete. - (normw): Make output template/assembler whitespace consistent. - (swap): Remove define_insn, only use of SWAP UNSPEC. - * config/arc/builtins.def: Tweak indentation. - (SWAP): Expand using rotlsi2_cnt16 instead of using swap. - -2023-11-13 Roger Sayle <roger@nextmovesoftware.com> - - * config/i386/i386.md (<insn><dwi>3_doubleword_lowpart): New - define_insn_and_split to optimize register usage of doubleword - right shifts followed by truncation. - -2023-11-13 Jakub Jelinek <jakub@redhat.com> - - * config/i386/constraints.md: Remove j constraint letter from list of - unused letters. - -2023-11-13 Xi Ruoyao <xry111@xry111.site> - - PR rtl-optimization/112483 - * simplify-rtx.cc (simplify_binary_operation_1) <case COPYSIGN>: - Fix the simplification of (fcopysign x, NEGATIVE_CONST). - -2023-11-13 Jakub Jelinek <jakub@redhat.com> - - PR tree-optimization/111967 - * gimple-range-cache.cc (block_range_cache::set_bb_range): Grow - m_ssa_ranges to num_ssa_names rather than num_ssa_names + 1. - (block_range_cache::dump): Iterate from 1 rather than 0. Don't use - ssa_name (x) unless m_ssa_ranges[x] is non-NULL. Iterate to - m_ssa_ranges.length () rather than num_ssa_names. - -2023-11-13 Xi Ruoyao <xry111@xry111.site> - - * config/loongarch/loongarch.md (LD_AT_LEAST_32_BIT): New mode - iterator. - (ST_ANY): New mode iterator. - (define_peephole2): Use LD_AT_LEAST_32_BIT instead of GPR and - ST_ANY instead of QHWD for applicable patterns. - -2023-11-13 Xi Ruoyao <xry111@xry111.site> - - PR target/112476 - * config/loongarch/loongarch.cc - (loongarch_expand_vec_cond_mask_expr): Call simplify_gen_subreg - instead of gen_rtx_SUBREG. - -2023-11-13 Pan Li <pan2.li@intel.com> - - * config/riscv/autovec.md: Add bridge mode to lrint and lround - pattern. - * config/riscv/riscv-protos.h (expand_vec_lrint): Add new arg - bridge machine mode. - (expand_vec_lround): Ditto. - * config/riscv/riscv-v.cc (emit_vec_widden_cvt_f_f): New helper - func impl to emit vfwcvt.f.f. - (emit_vec_rounding_to_integer): Handle the HF to DI rounding - with the bridge mode. - (expand_vec_lrint): Reorder the args. - (expand_vec_lround): Ditto. - (expand_vec_lceil): Ditto. - (expand_vec_lfloor): Ditto. - * config/riscv/vector-iterators.md: Add vector HFmode and bridge - mode for converting to DI. - -2023-11-12 Jeff Law <jlaw@ventanamicro.com> - - Revert: - 2023-11-11 Jin Ma <jinma@linux.alibaba.com> - - * haifa-sched.cc (use_or_clobber_starts_range_p): New. - (prune_ready_list): USE or CLOBBER should delay execution - if it starts a new live range. - -2023-11-12 Uros Bizjak <ubizjak@gmail.com> - - * config/i386/i386.md (*stack_protect_set_4s_<mode>_di): - Remove alternative 0. - -2023-11-11 Eric Botcazou <ebotcazou@adacore.com> - - * ipa-cp.cc (print_ipcp_constant_value): Move to... - (values_equal_for_ipcp_p): Deal with VAR_DECLs from the - constant pool. - * ipa-prop.cc (ipa_print_constant_value): ...here. Likewise. - (ipa_print_node_jump_functions_for_edge): Call the function - ipa_print_constant_value to print IPA_JF_CONST elements. - -2023-11-11 Jin Ma <jinma@linux.alibaba.com> - - * haifa-sched.cc (use_or_clobber_starts_range_p): New. - (prune_ready_list): USE or CLOBBER should delay execution - if it starts a new live range. - -2023-11-11 Jakub Jelinek <jakub@redhat.com> - - PR middle-end/112430 - * tree-ssa-math-opts.cc (match_uaddc_usubc): Remove temp_stmts in the - order they were pushed rather than in reverse order. Call - release_defs after gsi_remove. - -2023-11-11 Richard Sandiford <richard.sandiford@arm.com> - - * target.def (mode_switching.backprop): New hook. - * doc/tm.texi.in (TARGET_MODE_BACKPROP): New @hook. - * doc/tm.texi: Regenerate. - * mode-switching.cc (struct bb_info): Add single_succ. - (confluence_info): Add transp field. - (single_succ_confluence_n, single_succ_transfer): New functions. - (backprop_confluence_n, backprop_transfer): Likewise. - (optimize_mode_switching): Use them. Push mode transitions onto - a block's incoming edges, if the backprop hook requires it. - -2023-11-11 Richard Sandiford <richard.sandiford@arm.com> - - * target.def (mode_switching.confluence): New hook. - * doc/tm.texi (TARGET_MODE_CONFLUENCE): New @hook. - * doc/tm.texi.in: Regenerate. - * mode-switching.cc (confluence_info): New variable. - (mode_confluence, forward_confluence_n, forward_transfer): New - functions. - (optimize_mode_switching): Use them to calculate mode_in when - TARGET_MODE_CONFLUENCE is defined. - -2023-11-11 Richard Sandiford <richard.sandiford@arm.com> - - * mode-switching.cc (commit_mode_sets): Use 1-based edge aux values. - -2023-11-11 Richard Sandiford <richard.sandiford@arm.com> - - * target.def (mode_switching.after): Add a regs_live parameter. - * doc/tm.texi: Regenerate. - * config/epiphany/epiphany-protos.h (epiphany_mode_after): Update - accordingly. - * config/epiphany/epiphany.cc (epiphany_mode_needed): Likewise. - (epiphany_mode_after): Likewise. - * config/i386/i386.cc (ix86_mode_after): Likewise. - * config/riscv/riscv.cc (riscv_mode_after): Likewise. - * config/sh/sh.cc (sh_mode_after): Likewise. - * mode-switching.cc (optimize_mode_switching): Likewise. - -2023-11-11 Richard Sandiford <richard.sandiford@arm.com> - - * target.def (mode_switching.needed): Add a regs_live parameter. - * doc/tm.texi: Regenerate. - * config/epiphany/epiphany-protos.h (epiphany_mode_needed): Update - accordingly. - * config/epiphany/epiphany.cc (epiphany_mode_needed): Likewise. - * config/epiphany/mode-switch-use.cc (insert_uses): Likewise. - * config/i386/i386.cc (ix86_mode_needed): Likewise. - * config/riscv/riscv.cc (riscv_mode_needed): Likewise. - * config/sh/sh.cc (sh_mode_needed): Likewise. - * mode-switching.cc (optimize_mode_switching): Likewise. - (create_pre_exit): Likewise, using the DF simulate functions - to calculate the required information. - -2023-11-11 Richard Sandiford <richard.sandiford@arm.com> - - * target.def (mode_switching.eh_handler): New hook. - * doc/tm.texi.in (TARGET_MODE_EH_HANDLER): New @hook. - * doc/tm.texi: Regenerate. - * mode-switching.cc (optimize_mode_switching): Use eh_handler - to get the mode on entry to an exception handler. - -2023-11-11 Richard Sandiford <richard.sandiford@arm.com> - - * mode-switching.cc (optimize_mode_switching): Mark the exit - block as nontransparent if it requires a specific mode. - Handle the entry and exit mode as sibling rather than nested - concepts. Remove outdated comment. - -2023-11-11 Richard Sandiford <richard.sandiford@arm.com> - - * mode-switching.cc (optimize_mode_switching): Initially - compute transparency in a bit-per-block bitmap. - -2023-11-11 Richard Sandiford <richard.sandiford@arm.com> - - * mode-switching.cc (seginfo): Add a prev_mode field. - (new_seginfo): Take and initialize the prev_mode. - (optimize_mode_switching): Update calls accordingly. - Use the recorded modes during the emit phase, rather than - computing one on the fly. - -2023-11-11 Richard Sandiford <richard.sandiford@arm.com> - - * mode-switching.cc (add_seginfo): Replace head pointer with - a pointer to the tail pointer. - (optimize_mode_switching): Update calls accordingly. - -2023-11-11 Richard Sandiford <richard.sandiford@arm.com> - - * mode-switching.cc (optimize_mode_switching): Call - df_note_add_problem. - -2023-11-11 Richard Sandiford <richard.sandiford@arm.com> - - * target.def: Tweak documentation of mode-switching hooks. - * doc/tm.texi.in (OPTIMIZE_MODE_SWITCHING): Tweak documentation. - (NUM_MODES_FOR_MODE_SWITCHING): Likewise. - * doc/tm.texi: Regenerate. - -2023-11-11 Martin Uecker <uecker@tugraz.at> - - PR c/110815 - PR c/112428 - * gimple-ssa-warn-access.cc (pass_waccess::maybe_check_access_sizes): - remove warning for parameters declared with `static`. - -2023-11-11 Joern Rennecke <joern.rennecke@embecosm.com> - - * doc/sourcebuild.texi (Scan the assembly output): Document change. - -2023-11-10 Mao <sray@live.com> - - PR middle-end/110983 - * doc/invoke.texi (Option Summary): Add -fpatchable-function-entry. - -2023-11-10 Maciej W. Rozycki <macro@embecosm.com> - - * config/riscv/riscv.md (length): Fix indentation for branch and - jump length calculation expressions. - -2023-11-10 Eric Botcazou <ebotcazou@adacore.com> - - * fold-const.cc (operand_compare::operand_equal_p) <CONSTRUCTOR>: - Deal with nonempty constant CONSTRUCTORs. - (operand_compare::hash_operand) <CONSTRUCTOR>: Hash DECL_FIELD_OFFSET - and DECL_FIELD_BIT_OFFSET for FIELD_DECLs. - -2023-11-10 Vladimir N. Makarov <vmakarov@redhat.com> - - PR target/112337 - * ira-costs.cc: (validate_autoinc_and_mem_addr_p): New function. - (equiv_can_be_consumed_p): Use it. - -2023-11-10 Richard Sandiford <richard.sandiford@arm.com> - - * read-rtl.cc (md_reader::read_mapping): Allow iterators to - include other iterators. - * doc/md.texi: Document the change. - * config/aarch64/iterators.md (DREG2, VQ2, TX2, DX2, SX2): Include - the iterator that is being duplicated, rather than reproducing it. - (VSTRUCT_D): Redefine using VSTRUCT_[234]D. - (VSTRUCT_Q): Likewise VSTRUCT_[234]Q. - (VSTRUCT_2QD, VSTRUCT_3QD, VSTRUCT_4QD, VSTRUCT_QD): Redefine using - the individual D and Q iterators. - -2023-11-10 Uros Bizjak <ubizjak@gmail.com> - - * config/i386/i386.md (stack_protect_set_1 peephole2): - Explicitly check operand 2 for word_mode. - (stack_protect_set_1 peephole2 #2): Ditto. - (stack_protect_set_2 peephole2): Ditto. - (stack_protect_set_3 peephole2): Ditto. - (*stack_protect_set_4z_<mode>_di): New insn patter. - (*stack_protect_set_4s_<mode>_di): Ditto. - (stack_protect_set_4 peephole2): New peephole2 pattern to - substitute stack protector scratch register clear with unrelated - register initialization involving zero/sign-extend instruction. - -2023-11-10 Uros Bizjak <ubizjak@gmail.com> - - * config/i386/i386.md (shift): Use SAL insted of SLL - for ashift insn mnemonic. - -2023-11-10 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - PR tree-optimization/112438 - * tree-vect-loop.cc (vectorizable_induction): Bugfix when - LOOP_VINFO_USING_SELECT_VL_P. - -2023-11-10 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv-protos.h (enum insn_type): New enum. - * config/riscv/riscv-v.cc - (rvv_builder::combine_sequence_use_slideup_profitable_p): New function. - (expand_vector_init_slideup_combine_sequence): Ditto. - (expand_vec_init): Add slideup combine optimization. - -2023-11-10 Robin Dapp <rdapp@ventanamicro.com> - - PR tree-optimization/112464 - * tree-vect-loop.cc (vectorize_fold_left_reduction): Use - vect_orig_stmt on scalar_dest_def_info. - -2023-11-10 Jin Ma <jinma@linux.alibaba.com> - - * config/riscv/riscv.cc (riscv_for_each_saved_reg): Place the interrupt - operation before the XTheadMemPair. - -2023-11-10 Richard Biener <rguenther@suse.de> - - PR tree-optimization/110221 - * tree-vect-slp.cc (vect_schedule_slp_node): When loop - masking / len is applied make sure to not schedule - intenal defs outside of the loop. - -2023-11-10 Andrew Stubbs <ams@codesourcery.com> - - * expr.cc (store_constructor): Add "and" operation to uniform mask - generation. - -2023-11-10 Andrew Stubbs <ams@codesourcery.com> - - PR target/112308 - * config/gcn/gcn-valu.md (add<mode>3<exec_clobber>): Fix B constraint - and switch to the new format. - (add<mode>3_dup<exec_clobber>): Likewise. - (add<mode>3_vcc<exec_vcc>): Likewise. - (add<mode>3_vcc_dup<exec_vcc>): Likewise. - (add<mode>3_vcc_zext_dup): Likewise. - (add<mode>3_vcc_zext_dup_exec): Likewise. - (add<mode>3_vcc_zext_dup2): Likewise. - (add<mode>3_vcc_zext_dup2_exec): Likewise. - -2023-11-10 Richard Biener <rguenther@suse.de> - - PR middle-end/112469 - * match.pd (cond ? op a : b -> .COND_op (cond, a, b)): Add - missing view_converts. - -2023-11-10 Andrew Stubbs <ams@codesourcery.com> - - * config/gcn/gcn.cc (gcn_expand_reduc_scalar): Add clobber to DImode - min/max instructions. - -2023-11-10 Chenghui Pan <panchenghui@loongson.cn> - - * config/loongarch/lsx.md: Fix instruction name typo in - lsx_vreplgr2vr_<lsxfmt_f> template. - -2023-11-10 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/autovec.md (vec_init<mode><vel>): Split patterns. - -2023-11-10 Pan Li <pan2.li@intel.com> - - Revert: - 2023-11-10 Pan Li <pan2.li@intel.com> - * config/riscv/riscv-v.cc (expand_vector_init_trailing_same_elem): - New fun impl to expand the insn when trailing same elements. - (expand_vec_init): Try trailing same elements when vec_init. - -2023-11-10 Pan Li <pan2.li@intel.com> - - * config/riscv/riscv-v.cc (expand_vector_init_trailing_same_elem): - New fun impl to expand the insn when trailing same elements. - (expand_vec_init): Try trailing same elements when vec_init. - -2023-11-10 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/autovec-opt.md (*cond_copysign<mode>): Remove. - * config/riscv/autovec.md (cond_copysign<mode>): New pattern. - -2023-11-10 Pan Li <pan2.li@intel.com> - - PR target/112432 - * internal-fn.def (LRINT): Add FLOATN support. - (LROUND): Ditto. - (LLRINT): Ditto. - (LLROUND): Ditto. - -2023-11-10 Jeff Law <jlaw@ventanamicro.com> - - * config/h8300/combiner.md (single bit sign_extract): Avoid recently - added patterns for H8/SX. - (single bit zero_extract): New patterns. - -2023-11-10 liuhongt <hongtao.liu@intel.com> - - PR target/112443 - * config/i386/sse.md (*avx2_pcmp<mode>3_4): Fix swap condition - from LT to GT since there's not in the pattern. - (*avx2_pcmp<mode>3_5): Ditto. - -2023-11-10 Jose E. Marchesi <jose.marchesi@oracle.com> - - * config/bpf/bpf.cc (bpf_print_register): Accept modifier code 'W' - to force emitting register names using the wN form. - * config/bpf/bpf.md (*mulsidi3_zeroextend): Force operands to - always use wN written form in pseudo-C assembly syntax. - -2023-11-09 David Malcolm <dmalcolm@redhat.com> - - * diagnostic-show-locus.cc (layout::m_line_table): New field. - (compatible_locations_p): Convert to... - (layout::compatible_locations_p): ...this, replacing uses of - line_table global with m_line_table. - (layout::layout): Convert "richloc" param from a pointer to a - const reference. Initialize m_line_table member. - (layout::maybe_add_location_range): Replace uses of line_table - global with m_line_table. Pass the latter to - linemap_client_expand_location_to_spelling_point. - (layout::print_leading_fixits): Pass m_line_table to - affects_line_p. - (layout::print_trailing_fixits): Likewise. - (gcc_rich_location::add_location_if_nearby): Update for change - to layout ctor params. - (diagnostic_show_locus): Convert to... - (diagnostic_context::maybe_show_locus): ...this, converting - richloc param from a pointer to a const reference. Make "loc" - const. Split out printing part of function to... - (diagnostic_context::show_locus): ...this. - (selftest::test_offset_impl): Update for change to layout ctor - params. - (selftest::test_layout_x_offset_display_utf8): Likewise. - (selftest::test_layout_x_offset_display_tab): Likewise. - (selftest::test_tab_expansion): Likewise. - * diagnostic.h (diagnostic_context::maybe_show_locus): New decl. - (diagnostic_context::show_locus): New decl. - (diagnostic_show_locus): Convert from a decl to an inline function. - * gdbinit.in (break-on-diagnostic): Update from a breakpoint - on diagnostic_show_locus to one on - diagnostic_context::maybe_show_locus. - * genmatch.cc (linemap_client_expand_location_to_spelling_point): - Add "set" param and use it in place of line_table global. - * input.cc (expand_location_1): Likewise. - (expand_location): Update for new param of expand_location_1. - (expand_location_to_spelling_point): Likewise. - (linemap_client_expand_location_to_spelling_point): Add "set" - param and use it in place of line_table global. - * tree-diagnostic-path.cc (event_range::print): Pass line_table - for new param of linemap_client_expand_location_to_spelling_point. - -2023-11-09 Uros Bizjak <ubizjak@gmail.com> - - * config/i386/i386.md (@stack_protect_set_1_<PTR:mode>_<W:mode>): - Use W mode iterator instead of SWI48. Output MOV instead of XOR - for TARGET_USE_MOV0. - (stack_protect_set_1 peephole2): Use integer modes with - mode size <= word mode size for operand 3. - (stack_protect_set_1 peephole2 #2): New peephole2 pattern to - substitute stack protector scratch register clear with unrelated - register initialization, originally in front of stack - protector sequence. - (*stack_protect_set_3_<PTR:mode>_<SWI48:mode>): New insn pattern. - (stack_protect_set_1 peephole2): New peephole2 pattern to - substitute stack protector scratch register clear with unrelated - register initialization involving LEA instruction. - -2023-11-09 Vladimir N. Makarov <vmakarov@redhat.com> - - PR rtl-optimization/110215 - * ira-lives.cc: (add_conflict_from_region_landing_pads): New - function. - (process_bb_node_lives): Use it. - -2023-11-09 Alexandre Oliva <oliva@adacore.com> - - * config/i386/i386.cc (symbolic_base_address_p, - base_address_p): New, factored out from... - (extract_base_offset_in_addr): ... here and extended to - recognize REG+GOTOFF, as in gcc.target/i386/sse2-load-multi.c - and sse2-store-multi.c with PIE enabled by default. - -2023-11-09 Tamar Christina <tamar.christina@arm.com> - - PR tree-optimization/109154 - * config/aarch64/aarch64-sve.md (cond_copysign<mode>): New. - -2023-11-09 Tamar Christina <tamar.christina@arm.com> - - PR tree-optimization/109154 - * config/aarch64/aarch64.md (copysign<GPF:mode>3): Handle - copysign (x, -1). - * config/aarch64/aarch64-simd.md (copysign<mode>3): Likewise. - * config/aarch64/aarch64-sve.md (copysign<mode>3): Likewise. - -2023-11-09 Tamar Christina <tamar.christina@arm.com> - - PR tree-optimization/109154 - * config/aarch64/aarch64.md (<optab><mode>3): Add SVE split case. - * config/aarch64/aarch64-simd.md (ior<mode>3<vczle><vczbe>): Likewise. - * config/aarch64/predicates.md(aarch64_orr_imm_sve_advsimd): New. - -2023-11-09 Tamar Christina <tamar.christina@arm.com> - - PR tree-optimization/109154 - * config/aarch64/aarch64.md (*mov<mode>_aarch64, *movsi_aarch64, - *movdi_aarch64): Add new w -> Z case. - * config/aarch64/iterators.md (Vbtype): Add QI and HI. - -2023-11-09 Tamar Christina <tamar.christina@arm.com> - - PR tree-optimization/109154 - * config/aarch64/aarch64-protos.h (aarch64_simd_special_constant_p, - aarch64_maybe_generate_simd_constant): New. - * config/aarch64/aarch64-simd.md (*aarch64_simd_mov<VQMOV:mode>, - *aarch64_simd_mov<VDMOV:mode>): Add new coden for special constants. - * config/aarch64/aarch64.cc (aarch64_extract_vec_duplicate_wide_int): - Take optional mode. - (aarch64_simd_special_constant_p, - aarch64_maybe_generate_simd_constant): New. - * config/aarch64/aarch64.md (*movdi_aarch64): Add new codegen for - special constants. - * config/aarch64/constraints.md (Dx): new. - -2023-11-09 Tamar Christina <tamar.christina@arm.com> - - PR tree-optimization/109154 - * internal-fn.def (COPYSIGN): New. - * match.pd (UNCOND_BINARY, COND_BINARY): Map IFN_COPYSIGN to - IFN_COND_COPYSIGN. - * optabs.def (cond_copysign_optab, cond_len_copysign_optab): New. - -2023-11-09 Tamar Christina <tamar.christina@arm.com> - - PR tree-optimization/109154 - * match.pd: Add new neg+abs rule, remove inverse copysign rule. - -2023-11-09 Tamar Christina <tamar.christina@arm.com> - - PR tree-optimization/109154 - * match.pd: expand existing copysign optimizations. - -2023-11-09 Tatsuyuki Ishi <ishitatsuyuki@gmail.com> - - PR driver/111605 - * collect2.cc (main): Do not prepend target triple to - -fuse-ld=lld,mold. - -2023-11-09 Richard Biener <rguenther@suse.de> - - PR tree-optimization/111133 - * tree-vect-stmts.cc (vect_build_scatter_store_calls): - Remove and refactor to ... - (vect_build_one_scatter_store_call): ... this new function. - (vectorizable_store): Use vect_check_scalar_mask to record - the SLP node for the mask operand. Code generate scatters - with builtin decls from the main scatter vectorization - path and prepare that for SLP. - * tree-vect-slp.cc (vect_get_operand_map): Do not look - at the VDEF to decide between scatter or gather since that - doesn't work for patterns. Use the LHS being an SSA_NAME - or not instead. - -2023-11-09 Pan Li <pan2.li@intel.com> - - * config/riscv/riscv.cc (riscv_frm_emit_after_bb_end): Only - perform once emit when at least one succ edge is abnormal. - -2023-11-09 Richard Biener <rguenther@suse.de> - - * tree-vect-loop.cc (vect_verify_full_masking_avx512): - Check we have integer mode masks as required by - vect_get_loop_mask. - -2023-11-09 Richard Biener <rguenther@suse.de> - - PR tree-optimization/112444 - * tree-ssa-sccvn.cc (visit_phi): Avoid using not visited - defs as undefined vals. - -2023-11-09 YunQiang Su <yunqiang.su@cipunited.com> - - * config/mips/mips.cc(mips_option_override): Set mips_abs to - 2008, if mips_abs is default and mips_nan is 2008. - -2023-11-09 Florian Weimer <fweimer@redhat.com> - - * doc/invoke.texi (Warning Options): Document - -Wreturn-mismatch. Update -Wreturn-type documentation. - -2023-11-09 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com> - - * config/s390/s390.md: Remove UNSPEC_VEC_ELTSWAP. - * config/s390/vector.md (eltswapv16qi): New expander. - (*eltswapv16qi): New insn and splitter. - (eltswapv8hi): New insn and splitter. - (eltswap<mode>): New insn and splitter for modes V_HW_4 as well - as V_HW_2. - * config/s390/vx-builtins.md (eltswap<mode>): Remove. - (*eltswapv16qi): Remove. - (*eltswap<mode>): Remove. - (*eltswap<mode>_emu): Remove. - -2023-11-09 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com> - - * config/s390/s390.cc (expand_perm_with_rot): Remove. - (expand_perm_reverse_elements): New. - (expand_perm_with_vster): Remove. - (expand_perm_with_vstbrq): Remove. - (vectorize_vec_perm_const_1): Replace removed functions with new - one. - -2023-11-09 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com> - - * config/s390/s390.cc (expand_perm_with_merge): Deal with cases - where vmr{l,h} are still applicable if the operands are swapped. - (expand_perm_with_vpdi): Likewise for vpdi. - -2023-11-09 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com> - - * config/s390/s390.md (VX_CONV_INT): Remove iterator. - (gf): Add float mappings. - (TOINT, toint): New attribute. - (*fixuns_trunc<VX_CONV_BFP:mode><VX_CONV_INT:mode>2_z13): - Remove. - (*fixuns_trunc<mode><toint>2_z13): Add. - (*fix_trunc<VX_CONV_BFP:mode><VX_CONV_INT:mode>2_bfp_z13): - Remove. - (*fix_trunc<mode><toint>2_bfp_z13): Add. - (*floatuns<VX_CONV_INT:mode><VX_CONV_BFP:mode>2_z13): Remove. - (*floatuns<toint><mode>2_z13): Add. - * config/s390/vector.md (VX_VEC_CONV_INT): Remove iterator. - (float<VX_VEC_CONV_INT:mode><VX_VEC_CONV_BFP:mode>2): Remove. - (float<tointvec><mode>2): Add. - (floatuns<VX_VEC_CONV_INT:mode><VX_VEC_CONV_BFP:mode>2): Remove. - (floatuns<tointvec><mode>2): Add. - (fix_trunc<VX_VEC_CONV_BFP:mode><VX_VEC_CONV_INT:mode>2): - Remove. - (fix_trunc<mode><tointvec>2): Add. - (fixuns_trunc<VX_VEC_CONV_BFP:mode><VX_VEC_CONV_INT:mode>2): - Remove. - (fixuns_trunc<VX_VEC_CONV_BFP:mode><tointvec>2): Add. - -2023-11-09 Jakub Jelinek <jakub@redhat.com> - - PR c/112339 - * attribs.cc (attribute_ignored_p): Only return true for - attr_namespace_ignored_p if as is NULL. - (decl_attributes): Never add ignored attributes. - -2023-11-09 Jin Ma <jinma@linux.alibaba.com> - - * config/riscv/bitmanip.md: Avoid the conflict between - zbb and xtheadmemidx in patterns. - -2023-11-09 Richard Biener <rguenther@suse.de> - - * tree-vect-stmts.cc (vectorizable_simd_clone_call): Record - to the correct simd_clone_info. - -2023-11-09 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv-vector-costs.cc (costs::preferred_new_lmul_p): Fix ICE. - -2023-11-09 Alexandre Oliva <oliva@adacore.com> - - * tree-cfg.cc (assign_discriminators): Handle debug stmts. - -2023-11-08 Uros Bizjak <ubizjak@gmail.com> - - PR target/82524 - * config/i386/i386.md (*add<mode>_1_slp): - Split insn only for unmatched operand 0. - (*sub<mode>_1_slp): Ditto. - (*<any_logic:code><mode>_1_slp): Merge pattern from "*and<mode>_1_slp" - and "*<any_logic:code><mode>_1_slp" using any_logic code iterator. - Split insn only for unmatched operand 0. - (*neg<mode>1_slp): Split insn only for unmatched operand 0. - (*one_cmpl<mode>_1_slp): Ditto. - (*ashl<mode>3_1_slp): Ditto. - (*<any_shiftrt:insn><mode>_1_slp): Ditto. - (*<any_rotate:insn><mode>_1_slp): Ditto. - (*addqi_ext<mode>_1): Redefine as define_insn_and_split. Add - alternative 1 and split insn after reload for unmatched operand 0. - (*<plusminus:insn>qi_ext<mode>_2): Merge pattern from - "*addqi_ext<mode>_2" and "*subqi_ext<mode>_2" using plusminus code - iterator. Redefine as define_insn_and_split. Add alternative 1 - and split insn after reload for unmatched operand 0. - (*subqi_ext<mode>_1): Redefine as define_insn_and_split. Add - alternative 1 and split insn after reload for unmatched operand 0. - (*<any_logic:code>qi_ext<mode>_0): Merge pattern from - "*andqi_ext<mode>_0" and and "*<any_logic:code>qi_ext<mode>_0" using - any_logic code iterator. - (*<any_logic:code>qi_ext<mode>_1): Merge pattern from - "*andqi_ext<mode>_1" and "*<any_logic:code>qi_ext<mode>_1" using - any_logic code iterator. Redefine as define_insn_and_split. Add - alternative 1 and split insn after reload for unmatched operand 0. - (*<any_logic:code>qi_ext<mode>_1_cc): Merge pattern from - "*andqi_ext<mode>_1_cc" and "*xorqi_ext<mode>_1_cc" using any_logic - code iterator. Redefine as define_insn_and_split. Add alternative 1 - and split insn after reload for unmatched operand 0. - (*<any_logic:code>qi_ext<mode>_2): Merge pattern from - "*andqi_ext<mode>_2" and "*<any_or:code>qi_ext<mode>_2" using - any_logic code iterator. Redefine as define_insn_and_split. Add - alternative 1 and split insn after reload for unmatched operand 0. - (*<any_logic:code>qi_ext<mode>_3): Redefine as define_insn_and_split. - Add alternative 1 and split insn after reload for unmatched operand 0. - (*negqi_ext<mode>_1): Rename from "*negqi_ext<mode>_2". Add - alternative 1 and split insn after reload for unmatched operand 0. - (*one_cmplqi_ext<mode>_1): Ditto. - (*ashlqi_ext<mode>_1): Ditto. - (*<any_shiftrt:insn>qi_ext<mode>_1): Ditto. - -2023-11-08 Richard Biener <rguenther@suse.de> - - * tree-vect-stmts.cc (vectorizable_load): Adjust offset - vector gathering for SLP of emulated gathers. - -2023-11-08 Richard Biener <rguenther@suse.de> - - * tree-vectorizer.h (vect_slp_child_index_for_operand): - Add gatherscatter_p argument. - * tree-vect-slp.cc (vect_slp_child_index_for_operand): Likewise. - Pass it on. - * tree-vect-stmts.cc (vect_check_store_rhs): Turn the rhs - argument into an output, also output the SLP node associated - with it. - (vectorizable_simd_clone_call): Adjust. - (vectorizable_store): Likewise. - (vectorizable_load): Likewise. - -2023-11-08 Richard Biener <rguenther@suse.de> - - * tree-vect-stmts.cc (vectorizable_load): Use the correct - vectorized mask operand. - -2023-11-08 Lehua Ding <lehua.ding@rivai.ai> - - * config/riscv/vector.md (*vsetvldi_no_side_effects_si_extend): - New combine pattern. - -2023-11-08 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv-vsetvl.cc: Fix ICE. - -2023-11-08 xuli <xuli1@eswincomputing.com> - - * config/riscv/riscv-c.cc (riscv_check_builtin_call): Eliminate warning. - -2023-11-08 Hongyu Wang <hongyu.wang@intel.com> - - PR target/112394 - * config/i386/constraints.md (jc): New constraint that prohibits - EGPR on -mno-avx. - * config/i386/i386.md (*movdi_internal): Change r constraint - corresponds to Yd. - (*movti_internal): Likewise. - -2023-11-08 Florian Weimer <fweimer@redhat.com> - - * doc/invoke.texi (Warning Options): Mention C diagnostics - for -fpermissive. - -2023-11-08 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - PR target/112092 - * config/riscv/riscv-vector-builtins-bases.cc: Normalize the vsetvls. - -2023-11-08 Haochen Jiang <haochen.jiang@intel.com> - - PR target/111907 - * config/i386/i386.md (avx_noavx512vl): New definition for isa - attribute. - * config/i386/sse.md (*andnot<mode>3): Change isa attribute from - avx_noavx512f to avx_noavx512vl. - -2023-11-07 Pan Li <pan2.li@intel.com> - - * config/riscv/autovec.md: Remove the size check of lfloor. - * config/riscv/riscv-v.cc (expand_vec_lfloor): Leverage - emit_vec_rounding_to_integer for floor. - -2023-11-07 Robin Dapp <rdapp@ventanamicro.com> - - PR tree-optimization/112361 - PR target/112359 - PR middle-end/112406 - * tree-if-conv.cc (convert_scalar_cond_reduction): Remember if - loop was versioned and only then create COND_OPs. - (predicate_scalar_phi): Do not create COND_OP when not - vectorizing. - * tree-vect-loop.cc (vect_expand_fold_left): Re-create - VEC_COND_EXPR. - (vectorize_fold_left_reduction): Pass mask to - vect_expand_fold_left. - -2023-11-07 Uros Bizjak <ubizjak@gmail.com> - - * config/i386/predicates.md ("flags_reg_operand"): - Make predicate special to avoid automatic mode checks. - -2023-11-07 Martin Jambor <mjambor@suse.cz> - - * configure: Regenerate. - -2023-11-07 Kwok Cheung Yeung <kcy@codesourcery.com> - - * lto-cgraph.cc (enum LTO_symtab_tags): Add tag for indirect - functions. - (output_offload_tables): Write indirect functions. - (input_offload_tables): read indirect functions. - * lto-section-names.h (OFFLOAD_IND_FUNC_TABLE_SECTION_NAME): New. - * omp-builtins.def (BUILT_IN_GOMP_TARGET_MAP_INDIRECT_PTR): New. - * omp-offload.cc (offload_ind_funcs): New. - (omp_discover_implicit_declare_target): Add functions marked with - 'omp declare target indirect' to indirect functions list. - (omp_finish_file): Add indirect functions to section for offload - indirect functions. - (execute_omp_device_lower): Redirect indirect calls on target by - passing function pointer to BUILT_IN_GOMP_TARGET_MAP_INDIRECT_PTR. - (pass_omp_device_lower::gate): Run pass_omp_device_lower if - indirect functions are present on an accelerator device. - * omp-offload.h (offload_ind_funcs): New. - * tree-core.h (omp_clause_code): Add OMP_CLAUSE_INDIRECT. - * tree.cc (omp_clause_num_ops): Add entry for OMP_CLAUSE_INDIRECT. - (omp_clause_code_name): Likewise. - * tree.h (OMP_CLAUSE_INDIRECT_EXPR): New. - * config/gcn/mkoffload.cc (process_asm): Process offload_ind_funcs - section. Count number of indirect functions. - (process_obj): Emit number of indirect functions. - * config/nvptx/mkoffload.cc (ind_func_ids, ind_funcs_tail): New. - (process): Emit offload_ind_func_table in PTX code. Emit indirect - function names and count in image. - * config/nvptx/nvptx.cc (nvptx_record_offload_symbol): Mark - indirect functions in PTX code with IND_FUNC_MAP. - -2023-11-07 Tobias Burnus <tobias@codesourcery.com> - - * doc/invoke.texi (-fopenmp, -fopenmp-simd): Adjust wording for - attribute syntax supported also in C. - -2023-11-07 Richard Sandiford <richard.sandiford@arm.com> - - * config/aarch64/aarch64.cc (aarch64_print_operand): Add a %Z - modifier for SVE registers. - -2023-11-07 Joseph Myers <joseph@codesourcery.com> - - * builtins.def (DEF_C2X_BUILTIN): Rename to DEF_C23_BUILTIN and - use flag_isoc23 and function_c23_misc. - * config/rl78/rl78.cc (rl78_option_override): Compare - lang_hooks.name with "GNU C23" not "GNU C2X". - * coretypes.h (function_c2x_misc): Rename to function_c23_misc. - * doc/cpp.texi (@code{__has_attribute}): Refer to C23 instead of - C2x. - * doc/extend.texi: Likewise. - * doc/invoke.texi: Likewise. - * dwarf2out.cc (highest_c_language, gen_compile_unit_die): Compare - against and return "GNU C23" language string instead of "GNU C2X". - * ginclude/float.h: Refer to C23 instead of C2X in comments. - * ginclude/stdint-gcc.h: Likewise. - * glimits.h: Likewise. - * tree.h: Likewise. - -2023-11-07 Alexandre Oliva <oliva@adacore.com> - - * doc/sourcebuild.texi (opt_mstrict_align): New target. - -2023-11-07 Lehua Ding <lehua.ding@rivai.ai> - - * config/riscv/autovec-opt.md (*cond_len_<optab><v_double_trunc><mode>): - New combine pattern. - (*cond_len_<optab><v_quad_trunc><mode>): Ditto. - (*cond_len_<optab><v_oct_trunc><mode>): Ditto. - (*cond_len_extend<v_double_trunc><mode>): Ditto. - (*cond_len_widen_reduc_plus_scal_<mode>): Ditto. - -2023-11-07 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - PR target/112399 - * config/riscv/riscv-avlprop.cc - (pass_avlprop::get_vlmax_ta_preferred_avl): Enhance AVL propagation. - * config/riscv/t-riscv: Add new include. - -2023-11-07 Pan Li <pan2.li@intel.com> - - * config/riscv/autovec.md: Remove the size check of lceil.l - * config/riscv/riscv-v.cc (expand_vec_lceil): Leverage - emit_vec_rounding_to_integer for ceil. - -2023-11-06 John David Anglin <danglin@gcc.gnu.org> - - * config/pa/pa.cc (pa_asm_trampoline_template): Fix typo. - -2023-11-06 John David Anglin <danglin@gcc.gnu.org> - - * config/pa/pa-linux.h (NEED_INDICATE_EXEC_STACK): Define to 1. - -2023-11-06 David Malcolm <dmalcolm@redhat.com> - - * diagnostic-show-locus.cc (class colorizer): Take just a - pretty_printer rather than a diagnostic_context. - (layout::layout): Make context param a const reference, - and pretty_printer param non-optional. - (layout::m_context): Drop field. - (layout::m_options): New field. - (layout::m_colorize_source_p): Drop field. - (layout::m_show_labels_p): Drop field. - (layout::m_show_line_numbers_p): Drop field. - (layout::print_gap_in_line_numbering): Use m_options. - (layout::calculate_line_spans): Likewise. - (layout::calculate_linenum_width): Likewise. - (layout::calculate_x_offset_display): Likewise. - (layout::print_source_line): Likewise. - (layout::start_annotation_line): Likewise. - (layout::print_annotation_line): Likewise. - (layout::print_line): Likewise. - (gcc_rich_location::add_location_if_nearby): Update for changes to - layout ctor. - (diagnostic_show_locus): Likewise. - (selftest::test_offset_impl): Likewise. - (selftest::test_layout_x_offset_display_utf8): Likewise. - (selftest::test_layout_x_offset_display_tab): Likewise. - (selftest::test_tab_expansion): Likewise. - * diagnostic.h (diagnostic_context::m_source_printing): Move - declaration of struct outside diagnostic_context as... - (struct diagnostic_source_printing_options)... this. - -2023-11-06 David Malcolm <dmalcolm@redhat.com> - - * diagnostic.cc (diagnostic_context::push_diagnostics): Convert - to... - (diagnostic_option_classifier::push): ...this. - (diagnostic_context::pop_diagnostics): Convert to... - (diagnostic_option_classifier::pop): ...this. - (diagnostic_context::initialize): Move code to... - (diagnostic_option_classifier::init): ...this new function. - (diagnostic_context::finish): Move code to... - (diagnostic_option_classifier::fini): ...this new function. - (diagnostic_context::classify_diagnostic): Convert to... - (diagnostic_option_classifier::classify_diagnostic): ...this. - (diagnostic_context::update_effective_level_from_pragmas): Convert - to... - (diagnostic_option_classifier::update_effective_level_from_pragmas): - ...this. - (diagnostic_context::diagnostic_enabled): Update for refactoring. - * diagnostic.h (struct diagnostic_classification_change_t): Move into... - (class diagnostic_option_classifier): ...this new class. - (diagnostic_context::option_unspecified_p): Update for move of - fields into m_option_classifier. - (diagnostic_context::classify_diagnostic): Likewise. - (diagnostic_context::push_diagnostics): Likewise. - (diagnostic_context::pop_diagnostics): Likewise. - (diagnostic_context::update_effective_level_from_pragmas): Delete. - (diagnostic_context::m_classify_diagnostic): Move into class - diagnostic_option_classifier. - (diagnostic_context::m_option_classifier): Likewise. - (diagnostic_context::m_classification_history): Likewise. - (diagnostic_context::m_n_classification_history): Likewise. - (diagnostic_context::m_push_list): Likewise. - (diagnostic_context::m_n_push): Likewise. - (diagnostic_context::m_option_classifier): New. - -2023-11-06 David Malcolm <dmalcolm@redhat.com> - - * diagnostic.cc (diagnostic_context::set_urlifier): New. - * diagnostic.h (diagnostic_context::set_urlifier): New decl. - (diagnostic_context::m_urlifier): Make private. - * gcc.cc (driver::global_initializations): Use set_urlifier rather - than directly setting field. - * toplev.cc (general_init): Likewise. - -2023-11-06 David Malcolm <dmalcolm@redhat.com> - - * diagnostic.cc (diagnostic_context::check_max_errors): Replace - uses of diagnostic_kind_count with simple field acesss. - (diagnostic_context::report_diagnostic): Likewise. - (diagnostic_text_output_format::~diagnostic_text_output_format): - Replace use of diagnostic_kind_count with - diagnostic_context::diagnostic_count. - * diagnostic.h (diagnostic_kind_count): Delete. - (errorcount): Replace use of diagnostic_kind_count with - diagnostic_context::diagnostic_count. - (warningcount): Likewise. - (werrorcount): Likewise. - (sorrycount): Likewise. - -2023-11-06 Christophe Lyon <christophe.lyon@linaro.org> - - * doc/sourcebuild.texi (Other attributes): Document thread_fence - effective-target. - -2023-11-06 Uros Bizjak <ubizjak@gmail.com> - - * config/i386/constraints.md (Bc): Remove constraint. - (Bn): Rewrite to use x86_extended_reg_mentioned_p predicate. - * config/i386/i386.cc (ix86_memory_address_reg_class): - Do not limit processing to TARGET_APX_EGPR. Exit early for - NULL insn. Do not check recog_data.insn before calling - extract_insn_cached. - (ix86_insn_base_reg_class): Handle ADDR_GPR8. - (ix86_regno_ok_for_insn_base_p): Ditto. - (ix86_insn_index_reg_class): Ditto. - * config/i386/i386.md (*cmpqi_ext<mode>_1_mem_rex64): - Remove insn pattern and corresponding peephole2 pattern. - (*cmpi_ext<mode>_1): Remove (m,Q) alternative. - Change (QBc,Q) alternative to (QBn,Q). Add "addr" attribute. - (*cmpqi_ext<mode>_3_mem_rex64): Remove insn pattern - and corresponding peephole2 pattern. - (*cmpi_ext<mode>_3): Remove (Q,m) alternative. - Change (Q,QnBc) alternative to (Q,QnBn). Add "addr" attribute. - (*extzvqi_mem_rex64): Remove insn pattern and - corresponding peephole2 pattern. - (*extzvqi): Remove (Q,m) alternative. Change (Q,QnBc) - alternative to (Q,QnBn). Add "addr" attribute. - (*insvqi_1_mem_rex64): Remove insn pattern and - corresponding peephole2 pattern. - (*insvqi_1): Remove (Q,m) alternative. Change (Q,QnBc) - alternative to (Q,QnBn). Add "addr" attribute. - (@insv<mode>_1): Ditto. - (*addqi_ext<mode>_0): Remove (m,0,Q) alternative. Change (QBc,0,Q) - alternative to (QBn,0,Q). Add "addr" attribute. - (*subqi_ext<mode>_0): Ditto. - (*andqi_ext<mode>_0): Ditto. - (*<any_or:code>qi_ext<mode>_0): Ditto. - (*addqi_ext<mode>_1): Remove (Q,0,m) alternative. Change (Q,0,QnBc) - alternative to (Q,0,QnBn). Add "addr" attribute. - (*andqi_ext<mode>_1): Ditto. - (*andqi_ext<mode>_1_cc): Ditto. - (*<any_or:code>qi_ext<mode>_1): Ditto. - (*xorqi_ext<mode>_1_cc): Ditto. - * config/i386/predicates.md (nonimm_x64constmem_operand): - Remove predicate. - (general_x64constmem_operand): Ditto. - (norex_memory_operand): Ditto. - -2023-11-06 Joseph Myers <joseph@codesourcery.com> - - PR c/107954 - * doc/cpp.texi (__STDC_VERSION__): Refer to -std=c23 and - -std=gnu23 instead of -std=c2x and -std=gnu2x. - * doc/extend.texi (Attribute Syntax): Refer to C23 and -std=c23 - instead of C2x and -std=c2x. - * doc/invoke.texi (-Wc11-c23-compat, -std=c23, -std=gnu23) - (-std=iso9899:2024): Document, with -Wc11-c2x-compat, -std=c2x and - -std=gnu2x as deprecated aliases. Update descriptions of C23. - * doc/standards.texi (Standards): Describe C23 with C2X as an old - name. - -2023-11-06 Thomas Schwinge <thomas@codesourcery.com> - - * config/nvptx/nvptx.h (MAKE_DECL_ONE_ONLY): Define. - -2023-11-06 Richard Biener <rguenther@suse.de> - - PR tree-optimization/112405 - * tree-vect-stmts.cc (vectorizable_simd_clone_call): - Properly handle invariant and/or loop mask passing. - -2023-11-06 Pan Li <pan2.li@intel.com> - - * config/riscv/autovec.md: Remove the size check of lround. - * config/riscv/riscv-v.cc (expand_vec_lround): Leverage - emit_vec_rounding_to_integer for round. - -2023-11-06 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/predicates.md: Adapt predicate. - * config/riscv/riscv-protos.h (can_be_broadcasted_p): New function. - * config/riscv/riscv-v.cc (can_be_broadcasted_p): Ditto. - * config/riscv/vector.md (vec_duplicate<mode>): New pattern. - (*vec_duplicate<mode>): Adapt vec_duplicate insn pattern. - -2023-11-06 Richard Biener <rguenther@suse.de> - - PR tree-optimization/111950 - * tree-vect-loop-manip.cc (slpeel_duplicate_current_defs_from_edges): - Remove. - (find_guard_arg): Likewise. - (slpeel_update_phi_nodes_for_guard2): Likewise. - (slpeel_tree_duplicate_loop_to_edge_cfg): Remove calls to - slpeel_duplicate_current_defs_from_edges, do not elide - LC-PHIs for invariant values. - (vect_do_peeling): Materialize PHI arguments for the edge - around the epilog from the PHI defs of the main loop exit. - -2023-11-06 Richard Biener <rguenther@suse.de> - - PR tree-optimization/112404 - * tree-vectorizer.h (get_mask_type_for_scalar_type): Declare - overload with SLP node argument. - * tree-vect-stmts.cc (get_mask_type_for_scalar_type): Implement it. - (vect_check_scalar_mask): Use it. - * tree-vect-slp.cc (vect_gather_slp_loads): Properly identify - loads also for nodes with children, like .MASK_LOAD. - * tree-vect-loop.cc (vect_analyze_loop_2): Look at the - representative for load nodes and check whether it is a grouped - access before looking for load-lanes support. - -2023-11-06 Robin Dapp <rdapp@ventanamicro.com> - - PR tree-optimization/111760 - * config/riscv/autovec.md (vcond_mask_len_<mode><vm>): Add - expander. - * config/riscv/riscv-protos.h (enum insn_type): Add. - * config/riscv/riscv-v.cc (needs_fp_rounding): Add !pred_mov. - * doc/md.texi: Add vcond_mask_len. - * gimple-match-exports.cc (maybe_resimplify_conditional_op): - Create VCOND_MASK_LEN when length masking. - * gimple-match.h (gimple_match_op::gimple_match_op): Always - initialize len and bias. - * internal-fn.cc (vec_cond_mask_len_direct): Add. - (direct_vec_cond_mask_len_optab_supported_p): Add. - (internal_fn_len_index): Add VCOND_MASK_LEN. - (internal_fn_mask_index): Ditto. - * internal-fn.def (VCOND_MASK_LEN): New internal function. - * match.pd: Combine unconditional unary, binary and ternary - operations into the respective COND_LEN operations. - * optabs.def (OPTAB_D): Add vcond_mask_len optab. - -2023-11-06 Richard Sandiford <richard.sandiford@arm.com> - - * explow.cc (align_dynamic_address): Do nothing if the required - alignment is a byte. - -2023-11-06 Richard Sandiford <richard.sandiford@arm.com> - - * function.h (get_stack_dynamic_offset): Declare. - * function.cc (get_stack_dynamic_offset): New function, - split out from... - (get_stack_dynamic_offset): ...here. - * explow.cc (allocate_dynamic_stack_space): Handle calls made - after virtual registers have been instantiated. - -2023-11-06 liuhongt <hongtao.liu@intel.com> - - PR target/112393 - * config/i386/i386-expand.cc (ix86_expand_vec_perm_vpermt2): - Avoid generating RTL code when d->testing_p. - -2023-11-06 Richard Biener <rguenther@suse.de> - - PR tree-optimization/112369 - * tree.cc (strip_float_extensions): Use element_precision. - -2023-11-06 Richard Biener <rguenther@suse.de> - - PR middle-end/112296 - * doc/extend.texi (__builtin_constant_p): Clarify that - side-effects are discarded. - -2023-11-06 Kewen Lin <linkw@linux.ibm.com> - - PR target/111828 - * config.in: Regenerate. - * config/rs6000/rs6000.cc (rs6000_update_ipa_fn_target_info): Guard - inline asm handling under !HAVE_AS_POWER10_HTM. - * configure: Regenerate. - * configure.ac: Detect assembler support for HTM insns at power10. - -2023-11-06 xuli <xuli1@eswincomputing.com> - Pan Li <pan2.li@intel.com> - - * config/riscv/riscv-c.cc (riscv_resolve_overloaded_builtin): New function for the hook. - (riscv_register_pragmas): Register the hook. - * config/riscv/riscv-protos.h (resolve_overloaded_builtin): New decl. - * config/riscv/riscv-vector-builtins-bases.cc: New function impl. - * config/riscv/riscv-vector-builtins-shapes.cc (build_one): Register overloaded function. - * config/riscv/riscv-vector-builtins.cc (struct non_overloaded_registered_function_hasher): - New hash table. - (function_builder::add_function): Add overloaded arg. - (function_builder::add_unique_function): Map overloaded function to non-overloaded function. - (function_builder::add_overloaded_function): New API impl. - (registered_function::overloaded_hash): Calculate hash value. - (has_vxrm_or_frm_p): New function impl. - (non_overloaded_registered_function_hasher::hash): Ditto. - (non_overloaded_registered_function_hasher::equal): Ditto. - (handle_pragma_vector): Allocate space for hash table. - (resolve_overloaded_builtin): New function impl. - * config/riscv/riscv-vector-builtins.h (function_base::may_require_frm_p): Ditto. - (function_base::may_require_vxrm_p): Ditto. - -2023-11-06 Haochen Jiang <haochen.jiang@intel.com> - - PR target/111889 - * config/i386/avx512bf16intrin.h: Push no-evex512 target. - * config/i386/avx512bf16vlintrin.h: Ditto. - * config/i386/avx512bitalgvlintrin.h: Ditto. - * config/i386/avx512bwintrin.h: Ditto. - * config/i386/avx512dqintrin.h: Ditto. - * config/i386/avx512fintrin.h: Ditto. - * config/i386/avx512fp16intrin.h: Ditto. - * config/i386/avx512fp16vlintrin.h: Ditto. - * config/i386/avx512ifmavlintrin.h: Ditto. - * config/i386/avx512vbmi2vlintrin.h: Ditto. - * config/i386/avx512vbmivlintrin.h: Ditto. - * config/i386/avx512vlbwintrin.h: Ditto. - * config/i386/avx512vldqintrin.h: Ditto. - * config/i386/avx512vlintrin.h: Ditto. - * config/i386/avx512vnnivlintrin.h: Ditto. - * config/i386/avx512vp2intersectvlintrin.h: Ditto. - * config/i386/avx512vpopcntdqvlintrin.h: Ditto. - -2023-11-06 Haochen Jiang <haochen.jiang@intel.com> - - * config/i386/avx512bf16vlintrin.h - (_mm_avx512_castsi128_ps): New. - (_mm256_avx512_castsi256_ps): Ditto. - (_mm_avx512_slli_epi32): Ditto. - (_mm256_avx512_slli_epi32): Ditto. - (_mm_avx512_cvtepi16_epi32): Ditto. - (_mm256_avx512_cvtepi16_epi32): Ditto. - (__attribute__): Change intrin call. - * config/i386/avx512bwintrin.h - (_mm_avx512_set_epi32): New. - (_mm_avx512_set_epi16): Ditto. - (_mm_avx512_set_epi8): Ditto. - (__attribute__): Change intrin call. - * config/i386/avx512fp16intrin.h: Ditto. - * config/i386/avx512fp16vlintrin.h - (_mm_avx512_set1_ps): New. - (_mm256_avx512_set1_ps): Ditto. - (_mm_avx512_and_si128): Ditto. - (_mm256_avx512_and_si256): Ditto. - (__attribute__): Change intrin call. - * config/i386/avx512vlbwintrin.h - (_mm_avx512_set1_epi32): New. - (_mm_avx512_set1_epi16): Ditto. - (_mm_avx512_set1_epi8): Ditto. - (_mm256_avx512_set_epi16): Ditto. - (_mm256_avx512_set_epi8): Ditto. - (_mm256_avx512_set1_epi16): Ditto. - (_mm256_avx512_set1_epi32): Ditto. - (_mm256_avx512_set1_epi8): Ditto. - (_mm_avx512_max_epi16): Ditto. - (_mm_avx512_min_epi16): Ditto. - (_mm_avx512_max_epu16): Ditto. - (_mm_avx512_min_epu16): Ditto. - (_mm_avx512_max_epi8): Ditto. - (_mm_avx512_min_epi8): Ditto. - (_mm_avx512_max_epu8): Ditto. - (_mm_avx512_min_epu8): Ditto. - (_mm256_avx512_max_epi16): Ditto. - (_mm256_avx512_min_epi16): Ditto. - (_mm256_avx512_max_epu16): Ditto. - (_mm256_avx512_min_epu16): Ditto. - (_mm256_avx512_insertf128_ps): Ditto. - (_mm256_avx512_extractf128_pd): Ditto. - (_mm256_avx512_extracti128_si256): Ditto. - (_MM256_AVX512_REDUCE_OPERATOR_BASIC_EPI16): Ditto. - (_MM256_AVX512_REDUCE_OPERATOR_MAX_MIN_EP16): Ditto. - (_MM256_AVX512_REDUCE_OPERATOR_BASIC_EPI8): Ditto. - (_MM256_AVX512_REDUCE_OPERATOR_MAX_MIN_EP8): Ditto. - (__attribute__): Change intrin call. - -2023-11-06 Haochen Jiang <haochen.jiang@intel.com> - - * config/i386/avx512bf16vlintrin.h: Change intrin call. - * config/i386/avx512fintrin.h - (_mm_avx512_undefined_ps): New. - (_mm_avx512_undefined_pd): Ditto. - (__attribute__): Change intrin call. - * config/i386/avx512vbmivlintrin.h: Ditto. - * config/i386/avx512vlbwintrin.h: Ditto. - * config/i386/avx512vldqintrin.h: Ditto. - * config/i386/avx512vlintrin.h - (_mm_avx512_undefined_si128): New. - (_mm256_avx512_undefined_ps): Ditto. - (_mm256_avx512_undefined_pd): Ditto. - (_mm256_avx512_undefined_si256): Ditto. - (__attribute__): Change intrin call. - -2023-11-06 Haochen Jiang <haochen.jiang@intel.com> - - * config/i386/avx512bitalgvlintrin.h: Change intrin call. - * config/i386/avx512dqintrin.h: Ditto. - * config/i386/avx512fintrin.h: - (_mm_avx512_setzero_ps): New. - (_mm_avx512_setzero_pd): Ditto. - (__attribute__): Change intrin call. - * config/i386/avx512fp16intrin.h: Ditto. - * config/i386/avx512fp16vlintrin.h: Ditto. - * config/i386/avx512vbmi2vlintrin.h: Ditto. - * config/i386/avx512vbmivlintrin.h: Ditto. - * config/i386/avx512vlbwintrin.h: Ditto. - * config/i386/avx512vldqintrin.h: Ditto. - * config/i386/avx512vlintrin.h - (_mm_avx512_setzero_si128): New. - (_mm256_avx512_setzero_pd): Ditto. - (_mm256_avx512_setzero_ps): Ditto. - (_mm256_avx512_setzero_si256): Ditto. - (__attribute__): Change intrin call. - * config/i386/avx512vpopcntdqvlintrin.h: Ditto. - * config/i386/gfniintrin.h: Ditto. - -2023-11-05 Uros Bizjak <ubizjak@gmail.com> - - * config/i386/i386.h (enum reg_class): Add LEGACY_INDEX_REGS. - Rename LEGACY_REGS to LEGACY_GENERAL_REGS. - (REG_CLASS_NAMES): Ditto. - (REG_CLASS_CONTENTS): Ditto. - * config/i386/constraints.md ("R"): Update for rename. - -2023-11-05 Richard Sandiford <richard.sandiford@arm.com> - - * mode-switching.cc: Remove unused forward references. - (seginfo): Remove bbnum. - (new_seginfo): Remove associated argument. - (optimize_mode_switching): Update calls accordingly. - -2023-11-05 Richard Sandiford <richard.sandiford@arm.com> - - * read-rtl.cc (read_rtx_operand): Avoid spinning endlessly for - invalid [...] operands. - -2023-11-05 Richard Sandiford <richard.sandiford@arm.com> - - PR target/112105 - * config/aarch64/aarch64.cc (aarch64_modes_compatible_p): New - function, with the core logic extracted from... - (aarch64_can_change_mode_class): ...here. Extend the previous rules - to allow changes between partial SVE modes and other modes if - the other mode is no bigger than an element, and if no other rule - prevents it. Use the aarch64_modes_tieable_p handling of - partial Advanced SIMD structure modes. - (aarch64_modes_tieable_p): Use aarch64_modes_compatible_p. - Allow all vector mode ties that it allows. - -2023-11-05 Pan Li <pan2.li@intel.com> - - * config/riscv/autovec.md: Remove the size check of lrint. - * config/riscv/riscv-v.cc (emit_vec_narrow_cvt_x_f): New help - emit func impl. - (emit_vec_widden_cvt_x_f): New help emit func impl. - (emit_vec_rounding_to_integer): New func impl to emit the - rounding from FP to integer. - (expand_vec_lrint): Leverage emit_vec_rounding_to_integer. - * config/riscv/vector.md: Take V_VLSF for vfncvt. - -2023-11-05 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/vector.md: Fix bug. - -2023-11-04 Sergei Trofimovich <siarheit@google.com> - - PR bootstrap/112379 - * gcc-urlifier.cc (get_url_suffix_for_quoted_text): Mark as - ATTRIBUTE_UNUSED. - -2023-11-04 Pan Li <pan2.li@intel.com> - - * config/riscv/vector-iterators.md: Remove HF modes. - -2023-11-04 David Malcolm <dmalcolm@redhat.com> - - * diagnostic.cc: Include "pretty-print-urlifier.h". - (diagnostic_context::initialize): Initialize m_urlifier. - (diagnostic_context::finish): Clean up m_urlifier - (diagnostic_report::diagnostic): m_urlifier to pp_format. - * diagnostic.h (diagnostic_context::m_urlifier): New field. - * gcc-urlifier.cc: New file. - * gcc-urlifier.def: New file. - * gcc-urlifier.h: New file. - * gcc.cc: Include "gcc-urlifier.h". - (driver::global_initializations): Initialize global_dc->m_urlifier. - * pretty-print-urlifier.h: New file. - * pretty-print.cc: Include "pretty-print-urlifier.h". - (obstack_append_string): New. - (urlify_quoted_string): New. - (pp_format): Add "urlifier" param and use it to implement optional - urlification of quoted text strings. - (pp_output_formatted_text): Make buffer a const pointer. - (selftest::pp_printf_with_urlifier): New. - (selftest::test_urlification): New. - (selftest::pretty_print_cc_tests): Call it. - * pretty-print.h (class urlifier): New forward declaration. - (pp_format): Add optional urlifier param. - * selftest-run-tests.cc (selftest::run_tests): Call - selftest::gcc_urlifier_cc_tests . - * selftest.h (selftest::gcc_urlifier_cc_tests): New decl. - * toplev.cc: Include "gcc-urlifier.h". - (general_init): Initialize global_dc->m_urlifier. - -2023-11-04 David Malcolm <dmalcolm@redhat.com> - - * Makefile.in (GCC_OBJS): Add gcc-urlifier.o. - (OBJS): Likewise. - -2023-11-04 David Malcolm <dmalcolm@redhat.com> - - * common.opt (fdiagnostics-text-art-charset=): Remove refererence - to diagnostic-text-art.h. - * coretypes.h (struct diagnostic_context): Replace forward decl - with... - (class diagnostic_context): ...this. - * diagnostic-format-json.cc: Update for changes to - diagnostic_context. - * diagnostic-format-sarif.cc: Likewise. - * diagnostic-show-locus.cc: Likewise. - * diagnostic-text-art.h: Deleted file, moving content... - (enum diagnostic_text_art_charset): ...to diagnostic.h, - (DIAGNOSTICS_TEXT_ART_CHARSET_DEFAULT): ...deleting, - (diagnostics_text_art_charset_init): ...deleting in favor of - diagnostic_context::set_text_art_charset. - * diagnostic.cc: Remove include of "diagnostic-text-art.h". - (pedantic_warning_kind): Update for field renaming. - (permissive_error_kind): Likewise. - (permissive_error_option): Likewise. - (diagnostic_initialize): Convert to... - (diagnostic_context::initialize): ...this, updating for field - renamings. - (diagnostic_color_init): Convert to... - (diagnostic_context::color_init): ...this. - (diagnostic_urls_init): Convert to... - (diagnostic_context::urls_init): ...this. - (diagnostic_initialize_input_context): Convert to... - (diagnostic_context::initialize_input_context): ...this. - (diagnostic_finish): Convert to... - (diagnostic_context::finish): ...this, updating for field - renamings. - (diagnostic_context::set_output_format): New. - (diagnostic_context::set_client_data_hooks): New. - (diagnostic_context::create_edit_context): New. - (diagnostic_converted_column): Convert to... - (diagnostic_context::converted_column): ...this. - (diagnostic_get_location_text): Update for field renaming. - (diagnostic_check_max_errors): Convert to... - (diagnostic_context::check_max_errors): ...this, updating for - field renamings. - (diagnostic_action_after_output): Convert to... - (diagnostic_context::action_after_output): ...this, updating for - field renamings. - (last_module_changed_p): Delete. - (set_last_module): Delete. - (includes_seen): Convert to... - (diagnostic_context::includes_seen_p): ...this, updating for field - renamings. - (diagnostic_report_current_module): Convert to... - (diagnostic_context::report_current_module): ...this, updating for - field renamings, and replacing uses of last_module_changed_p and - set_last_module to simple field accesses. - (diagnostic_show_any_path): Convert to... - (diagnostic_context::show_any_path): ...this. - (diagnostic_classify_diagnostic): Convert to... - (diagnostic_context::classify_diagnostic): ...this, updating for - field renamings. - (diagnostic_push_diagnostics): Convert to... - (diagnostic_context::push_diagnostics): ...this, updating for field - renamings. - (diagnostic_pop_diagnostics): Convert to... - (diagnostic_context::pop_diagnostics): ...this, updating for field - renamings. - (get_any_inlining_info): Convert to... - (diagnostic_context::get_any_inlining_info): ...this, updating for - field renamings. - (update_effective_level_from_pragmas): Convert to... - (diagnostic_context::update_effective_level_from_pragmas): - ...this, updating for field renamings. - (print_any_cwe): Convert to... - (diagnostic_context::print_any_cwe): ...this. - (print_any_rules): Convert to... - (diagnostic_context::print_any_rules): ...this. - (print_option_information): Convert to... - (diagnostic_context::print_option_information): ...this, updating - for field renamings. - (diagnostic_enabled): Convert to... - (diagnostic_context::diagnostic_enabled): ...this, updating for - field renamings. - (warning_enabled_at): Convert to... - (diagnostic_context::warning_enabled_at): ...this. - (diagnostic_report_diagnostic): Convert to... - (diagnostic_context::report_diagnostic): ...this, updating for - field renamings and conversions to member functions. - (diagnostic_append_note): Update for field renaming. - (diagnostic_impl): Use diagnostic_context::report_diagnostic - directly. - (diagnostic_n_impl): Likewise. - (diagnostic_emit_diagram): Convert to... - (diagnostic_context::emit_diagram): ...this, updating for field - renamings. - (error_recursion): Convert to... - (diagnostic_context::error_recursion): ...this. - (diagnostic_text_output_format::~diagnostic_text_output_format): - Use accessor. - (diagnostics_text_art_charset_init): Convert to... - (diagnostic_context::set_text_art_charset): ...this. - (assert_location_text): Update for field renamings. - * diagnostic.h (enum diagnostic_text_art_charset): Move here from - diagnostic-text-art.h. - (struct diagnostic_context): Convert to... - (class diagnostic_context): ...this. - (diagnostic_context::ice_handler_callback_t): New typedef. - (diagnostic_context::set_locations_callback_t): New typedef. - (diagnostic_context::initialize): New decl. - (diagnostic_context::color_init): New decl. - (diagnostic_context::urls_init): New decl. - (diagnostic_context::file_cache_init): New decl. - (diagnostic_context::finish): New decl. - (diagnostic_context::set_set_locations_callback): New. - (diagnostic_context::initialize_input_context): New decl. - (diagnostic_context::warning_enabled_at): New decl. - (diagnostic_context::option_unspecified_p): New. - (diagnostic_context::report_diagnostic): New decl. - (diagnostic_context::report_current_module): New decl. - (diagnostic_context::check_max_errors): New decl. - (diagnostic_context::action_after_output): New decl. - (diagnostic_context::classify_diagnostic): New decl. - (diagnostic_context::push_diagnostics): New decl. - (diagnostic_context::pop_diagnostics): New decl. - (diagnostic_context::emit_diagram): New decl. - (diagnostic_context::set_output_format): New decl. - (diagnostic_context::set_text_art_charset): New decl. - (diagnostic_context::set_client_data_hooks): New decl. - (diagnostic_context::create_edit_context): New decl. - (diagnostic_context::set_warning_as_error_requested): New. - (diagnostic_context::set_report_bug): New. - (diagnostic_context::set_extra_output_kind): New. - (diagnostic_context::set_show_cwe): New. - (diagnostic_context::set_show_rules): New. - (diagnostic_context::set_path_format): New. - (diagnostic_context::set_show_path_depths): New. - (diagnostic_context::set_show_option_requested): New. - (diagnostic_context::set_max_errors): New. - (diagnostic_context::set_escape_format): New. - (diagnostic_context::set_ice_handler_callback): New. - (diagnostic_context::warning_as_error_requested_p): New. - (diagnostic_context::show_path_depths_p): New. - (diagnostic_context::get_path_format): New. - (diagnostic_context::get_escape_format): New. - (diagnostic_context::get_file_cache): New. - (diagnostic_context::get_edit_context): New. - (diagnostic_context::get_client_data_hooks): New. - (diagnostic_context::get_diagram_theme): New. - (diagnostic_context::converted_column): New decl. - (diagnostic_context::diagnostic_count): New. - (diagnostic_context::includes_seen_p): New decl. - (diagnostic_context::print_any_cwe): New decl. - (diagnostic_context::print_any_rules): New decl. - (diagnostic_context::print_option_information): New decl. - (diagnostic_context::show_any_path): New decl. - (diagnostic_context::error_recursion): New decl. - (diagnostic_context::diagnostic_enabled): New decl. - (diagnostic_context::get_any_inlining_info): New decl. - (diagnostic_context::update_effective_level_from_pragmas): New - decl. - (diagnostic_context::m_file_cache): Make private. - (diagnostic_context::diagnostic_count): Rename to... - (diagnostic_context::m_diagnostic_count): ...this and make - private. - (diagnostic_context::warning_as_error_requested): Rename to... - (diagnostic_context::m_warning_as_error_requested): ...this and - make private. - (diagnostic_context::n_opts): Rename to... - (diagnostic_context::m_n_opts): ...this and make private. - (diagnostic_context::classify_diagnostic): Rename to... - (diagnostic_context::m_classify_diagnostic): ...this and make - private. - (diagnostic_context::classification_history): Rename to... - (diagnostic_context::m_classification_history): ...this and make - private. - (diagnostic_context::n_classification_history): Rename to... - (diagnostic_context::m_n_classification_history): ...this and make - private. - (diagnostic_context::push_list): Rename to... - (diagnostic_context::m_push_list): ...this and make private. - (diagnostic_context::n_push): Rename to... - (diagnostic_context::m_n_push): ...this and make private. - (diagnostic_context::show_cwe): Rename to... - (diagnostic_context::m_show_cwe): ...this and make private. - (diagnostic_context::show_rules): Rename to... - (diagnostic_context::m_show_rules): ...this and make private. - (diagnostic_context::path_format): Rename to... - (diagnostic_context::m_path_format): ...this and make private. - (diagnostic_context::show_path_depths): Rename to... - (diagnostic_context::m_show_path_depths): ...this and make - private. - (diagnostic_context::show_option_requested): Rename to... - (diagnostic_context::m_show_option_requested): ...this and make - private. - (diagnostic_context::abort_on_error): Rename to... - (diagnostic_context::m_abort_on_error): ...this. - (diagnostic_context::show_column): Rename to... - (diagnostic_context::m_show_column): ...this. - (diagnostic_context::pedantic_errors): Rename to... - (diagnostic_context::m_pedantic_errors): ...this. - (diagnostic_context::permissive): Rename to... - (diagnostic_context::m_permissive): ...this. - (diagnostic_context::opt_permissive): Rename to... - (diagnostic_context::m_opt_permissive): ...this. - (diagnostic_context::fatal_errors): Rename to... - (diagnostic_context::m_fatal_errors): ...this. - (diagnostic_context::dc_inhibit_warnings): Rename to... - (diagnostic_context::m_inhibit_warnings): ...this. - (diagnostic_context::dc_warn_system_headers): Rename to... - (diagnostic_context::m_warn_system_headers): ...this. - (diagnostic_context::max_errors): Rename to... - (diagnostic_context::m_max_errors): ...this and make private. - (diagnostic_context::internal_error): Rename to... - (diagnostic_context::m_internal_error): ...this. - (diagnostic_context::option_enabled): Rename to... - (diagnostic_context::m_option_enabled): ...this. - (diagnostic_context::option_state): Rename to... - (diagnostic_context::m_option_state): ...this. - (diagnostic_context::option_name): Rename to... - (diagnostic_context::m_option_name): ...this. - (diagnostic_context::get_option_url): Rename to... - (diagnostic_context::m_get_option_url): ...this. - (diagnostic_context::print_path): Rename to... - (diagnostic_context::m_print_path): ...this. - (diagnostic_context::make_json_for_path): Rename to... - (diagnostic_context::m_make_json_for_path): ...this. - (diagnostic_context::x_data): Rename to... - (diagnostic_context::m_client_aux_data): ...this. - (diagnostic_context::last_location): Rename to... - (diagnostic_context::m_last_location): ...this. - (diagnostic_context::last_module): Rename to... - (diagnostic_context::m_last_module): ...this and make private. - (diagnostic_context::lock): Rename to... - (diagnostic_context::m_lock): ...this and make private. - (diagnostic_context::lang_mask): Rename to... - (diagnostic_context::m_lang_mask): ...this. - (diagnostic_context::inhibit_notes_p): Rename to... - (diagnostic_context::m_inhibit_notes_p): ...this. - (diagnostic_context::report_bug): Rename to... - (diagnostic_context::m_report_bug): ...this and make private. - (diagnostic_context::extra_output_kind): Rename to... - (diagnostic_context::m_extra_output_kind): ...this and make - private. - (diagnostic_context::column_unit): Rename to... - (diagnostic_context::m_column_unit): ...this and make private. - (diagnostic_context::column_origin): Rename to... - (diagnostic_context::m_column_origin): ...this and make private. - (diagnostic_context::tabstop): Rename to... - (diagnostic_context::m_tabstop): ...this and make private. - (diagnostic_context::escape_format): Rename to... - (diagnostic_context::m_escape_format): ...this and make private. - (diagnostic_context::edit_context_ptr): Rename to... - (diagnostic_context::m_edit_context_ptr): ...this and make - private. - (diagnostic_context::set_locations_cb): Rename to... - (diagnostic_context::m_set_locations_cb): ...this and make - private. - (diagnostic_context::ice_handler_cb): Rename to... - (diagnostic_context::m_ice_handler_cb): ...this and make private. - (diagnostic_context::includes_seen): Rename to... - (diagnostic_context::m_includes_seen): ...this and make private. - (diagnostic_inhibit_notes): Update for field renaming. - (diagnostic_context_auxiliary_data): Likewise. - (diagnostic_abort_on_error): Convert from macro to inline function - and update for field renaming. - (diagnostic_kind_count): Convert from macro to inline function and - use diagnostic_count accessor. - (diagnostic_report_warnings_p): Update for field renaming. - (diagnostic_initialize): Convert decl to inline function calling - into diagnostic_context. - (diagnostic_color_init): Likewise. - (diagnostic_urls_init): Likewise. - (diagnostic_urls_init): Likewise. - (diagnostic_finish): Likewise. - (diagnostic_report_current_module): Likewise. - (diagnostic_show_any_path): Delete decl. - (diagnostic_initialize_input_context): Convert decl to inline - function calling into diagnostic_context. - (diagnostic_classify_diagnostic): Likewise. - (diagnostic_push_diagnostics): Likewise. - (diagnostic_pop_diagnostics): Likewise. - (diagnostic_report_diagnostic): Likewise. - (diagnostic_action_after_output): Likewise. - (diagnostic_check_max_errors): Likewise. - (diagnostic_file_cache_fini): Delete decl. - (diagnostic_converted_column): Delete decl. - (warning_enabled_at): Convert decl to inline function calling into - diagnostic_context. - (option_unspecified_p): New. - (diagnostic_emit_diagram): Delete decl. - * gcc.cc: Remove include of "diagnostic-text-art.h". - Update for changes to diagnostic_context. - * input.cc (diagnostic_file_cache_init): Move implementation - to... - (diagnostic_context::file_cache_init): ...this new member - function. - (diagnostic_file_cache_fini): Delete. - (diagnostics_file_cache_forcibly_evict_file): Update for - m_file_cache becoming private. - (location_get_source_line): Likewise. - (get_source_file_content): Likewise. - (location_missing_trailing_newline): Likewise. - * input.h (diagnostics_file_cache_fini): Delete. - * langhooks.cc: Update for changes to diagnostic_context. - * lto-wrapper.cc: Likewise. - * opts.cc: Remove include of "diagnostic-text-art.h". - Update for changes to diagnostic_context. - * selftest-diagnostic.cc: Update for changes to - diagnostic_context. - * toplev.cc: Likewise. - * tree-diagnostic-path.cc: Likewise. - * tree-diagnostic.cc: Likewise. - -2023-11-03 Martin Uecker <uecker@tugraz.at> - - PR c/98541 - * gimple-ssa-warn-access.cc - (pass_waccess::maybe_check_access_sizes): For VLA bounds - in parameters, only warn about null pointers with 'static'. - -2023-11-03 Andre Vieira <andre.simoesdiasvieira@arm.com> - - * tree-vect-stmts.cc (vectorizable_simd_clone_call): Allow unmasked - calls to use masked simdclones. - -2023-11-03 David Malcolm <dmalcolm@redhat.com> - - * diagnostic.cc (diagnostic_initialize): Update for consolidation - of group-based fields. - (diagnostic_report_diagnostic): Likewise. - (diagnostic_context::begin_group): New, based on body of - auto_diagnostic_group's ctor. - (diagnostic_context::end_group): New, based on body of - auto_diagnostic_group's dtor. - (auto_diagnostic_group::auto_diagnostic_group): Convert to a call - to begin_group. - (auto_diagnostic_group::~auto_diagnostic_group): Convert to a call - to end_group. - * diagnostic.h (diagnostic_context::begin_group): New decl. - (diagnostic_context::end_group): New decl. - (diagnostic_context::diagnostic_group_nesting_depth): Rename to... - (diagnostic_context::m_diagnostic_groups.m_nesting_depth): - ...this. - (diagnostic_context::diagnostic_group_emission_count): Rename - to... - (diagnostic_context::m_diagnostic_groups::m_emission_count): - ...this. - -2023-11-03 Andrew MacLeod <amacleod@redhat.com> - - PR tree-optimization/111766 - * range-op.cc (operator_equal::fold_range): Check constants - against the bitmask. - (operator_not_equal::fold_range): Ditto. - * value-range.h (irange_bitmask::member_p): New. - -2023-11-03 Andrew MacLeod <amacleod@redhat.com> - - * value-range.cc (irange_bitmask::adjust_range): New. - (irange::intersect_bitmask): Call adjust_range. - * value-range.h (irange_bitmask::adjust_range): New prototype. - -2023-11-03 Uros Bizjak <ubizjak@gmail.com> - - * config/i386/i386.cc (ix86_memory_address_use_extended_reg_class_p): - Rename to ... - (ix86_memory_address_reg_class): ... this. Generalize address - register class handling to allow multiple address register classes. - Return maximal class for unrecognized instructions. Improve comments. - (ix86_insn_base_reg_class): Rewrite to handle - multiple address register classes. - (ix86_regno_ok_for_insn_base_p): Ditto. - (ix86_insn_index_reg_class): Ditto. - * config/i386/i386.md: Rename "gpr32" attribute to "addr" - and substitute its values with "0" -> "gpr16", "1" -> "*". - (addr): New attribute to limit allowed address register set. - (gpr32): Remove. - * config/i386/mmx.md: Rename "gpr32" attribute to "addr" - and substitute its values with "0" -> "gpr16", "1" -> "*". - * config/i386/sse.md: Ditto. - -2023-11-03 Richard Biener <rguenther@suse.de> - - * tree-vect-loop.cc (vectorizable_live_operation): Simplify - LC PHI replacement. - -2023-11-03 Roger Sayle <roger@nextmovesoftware.com> - - * config/arc/arc.md (addsi3): Fix GNU-style code formatting. - (adddi3): Change define_expand to generate a *adddi3. - (*adddi3): New define_insn_and_split to lower DImode additions - during the split1 pass (after combine and before reload). - (ashldi3): New define_expand to (only) generate *ashldi3_cnt1 - for DImode left shifts by a single bit. - (*ashldi3_cnt1): New define_insn_and_split to lower DImode - left shifts by one bit to an *adddi3. - -2023-11-03 Richard Sandiford <richard.sandiford@arm.com> - - * config/aarch64/aarch64.md (*cmov_uxtw_insn_insv): Remove - can_create_pseudo_p condition. - -2023-11-03 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * tree-vect-slp.cc (vect_get_and_check_slp_defs): Support SLP for dummy mask -1. - * tree-vect-stmts.cc (vectorizable_load): Ditto. - -2023-11-03 Richard Biener <rguenther@suse.de> - - PR tree-optimization/112366 - * tree-vect-loop.cc (vectorizable_live_operation): Remove - assert. - -2023-11-03 Richard Biener <rguenther@suse.de> - - PR tree-optimization/112310 - * tree-ssa-pre.cc (do_hoist_insertion): Keep the union - of expressions, validate dependences are contained within - the hoistable set before hoisting. - -2023-11-03 Pan Li <pan2.li@intel.com> - - * config/riscv/autovec.md (lrint<mode><v_i_l_ll_convert>2): Remove. - (lround<mode><v_i_l_ll_convert>2): Ditto. - (lceil<mode><v_i_l_ll_convert>2): Ditto. - (lfloor<mode><v_i_l_ll_convert>2): Ditto. - (lrint<mode><v_f2si_convert>2): New pattern for cvt from - FP to SI. - (lround<mode><v_f2si_convert>2): Ditto. - (lceil<mode><v_f2si_convert>2): Ditto. - (lfloor<mode><v_f2si_convert>2): Ditto. - (lrint<mode><v_f2di_convert>2): New pattern for cvt from - FP to DI. - (lround<mode><v_f2di_convert>2): Ditto. - (lceil<mode><v_f2di_convert>2): Ditto. - (lfloor<mode><v_f2di_convert>2): Ditto. - * config/riscv/vector-iterators.md: Renew iterators for both - the SI and DI. - -2023-11-03 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - PR target/112326 - * config/riscv/riscv-avlprop.cc (get_insn_vtype_mode): New function. - (simplify_replace_vlmax_avl): Ditto. - (pass_avlprop::execute): Add immediate AVL simplification. - * config/riscv/riscv-protos.h (imm_avl_p): Rename. - * config/riscv/riscv-v.cc (const_vlmax_p): Ditto. - (imm_avl_p): Ditto. - (emit_vlmax_insn): Adapt for new interface name. - * config/riscv/vector.md (mode_idx): New attribute. - -2023-11-03 Pan Li <pan2.li@intel.com> - - Revert: - 2023-11-02 Pan Li <pan2.li@intel.com> - - * config/riscv/autovec.md (lrint<mode><v_i_l_ll_convert>2): Remove. - (lround<mode><v_i_l_ll_convert>2): Ditto. - (lceil<mode><v_i_l_ll_convert>2): Ditto. - (lfloor<mode><v_i_l_ll_convert>2): Ditto. - (lrint<mode><v_f2si_convert>2): New pattern for cvt from - FP to SI. - (lround<mode><v_f2si_convert>2): Ditto. - (lceil<mode><v_f2si_convert>2): Ditto. - (lfloor<mode><v_f2si_convert>2): Ditto. - (lrint<mode><v_f2di_convert>2): New pattern for cvt from - FP to DI. - (lround<mode><v_f2di_convert>2): Ditto. - (lceil<mode><v_f2di_convert>2): Ditto. - (lfloor<mode><v_f2di_convert>2): Ditto. - * config/riscv/vector-iterators.md: Renew iterators for both - the SI and DI. - -2023-11-02 Edwin Lu <ewlu@rivosinc.com> - - * config/riscv/riscv.cc (riscv_sched_variable_issue): add disabled assert - -2023-11-02 Jeff Law <jlaw@ventanamicro.com> - - * config/h8300/combiner.md: Add new patterns for single bit - sign extractions. - -2023-11-02 Pan Li <pan2.li@intel.com> - - * config/riscv/autovec.md (lrint<mode><v_i_l_ll_convert>2): Remove. - (lround<mode><v_i_l_ll_convert>2): Ditto. - (lceil<mode><v_i_l_ll_convert>2): Ditto. - (lfloor<mode><v_i_l_ll_convert>2): Ditto. - (lrint<mode><v_f2si_convert>2): New pattern for cvt from - FP to SI. - (lround<mode><v_f2si_convert>2): Ditto. - (lceil<mode><v_f2si_convert>2): Ditto. - (lfloor<mode><v_f2si_convert>2): Ditto. - (lrint<mode><v_f2di_convert>2): New pattern for cvt from - FP to DI. - (lround<mode><v_f2di_convert>2): Ditto. - (lceil<mode><v_f2di_convert>2): Ditto. - (lfloor<mode><v_f2di_convert>2): Ditto. - * config/riscv/vector-iterators.md: Renew iterators for both - the SI and DI. - -2023-11-02 Sam James <sam@gentoo.org> - - * doc/passes.texi (Dead code elimination): Explicitly say 'lifetime' - as this has become the standard term for what we're doing here. - -2023-11-02 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv-avlprop.cc - (pass_avlprop::get_vlmax_ta_preferred_avl): Don't allow - non-real insn AVL propation. - -2023-11-02 Robin Dapp <rdapp@ventanamicro.com> - - PR middle-end/111401 - * internal-fn.cc (internal_fn_else_index): New function. - * internal-fn.h (internal_fn_else_index): Define. - * tree-if-conv.cc (convert_scalar_cond_reduction): Emit COND_OP - if supported. - (predicate_scalar_phi): Add whitespace. - * tree-vect-loop.cc (fold_left_reduction_fn): Add IFN_COND_OP. - (neutral_op_for_reduction): Return -0 for PLUS. - (check_reduction_path): Don't count else operand in COND_OP. - (vect_is_simple_reduction): Ditto. - (vect_create_epilog_for_reduction): Fix whitespace. - (vectorize_fold_left_reduction): Add COND_OP handling. - (vectorizable_reduction): Don't count else operand in COND_OP. - (vect_transform_reduction): Add COND_OP handling. - * tree-vectorizer.h (neutral_op_for_reduction): Add default - parameter. - -2023-11-02 Richard Biener <rguenther@suse.de> - - PR tree-optimization/112320 - * gimple-fold.h (rewrite_to_defined_overflow): New overload - for in-place operation. - * gimple-fold.cc (rewrite_to_defined_overflow): Add stmt - iterator argument to worker, define separate API for - in-place and not in-place operation. - * tree-if-conv.cc (predicate_statements): Simplify. - * tree-scalar-evolution.cc (final_value_replacement_loop): - Likewise. - * tree-ssa-ifcombine.cc (pass_tree_ifcombine::execute): Adjust. - * tree-ssa-reassoc.cc (update_range_test): Likewise. - -2023-11-02 Uros Bizjak <ubizjak@gmail.com> - - * config/i386/i386.md: Move stack protector patterns - above mov $0,%reg -> xor %reg,%reg peephole2 pattern. - -2023-11-02 liuhongt <hongtao.liu@intel.com> - - * config/i386/mmx.md (cmlav4hf4): New expander. - (cmla_conjv4hf4): Ditto. - (cmulv4hf3): Ditto. - (cmul_conjv4hf3): Ditto. - -2023-11-02 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/vector.md: Fix redundant codes in attributes. - -2023-11-02 xuli <xuli1@eswincomputing.com> - - * config/riscv/riscv-vector-builtins-bases.cc: Expand non-tuple intrinsics. - * config/riscv/riscv-vector-builtins-functions.def (vcreate): Define non-tuple intrinsics. - * config/riscv/riscv-vector-builtins-shapes.cc (struct vcreate_def): Ditto. - * config/riscv/riscv-vector-builtins.cc: Add arg types. - -2023-11-02 Pan Li <pan2.li@intel.com> - - * tree-vect-stmts.cc (vectorizable_internal_function): Add type - size check for vectype_out doesn't participating for optab query. - (vectorizable_call): Remove the type size check. - -2023-11-02 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - PR target/112327 - * config/riscv/vector.md: Add '0'. - -2023-11-01 Roger Sayle <roger@nextmovesoftware.com> - - PR target/110551 - * config/i386/i386.md (*bmi2_umul<mode><dwi>3_1): Tidy condition - as operands[2] with predicate register_operand must be !MEM_P. - (peephole2): Optimize a mulx followed by a register-to-register - move, to place result in the correct destination if possible. - -2023-11-01 Patrick O'Neill <patrick@rivosinc.com> - - * config/riscv/sync.md: Use riscv_subword_address function to - calculate the address and shift in atomic_test_and_set. - -2023-11-01 Vineet Gupta <vineetg@rivosinc.com> - - * config/riscv/riscv.cc (riscv_promote_function_mode): Fix mode - returned for libcall case. - -2023-11-01 Martin Uecker <uecker@tugraz.at> - - PR c/71219 - * doc/invoke.texi: Document -Walloc-size option. - -2023-11-01 Edwin Lu <ewlu@rivosinc.com> - - * genautomata.cc (write_automata): move endif - -2023-11-01 Andre Vieira <andre.simoesdiasvieira@arm.com> - - * omp-simd-clone.cc (simd_clone_adjust_return_type): Hoist out code to - create return array and don't return new type. - (simd_clone_adjust_argument_types): Hoist out code that creates - ipa_param_body_adjustments and don't return them. - (simd_clone_adjust): Call TARGET_SIMD_CLONE_ADJUST after return and - argument types have been vectorized, create adjustments and return array - after the hook. - (expand_simd_clones): Call TARGET_SIMD_CLONE_ADJUST after return and - argument types have been vectorized. - -2023-11-01 Uros Bizjak <ubizjak@gmail.com> - - PR target/112332 - * config/i386/i386.md (stack_protexct_set_2 peephole2): - Use general_gr_operand as operand 4 predicate. - -2023-11-01 Uros Bizjak <ubizjak@gmail.com> - - * config/i386/i386.md (stack_protect_set): Explicitly - generate scratch register in word mode. - (@stack_protect_set_1_<mode>): Rename to ... - (@stack_protect_set_1_<PTR:mode>_<SWI48:mode>): ... this. - Use SWI48 mode iterator to match scratch register. - (stack_protexct_set_1 peephole2): Use PTR, W and SWI48 mode - iterators to match peephole sequence. Use general_operand - predicate for operand 4. Allow different operand 2 and operand 3 - registers and use peep2_reg_dead_p to ensure new scratch - register is dead before peephole seqeunce. Use peep2_reg_dead_p - to ensure old scratch register is dead after peephole sequence. - (*stack_protect_set_2_<mode>): Rename to ... - (*stack_protect_set_2_<mode>_si): .. this. - (*stack_protect_set_3): Rename to ... - (*stack_protect_set_2_<mode>_di): ... this. - Use PTR mode iterator to match stack protector memory move. - Use earlyclobber for all alternatives of operand 1. - (stack_protexct_set_2 peephole2): Use PTR, W and SWI48 mode - iterators to match peephole sequence. Use general_operand - predicate for operand 4. Allow different operand 2 and operand 3 - registers and use peep2_reg_dead_p to ensure new scratch - register is dead before peephole seqeunce. Use peep2_reg_dead_p - to ensure old scratch register is dead after peephole sequence. - -2023-11-01 xuli <xuli1@eswincomputing.com> - - * config/riscv/riscv-vector-builtins-functions.def (vundefined): Add vundefine - intrinsics for tuple types. - * config/riscv/riscv-vector-builtins.cc: Ditto. - * config/riscv/vector.md (@vundefined<mode>): Ditto. - -2023-11-01 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * tree-vect-slp.cc (vect_build_slp_tree_1): Fix whitespace. - -2023-10-31 David Malcolm <dmalcolm@redhat.com> - - * Makefile.in (ANALYZER_OBJS): Add analyzer/record-layout.o. - -2023-10-31 David Malcolm <dmalcolm@redhat.com> - - * input.cc (dump_location_info): Update for removal of - MACRO_MAP_EXPANSION_POINT_LOCATION. - * tree-diagnostic.cc (maybe_unwind_expanded_macro_loc): - Likewise. - -2023-10-31 David Malcolm <dmalcolm@redhat.com> - - * opts.cc (get_option_url): Update comment; the requirement to - pass DOCUMENTATION_ROOT_URL's value via -D was removed in - r10-8065-ge33a1eae25b8a8. - -2023-10-31 David Malcolm <dmalcolm@redhat.com> - - * pretty-print.cc (pretty_printer::pretty_printer): Initialize - m_skipping_null_url. - (pp_begin_url): Handle URL being null. - (pp_end_url): Likewise. - (selftest::test_null_urls): New. - (selftest::pretty_print_cc_tests): Call it. - * pretty-print.h (pretty_printer::m_skipping_null_url): New. - -2023-10-31 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * tree-vect-slp.cc (vect_get_operand_map): Add MASK_LEN_GATHER_LOAD. - (vect_build_slp_tree_1): Ditto. - (vect_build_slp_tree_2): Ditto. - -2023-10-31 Cupertino Miranda <cupertino.miranda@oracle.com> - - * config/bpf/bpf-passes.def (pass_lower_bpf_core): Added pass. - * config/bpf/bpf-protos.h: Added prototype for new pass. - * config/bpf/bpf.cc (bpf_delegitimize_address): New function. - * config/bpf/bpf.md (mov_reloc_core<MM:mode>): Prefixed - name with '*'. - * config/bpf/core-builtins.cc (cr_builtins) Added access_node to - struct. - (is_attr_preserve_access): Improved check. - (core_field_info): Make use of root_for_core_field_info - function. - (process_field_expr): Adapted to new functions. - (pack_type): Small improvement. - (bpf_handle_plugin_finish_type): Adapted to GTY(()). - (bpf_init_core_builtins): Changed to new function names. - (construct_builtin_core_reloc): Improved implementation. - (bpf_resolve_overloaded_core_builtin): Changed how - __builtin_preserve_access_index is converted. - (compute_field_expr): Corrected implementation. Added - access_node argument. - (bpf_core_get_index): Added valid argument. - (root_for_core_field_info, pack_field_expr) - (core_expr_with_field_expr_plus_base, make_core_safe_access_index) - (replace_core_access_index_comp_expr, maybe_get_base_for_field_expr) - (core_access_clean, core_is_access_index, core_mark_as_access_index) - (make_gimple_core_safe_access_index, execute_lower_bpf_core) - (make_pass_lower_bpf_core): Added functions. - (pass_data_lower_bpf_core): New pass struct. - (pass_lower_bpf_core): New gimple_opt_pass class. - (pack_field_expr_for_preserve_field) - (bpf_replace_core_move_operands): Removed function. - (bpf_enum_value_kind): Added GTY(()). - * config/bpf/core-builtins.h (bpf_field_info_kind, bpf_type_id_kind) - (bpf_type_info_kind, bpf_enum_value_kind): New enum. - * config/bpf/t-bpf: Added pass bpf-passes.def to PASSES_EXTRA. - -2023-10-31 Neal Frager <neal.frager@amd.com> - - * config/microblaze/microblaze.cc: Fix mcpu version check. - -2023-10-31 Patrick O'Neill <patrick@rivosinc.com> - - * config/riscv/sync-rvwmo.md (atomic_load_rvwmo<mode>): Remove - TARGET_ATOMIC constraint - (atomic_store_rvwmo<mode>): Ditto. - * config/riscv/sync-ztso.md (atomic_load_ztso<mode>): Ditto. - (atomic_store_ztso<mode>): Ditto. - * config/riscv/sync.md (atomic_load<mode>): Ditto. - (atomic_store<mode>): Ditto. - -2023-10-31 Christoph Müllner <christoph.muellner@vrull.eu> - - * config/riscv/riscv.cc (riscv_index_reg_class): - Return GR_REGS for XTheadFMemIdx. - (riscv_regno_ok_for_index_p): Add support for XTheadFMemIdx. - * config/riscv/riscv.h (HARDFP_REG_P): New macro. - * config/riscv/thead.cc (is_fmemidx_mode): New function. - (th_memidx_classify_address_index): Add support for XTheadFMemIdx. - (th_fmemidx_output_index): New function. - (th_output_move): Add support for XTheadFMemIdx. - * config/riscv/thead.md (TH_M_ANYF): New mode iterator. - (TH_M_NOEXTF): Likewise. - (*th_fmemidx_movsf_hardfloat): New INSN. - (*th_fmemidx_movdf_hardfloat_rv64): Likewise. - (*th_fmemidx_I_a): Likewise. - (*th_fmemidx_I_c): Likewise. - (*th_fmemidx_US_a): Likewise. - (*th_fmemidx_US_c): Likewise. - (*th_fmemidx_UZ_a): Likewise. - (*th_fmemidx_UZ_c): Likewise. - -2023-10-31 Christoph Müllner <christoph.muellner@vrull.eu> - - * config/riscv/constraints.md (th_m_mia): New constraint. - (th_m_mib): Likewise. - (th_m_mir): Likewise. - (th_m_miu): Likewise. - * config/riscv/riscv-protos.h (enum riscv_address_type): - Add new address types ADDRESS_REG_REG, ADDRESS_REG_UREG, - and ADDRESS_REG_WB and their documentation. - (struct riscv_address_info): Add new field 'shift' and - document the field usage for the new address types. - (riscv_valid_base_register_p): New prototype. - (th_memidx_legitimate_modify_p): Likewise. - (th_memidx_legitimate_index_p): Likewise. - (th_classify_address): Likewise. - (th_output_move): Likewise. - (th_print_operand_address): Likewise. - * config/riscv/riscv.cc (riscv_index_reg_class): - Return GR_REGS for XTheadMemIdx. - (riscv_regno_ok_for_index_p): Add support for XTheadMemIdx. - (riscv_classify_address): Call th_classify_address() on top. - (riscv_output_move): Call th_output_move() on top. - (riscv_print_operand_address): Call th_print_operand_address() - on top. - * config/riscv/riscv.h (HAVE_POST_MODIFY_DISP): New macro. - (HAVE_PRE_MODIFY_DISP): Likewise. - * config/riscv/riscv.md (zero_extendqi<SUPERQI:mode>2): Disable - for XTheadMemIdx. - (*zero_extendqi<SUPERQI:mode>2_internal): Convert to expand, - create INSN with same name and disable it for XTheadMemIdx. - (extendsidi2): Likewise. - (*extendsidi2_internal): Disable for XTheadMemIdx. - * config/riscv/thead.cc (valid_signed_immediate): New helper - function. - (th_memidx_classify_address_modify): New function. - (th_memidx_legitimate_modify_p): Likewise. - (th_memidx_output_modify): Likewise. - (is_memidx_mode): Likewise. - (th_memidx_classify_address_index): Likewise. - (th_memidx_legitimate_index_p): Likewise. - (th_memidx_output_index): Likewise. - (th_classify_address): Likewise. - (th_output_move): Likewise. - (th_print_operand_address): Likewise. - * config/riscv/thead.md (*th_memidx_operand): New splitter. - (*th_memidx_zero_extendqi<SUPERQI:mode>2): New INSN. - (*th_memidx_extendsidi2): Likewise. - (*th_memidx_zero_extendsidi2): Likewise. - (*th_memidx_zero_extendhi<GPR:mode>2): Likewise. - (*th_memidx_extend<SHORT:mode><SUPERQI:mode>2): Likewise. - (*th_memidx_bb_zero_extendsidi2): Likewise. - (*th_memidx_bb_zero_extendhi<GPR:mode>2): Likewise. - (*th_memidx_bb_extendhi<GPR:mode>2): Likewise. - (*th_memidx_bb_extendqi<SUPERQI:mode>2): Likewise. - (TH_M_ANYI): New mode iterator. - (TH_M_NOEXTI): Likewise. - (*th_memidx_I_a): New combiner optimization. - (*th_memidx_I_b): Likewise. - (*th_memidx_I_c): Likewise. - (*th_memidx_US_a): Likewise. - (*th_memidx_US_b): Likewise. - (*th_memidx_US_c): Likewise. - (*th_memidx_UZ_a): Likewise. - (*th_memidx_UZ_b): Likewise. - (*th_memidx_UZ_c): Likewise. - -2023-10-31 Carl Love <cel@us.ibm.com> - - * doc/extend.texi (__builtin_bcdsub_le, __builtin_bcdsub_ge): Add - documentation for the builti-ins. - -2023-10-31 Vladimir N. Makarov <vmakarov@redhat.com> - - PR rtl-optimization/111971 - * lra-constraints.cc: (process_alt_operands): Don't check start - hard regs for regs originated from register variables. - -2023-10-31 Robin Dapp <rdapp@ventanamicro.com> - - * config/riscv/autovec.md (<ieee_fmaxmin_op><mode>3): fmax/fmin - expanders. - (cond_<ieee_fmaxmin_op><mode>): Ditto. - (cond_len_<ieee_fmaxmin_op><mode>): Ditto. - (reduc_fmax_scal_<mode>): Ditto. - (reduc_fmin_scal_<mode>): Ditto. - * config/riscv/riscv-v.cc (needs_fp_rounding): Add fmin/fmax. - * config/riscv/vector-iterators.md (fmin): New UNSPEC. - (UNSPEC_VFMIN): Ditto. - * config/riscv/vector.md (@pred_<ieee_fmaxmin_op><mode>): Add - UNSPEC insn patterns. - (@pred_<ieee_fmaxmin_op><mode>_scalar): Ditto. - -2023-10-31 Robin Dapp <rdapp@ventanamicro.com> - - PR bootstrap/84402 - PR target/111600 - * Makefile.in: Handle split insn-emit.cc. - * configure: Regenerate. - * configure.ac: Add --with-insnemit-partitions. - * genemit.cc (output_peephole2_scratches): Print to file instead - of stdout. - (print_code): Ditto. - (gen_rtx_scratch): Ditto. - (gen_exp): Ditto. - (gen_emit_seq): Ditto. - (emit_c_code): Ditto. - (gen_insn): Ditto. - (gen_expand): Ditto. - (gen_split): Ditto. - (output_add_clobbers): Ditto. - (output_added_clobbers_hard_reg_p): Ditto. - (print_overload_arguments): Ditto. - (print_overload_test): Ditto. - (handle_overloaded_code_for): Ditto. - (handle_overloaded_gen): Ditto. - (print_header): New function. - (handle_arg): New function. - (main): Split output into 10 files. - * gensupport.cc (count_patterns): New function. - * gensupport.h (count_patterns): Define. - * read-md.cc (md_reader::print_md_ptr_loc): Add file argument. - * read-md.h (class md_reader): Change definition. - -2023-10-31 Alexandre Oliva <oliva@adacore.com> - - PR tree-optimization/111943 - * gimple-harden-control-flow.cc: Adjust copyright year. - (rt_bb_visited): Add vfalse and vtrue data members. - Zero-initialize them in the ctor. - (rt_bb_visited::insert_exit_check_on_edge): Upon encountering - abnormal edges, insert initializers for vfalse and vtrue on - entry, and insert the check sequence guarded by a conditional - in the dest block. - -2023-10-31 Richard Biener <rguenther@suse.de> - - PR tree-optimization/112305 - * tree-scalar-evolution.h (expression_expensive): Adjust. - * tree-scalar-evolution.cc (expression_expensive): Record - when we see a COND_EXPR. - (final_value_replacement_loop): When the replacement contains - a COND_EXPR, rewrite it to defined overflow. - * tree-ssa-loop-ivopts.cc (may_eliminate_iv): Adjust. - -2023-10-31 Xi Ruoyao <xry111@xry111.site> - - PR target/112299 - * config/loongarch/loongarch-opts.h (HAVE_AS_TLS): Define to 0 - if not defined yet. - -2023-10-31 Lehua Ding <lehua.ding@rivai.ai> - - * gimple-match.h (gimple_match_op::gimple_match_op): - Add interfaces for more arguments. - (gimple_match_op::set_op): Add interfaces for more arguments. - * match.pd: Add support of combining cond_len_op + vec_cond - -2023-10-31 Haochen Jiang <haochen.jiang@intel.com> - - * config/i386/avx512cdintrin.h (target): Push evex512 for - avx512cd. - * config/i386/avx512vlintrin.h (target): Split avx512cdvl part - out from avx512vl. - * config/i386/i386-builtin.def (BDESC): Do not check evex512 - for builtins not needed. - -2023-10-31 Lehua Ding <lehua.ding@rivai.ai> - - * config/riscv/autovec.md (<float_cvt><mode><vnnconvert>2): - Change to define_expand. - -2023-10-31 liuhongt <hongtao.liu@intel.com> - - PR target/112276 - * config/i386/mmx.md (*mmx_pblendvb_v8qi_1): Change - define_split to define_insn_and_split to handle - immediate_operand for comparison. - (*mmx_pblendvb_v8qi_2): Ditto. - (*mmx_pblendvb_<mode>_1): Ditto. - (*mmx_pblendvb_v4qi_2): Ditto. - (<code><mode>3): Remove define_split after it. - (<code>v8qi3): Ditto. - (<code><mode>3): Ditto. - (<ode>v2hi3): Ditto. - -2023-10-31 Andrew Pinski <pinskia@gmail.com> - - * match.pd (`a == 1 ? b : a OP b`): New pattern. - (`a == -1 ? b : a & b`): New pattern. - -2023-10-31 Andrew Pinski <pinskia@gmail.com> - - * match.pd: (`a == 0 ? b : b + a`, - `a == 0 ? b : b - a`): New patterns. - -2023-10-31 Neal Frager <neal.frager@amd.com> - - * config/microblaze/microblaze.cc: Fix mcpu version check. - -2023-10-30 Mayshao <mayshao-oc@zhaoxin.com> - - * common/config/i386/cpuinfo.h (get_zhaoxin_cpu): Recognize yongfeng. - * common/config/i386/i386-common.cc: Add yongfeng. - * common/config/i386/i386-cpuinfo.h (enum processor_subtypes): - Add ZHAOXIN_FAM7H_YONGFENG. - * config.gcc: Add yongfeng. - * config/i386/driver-i386.cc (host_detect_local_cpu): - Let -march=native recognize yongfeng processors. - * config/i386/i386-c.cc (ix86_target_macros_internal): Add yongfeng. - * config/i386/i386-options.cc (m_YONGFENG): New definition. - (m_ZHAOXIN): Ditto. - * config/i386/i386.h (enum processor_type): Add PROCESSOR_YONGFENG. - * config/i386/i386.md: Add yongfeng. - * config/i386/lujiazui.md: Fix typo. - * config/i386/x86-tune-costs.h (struct processor_costs): - Add yongfeng costs. - * config/i386/x86-tune-sched.cc (ix86_issue_rate): Add yongfeng. - (ix86_adjust_cost): Ditto. - * config/i386/x86-tune.def (X86_TUNE_SCHEDULE): Replace - m_LUJIAZUI with m_ZHAOXIN. - (X86_TUNE_PARTIAL_REG_DEPENDENCY): Ditto. - (X86_TUNE_SSE_PARTIAL_REG_DEPENDENCY): Ditto. - (X86_TUNE_SSE_PARTIAL_REG_FP_CONVERTS_DEPENDENCY): Ditto. - (X86_TUNE_SSE_PARTIAL_REG_CONVERTS_DEPENDENCY): Ditto. - (X86_TUNE_MOVX): Ditto. - (X86_TUNE_MEMORY_MISMATCH_STALL): Ditto. - (X86_TUNE_FUSE_CMP_AND_BRANCH_32): Ditto. - (X86_TUNE_FUSE_CMP_AND_BRANCH_64): Ditto. - (X86_TUNE_FUSE_CMP_AND_BRANCH_SOFLAGS): Ditto. - (X86_TUNE_FUSE_ALU_AND_BRANCH): Ditto. - (X86_TUNE_ACCUMULATE_OUTGOING_ARGS): Ditto. - (X86_TUNE_USE_LEAVE): Ditto. - (X86_TUNE_PUSH_MEMORY): Ditto. - (X86_TUNE_LCP_STALL): Ditto. - (X86_TUNE_INTEGER_DFMODE_MOVES): Ditto. - (X86_TUNE_OPT_AGU): Ditto. - (X86_TUNE_PREFER_KNOWN_REP_MOVSB_STOSB): Ditto. - (X86_TUNE_MISALIGNED_MOVE_STRING_PRO_EPILOGUES): Ditto. - (X86_TUNE_USE_SAHF): Ditto. - (X86_TUNE_USE_BT): Ditto. - (X86_TUNE_AVOID_FALSE_DEP_FOR_BMI): Ditto. - (X86_TUNE_ONE_IF_CONV_INSN): Ditto. - (X86_TUNE_AVOID_MFENCE): Ditto. - (X86_TUNE_EXPAND_ABS): Ditto. - (X86_TUNE_USE_SIMODE_FIOP): Ditto. - (X86_TUNE_USE_FFREEP): Ditto. - (X86_TUNE_EXT_80387_CONSTANTS): Ditto. - (X86_TUNE_SSE_UNALIGNED_LOAD_OPTIMAL): Ditto. - (X86_TUNE_SSE_UNALIGNED_STORE_OPTIMAL): Ditto. - (X86_TUNE_SSE_TYPELESS_STORES): Ditto. - (X86_TUNE_SSE_LOAD0_BY_PXOR): Ditto. - (X86_TUNE_USE_GATHER_2PARTS): Add m_YONGFENG. - (X86_TUNE_USE_GATHER_4PARTS): Ditto. - (X86_TUNE_USE_GATHER_8PARTS): Ditto. - (X86_TUNE_AVOID_128FMA_CHAINS): Ditto. - * doc/extend.texi: Add details about yongfeng. - * doc/invoke.texi: Ditto. - * config/i386/yongfeng.md: New file to describe yongfeng processor. - -2023-10-30 Martin Jambor <mjambor@suse.cz> - - PR ipa/111157 - * ipa-prop.h (struct ipa_argagg_value): Newf flag killed. - * ipa-modref.cc (ipcp_argagg_and_kill_overlap_p): New function. - (update_signature): Mark any any IPA-CP aggregate constants at - positions known to be killed as killed. Move check that there is - clone_info after this pruning. - * ipa-cp.cc (ipa_argagg_value_list::dump): Dump the killed flag. - (ipa_argagg_value_list::push_adjusted_values): Clear the new flag. - (push_agg_values_from_plats): Likewise. - (ipa_push_agg_values_from_jfunc): Likewise. - (estimate_local_effects): Likewise. - (push_agg_values_for_index_from_edge): Likewise. - * ipa-prop.cc (write_ipcp_transformation_info): Stream the killed - flag. - (read_ipcp_transformation_info): Likewise. - (ipcp_get_aggregate_const): Update comment, assert that encountered - record does not have killed flag set. - (ipcp_transform_function): Prune all aggregate constants with killed - set. - -2023-10-30 Martin Jambor <mjambor@suse.cz> - - PR ipa/111157 - * ipa-prop.h (ipcp_transformation): New member function template - remove_argaggs_if. - * ipa-sra.cc (zap_useless_ipcp_results): Use remove_argaggs_if to - filter aggreagate constants. - -2023-10-30 Roger Sayle <roger@nextmovesoftware.com> - - PR middle-end/101955 - * config/arc/arc.md (*extvsi_1_0): New define_insn_and_split - to convert sign extract of the least significant bit into an - AND $1 then a NEG when !TARGET_BARREL_SHIFTER. - -2023-10-30 Roger Sayle <roger@nextmovesoftware.com> - - * config/arc/arc.cc (arc_rtx_costs): Improve cost estimates. - Provide reasonable values for SHIFTS and ROTATES by constant - bit counts depending upon TARGET_BARREL_SHIFTER. - (arc_insn_cost): Use insn attributes if the instruction is - recognized. Avoid calling get_attr_length for type "multi", - i.e. define_insn_and_split patterns without explicit type. - Fall-back to set_rtx_cost for single_set and pattern_cost - otherwise. - * config/arc/arc.h (COSTS_N_BYTES): Define helper macro. - (BRANCH_COST): Improve/correct definition. - (LOGICAL_OP_NON_SHORT_CIRCUIT): Preserve previous behavior. - -2023-10-30 Roger Sayle <roger@nextmovesoftware.com> - - * config/arc/arc.cc (arc_split_ashl): Use lsl16 on TARGET_SWAP. - (arc_split_ashr): Use swap and sign-extend on TARGET_SWAP. - (arc_split_lshr): Use lsr16 on TARGET_SWAP. - (arc_split_rotl): Use swap on TARGET_SWAP. - (arc_split_rotr): Likewise. - * config/arc/arc.md (ANY_ROTATE): New code iterator. - (<ANY_ROTATE>si2_cnt16): New define_insn for alternate form of - swap instruction on TARGET_SWAP. - (ashlsi2_cnt16): Rename from *ashlsi16_cnt16 and move earlier. - (lshrsi2_cnt16): New define_insn for LSR16 instruction. - (*ashlsi2_cnt16): See above. - -2023-10-30 Richard Ball <richard.ball@arm.com> - - * config/arm/aout.h: Change to use the Lrtx label. - * config/arm/arm.h (CASE_VECTOR_PC_RELATIVE): Remove arm targets - from (!target_pure_code) condition. - (ADDR_VEC_ALIGN): Add align for tables in rodata section. - * config/arm/arm.cc (arm_output_casesi): Alter the function to include - .Lrtx label and remove adr instructions. - * config/arm/arm.md - (arm_casesi_internal): Use force_reg to generate ldr instructions that - would otherwise be out of range, and change rtl to accommodate force reg. - Additionally remove unnecessary register temp. - (casesi): Remove pure code check for Arm. - * config/arm/elf.h (JUMP_TABLES_IN_TEXT_SECTION): Remove arm - targets from JUMP_TABLES_IN_TEXT_SECTION definition. - -2023-10-30 Jeevitha Palanisamy <jeevitha@linux.ibm.com> - - PR target/106907 - * config/rs6000/rs6000.cc (altivec_expand_vec_perm_const): Change bitwise - xor to an equality and fix comment indentation. - -2023-10-30 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv-protos.h (sew64_scalar_helper): Fix bug. - * config/riscv/riscv-v.cc (sew64_scalar_helper): Ditto. - * config/riscv/vector.md: Ditto. - -2023-10-30 liuhongt <hongtao.liu@intel.com> - - PR target/104610 - * config/i386/i386-expand.cc (ix86_expand_branch): Handle - 512-bit vector with vpcmpeq + kortest. - * config/i386/i386.md (cbranchxi4): New expander. - * config/i386/sse.md: (cbranch<mode>4): Extend to V16SImode - and V8DImode. - -2023-10-30 Haochen Gui <guihaoc@gcc.gnu.org> - - PR target/111449 - * expr.cc (qi_vector_mode_supported_p): Rename to... - (by_pieces_mode_supported_p): ...this, and extends it to do - the checking for both scalar and vector mode. - (widest_fixed_size_mode_for_size): Call - by_pieces_mode_supported_p to examine the mode. - (op_by_pieces_d::smallest_fixed_size_mode_for_size): Likewise. - -2023-10-29 Martin Uecker <uecker@tugraz.at> - - PR tree-optimization/109334 - * tree-object-size.cc (parm_object_size): Allow size - computation for implicit access attributes. - -2023-10-29 Max Filippov <jcmvbkbc@gmail.com> - - * config/xtensa/xtensa.h (TARGET_SALT): Change HW version from - 260000 (which corresponds to RF-2014.0) to 270000 (which - corresponds to RG-2015.0, the release where salt/saltu opcodes - were introduced). - -2023-10-29 Pan Li <pan2.li@intel.com> - - * config/riscv/riscv-avlprop.cc (pass_avlprop::execute): Use - reference type to prevent copying. - -2023-10-27 Vladimir N. Makarov <vmakarov@redhat.com> - - PR rtl-optimization/112107 - * ira-costs.cc: (calculate_equiv_gains): Use NONDEBUG_INSN_P - instead of INSN_P. - -2023-10-27 Andrew Stubbs <ams@codesourcery.com> - - PR target/112088 - * config/gcn/gcn.cc (gcn_expand_epilogue): Fix kernel epilogue register - conflict. - -2023-10-27 Andrew Stubbs <ams@codesourcery.com> - - * config/gcn/gcn-valu.md - (vec_extract<V_1REG:mode><V_1REG_ALT:mode>_nop): Mention "operands" in - condition to silence the warnings. - (vec_extract<V_2REG:mode><V_2REG_ALT:mode>_nop): Likewise. - * config/gcn/gcn.md (*movti_insn): Likewise. - -2023-10-27 Richard Sandiford <richard.sandiford@arm.com> - - * recog.cc (insn_propagation::apply_to_pattern_1): Handle shared - ASM_OPERANDS. - -2023-10-27 Yangyu Chen <chenyangyu@isrc.iscas.ac.cn> - - * config/riscv/riscv.cc (rocket_tune_info): Fix int_div cost. - (sifive_7_tune_info, thead_c906_tune_info): Likewise. - -2023-10-27 Robin Dapp <rdapp@ventanamicro.com> - - * config/riscv/autovec.md (rawmemchr<ANYI:mode>): New expander. - * config/riscv/riscv-protos.h (gen_no_side_effects_vsetvl_rtx): - Define. - (expand_rawmemchr): Define. - * config/riscv/riscv-v.cc (force_vector_length_operand): Remove - static. - (expand_block_move): Move from here... - * config/riscv/riscv-string.cc (expand_block_move): ...to here. - (expand_rawmemchr): Add vectorized expander. - * internal-fn.cc (expand_RAWMEMCHR): Fix typo. - -2023-10-27 Vladimir N. Makarov <vmakarov@redhat.com> - - * ira-costs.cc: (get_equiv_regno, calculate_equiv_gains): - Process reg equivalence invariants. - -2023-10-27 Uros Bizjak <ubizjak@gmail.com> - - * config/i386/x86-tune.def (X86_TUNE_PARTIAL_MEMORY_READ_STALL): - i386: Fiy typo in "partial_memory_read_stall" tune option. - -2023-10-27 Victor Do Nascimento <victor.donascimento@arm.com> - - * config/aarch64/aarch64.cc (aarch64_print_operand): Add - support for CONST_STRING. - -2023-10-27 Roger Sayle <roger@nextmovesoftware.com> - - PR target/110551 - * config/i386/i386.md (<u>mul<mode><dwi>3): Make operands 1 and - 2 take "regiser_operand" and "nonimmediate_operand" respectively. - (<u>mulqihi3): Likewise. - (*bmi2_umul<mode><dwi>3_1): Operand 2 needs to be register_operand - matching the %d constraint. Use umul_highpart RTX to represent - the highpart multiplication. - (*umul<mode><dwi>3_1): Operand 2 should use regiser_operand - predicate, and "a" rather than "0" as operands 0 and 2 have - different modes. - (define_split): For mul to mulx conversion, use the new - umul_highpart RTX representation. - (*mul<mode><dwi>3_1): Operand 1 should be register_operand - and the constraint %a as operands 0 and 1 have different modes. - (*<u>mulqihi3_1): Operand 1 should be register_operand matching - the constraint %0. - (define_peephole2): Providing widening multiplication variants - of the peephole2s that tweak highpart multiplication register - allocation. - -2023-10-27 Lewis Hyatt <lhyatt@gmail.com> - - PR preprocessor/87299 - * toplev.cc (no_backend): New static global. - (finalize): Remove argument no_backend, which is now a - static global. - (process_options): Likewise. - (do_compile): Likewise. - (target_reinit): Don't do anything in preprocess-only mode. - (toplev::main): Adapt to no_backend change. - (toplev::finalize): Likewise. - -2023-10-27 Andrew Pinski <apinski@marvell.com> - - PR tree-optimization/101590 - PR tree-optimization/94884 - * match.pd (`(X BIT_OP Y) CMP X`): New pattern. - -2023-10-27 liuhongt <hongtao.liu@intel.com> - - PR target/103861 - * config/i386/i386-expand.cc (ix86_expand_sse_movcc): Handle - V2HF/V2BF/V4HF/V4BFmode. - * config/i386/i386.cc (ix86_get_mask_mode): Return QImode when - data_mode is V4HF/V2HFmode. - * config/i386/mmx.md (vec_cmpv4hfqi): New expander. - (vcond_mask_<mode>v4hi): Ditto. - (vcond_mask_<mode>qi): Ditto. - (vec_cmpv2hfqi): Ditto. - (vcond_mask_<mode>v2hi): Ditto. - (mmx_plendvb_<mode>): Add 2 combine splitters after the - patterns. - (mmx_pblendvb_v8qi): Ditto. - (<code>v2hi3): Add a combine splitter after the pattern. - (<code><mode>3): Ditto. - (<code>v8qi3): Ditto. - (<code><mode>3): Ditto. - * config/i386/sse.md (vcond<mode><mode>): Merge this with .. - (vcond<sseintvecmodelower><mode>): .. this into .. - (vcond<VI2HFBF_AVX512VL:mode><VHF_AVX512VL:mode>): .. this, - and extend to V8BF/V16BF/V32BFmode. - -2023-10-26 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv-opts.h (TARGET_MAX_LMUL): New macro. - * config/riscv/riscv-v.cc (preferred_simd_mode): Adapt macro. - (autovectorize_vector_modes): Ditto. - (can_find_related_mode_p): Ditto. - -2023-10-26 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - PR target/111318 - PR target/111888 - * config.gcc: Add AVL propagation pass. - * config/riscv/riscv-passes.def (INSERT_PASS_AFTER): Ditto. - * config/riscv/riscv-protos.h (make_pass_avlprop): Ditto. - * config/riscv/t-riscv: Ditto. - * config/riscv/riscv-avlprop.cc: New file. - -2023-10-26 David Malcolm <dmalcolm@redhat.com> - - * doc/extend.texi (Common Function Attributes): Add - null_terminated_string_arg. - -2023-10-26 Andrew Pinski <pinskia@gmail.com> - - PR tree-optimization/111957 - * match.pd (`a != C1 ? abs(a) : C2`): New pattern. - -2023-10-26 Aldy Hernandez <aldyh@redhat.com> - - * range-op-float.cc (range_operator::fold_range): Delete unused - variable. - -2023-10-26 Aldy Hernandez <aldyh@redhat.com> - - * range-op-float.cc (range_operator::fold_range): Remove - superfluous code. - (range_operator::rv_fold): Remove unneeded arguments. - (operator_plus::rv_fold): Same. - (operator_minus::rv_fold): Same. - (operator_mult::rv_fold): Same. - (operator_div::rv_fold): Same. - * range-op-mixed.h: Remove lb, ub, and maybe_nan arguments from - rv_fold methods. - * range-op.h: Same. - -2023-10-26 Aldy Hernandez <aldyh@redhat.com> - - * range-op-float.cc (range_operator::fold_range): Pass frange - argument to rv_fold. - (range_operator::rv_fold): Add frange argument. - (operator_plus::rv_fold): Same. - (operator_minus::rv_fold): Same. - (operator_mult::rv_fold): Same. - (operator_div::rv_fold): Same. - * range-op-mixed.h: Add frange argument to rv_fold methods. - * range-op.h: Same. - -2023-10-26 Richard Ball <richard.ball@arm.com> - - * config/arm/aout.h (ASM_OUTPUT_ADDR_DIFF_ELT): Add table output - for different machine modes for arm. - * config/arm/arm-protos.h (arm_output_casesi): New prototype. - * config/arm/arm.h (CASE_VECTOR_PC_RELATIVE): Make arm use - ASM_OUTPUT_ADDR_DIFF_ELT. - (CASE_VECTOR_SHORTEN_MODE): Change table size calculation for - TARGET_ARM. - (LABEL_ALIGN_AFTER_BARRIER): Change to accommodate .p2align 2 - for TARGET_ARM. - * config/arm/arm.cc (arm_output_casesi): New function. - * config/arm/arm.md (arm_casesi_internal): Change casesi expand - and insn. - for arm to use new function arm_output_casesi. - -2023-10-26 Iain Sandoe <iain@sandoe.co.uk> - - * config/darwin.h - (darwin_label_is_anonymous_local_objc_name): Make metadata names - linker-visibile for GNU objective C. - -2023-10-26 Vladimir N. Makarov <vmakarov@redhat.com> - - * dwarf2out.cc (reg_loc_descriptor): Use lra_eliminate_regs when - LRA is used. - * ira-costs.cc: Include regset.h. - (equiv_can_be_consumed_p, get_equiv_regno, calculate_equiv_gains): - New functions. - (find_costs_and_classes): Call calculate_equiv_gains and redefine - mem_cost of pseudos with equivs when LRA is used. - * var-tracking.cc: Include ira.h and lra.h. - (vt_initialize): Use lra_eliminate_regs when LRA is used. - -2023-10-26 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * doc/md.texi: Adapt COND_LEN pseudo code. - -2023-10-26 Roger Sayle <roger@nextmovesoftware.com> - Richard Biener <rguenther@suse.de> - - PR rtl-optimization/91865 - * combine.cc (make_compound_operation): Avoid creating a - ZERO_EXTEND of a ZERO_EXTEND. - -2023-10-26 Jiahao Xu <xujiahao@loongson.cn> - - * config/loongarch/lasx.md (vcond_mask_<ILASX:mode><ILASX:mode>): Change to - (vcond_mask_<mode><mode256_i>): this. - * config/loongarch/lsx.md (vcond_mask_<ILSX:mode><ILSX:mode>): Change to - (vcond_mask_<mode><mode_i>): this. - -2023-10-26 Thomas Schwinge <thomas@codesourcery.com> - - * ipa-icf.cc (sem_item::target_supports_symbol_aliases_p): - 'gcc_checking_assert (TARGET_SUPPORTS_ALIASES);' before - 'return true;'. - * ipa-visibility.cc (function_and_variable_visibility): Change - '#ifdef ASM_OUTPUT_DEF' to 'if (TARGET_SUPPORTS_ALIASES)'. - * varasm.cc (output_constant_pool_contents) - [#ifdef ASM_OUTPUT_DEF]: - 'gcc_checking_assert (TARGET_SUPPORTS_ALIASES);'. - (do_assemble_alias) [#ifdef ASM_OUTPUT_DEF]: - 'if (!TARGET_SUPPORTS_ALIASES)', - 'gcc_checking_assert (seen_error ());'. - (assemble_alias): Change '#if !defined (ASM_OUTPUT_DEF)' to - 'if (!TARGET_SUPPORTS_ALIASES)'. - (default_asm_output_anchor): - 'gcc_checking_assert (TARGET_SUPPORTS_ALIASES);'. - -2023-10-26 Alexandre Oliva <oliva@adacore.com> - - PR tree-optimization/111520 - * gimple-harden-conditionals.cc - (pass_harden_compares::execute): Set EH edge probability and - EH block execution count. - -2023-10-26 Alexandre Oliva <oliva@adacore.com> - - * tree-eh.h (make_eh_edges): Rename to... - (make_eh_edge): ... this. - * tree-eh.cc: Likewise. Adjust all callers... - * gimple-harden-conditionals.cc: ... here, ... - * gimple-harden-control-flow.cc: ... here, ... - * tree-cfg.cc: ... here, ... - * tree-inline.cc: ... and here. - -2023-10-25 Iain Sandoe <iain@sandoe.co.uk> - - * config/darwin.cc (darwin_override_options): Handle fPIE. - -2023-10-25 Iain Sandoe <iain@sandoe.co.uk> - - * config.gcc: Use -E to to sed to indicate that we are using - extended REs. - -2023-10-25 Jason Merrill <jason@redhat.com> - - * tree-core.h (struct tree_base): Update address_space comment. - -2023-10-25 Wilco Dijkstra <wilco.dijkstra@arm.com> - - * config/aarch64/aarch64.cc (aarch64_internal_mov_immediate) - Add support for immediates using MOV/EOR bitmask. - -2023-10-25 Uros Bizjak <ubizjak@gmail.com> - - PR target/111698 - * config/i386/x86-tune.def (X86_TUNE_PARTIAL_MEMORY_READ_STALL): - New tune. - * config/i386/i386.h (TARGET_PARTIAL_MEMORY_READ_STALL): New macro. - * config/i386/i386.md: New peephole pattern to narrow test - instructions with immediate operands that test memory locations - for zero. - -2023-10-25 Andrew MacLeod <amacleod@redhat.com> - - * value-range.cc (irange::union_append): New. - (irange::union_): Call union_append when appropriate. - * value-range.h (irange::union_append): New prototype. - -2023-10-25 Chenghui Pan <panchenghui@loongson.cn> - - * config/loongarch/lasxintrin.h (__lasx_xvftintrnel_l_s): Fix comments. - (__lasx_xvfrintrne_s): Ditto. - (__lasx_xvfrintrne_d): Ditto. - (__lasx_xvfrintrz_s): Ditto. - (__lasx_xvfrintrz_d): Ditto. - (__lasx_xvfrintrp_s): Ditto. - (__lasx_xvfrintrp_d): Ditto. - (__lasx_xvfrintrm_s): Ditto. - (__lasx_xvfrintrm_d): Ditto. - * config/loongarch/lsxintrin.h (__lsx_vftintrneh_l_s): Ditto. - (__lsx_vfrintrne_s): Ditto. - (__lsx_vfrintrne_d): Ditto. - (__lsx_vfrintrz_s): Ditto. - (__lsx_vfrintrz_d): Ditto. - (__lsx_vfrintrp_s): Ditto. - (__lsx_vfrintrp_d): Ditto. - (__lsx_vfrintrm_s): Ditto. - (__lsx_vfrintrm_d): Ditto. - -2023-10-25 chenxiaolong <chenxiaolong@loongson.cn> - - * config/loongarch/loongarch.md (get_thread_pointer<mode>):Adds the - instruction template corresponding to the __builtin_thread_pointer - function. - * doc/extend.texi:Add the __builtin_thread_pointer function support - description to the documentation. - -2023-10-25 Richard Sandiford <richard.sandiford@arm.com> - - * Makefile.in (OBJS): Add rtl-ssa/movement.o. - * rtl-ssa/access-utils.h (accesses_include_nonfixed_hard_registers) - (single_set_info): New functions. - (remove_uses_of_def, accesses_reference_same_resource): Declare. - (insn_clobbers_resources): Likewise. - * rtl-ssa/accesses.cc (rtl_ssa::remove_uses_of_def): New function. - (rtl_ssa::accesses_reference_same_resource): Likewise. - (rtl_ssa::insn_clobbers_resources): Likewise. - * rtl-ssa/movement.h (can_move_insn_p): Declare. - * rtl-ssa/movement.cc: New file. - -2023-10-25 Richard Sandiford <richard.sandiford@arm.com> - - * rtl-ssa/functions.h (function_info::remains_available_at_insn): - New member function. - * rtl-ssa/accesses.cc (function_info::remains_available_at_insn): - Likewise. - (function_info::make_use_available): Avoid false negatives for - queries within an EBB. - -2023-10-25 Richard Sandiford <richard.sandiford@arm.com> - - * rtl-ssa/changes.cc: Include sreal.h. - (rtl_ssa::changes_are_worthwhile): When optimizing for speed, - scale the cost of each instruction by its execution frequency. - -2023-10-25 Richard Sandiford <richard.sandiford@arm.com> - - * rtl-ssa/access-utils.h (next_call_clobbers): New function. - (is_single_dominating_def, remains_available_on_exit): Replace with... - * rtl-ssa/functions.h (function_info::is_single_dominating_def) - (function_info::remains_available_on_exit): ...these new member - functions. - (function_info::m_clobbered_by_calls): New member variable. - * rtl-ssa/functions.cc (function_info::function_info): Explicitly - initialize m_clobbered_by_calls. - * rtl-ssa/insns.cc (function_info::record_call_clobbers): Update - m_clobbered_by_calls for each call-clobber note. - * rtl-ssa/member-fns.inl (function_info::is_single_dominating_def): - New function. Check for call clobbers. - * rtl-ssa/accesses.cc (function_info::remains_available_on_exit): - Likewise. - -2023-10-25 Richard Sandiford <richard.sandiford@arm.com> - - * rtl-ssa/internals.h (build_info::exit_block_dominator): New - member variable. - * rtl-ssa/blocks.cc (build_info::build_info): Initialize it. - (bb_walker::bb_walker): Use it, moving the computation of the - dominator to... - (function_info::process_all_blocks): ...here. - (function_info::place_phis): Add dominance frontiers for the - exit block. - -2023-10-25 Richard Sandiford <richard.sandiford@arm.com> - - * rtl-ssa/functions.h (function_info::process_uses_of_deleted_def): - New member function. - * rtl-ssa/changes.cc (function_info::process_uses_of_deleted_def): - Likewise. - (function_info::change_insns): Use it. - -2023-10-25 Richard Sandiford <richard.sandiford@arm.com> - - * rtl-ssa/changes.cc (function_info::finalize_new_accesses): - If a change describes a set of memory, ensure that that set - is kept, regardless of the insn pattern. - -2023-10-25 Richard Sandiford <richard.sandiford@arm.com> - - * rtl-ssa/changes.cc (function_info::apply_changes_to_insn): Remove - call to add_reg_unused_notes and instead... - (function_info::change_insns): ...use a separate loop here. - -2023-10-25 Richard Sandiford <richard.sandiford@arm.com> - - * rtl-ssa/blocks.cc (function_info::add_artificial_accesses): Force - global registers to be live on exit. Handle any block with zero - successors like an exit block. - -2023-10-25 Thomas Schwinge <thomas@codesourcery.com> - - * omp-oacc-kernels-decompose.cc (omp_oacc_kernels_decompose_1): - Handle 'OMP_CLAUSE_SELF' like 'OMP_CLAUSE_IF'. - * omp-expand.cc (expand_omp_target): Handle 'OMP_CLAUSE_SELF' for - 'GF_OMP_TARGET_KIND_OACC_DATA_KERNELS'. - -2023-10-25 Thomas Schwinge <thomas@codesourcery.com> - - * tree-core.h (omp_clause_code): Move 'OMP_CLAUSE_SELF' after - 'OMP_CLAUSE_IF'. - * tree-pretty-print.cc (dump_omp_clause): Adjust. - * tree.cc (omp_clause_num_ops, omp_clause_code_name): Likewise. - * tree.h: Likewise. - -2023-10-25 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv-protos.h (has_vl_op): Export from riscv-vsetvl to riscv-v - (tail_agnostic_p): Ditto. - (validate_change_or_fail): Ditto. - (nonvlmax_avl_type_p): Ditto. - (vlmax_avl_p): Ditto. - (get_sew): Ditto. - (enum vlmul_type): Ditto. - (count_regno_occurrences): Ditto. - * config/riscv/riscv-v.cc (has_vl_op): Ditto. - (get_default_ta): Ditto. - (tail_agnostic_p): Ditto. - (validate_change_or_fail): Ditto. - (nonvlmax_avl_type_p): Ditto. - (vlmax_avl_p): Ditto. - (get_sew): Ditto. - (enum vlmul_type): Ditto. - (get_vlmul): Ditto. - (count_regno_occurrences): Ditto. - * config/riscv/riscv-vsetvl.cc (vlmax_avl_p): Ditto. - (has_vl_op): Ditto. - (get_sew): Ditto. - (get_vlmul): Ditto. - (get_default_ta): Ditto. - (tail_agnostic_p): Ditto. - (count_regno_occurrences): Ditto. - (validate_change_or_fail): Ditto. - -2023-10-25 Chung-Lin Tang <cltang@codesourcery.com> - - * gimplify.cc (gimplify_scan_omp_clauses): Add OMP_CLAUSE_SELF case. - (gimplify_adjust_omp_clauses): Likewise. - * omp-expand.cc (expand_omp_target): Add OMP_CLAUSE_SELF expansion code, - * omp-low.cc (scan_sharing_clauses): Add OMP_CLAUSE_SELF case. - * tree-core.h (enum omp_clause_code): Add OMP_CLAUSE_SELF enum. - * tree-nested.cc (convert_nonlocal_omp_clauses): Add OMP_CLAUSE_SELF - case. - (convert_local_omp_clauses): Likewise. - * tree-pretty-print.cc (dump_omp_clause): Add OMP_CLAUSE_SELF case. - * tree.cc (omp_clause_num_ops): Add OMP_CLAUSE_SELF entry. - (omp_clause_code_name): Likewise. - * tree.h (OMP_CLAUSE_SELF_EXPR): New macro. - -2023-10-25 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv-protos.h (vlmax_avl_type_p): New function. - * config/riscv/riscv-v.cc (vlmax_avl_type_p): Ditto. - * config/riscv/riscv-vsetvl.cc (get_avl): Adapt function. - * config/riscv/vector.md: Change avl_type into avl_type_idx. - -2023-10-24 Richard Sandiford <richard.sandiford@arm.com> - - * recog.cc (constrain_operands): Remove UNARY_P handling. - * reload.cc (find_reloads): Likewise. - -2023-10-24 Jose E. Marchesi <jose.marchesi@oracle.com> - - * gcov-io.h: Fix record length encoding in comment. - -2023-10-24 Roger Sayle <roger@nextmovesoftware.com> - - * config/i386/i386-features.cc (compute_convert_gain): Provide - more accurate values (sizes) for inter-unit moves with -Os. - -2023-10-24 Roger Sayle <roger@nextmovesoftware.com> - Claudiu Zissulescu <claziss@gmail.com> - - * config/arc/arc-protos.h (output_shift): Rename to... - (output_shift_loop): Tweak API to take an explicit rtx_code. - (arc_split_ashl): Prototype new function here. - (arc_split_ashr): Likewise. - (arc_split_lshr): Likewise. - (arc_split_rotl): Likewise. - (arc_split_rotr): Likewise. - * config/arc/arc.cc (output_shift): Delete local prototype. Rename. - (output_shift_loop): New function replacing output_shift to output - a zero overheap loop for SImode shifts and rotates on ARC targets - without barrel shifter (i.e. no hardware support for these insns). - (arc_split_ashl): New helper function to split *ashlsi3_nobs. - (arc_split_ashr): New helper function to split *ashrsi3_nobs. - (arc_split_lshr): New helper function to split *lshrsi3_nobs. - (arc_split_rotl): New helper function to split *rotlsi3_nobs. - (arc_split_rotr): New helper function to split *rotrsi3_nobs. - (arc_print_operand): Correct whitespace. - (arc_rtx_costs): Likewise. - (hwloop_optimize): Likewise. - * config/arc/arc.md (ANY_SHIFT_ROTATE): New define_code_iterator. - (define_code_attr insn): New code attribute to map to pattern name. - (<ANY_SHIFT_ROTATE>si3): New expander unifying previous ashlsi3, - ashrsi3 and lshrsi3 define_expands. Adds rotlsi3 and rotrsi3. - (*<ANY_SHIFT_ROTATE>si3_nobs): New define_insn_and_split that - unifies the previous *ashlsi3_nobs, *ashrsi3_nobs and *lshrsi3_nobs. - We now call arc_split_<insn> in arc.cc to implement each split. - (shift_si3): Delete define_insn, all shifts/rotates are now split. - (shift_si3_loop): Rename to... - (<insn>si3_loop): define_insn to handle loop implementations of - SImode shifts and rotates, calling ouput_shift_loop for template. - (rotrsi3): Rename to... - (*rotrsi3_insn): define_insn for TARGET_BARREL_SHIFTER's ror. - (*rotlsi3): New define_insn_and_split to transform left rotates - into right rotates before reload. - (rotlsi3_cnt1): New define_insn_and_split to implement a left - rotate by one bit using an add.f followed by an adc. - * config/arc/predicates.md (shiftr4_operator): Delete. - -2023-10-24 Claudiu Zissulescu <claziss@gmail.com> - - * config/arc/arc.md (mulsi3_700): Update pattern. - (mulsi3_v2): Likewise. - * config/arc/predicates.md (mpy_dest_reg_operand): Remove it. - -2023-10-24 Andrew Pinski <pinskia@gmail.com> - - PR tree-optimization/104376 - PR tree-optimization/101541 - * tree-ssa-phiopt.cc (factor_out_conditional_operation): - Allow nop conversions even if it is defined by a statement - inside the conditional. - -2023-10-24 Andrew Pinski <pinskia@gmail.com> - - PR tree-optimization/111913 - * match.pd (`popcount(X&Y) + popcount(X|Y)`): Add the resulting - type for popcount. - -2023-10-24 Richard Sandiford <richard.sandiford@arm.com> - - * rtl-ssa/blocks.cc (function_info::create_degenerate_phi): Check - whether the requested phi already exists. - -2023-10-24 Richard Sandiford <richard.sandiford@arm.com> - - * rtl-ssa.h: Include cfgbuild.h. - * rtl-ssa/movement.h (can_insert_after): Replace is_jump with the - more comprehensive control_flow_insn_p. - -2023-10-24 Richard Sandiford <richard.sandiford@arm.com> - - * rtl-ssa/changes.cc (function_info::perform_pending_updates): Check - whether an insn has been replaced by a note. - -2023-10-24 Richard Sandiford <richard.sandiford@arm.com> - - * rtl-ssa/member-fns.inl (first_any_insn_use): Handle null - m_first_use. - -2023-10-24 Richard Sandiford <richard.sandiford@arm.com> - - * config/i386/i386-expand.cc (ix86_split_mmx_punpck): Allow the - destination to be wider than the sources. Take the mode from the - first source. - (ix86_expand_sse_extend): Pass the destination directly to - ix86_split_mmx_punpck, rather than using a fresh register that - is half the size. - -2023-10-24 Richard Sandiford <richard.sandiford@arm.com> - - * config/i386/predicates.md (aeswidekl_operation): Protect - REGNO check with REG_P. - -2023-10-24 Richard Sandiford <richard.sandiford@arm.com> - - * config/aarch64/aarch64.cc (aarch64_insn_cost): New function. - (TARGET_INSN_COST): Define. - -2023-10-24 Richard Sandiford <richard.sandiford@arm.com> - - * config/aarch64/atomics.md (aarch64_atomic_exchange<mode>): Require - !TARGET_LSE. - -2023-10-24 xuli <xuli1@eswincomputing.com> - - PR target/111935 - * config/riscv/riscv-vector-builtins-bases.cc: fix bug. - -2023-10-24 Mark Harmstone <mark@harmstone.com> - - * opts.cc (debug_type_names): Remove stabs and xcoff. - (df_set_names): Adjust. - -2023-10-24 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - PR target/111947 - * config/riscv/riscv-vsetvl.cc (pre_vsetvl::compute_lcm_local_properties): Add REGNO check. - -2023-10-23 Lewis Hyatt <lhyatt@gmail.com> - - PR preprocessor/36887 - * toplev.h (ident_hash_extra): Declare... - * stringpool.cc (ident_hash_extra): ...this new global variable. - (init_stringpool): Handle ident_hash_extra as well as ident_hash. - (ggc_mark_stringpool): Likewise. - (ggc_purge_stringpool): Likewise. - (struct string_pool_data_extra): New struct. - (spd2): New GC root variable. - (gt_pch_save_stringpool): Use spd2 to handle ident_hash_extra, - analogous to how spd is used to handle ident_hash. - (gt_pch_restore_stringpool): Likewise. - -2023-10-23 Robin Dapp <rdapp@ventanamicro.com> - - PR tree-optimization/111794 - * tree-vect-stmts.cc (vectorizable_assignment): Add - same-precision exception for dest and source. - -2023-10-23 Robin Dapp <rdapp@ventanamicro.com> - - * config/riscv/autovec.md (popcount<mode>2): New expander. - * config/riscv/riscv-protos.h (expand_popcount): Define. - * config/riscv/riscv-v.cc (expand_popcount): Vectorize popcount - with the WWG algorithm. - -2023-10-23 Richard Biener <rguenther@suse.de> - - PR tree-optimization/111916 - * tree-sra.cc (sra_modify_assign): Do not lower all - BIT_FIELD_REF reads that are sra_handled_bf_read_p. - -2023-10-23 Richard Biener <rguenther@suse.de> - - PR tree-optimization/111915 - * tree-vect-slp.cc (vect_build_slp_tree_1): Check all - accesses are either grouped or not. - -2023-10-23 Richard Biener <rguenther@suse.de> - - PR ipa/111914 - * tree-inline.cc (setup_one_parameter): Move code emitting - a dummy load when not optimizing ... - (initialize_inlined_parameters): ... here to after when - we remapped the parameter type. - -2023-10-23 Oleg Endo <olegendo@gcc.gnu.org> - - PR target/111001 - * config/sh/sh_treg_combine.cc (sh_treg_combine::record_set_of_reg): - Skip over nop move insns. - -2023-10-23 Tamar Christina <tamar.christina@arm.com> - - PR tree-optimization/111860 - * tree-vect-loop-manip.cc (slpeel_tree_duplicate_loop_to_edge_cfg): - Drop .MEM nodes only. - -2023-10-23 Andrew Pinski <apinski@marvell.com> - - * match.pd (`(A - B) CMP 0 ? (A - B) : (B - A)`): - New patterns. - -2023-10-23 Andrew Pinski <pinskia@gmail.com> - - * convert.cc (convert_to_pointer_1): Return error_mark_node - after an error. - (convert_to_real_1): Likewise. - (convert_to_integer_1): Likewise. - (convert_to_complex_1): Likewise. - -2023-10-23 Andrew Pinski <pinskia@gmail.com> - - PR c/111903 - * convert.cc (convert_to_complex_1): Return - error_mark_node if either convert was an error - when converting from a scalar. - -2023-10-23 Richard Biener <rguenther@suse.de> - - PR tree-optimization/111917 - * tree-ssa-loop-unswitch.cc (hoist_guard): Always insert - new conditional after last stmt. - -2023-10-23 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - PR target/111927 - * config/riscv/riscv-vsetvl.cc: Fix bug. - -2023-10-23 Pan Li <pan2.li@intel.com> - - * config/riscv/riscv-v.cc (emit_vec_cvt_x_f_rtz): Add insn type - arg. - (expand_vec_trunc): Take MA instead of MU for cvt_x_f_rtz. - -2023-10-23 Xi Ruoyao <xry111@xry111.site> - - * doc/invoke.texi (-mexplicit-relocs=style): Document. - (-mexplicit-relocs): Document as an alias of - -mexplicit-relocs=always. - (-mno-explicit-relocs): Document as an alias of - -mexplicit-relocs=none. - (-mcmodel=extreme): Mention -mexplicit-relocs=always instead of - -mexplicit-relocs. - -2023-10-23 Xi Ruoyao <xry111@xry111.site> - - * config/loongarch/predicates.md (symbolic_pcrel_operand): New - predicate. - * config/loongarch/loongarch.md (define_peephole2): Optimize - la.local + ld/st to pcalau12i + ld/st if the address is only used - once if -mexplicit-relocs=auto and -mcmodel=normal or medium. - -2023-10-23 Xi Ruoyao <xry111@xry111.site> - - * config/loongarch/loongarch.cc (loongarch_explicit_relocs_p): - Return true for TLS symbol types if -mexplicit-relocs=auto. - (loongarch_call_tls_get_addr): Replace TARGET_EXPLICIT_RELOCS - with la_opt_explicit_relocs != EXPLICIT_RELOCS_NONE. - (loongarch_legitimize_tls_address): Likewise. - * config/loongarch/loongarch.md (@tls_low<mode>): Remove - TARGET_EXPLICIT_RELOCS from insn condition. - -2023-10-23 Xi Ruoyao <xry111@xry111.site> - - * config/loongarch/loongarch-protos.h - (loongarch_explicit_relocs_p): Declare new function. - * config/loongarch/loongarch.cc (loongarch_explicit_relocs_p): - Implement. - (loongarch_symbol_insns): Call loongarch_explicit_relocs_p for - SYMBOL_GOT_DISP, instead of using TARGET_EXPLICIT_RELOCS. - (loongarch_split_symbol): Call loongarch_explicit_relocs_p for - deciding if return early, instead of using - TARGET_EXPLICIT_RELOCS. - (loongarch_output_move): CAll loongarch_explicit_relocs_p - instead of using TARGET_EXPLICIT_RELOCS. - * config/loongarch/loongarch.md (*low<mode>): Remove - TARGET_EXPLICIT_RELOCS from insn condition. - (@ld_from_got<mode>): Likewise. - * config/loongarch/predicates.md (move_operand): Call - loongarch_explicit_relocs_p instead of using - TARGET_EXPLICIT_RELOCS. - -2023-10-23 Xi Ruoyao <xry111@xry111.site> - - * config/loongarch/genopts/loongarch-strings: Add strings for - -mexplicit-relocs={auto,none,always}. - * config/loongarch/genopts/loongarch.opt.in: Add options for - -mexplicit-relocs={auto,none,always}. - * config/loongarch/loongarch-str.h: Regenerate. - * config/loongarch/loongarch.opt: Regenerate. - * config/loongarch/loongarch-def.h - (EXPLICIT_RELOCS_AUTO): Define. - (EXPLICIT_RELOCS_NONE): Define. - (EXPLICIT_RELOCS_ALWAYS): Define. - (N_EXPLICIT_RELOCS_TYPES): Define. - * config/loongarch/loongarch.cc - (loongarch_option_override_internal): Error out if the old-style - -m[no-]explicit-relocs option is used with - -mexplicit-relocs={auto,none,always} together. Map - -mno-explicit-relocs to -mexplicit-relocs=none and - -mexplicit-relocs to -mexplicit-relocs=always for backward - compatibility. Set a proper default for -mexplicit-relocs= - based on configure-time probed linker capability. Update a - diagnostic message to mention -mexplicit-relocs=always instead - of the old-style -mexplicit-relocs. - (loongarch_handle_model_attribute): Update a diagnostic message - to mention -mexplicit-relocs=always instead of the old-style - -mexplicit-relocs. - * config/loongarch/loongarch.h (TARGET_EXPLICIT_RELOCS): Define. - -2023-10-23 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv-vsetvl.cc (pre_vsetvl::fuse_local_vsetvl_info): Fix typo. - (pre_vsetvl::pre_global_vsetvl_info): Ditto. - -2023-10-23 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/vector.md: Fix avl_type attribute of tuple mov<mode>. - -2023-10-23 Kewen Lin <linkw@linux.ibm.com> - - PR tree-optimization/111784 - * tree-vect-stmts.cc (vectorizable_store): Adjust costing way for - adjacent vector stores, by costing them with the total number - rather than costing them one by one. - (vectorizable_load): Adjust costing way for adjacent vector - loads, by costing them with the total number rather than costing - them one by one. - -2023-10-23 Haochen Jiang <haochen.jiang@intel.com> - - PR target/111753 - * config/i386/i386.cc (ix86_standard_x87sse_constant_load_p): - Do not split to xmm16+ when !TARGET_AVX512VL. - -2023-10-23 Pan Li <pan2.li@intel.com> - - * config/riscv/riscv-protos.h (enum insn_type): Add new type - values. - * config/riscv/riscv-v.cc (emit_vec_cvt_x_f): Add undef merge - operand handling. - (expand_vec_ceil): Take MA instead of MU for tmp register. - (expand_vec_floor): Ditto. - (expand_vec_nearbyint): Ditto. - (expand_vec_rint): Ditto. - (expand_vec_round): Ditto. - (expand_vec_roundeven): Ditto. - -2023-10-23 Lulu Cheng <chenglulu@loongson.cn> - - * config/loongarch/loongarch.h (CLEAR_INSN_CACHE): New definition. - -2023-10-23 Haochen Gui <guihaoc@gcc.gnu.org> - - PR target/111449 - * expr.cc (can_use_qi_vectors): New function to return true if - we know how to implement OP using vectors of bytes. - (qi_vector_mode_supported_p): New function to check if optabs - exists for the mode and certain by pieces operations. - (widest_fixed_size_mode_for_size): Replace the second argument - with the type of by pieces operations. Call can_use_qi_vectors - and qi_vector_mode_supported_p to do the check. Call - scalar_mode_supported_p to check if the scalar mode is supported. - (by_pieces_ninsns): Pass the type of by pieces operation to - widest_fixed_size_mode_for_size. - (class op_by_pieces_d): Remove m_qi_vector_mode. Add m_op to - record the type of by pieces operations. - (op_by_pieces_d::op_by_pieces_d): Change last argument to the - type of by pieces operations, initialize m_op with it. Pass - m_op to function widest_fixed_size_mode_for_size. - (op_by_pieces_d::get_usable_mode): Pass m_op to function - widest_fixed_size_mode_for_size. - (op_by_pieces_d::smallest_fixed_size_mode_for_size): Call - can_use_qi_vectors and qi_vector_mode_supported_p to do the - check. - (op_by_pieces_d::run): Pass m_op to function - widest_fixed_size_mode_for_size. - (move_by_pieces_d::move_by_pieces_d): Set m_op to MOVE_BY_PIECES. - (store_by_pieces_d::store_by_pieces_d): Set m_op with the op. - (can_store_by_pieces): Pass the type of by pieces operations to - widest_fixed_size_mode_for_size. - (clear_by_pieces): Initialize class store_by_pieces_d with - CLEAR_BY_PIECES. - (compare_by_pieces_d::compare_by_pieces_d): Set m_op to - COMPARE_BY_PIECES. - -2023-10-23 liuhongt <hongtao.liu@intel.com> - - PR tree-optimization/111820 - PR tree-optimization/111833 - * tree-vect-loop-manip.cc (vect_can_peel_nonlinear_iv_p): Give - up vectorization for nonlinear iv vect_step_op_mul when - step_expr is not exact_log2 and niters is greater than - TYPE_PRECISION (TREE_TYPE (step_expr)). Also don't vectorize - for nagative niters_skip which will be used by fully masked - loop. - (vect_can_advance_ivs_p): Pass whole phi_info to - vect_can_peel_nonlinear_iv_p. - * tree-vect-loop.cc (vect_peel_nonlinear_iv_init): Optimize - init_expr * pow (step_expr, skipn) to init_expr - << (log2 (step_expr) * skipn) when step_expr is exact_log2. - -2023-10-23 liuhongt <hongtao.liu@intel.com> - - * config/i386/mmx.md (mmx_pinsrw): Remove. - -2023-10-22 Andrew Pinski <pinskia@gmail.com> - - PR target/110986 - * config/aarch64/aarch64.md (*cmov<mode>_insn_insv): New pattern. - (*cmov_uxtw_insn_insv): Likewise. - -2023-10-22 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org> - - * doc/invoke.texi: Document the new -nodefaultrpaths option. - * doc/install.texi: Document the new --with-darwin-extra-rpath - option. - -2023-10-22 Iain Sandoe <iain@sandoe.co.uk> - - * Makefile.in: set ENABLE_DARWIN_AT_RPATH in site.tmp. - -2023-10-22 Iain Sandoe <iain@sandoe.co.uk> - - * configure.ac: Add --with-darwin-extra-rpath option. - * config/darwin.h: Handle DARWIN_EXTRA_RPATH. - * config.in: Regenerate. - * configure: Regenerate. - -2023-10-22 Iain Sandoe <iain@sandoe.co.uk> - - * aclocal.m4: Regenerate. - * configure: Regenerate. - * configure.ac: Handle Darwin rpaths. - * config/darwin.h: Handle Darwin rpaths. - * config/darwin.opt: Handle Darwin rpaths. - * Makefile.in: Handle Darwin rpaths. - -2023-10-22 Iain Sandoe <iain@sandoe.co.uk> - - * gcc.cc (RUNPATH_OPTION): New. - (do_spec_1): Provide '%P' as a spec to insert rpaths for - each compiler startfile path. - -2023-10-22 Andrew Burgess <andrew.burgess@embecosm.com> - Maxim Blinov <maxim.blinov@embecosm.com> - Francois-Xavier Coudert <fxcoudert@gcc.gnu.org> - Iain Sandoe <iain@sandoe.co.uk> - - * config.gcc: Default to heap trampolines on macOS 11 and above. - * config/i386/darwin.h: Define X86_CUSTOM_FUNCTION_TEST. - * config/i386/i386.h: Define X86_CUSTOM_FUNCTION_TEST. - * config/i386/i386.cc: Use X86_CUSTOM_FUNCTION_TEST. - -2023-10-22 Andrew Burgess <andrew.burgess@embecosm.com> - Maxim Blinov <maxim.blinov@embecosm.com> - Iain Sandoe <iain@sandoe.co.uk> - Francois-Xavier Coudert <fxcoudert@gcc.gnu.org> - - * builtins.def (BUILT_IN_NESTED_PTR_CREATED): Define. - (BUILT_IN_NESTED_PTR_DELETED): Ditto. - * common.opt (ftrampoline-impl): Add option to control - generation of trampoline instantiation (heap or stack). - * coretypes.h: Define enum trampoline_impl. - * tree-nested.cc (convert_tramp_reference_op): Don't bother calling - __builtin_adjust_trampoline for heap trampolines. - (finalize_nesting_tree_1): Emit calls to - __builtin_nested_...{created,deleted} if we're generating with - -ftrampoline-impl=heap. - * tree.cc (build_common_builtin_nodes): Build - __builtin_nested_...{created,deleted}. - * doc/invoke.texi (-ftrampoline-impl): Document. - -2023-10-22 Tsukasa OI <research_trasio@irq.a4lg.com> - - * common/config/riscv/riscv-common.cc (riscv_subset_list::parse): - Prohibit 'E' and 'H' combinations. - -2023-10-22 Tsukasa OI <research_trasio@irq.a4lg.com> - - * common/config/riscv/riscv-common.cc (riscv_ext_version_table): - Change version number of the 'Zfa' extension to 1.0. - -2023-10-21 Pan Li <pan2.li@intel.com> - - PR target/111857 - * config/riscv/riscv-opts.h (TARGET_VECTOR_VLS): Remove. - * config/riscv/riscv-protos.h (vls_mode_valid_p): New func decl. - * config/riscv/riscv-v.cc (autovectorize_vector_modes): Replace - macro reference to func. - (vls_mode_valid_p): New func impl for vls mode valid or not. - * config/riscv/riscv-vector-switch.def (VLS_ENTRY): Replace - macro reference to func. - * config/riscv/vector-iterators.md: Ditto. - -2023-10-20 Roger Sayle <roger@nextmovesoftware.com> - Uros Bizjak <ubizjak@gmail.com> - - PR middle-end/101955 - PR tree-optimization/106245 - * config/i386/i386.md (*extv<mode>_1_0): New define_insn_and_split. - -2023-10-20 David Edelsohn <dje.gcc@gmail.com> - - * gimple-harden-control-flow.cc: Include memmodel.h. - -2023-10-20 David Edelsohn <dje.gcc@gmail.com> - - * gimple-harden-control-flow.cc: Include tm_p.h. - -2023-10-20 Andre Vieira <andre.simoesdiasvieira@arm.com> - - PR tree-optimization/111882 - * tree-if-conv.cc (get_bitfield_rep): Return NULL_TREE for bitfields - with non-constant offsets. - -2023-10-20 Tamar Christina <tamar.christina@arm.com> - - PR tree-optimization/111866 - * tree-vect-loop-manip.cc (vect_do_peeling): Pass null as vinfo to - vect_set_loop_condition during prolog peeling. - -2023-10-20 Richard Biener <rguenther@suse.de> - - PR tree-optimization/111445 - * tree-scalar-evolution.cc (simple_iv_with_niters): - Add missing check for a sign-conversion. - -2023-10-20 Richard Biener <rguenther@suse.de> - - PR tree-optimization/110243 - PR tree-optimization/111336 - * tree-ssa-loop-ivopts.cc (strip_offset_1): Rewrite - operations with undefined behavior on overflow to - unsigned arithmetic. - -2023-10-20 Richard Biener <rguenther@suse.de> - - PR tree-optimization/111891 - * tree-vect-stmts.cc (vectorizable_simd_clone_call): Fix - assert. - -2023-10-20 Andrew Stubbs <ams@codesourcery.com> - - * config.gcc: Allow --with-arch=gfx1030. - * config/gcn/gcn-hsa.h (NO_XNACK): gfx1030 does not support xnack. - (ASM_SPEC): gfx1030 needs -mattr=+wavefrontsize64 set. - * config/gcn/gcn-opts.h (enum processor_type): Add PROCESSOR_GFX1030. - (TARGET_GFX1030): New. - (TARGET_RDNA2): New. - * config/gcn/gcn-valu.md (@dpp_move<mode>): Disable for RDNA2. - (addc<mode>3<exec_vcc>): Add RDNA2 syntax variant. - (subc<mode>3<exec_vcc>): Likewise. - (<convop><mode><vndi>2_exec): Add RDNA2 alternatives. - (vec_cmp<mode>di): Likewise. - (vec_cmp<u><mode>di): Likewise. - (vec_cmp<mode>di_exec): Likewise. - (vec_cmp<u><mode>di_exec): Likewise. - (vec_cmp<mode>di_dup): Likewise. - (vec_cmp<mode>di_dup_exec): Likewise. - (reduc_<reduc_op>_scal_<mode>): Disable for RDNA2. - (*<reduc_op>_dpp_shr_<mode>): Likewise. - (*plus_carry_dpp_shr_<mode>): Likewise. - (*plus_carry_in_dpp_shr_<mode>): Likewise. - * config/gcn/gcn.cc (gcn_option_override): Recognise gfx1030. - (gcn_global_address_p): RDNA2 only allows smaller offsets. - (gcn_addr_space_legitimate_address_p): Likewise. - (gcn_omp_device_kind_arch_isa): Recognise gfx1030. - (gcn_expand_epilogue): Use VGPRs instead of SGPRs. - (output_file_start): Configure gfx1030. - * config/gcn/gcn.h (TARGET_CPU_CPP_BUILTINS): Add __RDNA2__; - (ASSEMBLER_DIALECT): New. - * config/gcn/gcn.md (rdna): New define_attr. - (enabled): Use "rdna" attribute. - (gcn_return): Remove s_dcache_wb. - (addcsi3_scalar): Add RDNA2 syntax variant. - (addcsi3_scalar_zero): Likewise. - (addptrdi3): Likewise. - (mulsi3): v_mul_lo_i32 should be v_mul_lo_u32 on all ISA. - (*memory_barrier): Add RDNA2 syntax variant. - (atomic_load<mode>): Add RDNA2 cache control variants, and disable - scalar atomics for RDNA2. - (atomic_store<mode>): Likewise. - (atomic_exchange<mode>): Likewise. - * config/gcn/gcn.opt (gpu_type): Add gfx1030. - * config/gcn/mkoffload.cc (EF_AMDGPU_MACH_AMDGCN_GFX1030): New. - (main): Recognise -march=gfx1030. - * config/gcn/t-omp-device: Add gfx1030 isa. - -2023-10-20 Richard Biener <rguenther@suse.de> - - PR tree-optimization/111000 - * stor-layout.h (element_precision): Move .. - * tree.h (element_precision): .. here. - * tree-ssa-loop-im.cc (movement_possibility_1): Restrict - motion of shifts and rotates. - -2023-10-20 Alexandre Oliva <oliva@adacore.com> - - * tree-core.h (ECF_XTHROW): New macro. - * tree.cc (set_call_expr): Add expected_throw attribute when - ECF_XTHROW is set. - (build_common_builtin_node): Add ECF_XTHROW to - __cxa_end_cleanup and _Unwind_Resume or _Unwind_SjLj_Resume. - * calls.cc (flags_from_decl_or_type): Check for expected_throw - attribute to set ECF_XTHROW. - * gimple.cc (gimple_build_call_from_tree): Propagate - ECF_XTHROW from decl flags to gimple call... - (gimple_call_flags): ... and back. - * gimple.h (GF_CALL_XTHROW): New gf_mask flag. - (gimple_call_set_expected_throw): New. - (gimple_call_expected_throw_p): New. - * Makefile.in (OBJS): Add gimple-harden-control-flow.o. - * builtins.def (BUILT_IN___HARDCFR_CHECK): New. - * common.opt (fharden-control-flow-redundancy): New. - (-fhardcfr-check-returning-calls): New. - (-fhardcfr-check-exceptions): New. - (-fhardcfr-check-noreturn-calls=*): New. - (Enum hardcfr_check_noreturn_calls): New. - (fhardcfr-skip-leaf): New. - * doc/invoke.texi: Document them. - (hardcfr-max-blocks, hardcfr-max-inline-blocks): New params. - * flag-types.h (enum hardcfr_noret): New. - * gimple-harden-control-flow.cc: New. - * params.opt (-param=hardcfr-max-blocks=): New. - (-param=hradcfr-max-inline-blocks=): New. - * passes.def (pass_harden_control_flow_redundancy): Add. - * tree-pass.h (make_pass_harden_control_flow_redundancy): - Declare. - * doc/extend.texi: Document expected_throw attribute. - -2023-10-20 Alex Coplan <alex.coplan@arm.com> - - * rtl-ssa/changes.cc (function_info::change_insns): Ensure we call - ::remove_insn on deleted insns. - -2023-10-20 Richard Biener <rguenther@suse.de> - - * doc/generic.texi ({L,R}ROTATE_EXPR): Document. - -2023-10-20 Oleg Endo <olegendo@gcc.gnu.org> - - PR target/101177 - * config/sh/sh.md (unnamed split pattern): Fix comparison of - find_regno_note result. - -2023-10-20 Richard Biener <rguenther@suse.de> - - * tree-vect-loop.cc (update_epilogue_loop_vinfo): Rewrite - both STMT_VINFO_GATHER_SCATTER_P and VMAT_GATHER_SCATTER - stmt refs. - -2023-10-20 Richard Biener <rguenther@suse.de> - - * tree-vect-slp.cc (off_map, off_op0_map, off_arg2_map, - off_arg3_arg2_map): New. - (vect_get_operand_map): Get flag whether the stmt was - recognized as gather or scatter and use the above - accordingly. - (vect_get_and_check_slp_defs): Adjust. - (vect_build_slp_tree_2): Likewise. - -2023-10-20 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv-vsetvl.cc (pre_vsetvl::fuse_local_vsetvl_info): Rename variables. - (pre_vsetvl::pre_global_vsetvl_info): Ditto. - (pre_vsetvl::emit_vsetvl): Ditto. - -2023-10-20 Tamar Christina <tamar.christina@arm.com> - Andre Vieira <andre.simoesdiasvieira@arm.com> - - * tree-if-conv.cc (if_convertible_loop_p_1): Move check from here ... - (get_loop_body_if_conv_order): ... to here. - (if_convertible_loop_p): Remove single_exit check. - (tree_if_conversion): Move single_exit check to if-conversion part and - support multiple exits. - -2023-10-20 Tamar Christina <tamar.christina@arm.com> - Andre Vieira <andre.simoesdiasvieira@arm.com> - - * tree-vect-patterns.cc (vect_init_pattern_stmt): Copy STMT_VINFO_TYPE - from original statement. - (vect_recog_bitfield_ref_pattern): Support bitfields in gcond. - -2023-10-20 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - PR target/111848 - * config/riscv/riscv-selftests.cc (run_const_vector_selftests): Adapt selftest. - * config/riscv/riscv-v.cc (expand_const_vector): Change it into vec_duplicate splitter. - -2023-10-20 Lehua Ding <lehua.ding@rivai.ai> - - PR target/111037 - PR target/111234 - PR target/111725 - * config/riscv/riscv-vsetvl.cc (bitmap_union_of_preds_with_entry): New. - (debug): Removed. - (compute_reaching_defintion): New. - (enum vsetvl_type): Moved. - (vlmax_avl_p): Moved. - (enum emit_type): Moved. - (vlmul_to_str): Moved. - (vlmax_avl_insn_p): Removed. - (policy_to_str): Moved. - (loop_basic_block_p): Removed. - (valid_sew_p): Removed. - (vsetvl_insn_p): Moved. - (vsetvl_vtype_change_only_p): Removed. - (after_or_same_p): Removed. - (before_p): Removed. - (anticipatable_occurrence_p): Removed. - (available_occurrence_p): Removed. - (insn_should_be_added_p): Removed. - (get_all_sets): Moved. - (get_same_bb_set): Moved. - (gen_vsetvl_pat): Removed. - (calculate_vlmul): Moved. - (get_max_int_sew): New. - (emit_vsetvl_insn): Removed. - (get_max_float_sew): New. - (eliminate_insn): Removed. - (insert_vsetvl): Removed. - (count_regno_occurrences): Moved. - (get_vl_vtype_info): Removed. - (enum def_type): Moved. - (validate_change_or_fail): Moved. - (change_insn): Removed. - (get_all_real_uses): Moved. - (get_forward_read_vl_insn): Removed. - (get_backward_fault_first_load_insn): Removed. - (change_vsetvl_insn): Removed. - (avl_source_has_vsetvl_p): Removed. - (source_equal_p): Moved. - (calculate_sew): Removed. - (same_equiv_note_p): Moved. - (get_expr_id): New. - (incompatible_avl_p): Removed. - (get_regno): New. - (different_sew_p): Removed. - (get_bb_index): New. - (different_lmul_p): Removed. - (has_no_uses): Moved. - (different_ratio_p): Removed. - (different_tail_policy_p): Removed. - (different_mask_policy_p): Removed. - (possible_zero_avl_p): Removed. - (enum demand_flags): New. - (second_ratio_invalid_for_first_sew_p): Removed. - (second_ratio_invalid_for_first_lmul_p): Removed. - (enum class): New. - (float_insn_valid_sew_p): Removed. - (second_sew_less_than_first_sew_p): Removed. - (first_sew_less_than_second_sew_p): Removed. - (class vsetvl_info): New. - (compare_lmul): Removed. - (second_lmul_less_than_first_lmul_p): Removed. - (second_ratio_less_than_first_ratio_p): Removed. - (DEF_INCOMPATIBLE_COND): Removed. - (greatest_sew): Removed. - (first_sew): Removed. - (second_sew): Removed. - (first_vlmul): Removed. - (second_vlmul): Removed. - (first_ratio): Removed. - (second_ratio): Removed. - (vlmul_for_first_sew_second_ratio): Removed. - (vlmul_for_greatest_sew_second_ratio): Removed. - (ratio_for_second_sew_first_vlmul): Removed. - (class vsetvl_block_info): New. - (DEF_SEW_LMUL_FUSE_RULE): New. - (always_unavailable): Removed. - (avl_unavailable_p): Removed. - (class demand_system): New. - (sew_unavailable_p): Removed. - (lmul_unavailable_p): Removed. - (ge_sew_unavailable_p): Removed. - (ge_sew_lmul_unavailable_p): Removed. - (ge_sew_ratio_unavailable_p): Removed. - (DEF_UNAVAILABLE_COND): Removed. - (same_sew_lmul_demand_p): Removed. - (propagate_avl_across_demands_p): Removed. - (reg_available_p): Removed. - (support_relaxed_compatible_p): Removed. - (demands_can_be_fused_p): Removed. - (earliest_pred_can_be_fused_p): Removed. - (vsetvl_dominated_by_p): Removed. - (avl_info::avl_info): Removed. - (avl_info::single_source_equal_p): Removed. - (avl_info::multiple_source_equal_p): Removed. - (DEF_SEW_LMUL_RULE): New. - (avl_info::operator=): Removed. - (avl_info::operator==): Removed. - (DEF_POLICY_RULE): New. - (avl_info::operator!=): Removed. - (avl_info::has_non_zero_avl): Removed. - (vl_vtype_info::vl_vtype_info): Removed. - (vl_vtype_info::operator==): Removed. - (DEF_AVL_RULE): New. - (vl_vtype_info::operator!=): Removed. - (vl_vtype_info::same_avl_p): Removed. - (vl_vtype_info::same_vtype_p): Removed. - (vl_vtype_info::same_vlmax_p): Removed. - (vector_insn_info::operator>=): Removed. - (vector_insn_info::operator==): Removed. - (class pre_vsetvl): New. - (vector_insn_info::parse_insn): Removed. - (vector_insn_info::compatible_p): Removed. - (vector_insn_info::skip_avl_compatible_p): Removed. - (vector_insn_info::compatible_avl_p): Removed. - (vector_insn_info::compatible_vtype_p): Removed. - (vector_insn_info::available_p): Removed. - (vector_insn_info::fuse_avl): Removed. - (vector_insn_info::fuse_sew_lmul): Removed. - (vector_insn_info::fuse_tail_policy): Removed. - (vector_insn_info::fuse_mask_policy): Removed. - (vector_insn_info::local_merge): Removed. - (vector_insn_info::global_merge): Removed. - (vector_insn_info::get_avl_or_vl_reg): Removed. - (vector_insn_info::update_fault_first_load_avl): Removed. - (vector_insn_info::dump): Removed. - (vector_infos_manager::vector_infos_manager): Removed. - (vector_infos_manager::create_expr): Removed. - (vector_infos_manager::get_expr_id): Removed. - (vector_infos_manager::all_same_ratio_p): Removed. - (vector_infos_manager::all_avail_in_compatible_p): Removed. - (vector_infos_manager::all_same_avl_p): Removed. - (vector_infos_manager::expr_set_num): Removed. - (vector_infos_manager::release): Removed. - (vector_infos_manager::create_bitmap_vectors): Removed. - (vector_infos_manager::free_bitmap_vectors): Removed. - (vector_infos_manager::dump): Removed. - (class pass_vsetvl): Adjust. - (pass_vsetvl::get_vector_info): Removed. - (pass_vsetvl::get_block_info): Removed. - (pass_vsetvl::update_vector_info): Removed. - (pass_vsetvl::update_block_info): Removed. - (pre_vsetvl::compute_avl_def_data): New. - (pass_vsetvl::simple_vsetvl): Removed. - (pass_vsetvl::compute_local_backward_infos): Removed. - (pass_vsetvl::need_vsetvl): Removed. - (pass_vsetvl::transfer_before): Removed. - (pass_vsetvl::transfer_after): Removed. - (pre_vsetvl::compute_vsetvl_def_data): New. - (pass_vsetvl::emit_local_forward_vsetvls): Removed. - (pass_vsetvl::prune_expressions): Removed. - (pass_vsetvl::compute_local_properties): Removed. - (pre_vsetvl::compute_lcm_local_properties): New. - (pass_vsetvl::earliest_fusion): Removed. - (pre_vsetvl::fuse_local_vsetvl_info): New. - (pass_vsetvl::vsetvl_fusion): Removed. - (pass_vsetvl::can_refine_vsetvl_p): Removed. - (pre_vsetvl::earliest_fuse_vsetvl_info): New. - (pass_vsetvl::refine_vsetvls): Removed. - (pass_vsetvl::cleanup_vsetvls): Removed. - (pass_vsetvl::commit_vsetvls): Removed. - (pass_vsetvl::pre_vsetvl): Removed. - (pass_vsetvl::get_vsetvl_at_end): Removed. - (local_avl_compatible_p): Removed. - (pass_vsetvl::local_eliminate_vsetvl_insn): Removed. - (pre_vsetvl::pre_global_vsetvl_info): New. - (get_first_vsetvl_before_rvv_insns): Removed. - (pass_vsetvl::global_eliminate_vsetvl_insn): Removed. - (pre_vsetvl::emit_vsetvl): New. - (pass_vsetvl::ssa_post_optimization): Removed. - (pre_vsetvl::cleaup): New. - (pre_vsetvl::remove_avl_operand): New. - (pass_vsetvl::df_post_optimization): Removed. - (pre_vsetvl::remove_unused_dest_operand): New. - (pass_vsetvl::init): Removed. - (pass_vsetvl::done): Removed. - (pass_vsetvl::compute_probabilities): Removed. - (pass_vsetvl::lazy_vsetvl): Adjust. - (pass_vsetvl::execute): Adjust. - * config/riscv/riscv-vsetvl.def (DEF_INCOMPATIBLE_COND): Removed. - (DEF_SEW_LMUL_RULE): New. - (DEF_SEW_LMUL_FUSE_RULE): Removed. - (DEF_POLICY_RULE): New. - (DEF_UNAVAILABLE_COND): Removed - (DEF_AVL_RULE): New demand type. - (sew_lmul): New demand type. - (ratio_only): New demand type. - (sew_only): New demand type. - (ge_sew): New demand type. - (ratio_and_ge_sew): New demand type. - (tail_mask_policy): New demand type. - (tail_policy_only): New demand type. - (mask_policy_only): New demand type. - (ignore_policy): New demand type. - (avl): New demand type. - (non_zero_avl): New demand type. - (ignore_avl): New demand type. - * config/riscv/t-riscv: Removed riscv-vsetvl.h - * config/riscv/riscv-vsetvl.h: Removed. - -2023-10-20 Alexandre Oliva <oliva@adacore.com> - - * tree-eh.cc (make_eh_edges): Return the new edge. - * tree-eh.h (make_eh_edges): Likewise. - -2023-10-19 Marek Polacek <polacek@redhat.com> - - * doc/contrib.texi: Add entry for Patrick Palka. - -2023-10-19 Andre Vieira <andre.simoesdiasvieira@arm.com> - - * omp-simd-clone.cc (simd_clone_adjust_argument_types): Make function - compatible with mask parameters in clone. - * tree-vect-stmts.cc (vect_build_all_ones_mask): Allow vector boolean - typed masks. - (vectorizable_simd_clone_call): Enable the use of masked clones in - fully masked loops. - -2023-10-19 Andre Vieira <andre.simoesdiasvieira@arm.com> - - PR tree-optimization/110485 - * tree-vect-stmts.cc (vectorizable_simd_clone_call): Disable partial - vectors usage if a notinbranch simdclone has been selected. - -2023-10-19 Andre Vieira <andre.simoesdiasvieira@arm.com> - - * tree-vect-data-refs.cc (vect_get_smallest_scalar_type): Special case - simd clone calls and only use types that are mapped to vectors. - (simd_clone_call_p): New helper function. - -2023-10-19 Andre Vieira <andre.simoesdiasvieira@arm.com> - - * tree-parloops.cc (try_transform_to_exit_first_loop_alt): Accept - poly NIT and ALT_BOUND. - -2023-10-19 Andre Vieira <andre.simoesdiasvieira@arm.com> - - * tree-parloops.cc (create_loop_fn): Copy specific target and - optimization options to clone. - -2023-10-19 Andre Vieira <andre.simoesdiasvieira@arm.com> - - * omp-simd-clone.cc (simd_clone_subparts): Remove. - (simd_clone_init_simd_arrays): Replace simd_clone_supbarts with - TYPE_VECTOR_SUBPARTS. - (ipa_simd_modify_function_body): Likewise. - * tree-vect-stmts.cc (vectorizable_simd_clone_call): Likewise. - (simd_clone_subparts): Remove. - -2023-10-19 Jason Merrill <jason@redhat.com> - - * ABOUT-GCC-NLS: Add usage guidance. - -2023-10-19 Jason Merrill <jason@redhat.com> - - * diagnostic-core.h (permerror): Rename new overloads... - (permerror_opt): To this. - * diagnostic.cc: Likewise. - -2023-10-19 Tamar Christina <tamar.christina@arm.com> - - PR tree-optimization/111860 - * tree-vect-loop-manip.cc (slpeel_tree_duplicate_loop_to_edge_cfg): - Remove PHI nodes that dominate loop. - -2023-10-19 Richard Biener <rguenther@suse.de> - - PR tree-optimization/111131 - * tree-vect-loop.cc (update_epilogue_loop_vinfo): Make - sure to update all gather/scatter stmt DRs, not only those - that eventually got VMAT_GATHER_SCATTER set. - * tree-vect-slp.cc (_slp_oprnd_info::first_gs_info): Add. - (vect_get_and_check_slp_defs): Handle gathers/scatters, - adding the offset as SLP operand and comparing base and scale. - (vect_build_slp_tree_1): Handle gathers. - (vect_build_slp_tree_2): Likewise. - -2023-10-19 Richard Biener <rguenther@suse.de> - - * tree-vect-stmts.cc (vect_build_gather_load_calls): Rename - to ... - (vect_build_one_gather_load_call): ... this. Refactor, - inline widening/narrowing support ... - (vectorizable_load): ... here, do gather vectorization - with builtin decls along other gather vectorization. - -2023-10-19 Alex Coplan <alex.coplan@arm.com> - - * config/aarch64/aarch64.md (load_pair_dw_tftf): Rename to ... - (load_pair_dw_<TX:mode><TX2:mode>): ... this. - (store_pair_dw_tftf): Rename to ... - (store_pair_dw_<TX:mode><TX2:mode>): ... this. - * config/aarch64/iterators.md (TX2): New. - -2023-10-19 Alex Coplan <alex.coplan@arm.com> - - * rtl-ssa/changes.cc (function_info::finalize_new_accesses): Add new - parameter to give final insn position, infer use of mem if it isn't - specified explicitly. - (function_info::change_insns): Pass down final insn position to - finalize_new_accesses. - * rtl-ssa/functions.h: Add parameter to finalize_new_accesses. - -2023-10-19 Alex Coplan <alex.coplan@arm.com> - - * rtl-ssa/accesses.cc (function_info::reparent_use): New. - * rtl-ssa/functions.h (function_info): Declare new member - function reparent_use. - -2023-10-19 Alex Coplan <alex.coplan@arm.com> - - * rtl-ssa/access-utils.h (drop_memory_access): New. - -2023-10-19 Alex Coplan <alex.coplan@arm.com> - - * rtl-ssa/insns.cc (function_info::add_insn_after): Ensure we - update the prev pointer on the following nondebug insn in the - case that !insn->is_debug_insn () && next->is_debug_insn (). - -2023-10-19 Haochen Jiang <haochen.jiang@intel.com> - - * config/i386/i386.h: Correct the ISA enabled for Arrow Lake. - Also make Clearwater Forest depends on Sierra Forest. - * config/i386/i386-options.cc: Revise the order of the macro - definition to avoid confusion. - * doc/extend.texi: Revise documentation. - * doc/invoke.texi: Correct documentation. - -2023-10-19 Andrew Stubbs <ams@codesourcery.com> - - * config.gcc (amdgcn): Switch default to --with-arch=gfx900. - Implement support for --with-multilib-list. - * config/gcn/t-gcn-hsa: Likewise. - * doc/install.texi: Likewise. - * doc/invoke.texi: Mark Fiji deprecated. - -2023-10-19 Jiahao Xu <xujiahao@loongson.cn> - - * config/loongarch/loongarch.cc (loongarch_vector_costs): Inherit from - vector_costs. Add a constructor. - (loongarch_vector_costs::add_stmt_cost): Use adjust_cost_for_freq to - adjust the cost for inner loops. - (loongarch_vector_costs::count_operations): New function. - (loongarch_vector_costs::determine_suggested_unroll_factor): Ditto. - (loongarch_vector_costs::finish_cost): Ditto. - (loongarch_builtin_vectorization_cost): Adjust. - * config/loongarch/loongarch.opt (loongarch-vect-unroll-limit): New parameter. - (loongarcg-vect-issue-info): Ditto. - (mmemvec-cost): Delete. - * config/loongarch/genopts/loongarch.opt.in - (loongarch-vect-unroll-limit): Ditto. - (loongarcg-vect-issue-info): Ditto. - (mmemvec-cost): Delete. - * doc/invoke.texi (loongarcg-vect-unroll-limit): Document new option. - -2023-10-19 Jiahao Xu <xujiahao@loongson.cn> - - * config/loongarch/lasx.md - (vec_widen_<su>mult_even_v8si): New patterns. - (vec_widen_<su>add_hi_<mode>): Ditto. - (vec_widen_<su>add_lo_<mode>): Ditto. - (vec_widen_<su>sub_hi_<mode>): Ditto. - (vec_widen_<su>sub_lo_<mode>): Ditto. - (vec_widen_<su>mult_hi_<mode>): Ditto. - (vec_widen_<su>mult_lo_<mode>): Ditto. - * config/loongarch/loongarch.md (u_bool): New iterator. - * config/loongarch/loongarch-protos.h - (loongarch_expand_vec_widen_hilo): New prototype. - * config/loongarch/loongarch.cc - (loongarch_expand_vec_interleave): New function. - (loongarch_expand_vec_widen_hilo): New function. - -2023-10-19 Jiahao Xu <xujiahao@loongson.cn> - - * config/loongarch/lasx.md - (avg<mode>3_ceil): New patterns. - (uavg<mode>3_ceil): Ditto. - (avg<mode>3_floor): Ditto. - (uavg<mode>3_floor): Ditto. - (usadv32qi): Ditto. - (ssadv32qi): Ditto. - * config/loongarch/lsx.md - (avg<mode>3_ceil): New patterns. - (uavg<mode>3_ceil): Ditto. - (avg<mode>3_floor): Ditto. - (uavg<mode>3_floor): Ditto. - (usadv16qi): Ditto. - (ssadv16qi): Ditto. - -2023-10-18 Andrew Pinski <pinskia@gmail.com> - - PR middle-end/111863 - * expr.cc (do_store_flag): Don't over write arg0 - when stripping off `& POW2`. - -2023-10-18 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org> - - PR tree-optimization/111648 - * fold-const.cc (valid_mask_for_fold_vec_perm_cst_p): If a1 - chooses base element from arg, ensure that it's a natural stepped - sequence. - (build_vec_cst_rand): New param natural_stepped and use it to - construct a naturally stepped sequence. - (test_nunits_min_2): Add new unit tests Case 6 and Case 7. - -2023-10-18 Dimitar Dimitrov <dimitar@dinux.eu> - - * config/pru/pru.cc (pru_insn_cost): New function. - (TARGET_INSN_COST): Define for PRU. - -2023-10-18 Andrew Carlotti <andrew.carlotti@arm.com> - - * config/aarch64/aarch64.cc (aarch64_test_fractional_cost): - Test <= instead of testing < twice. - -2023-10-18 Jakub Jelinek <jakub@redhat.com> - - PR bootstrap/111852 - * cse.cc (cse_insn): Add workaround for GCC 4.8-4.9, instead of - using rtx_def type for memory_extend_buf, use unsigned char - arrayy with size of rtx_def and its alignment. - -2023-10-18 Jason Merrill <jason@redhat.com> - - * doc/invoke.texi: Move -fpermissive to Warning Options. - * diagnostic.cc (update_effective_level_from_pragmas): Remove - redundant system header check. - (diagnostic_report_diagnostic): Move down syshdr/-w check. - (diagnostic_impl): Handle DK_PERMERROR with an option number. - (permerror): Add new overloads. - * diagnostic-core.h (permerror): Declare them. - -2023-10-18 Tobias Burnus <tobias@codesourcery.com> - - * gimplify.cc (gimplify_bind_expr): Remove "omp allocate" attribute - to avoid that auxillary statement list reaches LTO. - -2023-10-18 Jakub Jelinek <jakub@redhat.com> - - PR tree-optimization/111845 - * tree-ssa-math-opts.cc (match_uaddc_usubc): Remember temporary - statements for the 4 operand addition or subtraction of 3 operands - from 1 operand cases and remove them when successful. Look for - nested additions even from rhs[2], not just rhs[1]. - -2023-10-18 Tobias Burnus <tobias@codesourcery.com> - - PR target/111093 - * config/nvptx/nvptx.cc (nvptx_option_override): Issue fatal error - instead of an assert ICE when no -march= has been specified. - -2023-10-18 Iain Sandoe <iain@sandoe.co.uk> - - * config.in: Regenerate. - * config/darwin.cc (darwin_file_start): Add assembler directives - for the target OS version, where these are supported by the - assembler. - (darwin_override_options): Check for building >= macOS 10.14. - * configure: Regenerate. - * configure.ac: Check for assembler support of .build_version - directives. - -2023-10-18 Tamar Christina <tamar.christina@arm.com> - - PR tree-optimization/109154 - * tree-if-conv.cc (INCLUDE_ALGORITHM): Remove. - (typedef struct ifcvt_arg_entry): New. - (cmp_arg_entry): New. - (gen_phi_arg_condition, gen_phi_nest_statement, - predicate_scalar_phi): Use them. - -2023-10-18 Tamar Christina <tamar.christina@arm.com> - - PR tree-optimization/109154 - * config/aarch64/aarch64-simd.md (*aarch64_simd_mov<VDMOV:mode>): - Rewrite to new syntax. - (*aarch64_simd_mov<VQMOV:mode): Rewrite to new syntax and merge in - splits. - -2023-10-18 Tamar Christina <tamar.christina@arm.com> - - PR tree-optimization/109154 - * tree-if-conv.cc (if_convertible_stmt_p): Allow any const IFN. - -2023-10-18 Tamar Christina <tamar.christina@arm.com> - - PR tree-optimization/109154 - * match.pd: Add new cond_op rule. - -2023-10-18 Xi Ruoyao <xry111@xry111.site> - - * config/loongarch/loongarch.md (movfcc): Use fcmp.caf.s for - zeroing a fcc. - -2023-10-18 Richard Biener <rguenther@suse.de> - - * tree-vect-stmts.cc (vectorizable_simd_clone_call): - Relax check to again allow passing integer mode masks - as traditional vectors. - -2023-10-18 Tamar Christina <tamar.christina@arm.com> - - * tree-loop-distribution.cc (copy_loop_before): Request no LCSSA. - * tree-vect-loop-manip.cc (adjust_phi_and_debug_stmts): Add additional - asserts. - (slpeel_tree_duplicate_loop_to_edge_cfg): Keep LCSSA during peeling. - (find_guard_arg): Look value up through explicit edge and original defs. - (vect_do_peeling): Use it. - (slpeel_update_phi_nodes_for_guard2): Take explicit exit edge. - (slpeel_update_phi_nodes_for_lcssa, slpeel_update_phi_nodes_for_loops): - Remove. - * tree-vect-loop.cc (vect_create_epilog_for_reduction): Initialize phi. - * tree-vectorizer.h (slpeel_tree_duplicate_loop_to_edge_cfg): Add - optional param to turn off LCSSA mode. - -2023-10-18 Tamar Christina <tamar.christina@arm.com> - - * tree-if-conv.cc (tree_if_conversion): Record exits in aux. - * tree-vect-loop-manip.cc (slpeel_tree_duplicate_loop_to_edge_cfg): Use - it. - * tree-vect-loop.cc (vect_get_loop_niters): Determine main exit. - (vec_init_loop_exit_info): Extend analysis when multiple exits. - (vect_analyze_loop_form): Record conds and determine main cond. - (vect_create_loop_vinfo): Extend bookkeeping of conds. - (vect_analyze_loop): Release conds. - * tree-vectorizer.h (LOOP_VINFO_LOOP_CONDS, - LOOP_VINFO_LOOP_IV_COND): New. - (struct vect_loop_form_info): Add conds, alt_loop_conds; - (struct loop_vec_info): Add conds, loop_iv_cond. - -2023-10-18 Tamar Christina <tamar.christina@arm.com> - - * tree-loop-distribution.cc (copy_loop_before): Pass exit explicitly. - (loop_distribution::distribute_loop): Bail out of not single exit. - * tree-scalar-evolution.cc (get_loop_exit_condition): New. - * tree-scalar-evolution.h (get_loop_exit_condition): New. - * tree-vect-data-refs.cc (vect_enhance_data_refs_alignment): Pass exit - explicitly. - * tree-vect-loop-manip.cc (vect_set_loop_condition_partial_vectors, - vect_set_loop_condition_partial_vectors_avx512, - vect_set_loop_condition_normal, vect_set_loop_condition): Explicitly - take exit. - (slpeel_tree_duplicate_loop_to_edge_cfg): Explicitly take exit and - return new peeled corresponding peeled exit. - (slpeel_can_duplicate_loop_p): Explicitly take exit. - (find_loop_location): Handle not knowing an explicit exit. - (vect_update_ivs_after_vectorizer, vect_gen_vector_loop_niters_mult_vf, - find_guard_arg, slpeel_update_phi_nodes_for_loops, - slpeel_update_phi_nodes_for_guard2): Use new exits. - (vect_do_peeling): Update bookkeeping to keep track of exits. - * tree-vect-loop.cc (vect_get_loop_niters): Explicitly take exit to - analyze. - (vec_init_loop_exit_info): New. - (_loop_vec_info::_loop_vec_info): Initialize vec_loop_iv, - vec_epilogue_loop_iv, scalar_loop_iv. - (vect_analyze_loop_form): Initialize exits. - (vect_create_loop_vinfo): Set main exit. - (vect_create_epilog_for_reduction, vectorizable_live_operation, - vect_transform_loop): Use it. - (scale_profile_for_vect_loop): Explicitly take exit to scale. - * tree-vectorizer.cc (set_uid_loop_bbs): Initialize loop exit. - * tree-vectorizer.h (LOOP_VINFO_IV_EXIT, LOOP_VINFO_EPILOGUE_IV_EXIT, - LOOP_VINFO_SCALAR_IV_EXIT): New. - (struct loop_vec_info): Add vec_loop_iv, vec_epilogue_loop_iv, - scalar_loop_iv. - (vect_set_loop_condition, slpeel_can_duplicate_loop_p, - slpeel_tree_duplicate_loop_to_edge_cfg): Take explicit exits. - (vec_init_loop_exit_info): New. - (struct vect_loop_form_info): Add loop_exit. - -2023-10-18 Tamar Christina <tamar.christina@arm.com> - - * tree-vect-stmts.cc (vectorizable_comparison): Refactor, splitting body - to ... - (vectorizable_comparison_1): ...This. - -2023-10-18 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv-v.cc (shuffle_consecutive_patterns): New function. - (expand_vec_perm_const_1): Add consecutive pattern recognition. - -2023-10-18 Haochen Jiang <haochen.jiang@intel.com> - - * common/config/i386/cpuinfo.h (get_intel_cpu): Add Panther - Lake. - * common/config/i386/i386-common.cc (processor_name): - Ditto. - (processor_alias_table): Ditto. - * common/config/i386/i386-cpuinfo.h (enum processor_types): - Add INTEL_PANTHERLAKE. - * config.gcc: Add -march=pantherlake. - * config/i386/driver-i386.cc (host_detect_local_cpu): Refactor - the if clause. Handle pantherlake. - * config/i386/i386-c.cc (ix86_target_macros_internal): - Handle pantherlake. - * config/i386/i386-options.cc (processor_cost_table): Ditto. - (m_PANTHERLAKE): New. - (m_CORE_HYBRID): Add pantherlake. - * config/i386/i386.h (enum processor_type): Ditto. - * doc/extend.texi: Ditto. - * doc/invoke.texi: Ditto. - -2023-10-18 Haochen Jiang <haochen.jiang@intel.com> - - * config/i386/i386-options.cc (m_CORE_HYBRID): New. - * config/i386/x86-tune.def: Replace hybrid client tune to - m_CORE_HYBRID. - -2023-10-18 Haochen Jiang <haochen.jiang@intel.com> - - * common/config/i386/cpuinfo.h - (get_intel_cpu): Handle Clearwater Forest. - * common/config/i386/i386-common.cc (processor_name): - Add Clearwater Forest. - (processor_alias_table): Ditto. - * common/config/i386/i386-cpuinfo.h (enum processor_types): - Add INTEL_CLEARWATERFOREST. - * config.gcc: Add -march=clearwaterforest. - * config/i386/driver-i386.cc (host_detect_local_cpu): Handle - clearwaterforest. - * config/i386/i386-c.cc (ix86_target_macros_internal): Ditto. - * config/i386/i386-options.cc (processor_cost_table): Ditto. - (m_CLEARWATERFOREST): New. - (m_CORE_ATOM): Add clearwaterforest. - * config/i386/i386.h (enum processor_type): Ditto. - * doc/extend.texi: Ditto. - * doc/invoke.texi: Ditto. - -2023-10-18 liuhongt <hongtao.liu@intel.com> - - * config/i386/mmx.md (fma<mode>4): New expander. - (fms<mode>4): Ditto. - (fnma<mode>4): Ditto. - (fnms<mode>4): Ditto. - (vec_fmaddsubv4hf4): Ditto. - (vec_fmsubaddv4hf4): Ditto. - -2023-10-18 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - PR target/111832 - * config/riscv/riscv-vector-costs.cc (get_biggest_mode): New function. - -2023-10-17 Richard Sandiford <richard.sandiford@arm.com> - - * config/aarch64/aarch64.cc (aarch64_layout_frame): Don't make - the position of the LR save slot dependent on stack clash - protection unless shadow call stacks are enabled. - -2023-10-17 Richard Sandiford <richard.sandiford@arm.com> - - * config/aarch64/aarch64.h (aarch64_frame): Add vectors that - store the list saved GPRs, FPRs and predicate registers. - * config/aarch64/aarch64.cc (aarch64_layout_frame): Initialize - the lists of saved registers. Use them to choose push candidates. - Invalidate pop candidates if we're not going to do a pop. - (aarch64_next_callee_save): Delete. - (aarch64_save_callee_saves): Take a list of registers, - rather than a range. Make !skip_wb select only write-back - candidates. - (aarch64_expand_prologue): Update calls accordingly. - (aarch64_restore_callee_saves): Take a list of registers, - rather than a range. Always skip pop candidates. Also skip - LR if shadow call stacks are enabled. - (aarch64_expand_epilogue): Update calls accordingly. - -2023-10-17 Richard Sandiford <richard.sandiford@arm.com> - - * cfgbuild.h (find_sub_basic_blocks): Declare. - * cfgbuild.cc (update_profile_for_new_sub_basic_block): New function, - split out from... - (find_many_sub_basic_blocks): ...here. - (find_sub_basic_blocks): New function. - * function.cc (thread_prologue_and_epilogue_insns): Handle - epilogues that contain jumps. - -2023-10-17 Andrew Pinski <apinski@marvell.com> - - PR tree-optimization/110817 - * tree-ssanames.cc (ssa_name_has_boolean_range): Remove the - check for boolean type as they don't have "[0,1]" range. - -2023-10-17 Andrew Pinski <pinskia@gmail.com> - - PR tree-optimization/111432 - * match.pd (`a & (x | CST)`): New pattern. - -2023-10-17 Andre Vieira <andre.simoesdiasvieira@arm.com> - - * tree-cfg.cc (move_sese_region_to_fn): Initialize profile_count for - new basic block. - -2023-10-17 Richard Biener <rguenther@suse.de> - - PR tree-optimization/111846 - * tree-vectorizer.h (_slp_tree::simd_clone_info): Add. - (SLP_TREE_SIMD_CLONE_INFO): New. - * tree-vect-slp.cc (_slp_tree::_slp_tree): Initialize - SLP_TREE_SIMD_CLONE_INFO. - (_slp_tree::~_slp_tree): Release it. - * tree-vect-stmts.cc (vectorizable_simd_clone_call): Use - SLP_TREE_SIMD_CLONE_INFO or STMT_VINFO_SIMD_CLONE_INFO - dependent on if we're doing SLP. - -2023-10-17 Jakub Jelinek <jakub@redhat.com> - - * wide-int-print.h (print_dec_buf_size): For length, divide number - of bits by 3 and add 3 instead of division by 4 and adding 4. - * wide-int-print.cc (print_decs): Remove superfluous ()s. Don't call - print_hex, instead call print_decu on either negated value after - printing - or on wi itself. - (print_decu): Don't call print_hex, instead print even large numbers - decimally. - (pp_wide_int_large): Assume len from print_dec_buf_size is big enough - even if it returns false. - * pretty-print.h (pp_wide_int): Use print_dec_buf_size to check if - pp_wide_int_large should be used. - * tree-pretty-print.cc (dump_generic_node): Use print_hex_buf_size - to compute needed buffer size. - -2023-10-17 Richard Biener <rguenther@suse.de> - - PR middle-end/111818 - * tree-ssa.cc (maybe_optimize_var): When clearing - DECL_NOT_GIMPLE_REG_P always rewrite into SSA. - -2023-10-17 Richard Biener <rguenther@suse.de> - - PR tree-optimization/111807 - * tree-sra.cc (build_ref_for_model): Only call - build_reconstructed_reference when the offsets are the same. - -2023-10-17 Vineet Gupta <vineetg@rivosinc.com> - - PR target/111466 - * expr.cc (expand_expr_real_2): Do not clear SUBREG_PROMOTED_VAR_P. - -2023-10-17 Chenghui Pan <panchenghui@loongson.cn> - - * config/loongarch/loongarch.cc (loongarch_expand_vector_group_init): - fix impl related to vec_initv32qiv16qi template to avoid ICE. - -2023-10-17 Lulu Cheng <chenglulu@loongson.cn> - Chenghua Xu <xuchenghua@loongson.cn> - - * config/loongarch/loongarch.h (ASM_OUTPUT_ALIGN_WITH_NOP): - Delete. - -2023-10-17 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv-vector-costs.cc (max_number_of_live_regs): Fix big LMUL issue. - (get_store_value): New function. - -2023-10-16 Jeff Law <jlaw@ventanamicro.com> - - * explow.cc (probe_stack_range): Handle case when expand_binop - does not construct its result in the expected location. - -2023-10-16 David Malcolm <dmalcolm@redhat.com> - - * diagnostic.cc (diagnostic_initialize): When LANG=C, update - default for -fdiagnostics-text-art-charset from emoji to ascii. - * doc/invoke.texi (fdiagnostics-text-art-charset): Document the above. - -2023-10-16 David Malcolm <dmalcolm@redhat.com> - - * diagnostic.cc (diagnostic_initialize): Ensure - context->extra_output_kind is initialized. - -2023-10-16 Uros Bizjak <ubizjak@gmail.com> - - * config/i386/i386.cc (ix86_can_inline_p): - Handle CM_LARGE and CM_LARGE_PIC. - (x86_elf_aligned_decl_common): Ditto. - (x86_output_aligned_bss): Ditto. - * config/i386/i386.opt: Update doc for -mlarge-data-threshold=. - * doc/invoke.texi: Update doc for -mlarge-data-threshold=. - -2023-10-16 Christoph Müllner <christoph.muellner@vrull.eu> - - * config/riscv/riscv-protos.h (emit_block_move): Remove redundant - prototype. Improve comment. - * config/riscv/riscv.cc (riscv_block_move_straight): Move from riscv.cc - into riscv-string.cc. - (riscv_adjust_block_mem, riscv_block_move_loop): Likewise. - (riscv_expand_block_move): Likewise. - * config/riscv/riscv-string.cc (riscv_block_move_straight): Add moved - function. - (riscv_adjust_block_mem, riscv_block_move_loop): Likewise. - (riscv_expand_block_move): Likewise. - -2023-10-16 Manolis Tsamis <manolis.tsamis@vrull.eu> - - * Makefile.in: Add fold-mem-offsets.o. - * passes.def: Schedule a new pass. - * tree-pass.h (make_pass_fold_mem_offsets): Declare. - * common.opt: New options. - * doc/invoke.texi: Document new option. - * fold-mem-offsets.cc: New file. - -2023-10-16 Andrew Pinski <pinskia@gmail.com> - - PR tree-optimization/101541 - * match.pd (A CMP 0 ? A : -A): Improve - using bitwise_equal_p. - -2023-10-16 Andrew Pinski <pinskia@gmail.com> - - PR tree-optimization/31531 - * match.pd (~X op ~Y): Allow for an optional nop convert. - (~X op C): Likewise. - -2023-10-16 Roger Sayle <roger@nextmovesoftware.com> - - * config/arc/arc.md (*ashlsi3_1): New pre-reload splitter to - use bset dst,0,src to implement 1<<x on !TARGET_BARREL_SHIFTER. - -2023-10-16 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com> - - * config/s390/vector.md (popcountv8hi2_vx): Sign extend each - unsigned vector element. - -2023-10-16 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv-vector-costs.cc (costs::preferred_new_lmul_p): Use VLS modes. - -2023-10-16 Jiufu Guo <guojiufu@linux.ibm.com> - - * fold-const.cc (expr_not_equal_to): Replace get_global_range_query - by get_range_query. - * gimple-fold.cc (size_must_be_zero_p): Likewise. - * gimple-range-fold.cc (fur_source::fur_source): Likewise. - * gimple-ssa-warn-access.cc (check_nul_terminated_array): Likewise. - * tree-dfa.cc (get_ref_base_and_extent): Likewise. - -2023-10-16 liuhongt <hongtao.liu@intel.com> - - * config/i386/mmx.md (V2FI_32): New mode iterator - (movd_v2hf_to_sse): Rename to .. - (movd_<mode>_to_sse): .. this. - (movd_v2hf_to_sse_reg): Rename to .. - (movd_<mode>_to_sse_reg): .. this. - (fix<fixunssuffix>_trunc<mode><mmxintvecmodelower>2): New - expander. - (fix<fixunssuffix>_truncv2hfv2si2): Ditto. - (float<floatunssuffix><mmxintvecmodelower><mode>2): Ditto. - (float<floatunssuffix>v2siv2hf2): Ditto. - (extendv2hfv2sf2): Ditto. - (truncv2sfv2hf2): Ditto. - * config/i386/sse.md (*vec_concatv8hf_movss): Rename to .. - (*vec_concat<mode>_movss): .. this. - -2023-10-16 liuhongt <hongtao.liu@intel.com> - - * config/i386/i386-expand.cc (ix86_sse_copysign_to_positive): - Handle HFmode. - (ix86_expand_round_sse4): Ditto. - * config/i386/i386.md (roundhf2): New expander. - (lroundhf<mode>2): Ditto. - (lrinthf<mode>2): Ditto. - (l<rounding_insn>hf<mode>2): Ditto. - * config/i386/mmx.md (sqrt<mode>2): Ditto. - (btrunc<mode>2): Ditto. - (nearbyint<mode>2): Ditto. - (rint<mode>2): Ditto. - (lrint<mode><mmxintvecmodelower>2): Ditto. - (floor<mode>2): Ditto. - (lfloor<mode><mmxintvecmodelower>2): Ditto. - (ceil<mode>2): Ditto. - (lceil<mode><mmxintvecmodelower>2): Ditto. - (round<mode>2): Ditto. - (lround<mode><mmxintvecmodelower>2): Ditto. - * config/i386/sse.md (lrint<mode><sseintvecmodelower>2): Ditto. - (lfloor<mode><sseintvecmodelower>2): Ditto. - (lceil<mode><sseintvecmodelower>2): Ditto. - (lround<mode><sseintvecmodelower>2): Ditto. - (sse4_1_round<ssescalarmodesuffix>): Extend to V8HF. - (round<mode>2): Extend to V8HF/V16HF/V32HF. - -2023-10-15 Tobias Burnus <tobias@codesourcery.com> - - * doc/invoke.texi (-fopenacc, -fopenmp, -fopenmp-simd): Use @samp not - @code; document more completely the supported Fortran sentinels. - -2023-10-15 Roger Sayle <roger@nextmovesoftware.com> - - * optabs.cc (expand_subword_shift): Call simplify_expand_binop - instead of expand_binop. Optimize cases (i.e. avoid generating - RTL) when CARRIES or INTO_INPUT is zero. Use one_cmpl_optab - (i.e. NOT) instead of xor_optab with ~0 to calculate ~OP1. - -2023-10-15 Jakub Jelinek <jakub@redhat.com> - - PR tree-optimization/111800 - * wide-int-print.h (print_dec_buf_size, print_decs_buf_size, - print_decu_buf_size, print_hex_buf_size): New inline functions. - * wide-int.cc (assert_deceq): Use print_dec_buf_size. - (assert_hexeq): Use print_hex_buf_size. - * wide-int-print.cc (print_decs): Use print_decs_buf_size. - (print_decu): Use print_decu_buf_size. - (print_hex): Use print_hex_buf_size. - (pp_wide_int_large): Use print_dec_buf_size. - * value-range.cc (irange_bitmask::dump): Use print_hex_buf_size. - * value-range-pretty-print.cc (vrange_printer::print_irange_bitmasks): - Likewise. - * tree-ssa-loop-niter.cc (do_warn_aggressive_loop_optimizations): Use - print_dec_buf_size. Use TYPE_SIGN macro in print_dec call argument. - -2023-10-15 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com> - - * combine.cc (simplify_compare_const): Fix handling of unsigned - constants. - -2023-10-15 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/vector-iterators.md: Fix vsingle incorrect attribute for RVVM2x2QI. - -2023-10-14 Tobias Burnus <tobias@codesourcery.com> - - * gimplify.cc (gimplify_bind_expr): Handle Fortran's - 'omp allocate' for stack variables. - -2023-10-14 Jakub Jelinek <jakub@redhat.com> - - PR c/102989 - * tree-core.h (struct tree_base): Remove int_length.offset - member, change type of int_length.unextended and int_length.extended - from unsigned char to unsigned short. - * tree.h (TREE_INT_CST_OFFSET_NUNITS): Remove. - (wi::extended_tree <N>::get_len): Don't use TREE_INT_CST_OFFSET_NUNITS, - instead compute it at runtime from TREE_INT_CST_EXT_NUNITS and - TREE_INT_CST_NUNITS. - * tree.cc (wide_int_to_tree_1): Don't assert - TREE_INT_CST_OFFSET_NUNITS value. - (make_int_cst): Don't initialize TREE_INT_CST_OFFSET_NUNITS. - * wide-int.h (WIDE_INT_MAX_ELTS): Change from 255 to 1024. - (WIDEST_INT_MAX_ELTS): Change from 510 to 2048, adjust comment. - (trailing_wide_int_storage): Change m_len type from unsigned char * - to unsigned short *. - (trailing_wide_int_storage::trailing_wide_int_storage): Change second - argument from unsigned char * to unsigned short *. - (trailing_wide_ints): Change m_max_len type from unsigned char to - unsigned short. Change m_len element type from - struct{unsigned char len;} to unsigned short. - (trailing_wide_ints <N>::operator []): Remove .len from m_len - accesses. - * value-range-storage.h (irange_storage::lengths_address): Change - return type from const unsigned char * to const unsigned short *. - (irange_storage::write_lengths_address): Change return type from - unsigned char * to unsigned short *. - * value-range-storage.cc (irange_storage::write_lengths_address): - Likewise. - (irange_storage::lengths_address): Change return type from - const unsigned char * to const unsigned short *. - (write_wide_int): Change len argument type from unsigned char *& - to unsigned short *&. - (irange_storage::set_irange): Change len variable type from - unsigned char * to unsigned short *. - (read_wide_int): Change len argument type from unsigned char to - unsigned short. Use trailing_wide_int_storage <unsigned short> - instead of trailing_wide_int_storage and - trailing_wide_int <unsigned short> instead of trailing_wide_int. - (irange_storage::get_irange): Change len variable type from - unsigned char * to unsigned short *. - (irange_storage::size): Multiply n by sizeof (unsigned short) - in len_size variable initialization. - (irange_storage::dump): Change len variable type from - unsigned char * to unsigned short *. - -2023-10-14 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/vector-iterators.md: Remove redundant iterators. - -2023-10-13 Andrew MacLeod <amacleod@redhat.com> - - PR tree-optimization/111622 - * value-relation.cc (equiv_oracle::add_partial_equiv): Do not - register a partial equivalence if an operand has no uses. - -2023-10-13 Richard Biener <rguenther@suse.de> - - PR tree-optimization/111795 - * tree-vect-stmts.cc (vectorizable_simd_clone_call): Handle - integer mode mask arguments. - -2023-10-13 Richard Biener <rguenther@suse.de> - - * tree-vect-slp.cc (mask_call_maps): New. - (vect_get_operand_map): Handle IFN_MASK_CALL. - (vect_build_slp_tree_1): Likewise. - * tree-vect-stmts.cc (vectorizable_simd_clone_call): Handle - SLP. - -2023-10-13 Richard Biener <rguenther@suse.de> - - PR tree-optimization/111779 - * tree-sra.cc (sra_handled_bf_read_p): New function. - (build_access_from_expr_1): Handle some BIT_FIELD_REFs. - (sra_modify_expr): Likewise. - (make_fancy_name_1): Skip over BIT_FIELD_REF. - -2023-10-13 Richard Biener <rguenther@suse.de> - - PR tree-optimization/111773 - * tree-ssa-dce.cc (mark_stmt_if_obviously_necessary): Do - not elide noreturn calls that are reflected to the IL. - -2023-10-13 Kito Cheng <kito.cheng@sifive.com> - - * config/riscv/riscv.cc (riscv_legitimize_poly_move): Bump - max_power to 64. - * config/riscv/riscv.h (MAX_POLY_VARIANT): New. - -2023-10-13 Pan Li <pan2.li@intel.com> - - * config/riscv/autovec.md (lfloor<mode><v_i_l_ll_convert>2): New - pattern for lfloor/lfloorf. - * config/riscv/riscv-protos.h (enum insn_type): New enum value. - (expand_vec_lfloor): New func decl for expanding lfloor. - * config/riscv/riscv-v.cc (expand_vec_lfloor): New func impl - for expanding lfloor. - -2023-10-13 Pan Li <pan2.li@intel.com> - - * config/riscv/autovec.md (lceil<mode><v_i_l_ll_convert>2): New - pattern] for lceil/lceilf. - * config/riscv/riscv-protos.h (enum insn_type): New enum value. - (expand_vec_lceil): New func decl for expanding lceil. - * config/riscv/riscv-v.cc (expand_vec_lceil): New func impl - for expanding lceil. - -2023-10-12 Michael Meissner <meissner@linux.ibm.com> - - PR target/111778 - * config/rs6000/rs6000.cc (can_be_built_by_li_lis_and_rldicl): Protect - code from shifts that are undefined. - (can_be_built_by_li_lis_and_rldicr): Likewise. - (can_be_built_by_li_and_rldic): Protect code from shifts that - undefined. Also replace uses of 1ULL with HOST_WIDE_INT_1U. - -2023-10-12 Alex Coplan <alex.coplan@arm.com> - - * reg-notes.def (NOALIAS): Correct comment. - -2023-10-12 Jakub Jelinek <jakub@redhat.com> - - PR bootstrap/111787 - * tree.h (wi::int_traits <unextended_tree>::needs_write_val_arg): New - static data member. - (int_traits <extended_tree <N>>::needs_write_val_arg): Likewise. - (wi::ints_for): Provide separate partial specializations for - generic_wide_int <extended_tree <N>> and INL_CONST_PRECISION or that - and CONST_PRECISION, rather than using - int_traits <extended_tree <N> >::precision_type as the second template - argument. - * rtl.h (wi::int_traits <rtx_mode_t>::needs_write_val_arg): New - static data member. - * double-int.h (wi::int_traits <double_int>::needs_write_val_arg): - Likewise. - -2023-10-12 Mary Bennett <mary.bennett@embecosm.com> - - PR middle-end/111777 - * doc/extend.texi: Change subsubsection to subsection for - CORE-V built-ins. - -2023-10-12 Tamar Christina <tamar.christina@arm.com> - - * config/aarch64/aarch64-c.cc (aarch64_update_cpp_builtins): Add undef. - -2023-10-12 Jakub Jelinek <jakub@redhat.com> - - * wide-int.h (widest_int_storage <N>::write_val): If l is small - and there is space in u.val array, store a canary value at the - end when checking. - (widest_int_storage <N>::set_len): Check the canary hasn't been - overwritten. - -2023-10-12 Jakub Jelinek <jakub@redhat.com> - - PR c/102989 - * wide-int.h: Adjust file comment. - (WIDE_INT_MAX_INL_ELTS): Define to former value of WIDE_INT_MAX_ELTS. - (WIDE_INT_MAX_INL_PRECISION): Define. - (WIDE_INT_MAX_ELTS): Change to 255. Assert that WIDE_INT_MAX_INL_ELTS - is smaller than WIDE_INT_MAX_ELTS. - (RWIDE_INT_MAX_ELTS, RWIDE_INT_MAX_PRECISION, WIDEST_INT_MAX_ELTS, - WIDEST_INT_MAX_PRECISION): Define. - (WI_BINARY_RESULT_VAR, WI_UNARY_RESULT_VAR): Change write_val callers - to pass 0 as a new argument. - (class widest_int_storage): Likewise. - (widest_int, widest2_int): Change typedefs to use widest_int_storage - rather than fixed_wide_int_storage. - (enum wi::precision_type): Add INL_CONST_PRECISION enumerator. - (struct binary_traits): Add partial specializations for - INL_CONST_PRECISION. - (generic_wide_int): Add needs_write_val_arg static data member. - (int_traits): Likewise. - (wide_int_storage): Replace val non-static data member with a union - u of it and HOST_WIDE_INT *valp. Declare copy constructor, copy - assignment operator and destructor. Add unsigned int argument to - write_val. - (wide_int_storage::wide_int_storage): Initialize precision to 0 - in the default ctor. Remove unnecessary {}s around STATIC_ASSERTs. - Assert in non-default ctor T's precision_type is not - INL_CONST_PRECISION and allocate u.valp for large precision. Add - copy constructor. - (wide_int_storage::~wide_int_storage): New. - (wide_int_storage::operator=): Add copy assignment operator. In - assignment operator remove unnecessary {}s around STATIC_ASSERTs, - assert ctor T's precision_type is not INL_CONST_PRECISION and - if precision changes, deallocate and/or allocate u.valp. - (wide_int_storage::get_val): Return u.valp rather than u.val for - large precision. - (wide_int_storage::write_val): Likewise. Add an unused unsigned int - argument. - (wide_int_storage::set_len): Use write_val instead of writing val - directly. - (wide_int_storage::from, wide_int_storage::from_array): Adjust - write_val callers. - (wide_int_storage::create): Allocate u.valp for large precisions. - (wi::int_traits <wide_int_storage>::get_binary_precision): New. - (fixed_wide_int_storage::fixed_wide_int_storage): Make default - ctor defaulted. - (fixed_wide_int_storage::write_val): Add unused unsigned int argument. - (fixed_wide_int_storage::from, fixed_wide_int_storage::from_array): - Adjust write_val callers. - (wi::int_traits <fixed_wide_int_storage>::get_binary_precision): New. - (WIDEST_INT): Define. - (widest_int_storage): New template class. - (wi::int_traits <widest_int_storage>): New. - (trailing_wide_int_storage::write_val): Add unused unsigned int - argument. - (wi::get_binary_precision): Use - wi::int_traits <WI_BINARY_RESULT (T1, T2)>::get_binary_precision - rather than get_precision on get_binary_result. - (wi::copy): Adjust write_val callers. Don't call set_len if - needs_write_val_arg. - (wi::bit_not): If result.needs_write_val_arg, call write_val - again with upper bound estimate of len. - (wi::sext, wi::zext, wi::set_bit): Likewise. - (wi::bit_and, wi::bit_and_not, wi::bit_or, wi::bit_or_not, - wi::bit_xor, wi::add, wi::sub, wi::mul, wi::mul_high, wi::div_trunc, - wi::div_floor, wi::div_ceil, wi::div_round, wi::divmod_trunc, - wi::mod_trunc, wi::mod_floor, wi::mod_ceil, wi::mod_round, - wi::lshift, wi::lrshift, wi::arshift): Likewise. - (wi::bswap, wi::bitreverse): Assert result.needs_write_val_arg - is false. - (gt_ggc_mx, gt_pch_nx): Remove generic template for all - generic_wide_int, instead add functions and templates for each - storage of generic_wide_int. Make functions for - generic_wide_int <wide_int_storage> and templates for - generic_wide_int <widest_int_storage <N>> deleted. - (wi::mask, wi::shifted_mask): Adjust write_val calls. - * wide-int.cc (zeros): Decrease array size to 1. - (BLOCKS_NEEDED): Use CEIL. - (canonize): Use HOST_WIDE_INT_M1. - (wi::from_buffer): Pass 0 to write_val. - (wi::to_mpz): Use CEIL. - (wi::from_mpz): Likewise. Pass 0 to write_val. Use - WIDE_INT_MAX_INL_ELTS instead of WIDE_INT_MAX_ELTS. - (wi::mul_internal): Use WIDE_INT_MAX_INL_PRECISION instead of - MAX_BITSIZE_MODE_ANY_INT in automatic array sizes, for prec - above WIDE_INT_MAX_INL_PRECISION estimate precision from - lengths of operands. Use XALLOCAVEC allocated buffers for - prec above WIDE_INT_MAX_INL_PRECISION. - (wi::divmod_internal): Likewise. - (wi::lshift_large): For len > WIDE_INT_MAX_INL_ELTS estimate - it from xlen and skip. - (rshift_large_common): Remove xprecision argument, add len - argument with len computed in caller. Don't return anything. - (wi::lrshift_large, wi::arshift_large): Compute len here - and pass it to rshift_large_common, for lengths above - WIDE_INT_MAX_INL_ELTS using estimations from xlen if possible. - (assert_deceq, assert_hexeq): For lengths above - WIDE_INT_MAX_INL_ELTS use XALLOCAVEC allocated buffer. - (test_printing): Use WIDE_INT_MAX_INL_PRECISION instead of - WIDE_INT_MAX_PRECISION. - * wide-int-print.h (WIDE_INT_PRINT_BUFFER_SIZE): Use - WIDE_INT_MAX_INL_PRECISION instead of WIDE_INT_MAX_PRECISION. - * wide-int-print.cc (print_decs, print_decu, print_hex): For - lengths above WIDE_INT_MAX_INL_ELTS use XALLOCAVEC allocated buffer. - * tree.h (wi::int_traits<extended_tree <N>>): Change precision_type - to INL_CONST_PRECISION for N == ADDR_MAX_PRECISION. - (widest_extended_tree): Use WIDEST_INT_MAX_PRECISION instead of - WIDE_INT_MAX_PRECISION. - (wi::ints_for): Use int_traits <extended_tree <N> >::precision_type - instead of hard coded CONST_PRECISION. - (widest2_int_cst): Use WIDEST_INT_MAX_PRECISION instead of - WIDE_INT_MAX_PRECISION. - (wi::extended_tree <N>::get_len): Use WIDEST_INT_MAX_PRECISION rather - than WIDE_INT_MAX_PRECISION. - (wi::ints_for::zero): Use - wi::int_traits <wi::extended_tree <N> >::precision_type instead of - wi::CONST_PRECISION. - * tree.cc (build_replicated_int_cst): Formatting fix. Use - WIDE_INT_MAX_INL_ELTS rather than WIDE_INT_MAX_ELTS. - * print-tree.cc (print_node): Don't print TREE_UNAVAILABLE on - INTEGER_CSTs, TREE_VECs or SSA_NAMEs. - * double-int.h (wi::int_traits <double_int>::precision_type): Change - to INL_CONST_PRECISION from CONST_PRECISION. - * poly-int.h (struct poly_coeff_traits): Add partial specialization - for wi::INL_CONST_PRECISION. - * cfgloop.h (bound_wide_int): New typedef. - (struct nb_iter_bound): Change bound type from widest_int to - bound_wide_int. - (struct loop): Change nb_iterations_upper_bound, - nb_iterations_likely_upper_bound and nb_iterations_estimate type from - widest_int to bound_wide_int. - * cfgloop.cc (record_niter_bound): Return early if wi::min_precision - of i_bound is too large for bound_wide_int. Adjustments for the - widest_int to bound_wide_int type change in non-static data members. - (get_estimated_loop_iterations, get_max_loop_iterations, - get_likely_max_loop_iterations): Adjustments for the widest_int to - bound_wide_int type change in non-static data members. - * tree-vect-loop.cc (vect_transform_loop): Likewise. - * tree-ssa-loop-niter.cc (do_warn_aggressive_loop_optimizations): Use - XALLOCAVEC allocated buffer for i_bound len above - WIDE_INT_MAX_INL_ELTS. - (record_estimate): Return early if wi::min_precision of i_bound is too - large for bound_wide_int. Adjustments for the widest_int to - bound_wide_int type change in non-static data members. - (wide_int_cmp): Use bound_wide_int instead of widest_int. - (bound_index): Use bound_wide_int instead of widest_int. - (discover_iteration_bound_by_body_walk): Likewise. Use - widest_int::from to convert it to widest_int when passed to - record_niter_bound. - (maybe_lower_iteration_bound): Use widest_int::from to convert it to - widest_int when passed to record_niter_bound. - (estimate_numbers_of_iteration): Don't record upper bound if - loop->nb_iterations has too large precision for bound_wide_int. - (n_of_executions_at_most): Use widest_int::from. - * tree-ssa-loop-ivcanon.cc (remove_redundant_iv_tests): Adjust for - the widest_int to bound_wide_int changes. - * match.pd (fold_sign_changed_comparison simplification): Use - wide_int::from on wi::to_wide instead of wi::to_widest. - * value-range.h (irange::maybe_resize): Avoid using memcpy on - non-trivially copyable elements. - * value-range.cc (irange_bitmask::dump): Use XALLOCAVEC allocated - buffer for mask or value len above WIDE_INT_PRINT_BUFFER_SIZE. - * fold-const.cc (fold_convert_const_int_from_int, fold_unary_loc): - Use wide_int::from on wi::to_wide instead of wi::to_widest. - * tree-ssa-ccp.cc (bit_value_binop): Zero extend r1max from width - before calling wi::udiv_trunc. - * lto-streamer-out.cc (output_cfg): Adjustments for the widest_int to - bound_wide_int type change in non-static data members. - * lto-streamer-in.cc (input_cfg): Likewise. - (lto_input_tree_1): Use WIDE_INT_MAX_INL_ELTS rather than - WIDE_INT_MAX_ELTS. For length above WIDE_INT_MAX_INL_ELTS use - XALLOCAVEC allocated buffer. Formatting fix. - * data-streamer-in.cc (streamer_read_wide_int, - streamer_read_widest_int): Likewise. - * tree-affine.cc (aff_combination_expand): Use placement new to - construct name_expansion. - (free_name_expansion): Destruct name_expansion. - * gimple-ssa-strength-reduction.cc (struct slsr_cand_d): Change - index type from widest_int to offset_int. - (class incr_info_d): Change incr type from widest_int to offset_int. - (alloc_cand_and_find_basis, backtrace_base_for_ref, - restructure_reference, slsr_process_ref, create_mul_ssa_cand, - create_mul_imm_cand, create_add_ssa_cand, create_add_imm_cand, - slsr_process_add, cand_abs_increment, replace_mult_candidate, - replace_unconditional_candidate, incr_vec_index, - create_add_on_incoming_edge, create_phi_basis_1, - replace_conditional_candidate, record_increment, - record_phi_increments_1, phi_incr_cost_1, phi_incr_cost, - lowest_cost_path, total_savings, ncd_with_phi, ncd_of_cand_and_phis, - nearest_common_dominator_for_cands, insert_initializers, - all_phi_incrs_profitable_1, replace_one_candidate, - replace_profitable_candidates): Use offset_int rather than widest_int - and wi::to_offset rather than wi::to_widest. - * real.cc (real_to_integer): Use WIDE_INT_MAX_INL_ELTS rather than - 2 * WIDE_INT_MAX_ELTS and for words above that use XALLOCAVEC - allocated buffer. - * tree-ssa-loop-ivopts.cc (niter_for_exit): Use placement new - to construct tree_niter_desc and destruct it on failure. - (free_tree_niter_desc): Destruct tree_niter_desc if value is non-NULL. - * gengtype.cc (main): Remove widest_int handling. - * graphite-isl-ast-to-gimple.cc (widest_int_from_isl_expr_int): Use - WIDEST_INT_MAX_ELTS instead of WIDE_INT_MAX_ELTS. - * gimple-ssa-warn-alloca.cc (pass_walloca::execute): Use - WIDE_INT_MAX_INL_PRECISION instead of WIDE_INT_MAX_PRECISION and - assert get_len () fits into it. - * value-range-pretty-print.cc (vrange_printer::print_irange_bitmasks): - For mask or value lengths above WIDE_INT_MAX_INL_ELTS use XALLOCAVEC - allocated buffer. - * gimple-ssa-sprintf.cc (adjust_range_for_overflow): Use - wide_int::from on wi::to_wide instead of wi::to_widest. - * omp-general.cc (score_wide_int): New typedef. - (omp_context_compute_score): Use score_wide_int instead of widest_int - and adjust for those changes. - (struct omp_declare_variant_entry): Change score and - score_in_declare_simd_clone non-static data member type from widest_int - to score_wide_int. - (omp_resolve_late_declare_variant, omp_resolve_declare_variant): Use - score_wide_int instead of widest_int and adjust for those changes. - (omp_lto_output_declare_variant_alt): Likewise. - (omp_lto_input_declare_variant_alt): Likewise. - * godump.cc (go_output_typedef): Assert get_len () is smaller than - WIDE_INT_MAX_INL_ELTS. - -2023-10-12 Pan Li <pan2.li@intel.com> - - * config/riscv/autovec.md (lround<mode><v_i_l_ll_convert>2): New - pattern for lround/lroundf. - * config/riscv/riscv-protos.h (enum insn_type): New enum value. - (expand_vec_lround): New func decl for expanding lround. - * config/riscv/riscv-v.cc (expand_vec_lround): New func impl - for expanding lround. - -2023-10-12 Jakub Jelinek <jakub@redhat.com> - - * dwarf2out.h (wide_int_ptr): Remove. - (dw_wide_int_ptr): New typedef. - (struct dw_val_node): Change type of val_wide from wide_int_ptr - to dw_wide_int_ptr. - (struct dw_wide_int): New type. - (dw_wide_int::elt): New method. - (dw_wide_int::operator ==): Likewise. - * dwarf2out.cc (get_full_len): Change argument type to - const dw_wide_int & from const wide_int &. Use CEIL. Call - get_precision method instead of calling wi::get_precision. - (alloc_dw_wide_int): New function. - (add_AT_wide): Change w argument type to const wide_int_ref & - from const wide_int &. Use alloc_dw_wide_int. - (mem_loc_descriptor, loc_descriptor): Use alloc_dw_wide_int. - (insert_wide_int): Change val argument type to const wide_int_ref & - from const wide_int &. - (add_const_value_attribute): Pass rtx_mode_t temporary directly to - add_AT_wide instead of using a temporary variable. - -2023-10-12 Richard Biener <rguenther@suse.de> - - PR tree-optimization/111764 - * tree-vect-loop.cc (check_reduction_path): Remove the attempt - to allow x + x via special-casing of assigns. - -2023-10-12 Hu, Lin1 <lin1.hu@intel.com> - - * common/config/i386/cpuinfo.h (get_available_features): - Detect USER_MSR. - * common/config/i386/i386-common.cc (OPTION_MASK_ISA2_USER_MSR_SET): New. - (OPTION_MASK_ISA2_USER_MSR_UNSET): Ditto. - (ix86_handle_option): Handle -musermsr. - * common/config/i386/i386-cpuinfo.h (enum processor_features): - Add FEATURE_USER_MSR. - * common/config/i386/i386-isas.h: Add ISA_NAME_TABLE_ENTRY for usermsr. - * config.gcc: Add usermsrintrin.h - * config/i386/cpuid.h (bit_USER_MSR): New. - * config/i386/i386-builtin-types.def: - Add DEF_FUNCTION_TYPE (VOID, UINT64, UINT64). - * config/i386/i386-builtins.cc (ix86_init_mmx_sse_builtins): - Add __builtin_urdmsr and __builtin_uwrmsr. - * config/i386/i386-builtins.h (ix86_builtins): - Add IX86_BUILTIN_URDMSR and IX86_BUILTIN_UWRMSR. - * config/i386/i386-c.cc (ix86_target_macros_internal): - Define __USER_MSR__. - * config/i386/i386-expand.cc (ix86_expand_builtin): - Handle new builtins. - * config/i386/i386-isa.def (USER_MSR): Add DEF_PTA(USER_MSR). - * config/i386/i386-options.cc (ix86_valid_target_attribute_inner_p): - Handle usermsr. - * config/i386/i386.md (urdmsr): New define_insn. - (uwrmsr): Ditto. - * config/i386/i386.opt: Add option -musermsr. - * config/i386/x86gprintrin.h: Include usermsrintrin.h - * doc/extend.texi: Document usermsr. - * doc/invoke.texi: Document -musermsr. - * doc/sourcebuild.texi: Document target usermsr. - * config/i386/usermsrintrin.h: New file. - -2023-10-12 Yang Yujie <yangyujie@loongson.cn> - - * config.gcc: Add loongarch-driver.h to tm_files. - * config/loongarch/loongarch.h: Do not include loongarch-driver.h. - * config/loongarch/t-loongarch: Append loongarch-multilib.h to $(GTM_H) - instead of $(TM_H) for building generator programs. - -2023-10-12 Kewen Lin <linkw@linux.ibm.com> - - PR target/111367 - * config/rs6000/rs6000.md (stack_protect_setsi): Support prefixed - instruction emission and incorporate to stack_protect_set<mode>. - (stack_protect_setdi): Rename to ... - (stack_protect_set<mode>): ... this, adjust constraint. - (stack_protect_testsi): Support prefixed instruction emission and - incorporate to stack_protect_test<mode>. - (stack_protect_testdi): Rename to ... - (stack_protect_test<mode>): ... this, adjust constraint. - -2023-10-12 Kewen Lin <linkw@linux.ibm.com> - - * tree-vect-stmts.cc (vectorizable_store): Consider generated - VEC_PERM_EXPR stmt for VMAT_CONTIGUOUS_REVERSE in costing as - vec_perm. - -2023-10-12 Kewen Lin <linkw@linux.ibm.com> - - * tree-vect-stmts.cc (vect_model_store_cost): Remove. - (vectorizable_store): Adjust the costing for the remaining memory - access types VMAT_CONTIGUOUS{, _DOWN, _REVERSE}. - -2023-10-12 Kewen Lin <linkw@linux.ibm.com> - - * tree-vect-stmts.cc (vect_model_store_cost): Assert it will never - get VMAT_CONTIGUOUS_PERMUTE and remove VMAT_CONTIGUOUS_PERMUTE related - handlings. - (vectorizable_store): Adjust the cost handling on - VMAT_CONTIGUOUS_PERMUTE without calling vect_model_store_cost. - -2023-10-12 Kewen Lin <linkw@linux.ibm.com> - - * tree-vect-stmts.cc (vect_model_store_cost): Assert it will never - get VMAT_LOAD_STORE_LANES. - (vectorizable_store): Adjust the cost handling on VMAT_LOAD_STORE_LANES - without calling vect_model_store_cost. Factor out new lambda function - update_prologue_cost. - -2023-10-12 Kewen Lin <linkw@linux.ibm.com> - - * tree-vect-stmts.cc (vect_model_store_cost): Assert it won't get - VMAT_ELEMENTWISE and VMAT_STRIDED_SLP any more, and remove their - related handlings. - (vectorizable_store): Adjust the cost handling on VMAT_ELEMENTWISE - and VMAT_STRIDED_SLP without calling vect_model_store_cost. - -2023-10-12 Kewen Lin <linkw@linux.ibm.com> - - * tree-vect-stmts.cc (vectorizable_store): Adjust costing on - vectorizable_scan_store without calling vect_model_store_cost - any more. - -2023-10-12 Kewen Lin <linkw@linux.ibm.com> - - * tree-vect-stmts.cc (vect_model_store_cost): Assert it won't get - VMAT_GATHER_SCATTER any more, remove VMAT_GATHER_SCATTER related - handlings and the related parameter gs_info. - (vect_build_scatter_store_calls): Add the handlings on costing with - one more argument cost_vec. - (vectorizable_store): Adjust the cost handling on VMAT_GATHER_SCATTER - without calling vect_model_store_cost any more. - -2023-10-12 Kewen Lin <linkw@linux.ibm.com> - - * tree-vect-stmts.cc (vectorizable_store): Move and duplicate the call - to vect_model_store_cost down to some different transform paths - according to the handlings of different vect_memory_access_types - or some special handling need. - -2023-10-12 Kewen Lin <linkw@linux.ibm.com> - - * tree-vect-stmts.cc (vectorizable_store): Ensure the generated - vector store for some case of VMAT_ELEMENTWISE is supported. - -2023-10-12 Mo, Zewei <zewei.mo@intel.com> - Hu Lin1 <lin1.hu@intel.com> - Hongyu Wang <hongyu.wang@intel.com> - - * config/i386/i386.cc (gen_push2): New function to emit push2 - and adjust cfa offset. - (ix86_pro_and_epilogue_can_use_push2_pop2): New function to - determine whether push2/pop2 can be used. - (ix86_compute_frame_layout): Adjust preferred stack boundary - and stack alignment needed for push2/pop2. - (ix86_emit_save_regs): Emit push2 when available. - (ix86_emit_restore_reg_using_pop2): New function to emit pop2 - and adjust cfa info. - (ix86_emit_restore_regs_using_pop2): New function to loop - through the saved regs and call above. - (ix86_expand_epilogue): Call ix86_emit_restore_regs_using_pop2 - when push2pop2 available. - * config/i386/i386.md (push2_di): New pattern for push2. - (pop2_di): Likewise for pop2. - -2023-10-12 Pan Li <pan2.li@intel.com> - - * config/riscv/autovec.md (lrint<mode><vlconvert>2): Rename from. - (lrint<mode><v_i_l_ll_convert>2): Rename to. - * config/riscv/vector-iterators.md: Rename and remove TARGET_64BIT. - -2023-10-11 Kito Cheng <kito.cheng@sifive.com> - - * config/riscv/riscv-opts.h (TARGET_MIN_VLEN_OPTS): New. - -2023-10-11 Jeff Law <jlaw@ventanamicro.com> - - * config/riscv/riscv.md (jump): Adjust sequence to use a "jump" - pseudo op instead of a "call" pseudo op. - -2023-10-11 Kito Cheng <kito.cheng@sifive.com> - - * config/riscv/riscv-subset.h (riscv_subset_list::parse_single_std_ext): - New. - (riscv_subset_list::parse_single_multiletter_ext): Ditto. - (riscv_subset_list::clone): Ditto. - (riscv_subset_list::parse_single_ext): Ditto. - (riscv_subset_list::set_loc): Ditto. - (riscv_set_arch_by_subset_list): Ditto. - * common/config/riscv/riscv-common.cc - (riscv_subset_list::parse_single_std_ext): New. - (riscv_subset_list::parse_single_multiletter_ext): Ditto. - (riscv_subset_list::clone): Ditto. - (riscv_subset_list::parse_single_ext): Ditto. - (riscv_subset_list::set_loc): Ditto. - (riscv_set_arch_by_subset_list): Ditto. - -2023-10-11 Kito Cheng <kito.cheng@sifive.com> - - * config/riscv/riscv.cc (riscv_convert_vector_bits): Get setting - from argument rather than get setting from global setting. - (riscv_override_options_internal): New, splited from - riscv_override_options, also take a gcc_options argument. - (riscv_option_override): Splited most part to - riscv_override_options_internal. - -2023-10-11 Kito Cheng <kito.cheng@sifive.com> - - * doc/options.texi (Mask): Document TARGET_<NAME>_P and - TARGET_<NAME>_OPTS_P. - (InverseMask): Ditto. - * opth-gen.awk (Mask): Generate TARGET_<NAME>_P and - TARGET_<NAME>_OPTS_P macro. - (InverseMask): Ditto. - -2023-10-11 Andrew Pinski <pinskia@gmail.com> - - PR tree-optimization/111282 - * match.pd (`a & ~(a ^ b)`, `a & (a == b)`, - `a & ((~a) ^ b)`): New patterns. - -2023-10-11 Mary Bennett <mary.bennett@embecosm.com> - - * common/config/riscv/riscv-common.cc: Add the XCValu - extension. - * config/riscv/constraints.md: Add builtins for the XCValu - extension. - * config/riscv/predicates.md (immediate_register_operand): - Likewise. - * config/riscv/corev.def: Likewise. - * config/riscv/corev.md: Likewise. - * config/riscv/riscv-builtins.cc (AVAIL): Likewise. - (RISCV_ATYPE_UHI): Likewise. - * config/riscv/riscv-ftypes.def: Likewise. - * config/riscv/riscv.opt: Likewise. - * config/riscv/riscv.cc (riscv_print_operand): Likewise. - * doc/extend.texi: Add XCValu documentation. - * doc/sourcebuild.texi: Likewise. - -2023-10-11 Mary Bennett <mary.bennett@embecosm.com> - - * common/config/riscv/riscv-common.cc: Add XCVmac. - * config/riscv/riscv-ftypes.def: Add XCVmac builtins. - * config/riscv/riscv-builtins.cc: Likewise. - * config/riscv/riscv.md: Likewise. - * config/riscv/riscv.opt: Likewise. - * doc/extend.texi: Add XCVmac builtin documentation. - * doc/sourcebuild.texi: Likewise. - * config/riscv/corev.def: New file. - * config/riscv/corev.md: New file. - -2023-10-11 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/autovec.md: Fix index bug. - * config/riscv/riscv-protos.h (gather_scatter_valid_offset_mode_p): New function. - * config/riscv/riscv-v.cc (expand_gather_scatter): Fix index bug. - (gather_scatter_valid_offset_mode_p): New function. - -2023-10-11 Pan Li <pan2.li@intel.com> - - * config/riscv/autovec.md (lrint<mode><vlconvert>2): New pattern - for lrint/lintf. - * config/riscv/riscv-protos.h (expand_vec_lrint): New func decl - for expanding lint. - * config/riscv/riscv-v.cc (emit_vec_cvt_x_f): New helper func impl - for vfcvt.x.f.v. - (expand_vec_lrint): New function impl for expanding lint. - * config/riscv/vector-iterators.md: New mode attr and iterator. - -2023-10-11 Richard Biener <rguenther@suse.de> - Jakub Jelinek <jakub@redhat.com> - - PR tree-optimization/111519 - * tree-ssa-strlen.cc (strlen_pass::count_nonzero_bytes): Add vuse - argument and pass it through to recursive calls and - count_nonzero_bytes_addr calls. Don't shadow the stmt argument, but - change stmt for gimple_assign_single_p statements for which we don't - immediately punt. - (strlen_pass::count_nonzero_bytes_addr): Add vuse argument and pass - it through to recursive calls and count_nonzero_bytes calls. Don't - use get_strinfo if gimple_vuse (stmt) is different from vuse. Don't - shadow the stmt argument. - -2023-10-11 Roger Sayle <roger@nextmovesoftware.com> - - PR middle-end/101955 - PR tree-optimization/106245 - * simplify-rtx.cc (simplify_relational_operation_1): Simplify - the RTL (ne:SI (subreg:QI (ashift:SI x 7) 0) 0) to (and:SI x 1). - -2023-10-11 liuhongt <hongtao.liu@intel.com> - - PR target/111745 - * config/i386/mmx.md (divv4hf3): Refine predicate of - operands[2] with register_operand. - -2023-10-10 Andrew Waterman <andrew@sifive.com> - Philipp Tomsich <philipp.tomsich@vrull.eu> - Jeff Law <jlaw@ventanamicro.com> - - * config/riscv/riscv.cc (struct machine_function): Track if a - far-branch/jump is used within a function (and $ra needs to be - saved). - (riscv_print_operand): Implement 'N' (inverse integer branch). - (riscv_far_jump_used_p): Implement. - (riscv_save_return_addr_reg_p): New function. - (riscv_save_reg_p): Use riscv_save_return_addr_reg_p. - * config/riscv/riscv.h (FIXED_REGISTERS): Update $ra. - (CALL_USED_REGISTERS): Update $ra. - * config/riscv/riscv.md: Add new types "ret" and "jalr". - (length attribute): Handle long conditional and unconditional - branches. - (conditional branch pattern): Handle case where jump can not - reach the intended target. - (indirect_jump, tablejump): Use new "jalr" type. - (simple_return): Use new "ret" type. - (simple_return_internal, eh_return_internal): Likewise. - (gpr_restore_return, riscv_mret): Likewise. - (riscv_uret, riscv_sret): Likewise. - * config/riscv/generic.md (generic_branch): Also recognize jalr & ret - types. - * config/riscv/sifive-7.md (sifive_7_jump): Likewise. - -2023-10-10 Andrew Pinski <pinskia@gmail.com> - - PR tree-optimization/111679 - * match.pd (`a | ((~a) ^ b)`): New pattern. - -2023-10-10 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - PR target/111751 - * config/riscv/autovec.md: Add VLS BOOL modes. - -2023-10-10 Richard Biener <rguenther@suse.de> - - PR tree-optimization/111751 - * fold-const.cc (fold_view_convert_expr): Up the buffer size - to 128 bytes. - * tree-ssa-sccvn.cc (visit_reference_op_load): Special case - constants, giving up when re-interpretation to the target type - fails. - -2023-10-10 Richard Biener <rguenther@suse.de> - - PR tree-optimization/111751 - * tree-ssa-sccvn.cc (visit_reference_op_load): Exempt - BLKmode result from the padding bits check. - -2023-10-10 Claudiu Zissulescu <claziss@gmail.com> - - * config/arc/arc.cc (arc_select_cc_mode): Match NEG code with - the first operand. - * config/arc/arc.md (addsi_compare): Make pattern canonical. - (addsi_compare_2): Fix identation, constraint letters. - (addsi_compare_3): Likewise. - -2023-10-09 Eugene Rozenfeld <erozen@microsoft.com> - - * auto-profile.cc (afdo_calculate_branch_prob): Fix count comparisons - * tree-vect-loop-manip.cc (vect_do_peeling): Guard against zero count - when scaling loop profile - -2023-10-09 Andrew MacLeod <amacleod@redhat.com> - - PR tree-optimization/111694 - * gimple-range-cache.cc (ranger_cache::fill_block_cache): Adjust - equivalence range. - * value-relation.cc (adjust_equivalence_range): New. - * value-relation.h (adjust_equivalence_range): New prototype. - -2023-10-09 Andrew MacLeod <amacleod@redhat.com> - - * gimple-range-gori.cc (gori_compute::compute_operand1_range): Do - not call get_identity_relation. - (gori_compute::compute_operand2_range): Ditto. - * value-relation.cc (get_identity_relation): Remove. - * value-relation.h (get_identity_relation): Remove protyotype. - -2023-10-09 Robin Dapp <rdapp@ventanamicro.com> - - * config/riscv/riscv-cores.def (RISCV_TUNE): Add parameter. - * config/riscv/riscv-opts.h (enum riscv_microarchitecture_type): - Add generic_ooo. - * config/riscv/riscv.cc (riscv_sched_adjust_cost): Implement - scheduler hook. - (TARGET_SCHED_ADJUST_COST): Define. - * config/riscv/riscv.md (no,yes"): Include generic-ooo.md - * config/riscv/riscv.opt: Add -madjust-lmul-cost. - * config/riscv/generic-ooo.md: New file. - * config/riscv/vector.md: Add vsetvl_pre. - -2023-10-09 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv-opts.h (TARGET_VECTOR_MISALIGN_SUPPORTED): New macro. - * config/riscv/riscv.cc (riscv_support_vector_misalignment): Depend on movmisalign pattern. - * config/riscv/vector.md (movmisalign<mode>): New pattern. - -2023-10-09 Xianmiao Qu <cooper.qu@linux.alibaba.com> - - * config/riscv/thead.cc (th_mempair_save_regs): Fix missing CFI - directives for store-pair instruction. - -2023-10-09 Richard Biener <rguenther@suse.de> - - PR tree-optimization/111715 - * alias.cc (reference_alias_ptr_type_1): When we have - a type-punning ref at the base search for the access - path part that's still semantically valid. - -2023-10-09 Pan Li <pan2.li@intel.com> - - * config/riscv/riscv-v.cc (shuffle_bswap_pattern): New func impl - for shuffle bswap. - (expand_vec_perm_const_1): Add handling for shuffle bswap pattern. - -2023-10-09 Roger Sayle <roger@nextmovesoftware.com> - - * config/i386/i386-expand.cc (ix86_split_ashr): Split shifts by - one into ashr[sd]i3_carry followed by rcr[sd]i2, if TARGET_USE_RCR - or -Oz. - (ix86_split_lshr): Likewise, split shifts by one bit into - lshr[sd]i3_carry followed by rcr[sd]i2, if TARGET_USE_RCR or -Oz. - * config/i386/i386.h (TARGET_USE_RCR): New backend macro. - * config/i386/i386.md (rcrsi2): New define_insn for rcrl. - (rcrdi2): New define_insn for rcrq. - (<anyshiftrt><mode>3_carry): New define_insn for right shifts that - set the carry flag from the least significant bit, modelled using - UNSPEC_CC_NE. - * config/i386/x86-tune.def (X86_TUNE_USE_RCR): New tuning parameter - controlling use of rcr 1 vs. shrd, which is significantly faster on - AMD processors. - -2023-10-09 Haochen Jiang <haochen.jiang@intel.com> - - * config/i386/i386.opt: Allow -mno-evex512. - -2023-10-09 Haochen Jiang <haochen.jiang@intel.com> - Hu, Lin1 <lin1.hu@intel.com> - - * config/i386/sse.md (V48H_AVX512VL): Add TARGET_EVEX512. - (VFH): Ditto. - (VF2H): Ditto. - (VFH_AVX512VL): Ditto. - (VHFBF): Ditto. - (VHF_AVX512VL): Ditto. - (VI2H_AVX512VL): Ditto. - (VI2F_256_512): Ditto. - (VF48_I1248): Remove unused iterator. - (VF48H_AVX512VL): Add TARGET_EVEX512. - (VF_AVX512): Remove unused iterator. - (REDUC_PLUS_MODE): Add TARGET_EVEX512. - (REDUC_SMINMAX_MODE): Ditto. - (FMAMODEM): Ditto. - (VFH_SF_AVX512VL): Ditto. - (VEC_PERM_AVX2): Ditto. - -2023-10-09 Haochen Jiang <haochen.jiang@intel.com> - Hu, Lin1 <lin1.hu@intel.com> - - * config/i386/sse.md (VI1_AVX512VL): Add TARGET_EVEX512. - (VI8_FVL): Ditto. - (VI1_AVX512F): Ditto. - (VI1_AVX512VNNI): Ditto. - (VI1_AVX512VL_F): Ditto. - (VI12_VI48F_AVX512VL): Ditto. - (*avx512f_permvar_truncv32hiv32qi_1): Ditto. - (sdot_prod<mode>): Ditto. - (VEC_PERM_AVX2): Ditto. - (VPERMI2): Ditto. - (VPERMI2I): Ditto. - (vpmadd52<vpmadd52type>v8di): Ditto. - (usdot_prod<mode>): Ditto. - (vpdpbusd_v16si): Ditto. - (vpdpbusds_v16si): Ditto. - (vpdpwssd_v16si): Ditto. - (vpdpwssds_v16si): Ditto. - (VI48_AVX512VP2VL): Ditto. - (avx512vp2intersect_2intersectv16si): Ditto. - (VF_AVX512BF16VL): Ditto. - (VF1_AVX512_256): Ditto. - -2023-10-09 Haochen Jiang <haochen.jiang@intel.com> - - * config/i386/i386-expand.cc (ix86_expand_vector_init_duplicate): - Make sure there is EVEX512 enabled. - (ix86_expand_vecop_qihi2): Refuse V32QI->V32HI when no EVEX512. - * config/i386/i386.cc (ix86_hard_regno_mode_ok): Disable 64 bit mask - when !TARGET_EVEX512. - * config/i386/i386.md (avx512bw_512): New. - (SWI1248_AVX512BWDQ_64): Add TARGET_EVEX512. - (*zero_extendsidi2): Change isa to avx512bw_512. - (kmov_isa): Ditto. - (*anddi_1): Ditto. - (*andn<mode>_1): Change isa to kmov_isa. - (*<code><mode>_1): Ditto. - (*notxor<mode>_1): Ditto. - (*one_cmpl<mode>2_1): Ditto. - (*one_cmplsi2_1_zext): Change isa to avx512bw_512. - (*ashl<mode>3_1): Change isa to kmov_isa. - (*lshr<mode>3_1): Ditto. - * config/i386/sse.md (VI12HFBF_AVX512VL): Add TARGET_EVEX512. - (VI1248_AVX512VLBW): Ditto. - (VHFBF_AVX512VL): Ditto. - (VI): Ditto. - (VIHFBF): Ditto. - (VI_AVX2): Ditto. - (VI1_AVX512): Ditto. - (VI12_256_512_AVX512VL): Ditto. - (VI2_AVX2_AVX512BW): Ditto. - (VI2_AVX512VNNIBW): Ditto. - (VI2_AVX512VL): Ditto. - (VI2HFBF_AVX512VL): Ditto. - (VI8_AVX2_AVX512BW): Ditto. - (VIMAX_AVX2_AVX512BW): Ditto. - (VIMAX_AVX512VL): Ditto. - (VI12_AVX2_AVX512BW): Ditto. - (VI124_AVX2_24_AVX512F_1_AVX512BW): Ditto. - (VI248_AVX512VL): Ditto. - (VI248_AVX512VLBW): Ditto. - (VI248_AVX2_8_AVX512F_24_AVX512BW): Ditto. - (VI248_AVX512BW): Ditto. - (VI248_AVX512BW_AVX512VL): Ditto. - (VI248_512): Ditto. - (VI124_256_AVX512F_AVX512BW): Ditto. - (VI_AVX512BW): Ditto. - (VIHFBF_AVX512BW): Ditto. - (SWI1248_AVX512BWDQ): Ditto. - (SWI1248_AVX512BW): Ditto. - (SWI1248_AVX512BWDQ2): Ditto. - (*knotsi_1_zext): Ditto. - (define_split for zero_extend + not): Ditto. - (kunpckdi): Ditto. - (REDUC_SMINMAX_MODE): Ditto. - (VEC_EXTRACT_MODE): Ditto. - (*avx512bw_permvar_truncv16siv16hi_1): Ditto. - (*avx512bw_permvar_truncv16siv16hi_1_hf): Ditto. - (truncv32hiv32qi2): Ditto. - (avx512bw_<code>v32hiv32qi2): Ditto. - (avx512bw_<code>v32hiv32qi2_mask): Ditto. - (avx512bw_<code>v32hiv32qi2_mask_store): Ditto. - (usadv64qi): Ditto. - (VEC_PERM_AVX2): Ditto. - (AVX512ZEXTMASK): Ditto. - (SWI24_MASK): New. - (vec_pack_trunc_<mode>): Change iterator to SWI24_MASK. - (avx512bw_packsswb<mask_name>): Add TARGET_EVEX512. - (avx512bw_packssdw<mask_name>): Ditto. - (avx512bw_interleave_highv64qi<mask_name>): Ditto. - (avx512bw_interleave_lowv64qi<mask_name>): Ditto. - (<mask_codefor>avx512bw_pshuflwv32hi<mask_name>): Ditto. - (<mask_codefor>avx512bw_pshufhwv32hi<mask_name>): Ditto. - (vec_unpacks_lo_di): Ditto. - (SWI48x_MASK): New. - (vec_unpacks_hi_<mode>): Change iterator to SWI48x_MASK. - (avx512bw_umulhrswv32hi3<mask_name>): Add TARGET_EVEX512. - (VI1248_AVX512VL_AVX512BW): Ditto. - (avx512bw_<code>v32qiv32hi2<mask_name>): Ditto. - (*avx512bw_zero_extendv32qiv32hi2_1): Ditto. - (*avx512bw_zero_extendv32qiv32hi2_2): Ditto. - (<insn>v32qiv32hi2): Ditto. - (pbroadcast_evex_isa): Change isa attribute to avx512bw_512. - (VPERMI2): Add TARGET_EVEX512. - (VPERMI2I): Ditto. - -2023-10-09 Haochen Jiang <haochen.jiang@intel.com> - - * config/i386/i386-expand.cc (ix86_expand_sse2_mulvxdi3): - Add TARGET_EVEX512 for 512 bit usage. - * config/i386/i386.cc (standard_sse_constant_opcode): Ditto. - * config/i386/sse.md (VF1_VF2_AVX512DQ): Ditto. - (VF1_128_256VL): Ditto. - (VF2_AVX512VL): Ditto. - (VI8_256_512): Ditto. - (<mask_codefor>fixuns_trunc<mode><sseintvecmodelower>2<mask_name>): - Ditto. - (AVX512_VEC): Ditto. - (AVX512_VEC_2): Ditto. - (VI4F_BRCST32x2): Ditto. - (VI8F_BRCST64x2): Ditto. - -2023-10-09 Haochen Jiang <haochen.jiang@intel.com> - - * config/i386/i386-builtins.cc - (ix86_vectorize_builtin_gather): Disable 512 bit gather - when !TARGET_EVEX512. - * config/i386/i386-expand.cc (ix86_valid_mask_cmp_mode): - Add TARGET_EVEX512. - (ix86_expand_int_sse_cmp): Ditto. - (ix86_expand_vector_init_one_nonzero): Disable subroutine - when !TARGET_EVEX512. - (ix86_emit_swsqrtsf): Add TARGET_EVEX512. - (ix86_vectorize_vec_perm_const): Disable subroutine when - !TARGET_EVEX512. - * config/i386/i386.cc - (standard_sse_constant_p): Add TARGET_EVEX512. - (standard_sse_constant_opcode): Ditto. - (ix86_get_ssemov): Ditto. - (ix86_legitimate_constant_p): Ditto. - (ix86_vectorize_builtin_scatter): Diable 512 bit scatter - when !TARGET_EVEX512. - * config/i386/i386.md (avx512f_512): New. - (movxi): Add TARGET_EVEX512. - (*movxi_internal_avx512f): Ditto. - (*movdi_internal): Change alternative 12 to ?Yv. Adjust mode - for alternative 13. - (*movsi_internal): Change alternative 8 to ?Yv. Adjust mode for - alternative 9. - (*movhi_internal): Change alternative 11 to *Yv. - (*movdf_internal): Change alternative 12 to Yv. - (*movsf_internal): Change alternative 5 to Yv. Adjust mode for - alternative 5 and 6. - (*mov<mode>_internal): Change alternative 4 to Yv. - (define_split for convert SF to DF): Add TARGET_EVEX512. - (extendbfsf2_1): Ditto. - * config/i386/predicates.md (bcst_mem_operand): Disable predicate - for 512 bit when !TARGET_EVEX512. - * config/i386/sse.md (VMOVE): Add TARGET_EVEX512. - (V48_AVX512VL): Ditto. - (V48_256_512_AVX512VL): Ditto. - (V48H_AVX512VL): Ditto. - (VI12_AVX512VL): Ditto. - (V): Ditto. - (V_512): Ditto. - (V_256_512): Ditto. - (VF): Ditto. - (VF1_VF2_AVX512DQ): Ditto. - (VFH): Ditto. - (VFB): Ditto. - (VF1): Ditto. - (VF1_AVX2): Ditto. - (VF2): Ditto. - (VF2H): Ditto. - (VF2_512_256): Ditto. - (VF2_512_256VL): Ditto. - (VF_512): Ditto. - (VFB_512): Ditto. - (VI48_AVX512VL): Ditto. - (VI1248_AVX512VLBW): Ditto. - (VF_AVX512VL): Ditto. - (VFH_AVX512VL): Ditto. - (VF1_AVX512VL): Ditto. - (VI): Ditto. - (VIHFBF): Ditto. - (VI_AVX2): Ditto. - (VI8): Ditto. - (VI8_AVX512VL): Ditto. - (VI2_AVX512F): Ditto. - (VI4_AVX512F): Ditto. - (VI4_AVX512VL): Ditto. - (VI48_AVX512F_AVX512VL): Ditto. - (VI8_AVX2_AVX512F): Ditto. - (VI8_AVX_AVX512F): Ditto. - (V8FI): Ditto. - (V16FI): Ditto. - (VI124_AVX2_24_AVX512F_1_AVX512BW): Ditto. - (VI248_AVX512VLBW): Ditto. - (VI248_AVX2_8_AVX512F_24_AVX512BW): Ditto. - (VI248_AVX512BW): Ditto. - (VI248_AVX512BW_AVX512VL): Ditto. - (VI48_AVX512F): Ditto. - (VI48_AVX_AVX512F): Ditto. - (VI12_AVX_AVX512F): Ditto. - (VI148_512): Ditto. - (VI124_256_AVX512F_AVX512BW): Ditto. - (VI48_512): Ditto. - (VI_AVX512BW): Ditto. - (VIHFBF_AVX512BW): Ditto. - (VI4F_256_512): Ditto. - (VI48F_256_512): Ditto. - (VI48F): Ditto. - (VI12_VI48F_AVX512VL): Ditto. - (V32_512): Ditto. - (AVX512MODE2P): Ditto. - (STORENT_MODE): Ditto. - (REDUC_PLUS_MODE): Ditto. - (REDUC_SMINMAX_MODE): Ditto. - (*andnot<mode>3): Change isa attribute to avx512f_512. - (*andnot<mode>3): Ditto. - (<code><mode>3): Ditto. - (<code>tf3): Ditto. - (FMAMODEM): Add TARGET_EVEX512. - (FMAMODE_AVX512): Ditto. - (VFH_SF_AVX512VL): Ditto. - (avx512f_fix_notruncv16sfv16si<mask_name><round_name>): Ditto. - (fix<fixunssuffix>_truncv16sfv16si2<mask_name><round_saeonly_name>): - Ditto. - (avx512f_cvtdq2pd512_2): Ditto. - (avx512f_cvtpd2dq512<mask_name><round_name>): Ditto. - (fix<fixunssuffix>_truncv8dfv8si2<mask_name><round_saeonly_name>): - Ditto. - (<mask_codefor>avx512f_cvtpd2ps512<mask_name><round_name>): Ditto. - (vec_unpacks_lo_v16sf): Ditto. - (vec_unpacks_hi_v16sf): Ditto. - (vec_unpacks_float_hi_v16si): Ditto. - (vec_unpacks_float_lo_v16si): Ditto. - (vec_unpacku_float_hi_v16si): Ditto. - (vec_unpacku_float_lo_v16si): Ditto. - (vec_pack_sfix_trunc_v8df): Ditto. - (avx512f_vec_pack_sfix_v8df): Ditto. - (<mask_codefor>avx512f_unpckhps512<mask_name>): Ditto. - (<mask_codefor>avx512f_unpcklps512<mask_name>): Ditto. - (<mask_codefor>avx512f_movshdup512<mask_name>): Ditto. - (<mask_codefor>avx512f_movsldup512<mask_name>): Ditto. - (AVX512_VEC): Ditto. - (AVX512_VEC_2): Ditto. - (vec_extract_lo_v64qi): Ditto. - (vec_extract_hi_v64qi): Ditto. - (VEC_EXTRACT_MODE): Ditto. - (<mask_codefor>avx512f_unpckhpd512<mask_name>): Ditto. - (avx512f_movddup512<mask_name>): Ditto. - (avx512f_unpcklpd512<mask_name>): Ditto. - (*<avx512>_vternlog<mode>_all): Ditto. - (*<avx512>_vpternlog<mode>_1): Ditto. - (*<avx512>_vpternlog<mode>_2): Ditto. - (*<avx512>_vpternlog<mode>_3): Ditto. - (avx512f_shufps512_mask): Ditto. - (avx512f_shufps512_1<mask_name>): Ditto. - (avx512f_shufpd512_mask): Ditto. - (avx512f_shufpd512_1<mask_name>): Ditto. - (<mask_codefor>avx512f_interleave_highv8di<mask_name>): Ditto. - (<mask_codefor>avx512f_interleave_lowv8di<mask_name>): Ditto. - (vec_dupv2df<mask_name>): Ditto. - (trunc<pmov_src_lower><mode>2): Ditto. - (*avx512f_<code><pmov_src_lower><mode>2): Ditto. - (*avx512f_vpermvar_truncv8div8si_1): Ditto. - (avx512f_<code><pmov_src_lower><mode>2_mask): Ditto. - (avx512f_<code><pmov_src_lower><mode>2_mask_store): Ditto. - (truncv8div8qi2): Ditto. - (avx512f_<code>v8div16qi2): Ditto. - (*avx512f_<code>v8div16qi2_store_1): Ditto. - (*avx512f_<code>v8div16qi2_store_2): Ditto. - (avx512f_<code>v8div16qi2_mask): Ditto. - (*avx512f_<code>v8div16qi2_mask_1): Ditto. - (*avx512f_<code>v8div16qi2_mask_store_1): Ditto. - (avx512f_<code>v8div16qi2_mask_store_2): Ditto. - (vec_widen_umult_even_v16si<mask_name>): Ditto. - (*vec_widen_umult_even_v16si<mask_name>): Ditto. - (vec_widen_smult_even_v16si<mask_name>): Ditto. - (*vec_widen_smult_even_v16si<mask_name>): Ditto. - (VEC_PERM_AVX2): Ditto. - (one_cmpl<mode>2): Ditto. - (<mask_codefor>one_cmpl<mode>2<mask_name>): Ditto. - (*one_cmpl<mode>2_pternlog_false_dep): Ditto. - (define_split to xor): Ditto. - (*andnot<mode>3): Ditto. - (define_split for ior): Ditto. - (*iornot<mode>3): Ditto. - (*xnor<mode>3): Ditto. - (*<nlogic><mode>3): Ditto. - (<mask_codefor>avx512f_interleave_highv16si<mask_name>): Ditto. - (<mask_codefor>avx512f_interleave_lowv16si<mask_name>): Ditto. - (avx512f_pshufdv3_mask): Ditto. - (avx512f_pshufd_1<mask_name>): Ditto. - (*vec_extractv4ti): Ditto. - (VEXTRACTI128_MODE): Ditto. - (define_split to vec_extract): Ditto. - (VI1248_AVX512VL_AVX512BW): Ditto. - (<mask_codefor>avx512f_<code>v16qiv16si2<mask_name>): Ditto. - (<insn>v16qiv16si2): Ditto. - (avx512f_<code>v16hiv16si2<mask_name>): Ditto. - (<insn>v16hiv16si2): Ditto. - (avx512f_zero_extendv16hiv16si2_1): Ditto. - (avx512f_<code>v8qiv8di2<mask_name>): Ditto. - (*avx512f_<code>v8qiv8di2<mask_name>_1): Ditto. - (*avx512f_<code>v8qiv8di2<mask_name>_2): Ditto. - (<insn>v8qiv8di2): Ditto. - (avx512f_<code>v8hiv8di2<mask_name>): Ditto. - (<insn>v8hiv8di2): Ditto. - (avx512f_<code>v8siv8di2<mask_name>): Ditto. - (*avx512f_zero_extendv8siv8di2_1): Ditto. - (*avx512f_zero_extendv8siv8di2_2): Ditto. - (<insn>v8siv8di2): Ditto. - (avx512f_roundps512_sfix): Ditto. - (vashrv8di3): Ditto. - (vashrv16si3): Ditto. - (pbroadcast_evex_isa): Change isa attribute to avx512f_512. - (vec_dupv4sf): Add TARGET_EVEX512. - (*vec_dupv4si): Ditto. - (*vec_dupv2di): Ditto. - (vec_dup<mode>): Change isa attribute to avx512f_512. - (VPERMI2): Add TARGET_EVEX512. - (VPERMI2I): Ditto. - (VEC_INIT_MODE): Ditto. - (VEC_INIT_HALF_MODE): Ditto. - (<mask_codefor>avx512f_vcvtph2ps512<mask_name><round_saeonly_name>): - Ditto. - (avx512f_vcvtps2ph512_mask_sae): Ditto. - (<mask_codefor>avx512f_vcvtps2ph512<mask_name><round_saeonly_name>): - Ditto. - (*avx512f_vcvtps2ph512<merge_mask_name>): Ditto. - (INT_BROADCAST_MODE): Ditto. - -2023-10-09 Haochen Jiang <haochen.jiang@intel.com> - - * config/i386/i386-expand.cc (ix86_broadcast_from_constant): - Disable zmm broadcast for !TARGET_EVEX512. - * config/i386/i386-options.cc (ix86_option_override_internal): - Do not use PVW_512 when no-evex512. - (ix86_simd_clone_adjust): Add evex512 target into string. - * config/i386/i386.cc (type_natural_mode): Report ABI warning - when using zmm register w/o evex512. - (ix86_return_in_memory): Do not allow zmm when !TARGET_EVEX512. - (ix86_hard_regno_mode_ok): Ditto. - (ix86_set_reg_reg_cost): Ditto. - (ix86_rtx_costs): Ditto. - (ix86_vector_mode_supported_p): Ditto. - (ix86_preferred_simd_mode): Ditto. - (ix86_get_mask_mode): Ditto. - (ix86_simd_clone_compute_vecsize_and_simdlen): Disable 512 bit - libmvec call when !TARGET_EVEX512. - (ix86_simd_clone_usable): Ditto. - * config/i386/i386.h (BIGGEST_ALIGNMENT): Disable 512 alignment - when !TARGET_EVEX512 - (MOVE_MAX): Do not use PVW_512 when !TARGET_EVEX512. - (STORE_MAX_PIECES): Ditto. - -2023-10-09 Haochen Jiang <haochen.jiang@intel.com> - - * config/i386/i386-builtin.def (BDESC): Add - OPTION_MASK_ISA2_EVEX512. - -2023-10-09 Haochen Jiang <haochen.jiang@intel.com> - - * config/i386/i386-builtin.def (BDESC): Add - OPTION_MASK_ISA2_EVEX512. - -2023-10-09 Haochen Jiang <haochen.jiang@intel.com> - - * config/i386/i386-builtin.def (BDESC): Add - OPTION_MASK_ISA2_EVEX512. - -2023-10-09 Haochen Jiang <haochen.jiang@intel.com> - - * config/i386/i386-builtin.def (BDESC): Add - OPTION_MASK_ISA2_EVEX512. - -2023-10-09 Haochen Jiang <haochen.jiang@intel.com> - - * config/i386/i386-builtin.def (BDESC): Add - OPTION_MASK_ISA2_EVEX512. - * config/i386/i386-builtins.cc - (ix86_init_mmx_sse_builtins): Ditto. - -2023-10-09 Haochen Jiang <haochen.jiang@intel.com> - Hu, Lin1 <lin1.hu@intel.com> - - * config/i386/avx512fp16intrin.h: Add evex512 target for 512 bit - intrins. - -2023-10-09 Haochen Jiang <haochen.jiang@intel.com> - - * config.gcc: Add avx512bitalgvlintrin.h. - * config/i386/avx5124fmapsintrin.h: Add evex512 target for 512 bit - intrins. - * config/i386/avx5124vnniwintrin.h: Ditto. - * config/i386/avx512bf16intrin.h: Ditto. - * config/i386/avx512bitalgintrin.h: Add evex512 target for 512 bit - intrins. Split 128/256 bit intrins to avx512bitalgvlintrin.h. - * config/i386/avx512erintrin.h: Add evex512 target for 512 bit - intrins - * config/i386/avx512ifmaintrin.h: Ditto - * config/i386/avx512pfintrin.h: Ditto - * config/i386/avx512vbmi2intrin.h: Ditto. - * config/i386/avx512vbmiintrin.h: Ditto. - * config/i386/avx512vnniintrin.h: Ditto. - * config/i386/avx512vp2intersectintrin.h: Ditto. - * config/i386/avx512vpopcntdqintrin.h: Ditto. - * config/i386/gfniintrin.h: Ditto. - * config/i386/immintrin.h: Add avx512bitalgvlintrin.h. - * config/i386/vaesintrin.h: Add evex512 target for 512 bit intrins. - * config/i386/vpclmulqdqintrin.h: Ditto. - * config/i386/avx512bitalgvlintrin.h: New. - -2023-10-09 Haochen Jiang <haochen.jiang@intel.com> - - * config/i386/avx512bwintrin.h: Add evex512 target for 512 bit - intrins. - -2023-10-09 Haochen Jiang <haochen.jiang@intel.com> - - * config/i386/avx512dqintrin.h: Add evex512 target for 512 bit - intrins. - -2023-10-09 Haochen Jiang <haochen.jiang@intel.com> - - * config/i386/avx512fintrin.h: Add evex512 target for 512 bit intrins. - -2023-10-09 Haochen Jiang <haochen.jiang@intel.com> - - * common/config/i386/i386-common.cc - (OPTION_MASK_ISA2_EVEX512_SET): New. - (OPTION_MASK_ISA2_EVEX512_UNSET): Ditto. - (ix86_handle_option): Handle EVEX512. - * config/i386/i386-c.cc - (ix86_target_macros_internal): Handle EVEX512. Add __EVEX256__ - when AVX512VL is set. - * config/i386/i386-options.cc: (isa2_opts): Handle EVEX512. - (ix86_valid_target_attribute_inner_p): Ditto. - (ix86_option_override_internal): Set EVEX512 target if it is not - explicitly set when AVX512 is enabled. Disable - AVX512{PF,ER,4VNNIW,4FAMPS} for -mno-evex512. - * config/i386/i386.opt: Add mevex512. Temporaily RejectNegative. - -2023-10-09 Haochen Gui <guihaoc@gcc.gnu.org> - - PR target/88558 - * config/rs6000/rs6000.md (lrint<mode>di2): Remove TARGET_FPRND - from insn condition. - (lrint<mode>si2): New insn pattern for 32bit lrint. - -2023-10-09 Haochen Gui <guihaoc@gcc.gnu.org> - - PR target/88558 - * config/rs6000/rs6000.cc (rs6000_hard_regno_mode_ok_uncached): - Enable SImode on FP registers for P7. - * config/rs6000/rs6000.md (*movsi_internal1): Add fmr for SImode - move between FP registers. Set attribute isa of stfiwx to "*" - and attribute of stxsiwx to "p7". - -2023-10-09 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com> - - * config/s390/s390.md: Make use of new copysign RTL. - -2023-10-09 Hongyu Wang <hongyu.wang@intel.com> - - * config/i386/sse.md (vec_concatv2di): Replace constraint "m" - with "jm" for alternative 0 and 1 of operand 2. - (sse4_1_<code><mode>3<mask_name>): Replace constraint "Bm" with - "ja" for alternative 0 and 1 of operand2. - -2023-10-08 David Malcolm <dmalcolm@redhat.com> - - PR analyzer/111155 - * text-art/table.cc (table::maybe_set_cell_span): New. - (table::add_other_table): New. - * text-art/table.h (class table::cell_placement): Add class table - as a friend. - (table::add_rows): New. - (table::add_row): Reimplement in terms of add_rows. - (table::maybe_set_cell_span): New decl. - (table::add_other_table): New decl. - * text-art/types.h (operator+): New operator for rect + coord. - -2023-10-08 David Malcolm <dmalcolm@redhat.com> - - * genmatch.cc (main): Update for "m_" prefix of some fields of - line_maps. - * input.cc (make_location): Update for removal of - COMBINE_LOCATION_DATA. - (dump_line_table_statistics): Update for "m_" prefix of some - fields of line_maps. - (location_with_discriminator): Update for removal of - COMBINE_LOCATION_DATA. - (line_table_test::line_table_test): Update for "m_" prefix of some - fields of line_maps. - * toplev.cc (general_init): Likewise. - * tree.cc (set_block): Update for removal of - COMBINE_LOCATION_DATA. - (set_source_range): Likewise. - -2023-10-08 David Malcolm <dmalcolm@redhat.com> - - * input.cc (make_location): Move implementation to - line_maps::make_location. - -2023-10-08 David Malcolm <dmalcolm@redhat.com> - - PR driver/111700 - * input.cc (file_cache::add_file): Update leading comment to - clarify that it can fail. - (file_cache::lookup_or_add_file): Likewise. - (file_cache::get_source_file_content): Gracefully handle - lookup_or_add_file failing. - -2023-10-08 liuhongt <hongtao.liu@intel.com> - - * config/i386/i386.cc (ix86_build_const_vector): Handle V2HF - and V4HFmode. - (ix86_build_signbit_mask): Ditto. - * config/i386/mmx.md (mmxintvecmode): Ditto. - (<code><mode>2): New define_expand. - (*mmx_<code><mode>): New define_insn_and_split. - (*mmx_nabs<mode>2): Ditto. - (*mmx_andnot<mode>3): New define_insn. - (<code><mode>3): Ditto. - (copysign<mode>3): New define_expand. - (xorsign<mode>3): Ditto. - (signbit<mode>2): Ditto. - -2023-10-08 liuhongt <hongtao.liu@intel.com> - - * config/i386/mmx.md (VHF_32_64): New mode iterator. - (<insn><mode>3): New define_expand, merged from .. - (<insn>v4hf3): .. this and - (<insn>v2hf3): .. this. - (movd_v2hf_to_sse_reg): New define_expand, splitted from .. - (movd_v2hf_to_sse): .. this. - (<code><mode>3): New define_expand. - -2023-10-08 Jiufu Guo <guojiufu@linux.ibm.com> - - * config/rs6000/rs6000.cc (can_be_built_by_li_and_rldic): New function. - (rs6000_emit_set_long_const): Call can_be_built_by_li_and_rldic. - -2023-10-08 Jiufu Guo <guojiufu@linux.ibm.com> - - * config/rs6000/rs6000.cc (can_be_built_by_li_lis_and_rldicl): New - function. - (can_be_built_by_li_lis_and_rldicr): New function. - (rs6000_emit_set_long_const): Call can_be_built_by_li_lis_and_rldicr and - can_be_built_by_li_lis_and_rldicl. - -2023-10-08 Jiufu Guo <guojiufu@linux.ibm.com> - - * config/rs6000/rs6000.cc (can_be_rotated_to_negative_lis): New - function. - (can_be_built_by_li_and_rotldi): Rename to ... - (can_be_built_by_li_lis_and_rotldi): ... this function. - (rs6000_emit_set_long_const): Call can_be_built_by_li_lis_and_rotldi. - -2023-10-08 Jiufu Guo <guojiufu@linux.ibm.com> - - * config/rs6000/rs6000.cc (can_be_built_by_li_and_rotldi): New function. - (rs6000_emit_set_long_const): Call can_be_built_by_li_and_rotldi. - -2023-10-08 Yanzhang Wang <yanzhang.wang@intel.com> - - * config/riscv/linux.h: Pass the static-pie specific options to - the linker. - -2023-10-07 Saurabh Jha <saurabh.jha@arm.com> - - * config/aarch64/aarch64-cores.def (AARCH64_CORE): Add support for - cortex-x4 core. - * config/aarch64/aarch64-tune.md: Regenerated. - * doc/invoke.texi: Add command-line option for cortex-x4 core. - -2023-10-07 Kong Lingling <lingling.kong@intel.com> - Hongyu Wang <hongyu.wang@intel.com> - Hongtao Liu <hongtao.liu@intel.com> - - * config/i386/constraints.md (jb): New constraint for vsib memory - that does not allow gpr32. - * config/i386/i386.md: (setcc_<mode>_sse): Replace m to jm for avx - alternative and set attr_gpr32 to 0. - (movmsk_df): Split avx/noavx alternatives and replace "r" to "jr" for - avx alternative. - (<sse>_rcp<mode>2): Split avx/noavx alternatives and replace - "m/Bm" to "jm/ja" for avx alternative, set its gpr32 attr to 0. - (*rsqrtsf2_sse): Likewise. - * config/i386/mmx.md (mmx_pmovmskb): Split alternative 1 to - avx/noavx and assign jr/r constraint to dest. - * config/i386/sse.md (<sse>_movmsk<ssemodesuffix><avxsizesuffix>): - Split avx/noavx alternatives and replace "r" to "jr" for avx alternative. - (*<sse>_movmsk<ssemodesuffix><avxsizesuffix>_<u>ext): Likewise. - (*<sse>_movmsk<ssemodesuffix><avxsizesuffix>_lt): Likewise. - (*<sse>_movmsk<ssemodesuffix><avxsizesuffix>_<u>ext_lt): Likewise. - (*<sse>_movmsk<ssemodesuffix><avxsizesuffix>_shift): Likewise. - (*<sse>_movmsk<ssemodesuffix><avxsizesuffix>_<u>ext_shift): Likewise. - (<sse2_avx2>_pmovmskb): Likewise. - (*<sse2_avx2>_pmovmskb_zext): Likewise. - (*sse2_pmovmskb_ext): Likewise. - (*<sse2_avx2>_pmovmskb_lt): Likewise. - (*<sse2_avx2>_pmovmskb_zext_lt): Likewise. - (*sse2_pmovmskb_ext_lt): Likewise. - (<sse>_rcp<mode>2): Split avx/noavx alternatives and replace - "m/Bm" to "jm/ja" for avx alternative, set its attr_gpr32 to 0. - (sse_vmrcpv4sf2): Likewise. - (*sse_vmrcpv4sf2): Likewise. - (rsqrt<mode>2): Likewise. - (sse_vmrsqrtv4sf2): Likewise. - (*sse_vmrsqrtv4sf2): Likewise. - (avx_h<insn>v4df3): Likewise. - (sse3_hsubv2df3): Likewise. - (avx_h<insn>v8sf3): Likewise. - (sse3_h<insn>v4sf3): Likewise. - (<sse3>_lddqu<avxsizesuffix>): Likewise. - (avx_cmp<mode>3): Likewise. - (avx_vmcmp<mode>3): Likewise. - (*sse2_gt<mode>3): Likewise. - (sse_ldmxcsr): Likewise. - (sse_stmxcsr): Likewise. - (avx_vtest<ssemodesuffix><avxsizesuffix>): Replace m to jm for - avx alternative and set attr_gpr32 to 0. - (avx2_permv2ti): Likewise. - (*avx_vperm2f128<mode>_full): Likewise. - (*avx_vperm2f128<mode>_nozero): Likewise. - (vec_set_lo_v32qi): Likewise. - (<avx_avx2>_maskload<ssemodesuffix><avxsizesuffix>): Likewise. - (<avx_avx2>_maskstore<ssemodesuffix><avxsi)zesuffix>: Likewise. - (avx_cmp<mode>3): Likewise. - (avx_vmcmp<mode>3): Likewise. - (*<sse>_maskcmp<mode>3_comm): Likewise. - (*avx2_gathersi<VEC_GATHER_MODE:mode>): Replace Tv to jb and set - attr_gpr32 to 0. - (*avx2_gathersi<VEC_GATHER_MODE:mode>_2): Likewise. - (*avx2_gatherdi<VEC_GATHER_MODE:mode>): Likewise. - (*avx2_gatherdi<VEC_GATHER_MODE:mode>_2): Likewise. - (*avx2_gatherdi<VI4F_256:mode>_3): Likewise. - (*avx2_gatherdi<VI4F_256:mode>_4): Likewise. - (avx_vbroadcastf128_<mode>): Restrict non-egpr alternative to - noavx512vl, set its constraint to jm and set attr_gpr32 to 0. - (vec_set_lo_<mode><mask_name>): Likewise. - (vec_set_lo_<mode><mask_name>): Likewise for SF/SI modes. - (vec_set_hi_<mode><mask_name>): Likewise. - (vec_set_hi_<mode><mask_name>): Likewise for SF/SI modes. - (vec_set_hi_<mode>): Likewise. - (vec_set_lo_<mode>): Likewise. - (avx2_set_hi_v32qi): Likewise. - -2023-10-07 Kong Lingling <lingling.kong@intel.com> - Hongyu Wang <hongyu.wang@intel.com> - Hongtao Liu <hongtao.liu@intel.com> - - * config/i386/i386.md (*movhi_internal): Split out non-gpr - supported pextrw with mem constraint to avx/noavx alternatives, - set jm and attr gpr32 0 to the noavx alternative. - (*mov<mode>_internal): Likewise. - * config/i386/mmx.md (mmx_pshufbv8qi3): Change "r/m/Bm" to - "jr/jm/ja" and set_attr gpr32 0 for noavx alternative. - (mmx_pshufbv4qi3): Likewise. - (*mmx_pinsrd): Likewise. - (*mmx_pinsrb): Likewise. - (*pinsrb): Likewise. - (mmx_pshufbv8qi3): Likewise. - (mmx_pshufbv4qi3): Likewise. - (@sse4_1_insertps_<mode>): Likewise. - (*mmx_pextrw): Split altrenatives and map non-EGPR - constraints, attr_gpr32 and attr_isa to noavx mnemonics. - (*movv2qi_internal): Likewise. - (*pextrw): Likewise. - (*mmx_pextrb): Likewise. - (*mmx_pextrb_zext): Likewise. - (*pextrb): Likewise. - (*pextrb_zext): Likewise. - (vec_extractv2si_1): Likewise. - (vec_extractv2si_1_zext): Likewise. - * config/i386/sse.md: (vi128_h_r): New mode attr for - pinsr{bw}/pextr{bw} with reg operand. - (*abs<mode>2): Split altrenatives and %v in mnemonics, map - non-EGPR constraints, gpr32 and isa attrs to noavx mnemonics. - (*vec_extract<mode>): Likewise. - (*vec_extract<mode>): Likewise for HFBF pattern. - (*vec_extract<PEXTR_MODE12:mode>_zext): Likewise. - (*vec_extractv4si_1): Likewise. - (*vec_extractv4si_zext): Likewise. - (*vec_extractv2di_1): Likewise. - (*vec_concatv2si_sse4_1): Likewise. - (<sse2p4_1>_pinsr<ssemodesuffix>): Likewise. - (vec_concatv2di): Likewise. - (*sse4_1_<code>v2qiv2di2<mask_name>_1): Likewise. - (ssse3_avx2>_pshufb<mode>3<mask_name>): Change "r/m/Bm" to - "jr/jm/ja" and set_attr gpr32 0 for noavx alternative, split - %v for avx/noavx alternatives if necessary. - (*vec_concatv2sf_sse4_1): Likewise. - (*sse4_1_extractps): Likewise. - (vec_set<mode>_0): Likewise for VI4F_128. - (*vec_setv4sf_sse4_1): Likewise. - (@sse4_1_insertps<mode>): Likewise. - (ssse3_pmaddubsw128): Likewise. - (*<ssse3_avx2>_pmulhrsw<mode>3<mask_name>): Likewise. - (<sse4_1_avx2>_packusdw<mask_name>): Likewise. - (<ssse3_avx2>_palignr<mode>): Likewise. - (<vi8_sse4_1_avx2_avx512>_movntdqa): Likewise. - (<sse4_1_avx2>_mpsadbw): Likewise. - (*sse4_1_mulv2siv2di3<mask_name>): Likewise. - (*<sse4_1_avx2>_mul<mode>3<mask_name>): Likewise. - (*sse4_1_<code><mode>3<mask_name>): Likewise. - (*<code>v8hi3): Likewise. - (*<code>v16qi3): Likewise. - (*sse4_1_<code>v8qiv8hi2<mask_name>_1): Likewise. - (*sse4_1_zero_extendv8qiv8hi2_3): Likewise. - (*sse4_1_zero_extendv8qiv8hi2_4): Likewise. - (*sse4_1_<code>v4qiv4si2<mask_name>_1): Likewise. - (*sse4_1_<code>v4hiv4si2<mask_name>_1): Likewise. - (*sse4_1_zero_extendv4hiv4si2_3): Likewise. - (*sse4_1_zero_extendv4hiv4si2_4): Likewise. - (*sse4_1_<code>v2hiv2di2<mask_name>_1): Likewise. - (*sse4_1_<code>v2siv2di2<mask_name>_1): Likewise. - (*sse4_1_zero_extendv2siv2di2_3): Likewise. - (*sse4_1_zero_extendv2siv2di2_4): Likewise. - (aesdec): Likewise. - (aesdeclast): Likewise. - (aesenc): Likewise. - (aesenclast): Likewise. - (pclmulqdq): Likewise. - (vgf2p8affineinvqb_<mode><mask_name>): Likewise. - (vgf2p8affineqb_<mode><mask_name>): Likewise. - (vgf2p8mulb_<mode><mask_name>): Likewise. - -2023-10-07 Kong Lingling <lingling.kong@intel.com> - Hongyu Wang <hongyu.wang@intel.com> - Hongtao Liu <hongtao.liu@intel.com> - - * config/i386/i386-protos.h (x86_evex_reg_mentioned_p): New - prototype. - * config/i386/i386.cc (x86_evex_reg_mentioned_p): New - function. - * config/i386/i386.md (sse4_1_round<mode>2): Set attr gpr32 0 - and constraint jm to all non-evex alternatives, adjust - alternative outputs if evex reg is mentioned. - * config/i386/sse.md (<sse4_1>_ptest<mode>): Set attr gpr32 0 - and constraint jm/ja to all non-evex alternatives. - (ptesttf2): Likewise. - (<sse4_1>_round<ssemodesuffix><avxsizesuffix): Likewise. - (sse4_1_round<ssescalarmodesuffix>): Likewise. - (sse4_2_pcmpestri): Likewise. - (sse4_2_pcmpestrm): Likewise. - (sse4_2_pcmpestr_cconly): Likewise. - (sse4_2_pcmpistr): Likewise. - (sse4_2_pcmpistri): Likewise. - (sse4_2_pcmpistrm): Likewise. - (sse4_2_pcmpistr_cconly): Likewise. - (aesimc): Likewise. - (aeskeygenassist): Likewise. - -2023-10-07 Kong Lingling <lingling.kong@intel.com> - Hongyu Wang <hongyu.wang@intel.com> - Hongtao Liu <hongtao.liu@intel.com> - - * config/i386/sse.md (avx2_ph<plusminus_mnemonic>wv16hi3): Set - attr gpr32 0 and constraint jm/ja to all mem alternatives. - (ssse3_ph<plusminus_mnemonic>wv8hi3): Likewise. - (ssse3_ph<plusminus_mnemonic>wv4hi3): Likewise. - (avx2_ph<plusminus_mnemonic>dv8si3): Likewise. - (ssse3_ph<plusminus_mnemonic>dv4si3): Likewise. - (ssse3_ph<plusminus_mnemonic>dv2si3): Likewise. - (<ssse3_avx2>_psign<mode>3): Likewise. - (ssse3_psign<mode>3): Likewise. - (<sse4_1>_blend<ssemodesuffix><avxsizesuffix): Likewise. - (<sse4_1>_blendv<ssemodesuffix><avxsizesuffix): Likewise. - (*<sse4_1>_blendv<ssemodesuffix><avxsizesuffix>_lt): Likewise. - (*<sse4_1>_blendv<ssefltmodesuff)ix><avxsizesuffix>_not_ltint: Likewise. - (<sse4_1>_dp<ssemodesuffix><avxsizesuffix>): Likewise. - (<sse4_1_avx2>_mpsadbw): Likewise. - (<sse4_1_avx2>_pblendvb): Likewise. - (*<sse4_1_avx2>_pblendvb_lt): Likewise. - (sse4_1_pblend<ssemodesuffix>): Likewise. - (*avx2_pblend<ssemodesuffix>): Likewise. - (avx2_permv2ti): Likewise. - (*avx_vperm2f128<mode>_nozero): Likewise. - (*avx2_eq<mode>3): Likewise. - (*sse4_1_eqv2di3): Likewise. - (sse4_2_gtv2di3): Likewise. - (avx2_gt<mode>3): Likewise. - -2023-10-07 Kong Lingling <lingling.kong@intel.com> - Hongyu Wang <hongyu.wang@intel.com> - Hongtao Liu <hongtao.liu@intel.com> - - * config/i386/i386.md (<xsave>): Set attr gpr32 0 and constraint - jm. - (<xsave>_rex64): Likewise. - (<xrstor>_rex64): Likewise. - (<xrstor>64): Likewise. - (fxsave64): Likewise. - (fxstore64): Likewise. - -2023-10-07 Hongyu Wang <hongyu.wang@intel.com> - Kong Lingling <lingling.kong@intel.com> - Hongtao Liu <hongtao.liu@intel.com> - - * config/i386/i386.cc (ix86_get_ssemov): Check if egpr is used, - adjust mnemonic for vmovduq/vmovdqa. - * config/i386/sse.md (*<extract_type>_vinsert<shuffletype><extract_suf>_0): - Check if egpr is used, adjust mnemonic for vmovdqu/vmovdqa. - (avx_vec_concat<mode>): Likewise, and separate alternative 0 to - avx_noavx512f. - -2023-10-07 Kong Lingling <lingling.kong@intel.com> - Hongyu Wang <hongyu.wang@intel.com> - Hongtao Liu <hongtao.liu@intel.com> - - * config/i386/i386.cc (map_egpr_constraints): New funciton to - map common constraints to EGPR prohibited constraints. - (ix86_md_asm_adjust): Calls map_egpr_constraints. - * config/i386/i386.opt: Add option mapx-inline-asm-use-gpr32. - -2023-10-07 Kong Lingling <lingling.kong@intel.com> - Hongyu Wang <hongyu.wang@intel.com> - Hongtao Liu <hongtao.liu@intel.com> - - * config/i386/i386-protos.h (ix86_insn_base_reg_class): New - prototype. - (ix86_regno_ok_for_insn_base_p): Likewise. - (ix86_insn_index_reg_class): Likewise. - * config/i386/i386.cc (ix86_memory_address_use_extended_reg_class_p): - New helper function to scan the insn. - (ix86_insn_base_reg_class): New function to choose BASE_REG_CLASS. - (ix86_regno_ok_for_insn_base_p): Likewise for base regno. - (ix86_insn_index_reg_class): Likewise for INDEX_REG_CLASS. - * config/i386/i386.h (INSN_BASE_REG_CLASS): Define. - (REGNO_OK_FOR_INSN_BASE_P): Likewise. - (INSN_INDEX_REG_CLASS): Likewise. - (enum reg_class): Add INDEX_GPR16. - (GENERAL_GPR16_REGNO_P): Define. - * config/i386/i386.md (gpr32): New attribute. - -2023-10-07 Kong Lingling <lingling.kong@intel.com> - Hongyu Wang <hongyu.wang@intel.com> - Hongtao Liu <hongtao.liu@intel.com> - - * config/i386/constraints.md (jr): New register constraint - that prohibits EGPR. - (jR): Constraint that force usage of EGPR. - (jm): New memory constraint that prohibits EGPR. - (ja): Likewise for Bm constraint. - (jb): Likewise for Tv constraint. - (j<): New auto-dec memory constraint that prohibits EGPR. - (j>): Likewise for ">" constraint. - (jo): Likewise for "o" constraint. - (jv): Likewise for "V" constraint. - (jp): Likewise for "p" constraint. - * config/i386/i386.h (enum reg_class): Add new reg class - GENERAL_GPR16. - -2023-10-07 Kong Lingling <lingling.kong@intel.com> - Hongyu Wang <hongyu.wang@intel.com> - Hongtao Liu <hongtao.liu@intel.com> - - * config/i386/i386-protos.h (x86_extended_rex2reg_mentioned_p): - New function prototype. - * config/i386/i386.cc (regclass_map): Add mapping for 16 new - general registers. - (debugger64_register_map): Likewise. - (ix86_conditional_register_usage): Clear REX2 register when APX - disabled. - (ix86_code_end): Add handling for REX2 reg. - (print_reg): Likewise. - (ix86_output_jmp_thunk_or_indirect): Likewise. - (ix86_output_indirect_branch_via_reg): Likewise. - (ix86_attr_length_vex_default): Likewise. - (ix86_emit_save_regs): Adjust to allow saving r31. - (ix86_register_priority): Set REX2 reg priority same as REX. - (x86_extended_reg_mentioned_p): Add check for REX2 regs. - (x86_extended_rex2reg_mentioned_p): New function. - * config/i386/i386.h (CALL_USED_REGISTERS): Add new extended - registers. - (REG_ALLOC_ORDER): Likewise. - (FIRST_REX2_INT_REG): Define. - (LAST_REX2_INT_REG): Ditto. - (GENERAL_REGS): Add 16 new registers. - (INT_SSE_REGS): Likewise. - (FLOAT_INT_REGS): Likewise. - (FLOAT_INT_SSE_REGS): Likewise. - (INT_MASK_REGS): Likewise. - (ALL_REGS):Likewise. - (REX2_INT_REG_P): Define. - (REX2_INT_REGNO_P): Ditto. - (GENERAL_REGNO_P): Add REX2_INT_REGNO_P. - (REGNO_OK_FOR_INDEX_P): Ditto. - (REG_OK_FOR_INDEX_NONSTRICT_P): Add new extended registers. - * config/i386/i386.md: Add 16 new integer general - registers. - -2023-10-07 Kong Lingling <lingling.kong@intel.com> - Hongyu Wang <hongyu.wang@intel.com> - Hongtao Liu <hongtao.liu@intel.com> - - * common/config/i386/cpuinfo.h (XSTATE_APX_F): New macro. - (XCR_APX_F_ENABLED_MASK): Likewise. - (get_available_features): Detect APX_F under - * common/config/i386/i386-common.cc (OPTION_MASK_ISA2_APX_F_SET): New. - (OPTION_MASK_ISA2_APX_F_UNSET): Likewise. - (ix86_handle_option): Handle -mapxf. - * common/config/i386/i386-cpuinfo.h (FEATURE_APX_F): New. - * common/config/i386/i386-isas.h: Add entry for APX_F. - * config/i386/cpuid.h (bit_APX_F): New. - * config/i386/i386.h (bit_APX_F): (TARGET_APX_EGPR, - TARGET_APX_PUSH2POP2, TARGET_APX_NDD): New define. - * config/i386/i386-opts.h (enum apx_features): New enum. - * config/i386/i386-isa.def (APX_F): New DEF_PTA. - * config/i386/i386-options.cc (ix86_function_specific_save): - Save ix86_apx_features. - (ix86_function_specific_restore): Restore it. - (ix86_valid_target_attribute_inner_p): Add mapxf. - (ix86_option_override_internal): Set ix86_apx_features for PTA - and TARGET_APX_F. Also reports error when APX_F is set but not - having TARGET_64BIT. - * config/i386/i386.opt: (-mapxf): New ISA flag option. - (-mapx=): New enumeration option. - (apx_features): New enum type. - (apx_none): New enum value. - (apx_egpr): Likewise. - (apx_push2pop2): Likewise. - (apx_ndd): Likewise. - (apx_all): Likewise. - * doc/invoke.texi: Document mapxf. - -2023-10-07 Hongyu Wang <hongyu.wang@intel.com> - Kong Lingling <lingling.kong@intel.com> - Hongtao Liu <hongtao.liu@intel.com> - - * addresses.h (index_reg_class): New wrapper function like - base_reg_class. - * doc/tm.texi: Document INSN_INDEX_REG_CLASS. - * doc/tm.texi.in: Ditto. - * lra-constraints.cc (index_part_to_reg): Pass index_class. - (process_address_1): Calls index_reg_class with curr_insn and - replace INDEX_REG_CLASS with its return value index_cl. - * reload.cc (find_reloads_address): Likewise. - (find_reloads_address_1): Likewise. - -2023-10-07 Kong Lingling <lingling.kong@intel.com> - Hongyu Wang <hongyu.wang@intel.com> - Hongtao Liu <hongtao.liu@intel.com> - - * addresses.h (base_reg_class): Add insn argument and new macro - INSN_BASE_REG_CLASS. - (regno_ok_for_base_p_1): Add insn argument and new macro - REGNO_OK_FOR_INSN_BASE_P. - (regno_ok_for_base_p): Add insn argument and parse to ok_for_base_p_1. - * doc/tm.texi: Document INSN_BASE_REG_CLASS and - REGNO_OK_FOR_INSN_BASE_P. - * doc/tm.texi.in: Ditto. - * lra-constraints.cc (process_address_1): Pass insn to - base_reg_class. - (curr_insn_transform): Ditto. - * reload.cc (find_reloads): Ditto. - (find_reloads_address): Ditto. - (find_reloads_address_1): Ditto. - (find_reloads_subreg_address): Ditto. - * reload1.cc (maybe_fix_stack_asms): Ditto. - -2023-10-07 Jiufu Guo <guojiufu@linux.ibm.com> - - PR target/108338 - * config/rs6000/rs6000.md (movsf_from_si): Update to generate mtvsrws - for P9. - -2023-10-07 Jiufu Guo <guojiufu@linux.ibm.com> - - PR target/108338 - * config/rs6000/predicates.md (lowpart_subreg_operator): New - define_predicate. - * config/rs6000/rs6000.md (any_rshift): New code_iterator. - (movsf_from_si2): Rename to ... - (movsf_from_si2_<code>): ... this. - -2023-10-07 Pan Li <pan2.li@intel.com> - - PR target/111634 - * config/riscv/riscv.cc (riscv_legitimize_address): Ensure - object is a REG before extracting its' REGNO. - -2023-10-06 Roger Sayle <roger@nextmovesoftware.com> - - * config/i386/i386-expand.cc (ix86_split_ashl): Split shifts by - one into add3_cc_overflow_1 followed by add3_carry. - * config/i386/i386.md (@add<mode>3_cc_overflow_1): Renamed from - "*add<mode>3_cc_overflow_1" to provide generator function. - -2023-10-06 Roger Sayle <roger@nextmovesoftware.com> - Uros Bizjak <ubizjak@gmail.com> - - * config/i386/i386.cc (ix86_avoid_lea_for_addr): Split LEAs used - to perform left shifts into shorter instructions with -Oz. - -2023-10-06 Vineet Gupta <vineetg@rivosinc.com> - - * config/riscv/riscv.md (mvconst_internal): Add !ira_in_progress. - -2023-10-06 Sandra Loosemore <sandra@codesourcery.com> - - * doc/extend.texi (Function Attributes): Mention standard attribute - syntax. - (Variable Attributes): Likewise. - (Type Attributes): Likewise. - (Attribute Syntax): Likewise. - -2023-10-06 Andrew Stubbs <ams@codesourcery.com> - - * config/gcn/gcn-valu.md (*mov<mode>): Convert to compact syntax. - (mov<mode>_exec): Likewise. - (mov<mode>_sgprbase): Likewise. - * config/gcn/gcn.md (*mov<mode>_insn): Likewise. - (*movti_insn): Likewise. - -2023-10-06 Andrew Stubbs <ams@codesourcery.com> - - * config/gcn/gcn.cc (print_operand): Adjust xcode type to fix warning. - -2023-10-06 Andrew Pinski <pinskia@gmail.com> - - PR middle-end/111699 - * match.pd ((c ? a : b) op d, (c ? a : b) op (c ? d : e), - (v ? w : 0) ? a : b, c1 ? c2 ? a : b : b): Enable only for GIMPLE. - -2023-10-06 Jakub Jelinek <jakub@redhat.com> - - * ipa-prop.h (ipa_bits): Remove. - (struct ipa_jump_func): Remove bits member. - (struct ipcp_transformation): Remove bits member, adjust - ctor and dtor. - (ipa_get_ipa_bits_for_value): Remove. - * ipa-prop.cc (struct ipa_bit_ggc_hash_traits): Remove. - (ipa_bits_hash_table): Remove. - (ipa_print_node_jump_functions_for_edge): Don't print bits. - (ipa_get_ipa_bits_for_value): Remove. - (ipa_set_jfunc_bits): Remove. - (ipa_compute_jump_functions_for_edge): For pointers query - pointer alignment before ipa_set_jfunc_vr and update_bitmask - in there. For integral types, just rely on bitmask already - being handled in value ranges. - (ipa_check_create_edge_args): Don't create ipa_bits_hash_table. - (ipcp_transformation_initialize): Neither here. - (ipcp_transformation_t::duplicate): Don't copy bits vector. - (ipa_write_jump_function): Don't stream bits here. - (ipa_read_jump_function): Neither here. - (useful_ipcp_transformation_info_p): Don't test bits vec. - (write_ipcp_transformation_info): Don't stream bits here. - (read_ipcp_transformation_info): Neither here. - (ipcp_get_parm_bits): Get mask and value from m_vr rather - than bits. - (ipcp_update_bits): Remove. - (ipcp_update_vr): For pointers, set_ptr_info_alignment from - bitmask stored in value range. - (ipcp_transform_function): Don't test bits vector, don't call - ipcp_update_bits. - * ipa-cp.cc (propagate_bits_across_jump_function): Don't use - jfunc->bits, instead get mask and value from jfunc->m_vr. - (ipcp_store_bits_results): Remove. - (ipcp_store_vr_results): Incorporate parts of - ipcp_store_bits_results here, merge the bitmasks with value - range if both are supplied. - (ipcp_driver): Don't call ipcp_store_bits_results. - * ipa-sra.cc (zap_useless_ipcp_results): Remove *ts->bits - clearing. - -2023-10-06 Pan Li <pan2.li@intel.com> - - * config/riscv/autovec.md: Update comments. - -2023-10-05 John David Anglin <danglin@gcc.gnu.org> - - * config/pa/pa32-linux.h (MALLOC_ABI_ALIGNMENT): Delete. - -2023-10-05 Andrew MacLeod <amacleod@redhat.com> - - * timevar.def (TV_TREE_FAST_VRP): New. - * tree-pass.h (make_pass_fast_vrp): New prototype. - * tree-vrp.cc (class fvrp_folder): New. - (fvrp_folder::fvrp_folder): New. - (fvrp_folder::~fvrp_folder): New. - (fvrp_folder::value_of_expr): New. - (fvrp_folder::value_on_edge): New. - (fvrp_folder::value_of_stmt): New. - (fvrp_folder::pre_fold_bb): New. - (fvrp_folder::post_fold_bb): New. - (fvrp_folder::pre_fold_stmt): New. - (fvrp_folder::fold_stmt): New. - (execute_fast_vrp): New. - (pass_data_fast_vrp): New. - (pass_vrp:execute): Check for fast VRP pass. - (make_pass_fast_vrp): New. - -2023-10-05 Andrew MacLeod <amacleod@redhat.com> - - * gimple-range.cc (dom_ranger::dom_ranger): New. - (dom_ranger::~dom_ranger): New. - (dom_ranger::range_of_expr): New. - (dom_ranger::edge_range): New. - (dom_ranger::range_on_edge): New. - (dom_ranger::range_in_bb): New. - (dom_ranger::range_of_stmt): New. - (dom_ranger::maybe_push_edge): New. - (dom_ranger::pre_bb): New. - (dom_ranger::post_bb): New. - * gimple-range.h (class dom_ranger): New. - -2023-10-05 Andrew MacLeod <amacleod@redhat.com> - - * gimple-range-gori.cc (gori_stmt_info::gori_stmt_info): New. - (gori_calc_operands): New. - (gori_on_edge): New. - (gori_name_helper): New. - (gori_name_on_edge): New. - * gimple-range-gori.h (gori_on_edge): New prototype. - (gori_name_on_edge): New prototype. - -2023-10-05 Sergei Trofimovich <siarheit@google.com> - - PR ipa/111283 - PR gcov-profile/111559 - * ipa-utils.cc (ipa_merge_profiles): Avoid producing - uninitialized probabilities when merging counters with zero - denominators. - -2023-10-05 Uros Bizjak <ubizjak@gmail.com> - - PR target/111657 - * config/i386/i386-expand.cc (alg_usable_p): Reject libcall - strategy for non-default address spaces. - (decide_alg): Use loop strategy as a fallback strategy for - non-default address spaces. - -2023-10-05 Jakub Jelinek <jakub@redhat.com> - - * sreal.cc (verify_aritmetics): Rename to ... - (verify_arithmetics): ... this. - (sreal_verify_arithmetics): Adjust caller. - -2023-10-05 Martin Jambor <mjambor@suse.cz> - - Revert: - 2023-10-03 Martin Jambor <mjambor@suse.cz> - - PR ipa/108007 - * cgraph.h (cgraph_edge): Add a parameter to - redirect_call_stmt_to_callee. - * ipa-param-manipulation.h (ipa_param_adjustments): Add a - parameter to modify_call. - * cgraph.cc (cgraph_edge::redirect_call_stmt_to_callee): New - parameter killed_ssas, pass it to padjs->modify_call. - * ipa-param-manipulation.cc (purge_transitive_uses): New function. - (ipa_param_adjustments::modify_call): New parameter killed_ssas. - Instead of substituting uses, invoke purge_transitive_uses. If - hash of killed SSAs has not been provided, create a temporary one - and release SSAs that have been added to it. - * tree-inline.cc (redirect_all_calls): Create - id->killed_new_ssa_names earlier, pass it to edge redirection, - adjust a comment. - (copy_body): Release SSAs in id->killed_new_ssa_names. - -2023-10-05 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/autovec.md (@vec_series<mode>): Remove @. - (vec_series<mode>): Ditto. - * config/riscv/riscv-v.cc (expand_const_vector): Ditto. - (shuffle_decompress_patterns): Ditto. - -2023-10-05 Claudiu Zissulescu <claziss@gmail.com> - - * config/arc/arc-passes.def: Remove arc_ifcvt pass. - * config/arc/arc-protos.h (arc_ccfsm_branch_deleted_p): Remove. - (arc_ccfsm_record_branch_deleted): Likewise. - (arc_ccfsm_cond_exec_p): Likewise. - (arc_ccfsm): Likewise. - (arc_ccfsm_record_condition): Likewise. - (make_pass_arc_ifcvt): Likewise. - * config/arc/arc.cc (arc_ccfsm): Remove. - (arc_ccfsm_current): Likewise. - (ARC_CCFSM_BRANCH_DELETED_P): Likewise. - (ARC_CCFSM_RECORD_BRANCH_DELETED): Likewise. - (ARC_CCFSM_COND_EXEC_P): Likewise. - (CCFSM_ISCOMPACT): Likewise. - (CCFSM_DBR_ISCOMPACT): Likewise. - (machine_function): Remove ccfsm related fields. - (arc_ifcvt): Remove pass. - (arc_print_operand): Remove `#` punct operand and other ccfsm - related code. - (arc_ccfsm_advance): Remove. - (arc_ccfsm_at_label): Likewise. - (arc_ccfsm_record_condition): Likewise. - (arc_ccfsm_post_advance): Likewise. - (arc_ccfsm_branch_deleted_p): Likewise. - (arc_ccfsm_record_branch_deleted): Likewise. - (arc_ccfsm_cond_exec_p): Likewise. - (arc_get_ccfsm_cond): Likewise. - (arc_final_prescan_insn): Remove ccfsm references. - (arc_internal_label): Likewise. - (arc_reorg): Likewise. - (arc_output_libcall): Likewise. - * config/arc/arc.md: Remove ccfsm references and update related - instruction patterns. - -2023-10-05 Claudiu Zissulescu <claziss@gmail.com> - - * config/arc/arc.cc (arc_init): Remove '^' punct char. - (arc_print_operand): Remove related code. - * config/arc/arc.md: Update patterns which uses '%&'. - -2023-10-05 Claudiu Zissulescu <claziss@gmail.com> - - * config/arc/arc-protos.h (arc_clear_unalign): Remove. - (arc_toggle_unalign): Likewise. - * config/arc/arc.cc (machine_function) Remove unalign. - (arc_init): Remove `&` punct character. - (arc_print_operand): Remove `&` related functions. - (arc_verify_short): Update function's number of parameters. - (output_short_suffix): Update function. - (arc_short_long): Likewise. - (arc_clear_unalign): Remove. - (arc_toggle_unalign): Likewise. - * config/arc/arc.h (ASM_OUTPUT_CASE_END): Remove. - (ASM_OUTPUT_ALIGN): Update. - * config/arc/arc.md: Remove all `%&` references. - * config/arc/arc.opt (mannotate-align): Ignore option. - * doc/invoke.texi (mannotate-align): Update description. - -2023-10-05 Richard Biener <rguenther@suse.de> - - * tree-vect-slp.cc (vect_build_slp_tree_1): Do not - ask for internal_fn_p (CFN_LAST). - -2023-10-05 Richard Biener <rguenther@suse.de> - - * tree-ssa-sccvn.cc (rpo_elim::eliminate_avail): Not - visited value numbers are available itself. - -2023-10-05 Richard Biener <rguenther@suse.de> - - PR ipa/111643 - * doc/extend.texi (attribute flatten): Clarify. - -2023-10-04 Roger Sayle <roger@nextmovesoftware.com> - - * config/arc/arc-protos.h (emit_shift): Delete prototype. - (arc_pre_reload_split): New function prototype. - * config/arc/arc.cc (emit_shift): Delete function. - (arc_pre_reload_split): New predicate function, copied from i386, - to schedule define_insn_and_split splitters to the split1 pass. - * config/arc/arc.md (ashlsi3): Expand RTL template unconditionally. - (ashrsi3): Likewise. - (lshrsi3): Likewise. - (shift_si3): Move after other shift patterns, and disable when - operands[2] is one (which is handled by its own define_insn). - Use shiftr4_operator, instead of shift4_operator, as this is no - longer used for left shifts. - (shift_si3_loop): Likewise. Additionally remove match_scratch. - (*ashlsi3_nobs): New pre-reload define_insn_and_split. - (*ashrsi3_nobs): Likewise. - (*lshrsi3_nobs): Likewise. - (rotrsi3_cnt1): Rename define_insn from *rotrsi3_cnt1. - (add_shift): Rename define_insn from *add_shift. - * config/arc/predicates.md (shiftl4_operator): Delete. - (shift4_operator): Delete. - -2023-10-04 Roger Sayle <roger@nextmovesoftware.com> - - * config/arc/arc.md (ashlsi3_cnt1): Rename define_insn *ashlsi2_cnt1. - Change type attribute to "unary", as this doesn't have operands[2]. - Change length attribute to "*,4" to allow compact representation. - (lshrsi3_cnt1): Rename define_insn from *lshrsi3_cnt1. Change - insn type attribute to "unary", as this doesn't have operands[2]. - (ashrsi3_cnt1): Rename define_insn from *ashrsi3_cnt1. Change - insn type attribute to "unary", as this doesn't have operands[2]. - -2023-10-04 Roger Sayle <roger@nextmovesoftware.com> - - PR rtl-optimization/110701 - * combine.cc (record_dead_and_set_regs_1): Split comment into - pieces placed before the relevant clauses. When the SET_DEST - is a partial_subreg_p, mark the bits outside of the updated - portion of the destination as undefined. - -2023-10-04 Kito Cheng <kito.cheng@sifive.com> - - PR bootstrap/111664 - * opt-read.awk: Drop multidimensional arrays. - * opth-gen.awk: Ditto. - -2023-10-04 Xi Ruoyao <xry111@xry111.site> - - * config/loongarch/loongarch.md (UNSPEC_FCOPYSIGN): Delete. - (copysign<mode>3): Use copysign RTL instead of UNSPEC. - -2023-10-04 Jakub Jelinek <jakub@redhat.com> - - PR middle-end/111369 - * match.pd (x == cstN ? cst4 : cst3): Use - build_nonstandard_integer_type only if type1 is BOOLEAN_TYPE. - Fix comment typo. Formatting fix. - (a?~t:t -> (-(a))^t): Always convert to type rather - than using build_nonstandard_integer_type. Perform negation - only if type has precision > 1 and is not signed BOOLEAN_TYPE. - -2023-10-04 Jakub Jelinek <jakub@redhat.com> - - PR tree-optimization/111668 - * match.pd (a ? CST1 : CST2): Handle the a ? -1 : 0 and - a ? 0 : -1 cases before the powerof2cst cases and differentiate - between 1-bit precision types, larger precision boolean types - and other integral types. Fix comment pastos and formatting. - -2023-10-03 Andrew MacLeod <amacleod@redhat.com> - - * tree-ssanames.cc (set_range_info): Use get_ptr_info for - pointers rather than range_info_get_range. - -2023-10-03 Martin Jambor <mjambor@suse.cz> - - * ipa-modref.h (modref_summary::dump): Make const. - * ipa-modref.cc (modref_summary::dump): Likewise. - (dump_lto_records): Dump to out instead of dump_file. - -2023-10-03 Martin Jambor <mjambor@suse.cz> - - PR ipa/110378 - * ipa-param-manipulation.cc - (ipa_param_body_adjustments::mark_dead_statements): Verify that any - return uses of PARAM will be removed. - (ipa_param_body_adjustments::mark_clobbers_dead): Likewise. - * ipa-sra.cc (isra_param_desc): New fields - remove_only_when_retval_removed and split_only_when_retval_removed. - (struct gensum_param_desc): Likewise. Fix comment long line. - (ipa_sra_function_summaries::duplicate): Copy the new flags. - (dump_gensum_param_descriptor): Dump the new flags. - (dump_isra_param_descriptor): Likewise. - (isra_track_scalar_value_uses): New parameter desc. Set its flag - remove_only_when_retval_removed when encountering a simple return. - (isra_track_scalar_param_local_uses): Replace parameter call_uses_p - with desc. Pass it to isra_track_scalar_value_uses and set its - call_uses. - (ptr_parm_has_nonarg_uses): Accept parameter descriptor as a - parameter. If there is a direct return use, mark any.. - (create_parameter_descriptors): Pass the whole parameter descriptor to - isra_track_scalar_param_local_uses and ptr_parm_has_nonarg_uses. - (process_scan_results): Copy the new flags. - (isra_write_node_summary): Stream the new flags. - (isra_read_node_info): Likewise. - (adjust_parameter_descriptions): Check that transformations - requring return removal only happen when return value is removed. - Restructure main loop. Adjust dump message. - -2023-10-03 Martin Jambor <mjambor@suse.cz> - - PR ipa/108007 - * cgraph.h (cgraph_edge): Add a parameter to - redirect_call_stmt_to_callee. - * ipa-param-manipulation.h (ipa_param_adjustments): Add a - parameter to modify_call. - * cgraph.cc (cgraph_edge::redirect_call_stmt_to_callee): New - parameter killed_ssas, pass it to padjs->modify_call. - * ipa-param-manipulation.cc (purge_transitive_uses): New function. - (ipa_param_adjustments::modify_call): New parameter killed_ssas. - Instead of substituting uses, invoke purge_transitive_uses. If - hash of killed SSAs has not been provided, create a temporary one - and release SSAs that have been added to it. - * tree-inline.cc (redirect_all_calls): Create - id->killed_new_ssa_names earlier, pass it to edge redirection, - adjust a comment. - (copy_body): Release SSAs in id->killed_new_ssa_names. - -2023-10-03 Andrew MacLeod <amacleod@redhat.com> - - * passes.def (pass_vrp): Pass "final pass" flag as parameter. - * tree-vrp.cc (vrp_pass_num): Remove. - (pass_vrp::my_pass): Remove. - (pass_vrp::pass_vrp): Add warn_p as a parameter. - (pass_vrp::final_p): New. - (pass_vrp::set_pass_param): Set final_p param. - (pass_vrp::execute): Call execute_range_vrp with no conditions. - (make_pass_vrp): Pass additional parameter. - (make_pass_early_vrp): Ditto. - -2023-10-03 Andrew MacLeod <amacleod@redhat.com> - - * tree-ssanames.cc (set_range_info): Return true only if the - current value changes. - -2023-10-03 David Malcolm <dmalcolm@redhat.com> - - * diagnostic.cc (diagnostic_set_info_translated): Update for "m_" - prefixes to text_info fields. - (diagnostic_report_diagnostic): Likewise. - (verbatim): Use text_info ctor. - (simple_diagnostic_path::add_event): Likewise. - (simple_diagnostic_path::add_thread_event): Likewise. - * dumpfile.cc (dump_pretty_printer::decode_format): Update for - "m_" prefixes to text_info fields. - (dump_context::dump_printf_va): Use text_info ctor. - * graphviz.cc (graphviz_out::graphviz_out): Use text_info ctor. - (graphviz_out::print): Likewise. - * opt-problem.cc (opt_problem::opt_problem): Likewise. - * pretty-print.cc (pp_format): Update for "m_" prefixes to - text_info fields. - (pp_printf): Use text_info ctor. - (pp_verbatim): Likewise. - (assert_pp_format_va): Likewise. - * pretty-print.h (struct text_info): Add ctors. Add "m_" prefix - to all fields. - * text-art/styled-string.cc (styled_string::from_fmt_va): Use - text_info ctor. - * tree-diagnostic.cc (default_tree_printer): Update for "m_" - prefixes to text_info fields. - * tree-pretty-print.h (pp_ti_abstract_origin): Likewise. - -2023-10-03 Roger Sayle <roger@nextmovesoftware.com> - - * config/arc/arc.md (CC_ltu): New mode iterator for CC and CC_C. - (scc_ltu_<mode>): New define_insn to handle LTU form of scc_insn. - (*scc_insn): Don't split to a conditional move sequence for LTU. - -2023-10-03 Andrea Corallo <andrea.corallo@arm.com> - - * config/aarch64/aarch64.md (@ccmp<CC_ONLY:mode><GPI:mode>) - (@ccmp<CC_ONLY:mode><GPI:mode>_rev, *call_insn, *call_value_insn) - (*mov<mode>_aarch64, load_pair_sw_<SX:mode><SX2:mode>) - (load_pair_dw_<DX:mode><DX2:mode>) - (store_pair_sw_<SX:mode><SX2:mode>) - (store_pair_dw_<DX:mode><DX2:mode>, *extendsidi2_aarch64) - (*zero_extendsidi2_aarch64, *load_pair_zero_extendsidi2_aarch64) - (*extend<SHORT:mode><GPI:mode>2_aarch64) - (*zero_extend<SHORT:mode><GPI:mode>2_aarch64) - (*extendqihi2_aarch64, *zero_extendqihi2_aarch64) - (*add<mode>3_aarch64, *addsi3_aarch64_uxtw, *add<mode>3_poly_1) - (add<mode>3_compare0, *addsi3_compare0_uxtw) - (*add<mode>3_compareC_cconly, add<mode>3_compareC) - (*add<mode>3_compareV_cconly_imm, add<mode>3_compareV_imm) - (*add<mode>3nr_compare0, subdi3, subv<GPI:mode>_imm) - (*cmpv<GPI:mode>_insn, sub<mode>3_compare1_imm, neg<mode>2) - (cmp<mode>, fcmp<mode>, fcmpe<mode>, *cmov<mode>_insn) - (*cmovsi_insn_uxtw, <optab><mode>3, *<optab>si3_uxtw) - (*and<mode>3_compare0, *andsi3_compare0_uxtw, one_cmpl<mode>2) - (*<NLOGICAL:optab>_one_cmpl<mode>3, *and<mode>3nr_compare0) - (*aarch64_ashl_sisd_or_int_<mode>3) - (*aarch64_lshr_sisd_or_int_<mode>3) - (*aarch64_ashr_sisd_or_int_<mode>3, *ror<mode>3_insn) - (*<optab>si3_insn_uxtw, <optab>_trunc<fcvt_target><GPI:mode>2) - (<optab><fcvt_target><GPF:mode>2) - (<FCVT_F2FIXED:fcvt_fixed_insn><GPF:mode>3) - (<FCVT_FIXED2F:fcvt_fixed_insn><GPI:mode>3) - (*aarch64_<optab><mode>3_cssc, copysign<GPF:mode>3_insn): Update - to new syntax. - * config/aarch64/aarch64-sve2.md (@aarch64_scatter_stnt<mode>) - (@aarch64_scatter_stnt_<SVE_FULL_SDI:mode><SVE_PARTIAL_I:mode>) - (*aarch64_mul_unpredicated_<mode>) - (@aarch64_pred_<sve_int_op><mode>, *cond_<sve_int_op><mode>_2) - (*cond_<sve_int_op><mode>_3, *cond_<sve_int_op><mode>_any) - (*cond_<sve_int_op><mode>_z, @aarch64_pred_<sve_int_op><mode>) - (*cond_<sve_int_op><mode>_2, *cond_<sve_int_op><mode>_3) - (*cond_<sve_int_op><mode>_any, @aarch64_sve_<sve_int_op><mode>) - (@aarch64_sve_<sve_int_op>_lane_<mode>) - (@aarch64_sve_add_mul_lane_<mode>) - (@aarch64_sve_sub_mul_lane_<mode>, @aarch64_sve2_xar<mode>) - (*aarch64_sve2_bcax<mode>, @aarch64_sve2_eor3<mode>) - (*aarch64_sve2_nor<mode>, *aarch64_sve2_nand<mode>) - (*aarch64_sve2_bsl<mode>, *aarch64_sve2_nbsl<mode>) - (*aarch64_sve2_bsl1n<mode>, *aarch64_sve2_bsl2n<mode>) - (*aarch64_sve2_sra<mode>, @aarch64_sve_add_<sve_int_op><mode>) - (*aarch64_sve2_<su>aba<mode>, @aarch64_sve_add_<sve_int_op><mode>) - (@aarch64_sve_add_<sve_int_op>_lane_<mode>) - (@aarch64_sve_qadd_<sve_int_op><mode>) - (@aarch64_sve_qadd_<sve_int_op>_lane_<mode>) - (@aarch64_sve_sub_<sve_int_op><mode>) - (@aarch64_sve_sub_<sve_int_op>_lane_<mode>) - (@aarch64_sve_qsub_<sve_int_op><mode>) - (@aarch64_sve_qsub_<sve_int_op>_lane_<mode>) - (@aarch64_sve_<sve_fp_op><mode>, @aarch64_<sve_fp_op>_lane_<mode>) - (@aarch64_pred_<sve_int_op><mode>) - (@aarch64_pred_<sve_fp_op><mode>, *cond_<sve_int_op><mode>_2) - (*cond_<sve_int_op><mode>_z, @aarch64_sve_<optab><mode>) - (@aarch64_<optab>_lane_<mode>, @aarch64_sve_<optab><mode>) - (@aarch64_<optab>_lane_<mode>, @aarch64_pred_<sve_fp_op><mode>) - (*cond_<sve_fp_op><mode>_any_relaxed) - (*cond_<sve_fp_op><mode>_any_strict) - (@aarch64_pred_<sve_int_op><mode>, *cond_<sve_int_op><mode>) - (@aarch64_pred_<sve_fp_op><mode>, *cond_<sve_fp_op><mode>) - (*cond_<sve_fp_op><mode>_strict): Update to new syntax. - * config/aarch64/aarch64-sve.md (*aarch64_sve_mov<mode>_ldr_str) - (*aarch64_sve_mov<mode>_no_ldr_str, @aarch64_pred_mov<mode>) - (*aarch64_sve_mov<mode>, aarch64_wrffr) - (mask_scatter_store<mode><v_int_container>) - (*mask_scatter_store<mode><v_int_container>_<su>xtw_unpacked) - (*mask_scatter_store<mode><v_int_container>_sxtw) - (*mask_scatter_store<mode><v_int_container>_uxtw) - (@aarch64_scatter_store_trunc<VNx4_NARROW:mode><VNx4_WIDE:mode>) - (@aarch64_scatter_store_trunc<VNx2_NARROW:mode><VNx2_WIDE:mode>) - (*aarch64_scatter_store_trunc<VNx2_NARROW:mode><VNx2_WIDE:mode>_sxtw) - (*aarch64_scatter_store_trunc<VNx2_NARROW:mode><VNx2_WIDE:mode>_uxtw) - (*vec_duplicate<mode>_reg, vec_shl_insert_<mode>) - (vec_series<mode>, @extract_<last_op>_<mode>) - (@aarch64_pred_<optab><mode>, *cond_<optab><mode>_2) - (*cond_<optab><mode>_any, @aarch64_pred_<optab><mode>) - (@aarch64_sve_revbhw_<SVE_ALL:mode><PRED_HSD:mode>) - (@cond_<optab><mode>) - (*<optab><SVE_PARTIAL_I:mode><SVE_HSDI:mode>2) - (@aarch64_pred_sxt<SVE_FULL_HSDI:mode><SVE_PARTIAL_I:mode>) - (@aarch64_cond_sxt<SVE_FULL_HSDI:mode><SVE_PARTIAL_I:mode>) - (*cond_uxt<mode>_2, *cond_uxt<mode>_any, *cnot<mode>) - (*cond_cnot<mode>_2, *cond_cnot<mode>_any) - (@aarch64_pred_<optab><mode>, *cond_<optab><mode>_2_relaxed) - (*cond_<optab><mode>_2_strict, *cond_<optab><mode>_any_relaxed) - (*cond_<optab><mode>_any_strict, @aarch64_pred_<optab><mode>) - (*cond_<optab><mode>_2, *cond_<optab><mode>_3) - (*cond_<optab><mode>_any, add<mode>3, sub<mode>3) - (@aarch64_pred_<su>abd<mode>, *aarch64_cond_<su>abd<mode>_2) - (*aarch64_cond_<su>abd<mode>_3, *aarch64_cond_<su>abd<mode>_any) - (@aarch64_sve_<optab><mode>, @aarch64_pred_<optab><mode>) - (*cond_<optab><mode>_2, *cond_<optab><mode>_z) - (@aarch64_pred_<optab><mode>, *cond_<optab><mode>_2) - (*cond_<optab><mode>_3, *cond_<optab><mode>_any, <optab><mode>3) - (*cond_bic<mode>_2, *cond_bic<mode>_any) - (@aarch64_pred_<optab><mode>, *cond_<optab><mode>_2_const) - (*cond_<optab><mode>_any_const, *cond_<sve_int_op><mode>_m) - (*cond_<sve_int_op><mode>_z, *sdiv_pow2<mode>3) - (*cond_<sve_int_op><mode>_2, *cond_<sve_int_op><mode>_any) - (@aarch64_pred_<optab><mode>, *cond_<optab><mode>_2_relaxed) - (*cond_<optab><mode>_2_strict, *cond_<optab><mode>_any_relaxed) - (*cond_<optab><mode>_any_strict, @aarch64_pred_<optab><mode>) - (*cond_<optab><mode>_2_relaxed, *cond_<optab><mode>_2_strict) - (*cond_<optab><mode>_2_const_relaxed) - (*cond_<optab><mode>_2_const_strict) - (*cond_<optab><mode>_3_relaxed, *cond_<optab><mode>_3_strict) - (*cond_<optab><mode>_any_relaxed, *cond_<optab><mode>_any_strict) - (*cond_<optab><mode>_any_const_relaxed) - (*cond_<optab><mode>_any_const_strict) - (@aarch64_pred_<optab><mode>, *cond_add<mode>_2_const_relaxed) - (*cond_add<mode>_2_const_strict) - (*cond_add<mode>_any_const_relaxed) - (*cond_add<mode>_any_const_strict, @aarch64_pred_<optab><mode>) - (*cond_<optab><mode>_2_relaxed, *cond_<optab><mode>_2_strict) - (*cond_<optab><mode>_any_relaxed, *cond_<optab><mode>_any_strict) - (@aarch64_pred_<optab><mode>, *cond_sub<mode>_3_const_relaxed) - (*cond_sub<mode>_3_const_strict, *cond_sub<mode>_const_relaxed) - (*cond_sub<mode>_const_strict, *aarch64_pred_abd<mode>_relaxed) - (*aarch64_pred_abd<mode>_strict) - (*aarch64_cond_abd<mode>_2_relaxed) - (*aarch64_cond_abd<mode>_2_strict) - (*aarch64_cond_abd<mode>_3_relaxed) - (*aarch64_cond_abd<mode>_3_strict) - (*aarch64_cond_abd<mode>_any_relaxed) - (*aarch64_cond_abd<mode>_any_strict, @aarch64_pred_<optab><mode>) - (@aarch64_pred_fma<mode>, *cond_fma<mode>_2, *cond_fma<mode>_4) - (*cond_fma<mode>_any, @aarch64_pred_fnma<mode>) - (*cond_fnma<mode>_2, *cond_fnma<mode>_4, *cond_fnma<mode>_any) - (<sur>dot_prod<vsi2qi>, @aarch64_<sur>dot_prod_lane<vsi2qi>) - (@<sur>dot_prod<vsi2qi>, @aarch64_<sur>dot_prod_lane<vsi2qi>) - (@aarch64_sve_add_<optab><vsi2qi>, @aarch64_pred_<optab><mode>) - (*cond_<optab><mode>_2_relaxed, *cond_<optab><mode>_2_strict) - (*cond_<optab><mode>_4_relaxed, *cond_<optab><mode>_4_strict) - (*cond_<optab><mode>_any_relaxed, *cond_<optab><mode>_any_strict) - (@aarch64_<optab>_lane_<mode>, @aarch64_pred_<optab><mode>) - (*cond_<optab><mode>_4_relaxed, *cond_<optab><mode>_4_strict) - (*cond_<optab><mode>_any_relaxed, *cond_<optab><mode>_any_strict) - (@aarch64_<optab>_lane_<mode>, @aarch64_sve_tmad<mode>) - (@aarch64_sve_<sve_fp_op>vnx4sf) - (@aarch64_sve_<sve_fp_op>_lanevnx4sf) - (@aarch64_sve_<sve_fp_op><mode>, *vcond_mask_<mode><vpred>) - (@aarch64_sel_dup<mode>, @aarch64_pred_cmp<cmp_op><mode>) - (*cmp<cmp_op><mode>_cc, *cmp<cmp_op><mode>_ptest) - (@aarch64_pred_fcm<cmp_op><mode>, @fold_extract_<last_op>_<mode>) - (@aarch64_fold_extract_vector_<last_op>_<mode>) - (@aarch64_sve_splice<mode>) - (@aarch64_sve_<optab>_nontrunc<SVE_FULL_F:mode><SVE_FULL_HSDI:mode>) - (@aarch64_sve_<optab>_trunc<VNx2DF_ONLY:mode><VNx4SI_ONLY:mode>) - (*cond_<optab>_nontrunc<SVE_FULL_F:mode><SVE_FULL_HSDI:mode>_relaxed) - (*cond_<optab>_nontrunc<SVE_FULL_F:mode><SVE_FULL_HSDI:mode>_strict) - (*cond_<optab>_trunc<VNx2DF_ONLY:mode><VNx4SI_ONLY:mode>) - (@aarch64_sve_<optab>_nonextend<SVE_FULL_HSDI:mode><SVE_FULL_F:mode>) - (@aarch64_sve_<optab>_extend<VNx4SI_ONLY:mode><VNx2DF_ONLY:mode>) - (*cond_<optab>_nonextend<SVE_FULL_HSDI:mode><SVE_FULL_F:mode>_relaxed) - (*cond_<optab>_nonextend<SVE_FULL_HSDI:mode><SVE_FULL_F:mode>_strict) - (*cond_<optab>_extend<VNx4SI_ONLY:mode><VNx2DF_ONLY:mode>) - (@aarch64_sve_<optab>_trunc<SVE_FULL_SDF:mode><SVE_FULL_HSF:mode>) - (*cond_<optab>_trunc<SVE_FULL_SDF:mode><SVE_FULL_HSF:mode>) - (@aarch64_sve_<optab>_trunc<VNx4SF_ONLY:mode><VNx8BF_ONLY:mode>) - (*cond_<optab>_trunc<VNx4SF_ONLY:mode><VNx8BF_ONLY:mode>) - (@aarch64_sve_<optab>_nontrunc<SVE_FULL_HSF:mode><SVE_FULL_SDF:mode>) - (*cond_<optab>_nontrunc<SVE_FULL_HSF:mode><SVE_FULL_SDF:mode>) - (@aarch64_brk<brk_op>, *aarch64_sve_<inc_dec><mode>_cntp): Update - to new syntax. - * config/aarch64/aarch64-simd.md (aarch64_simd_dup<mode>) - (load_pair<DREG:mode><DREG2:mode>) - (vec_store_pair<DREG:mode><DREG2:mode>, aarch64_simd_stp<mode>) - (aarch64_simd_mov_from_<mode>low) - (aarch64_simd_mov_from_<mode>high, and<mode>3<vczle><vczbe>) - (ior<mode>3<vczle><vczbe>, aarch64_simd_ashr<mode><vczle><vczbe>) - (aarch64_simd_bsl<mode>_internal<vczle><vczbe>) - (*aarch64_simd_bsl<mode>_alt<vczle><vczbe>) - (aarch64_simd_bsldi_internal, aarch64_simd_bsldi_alt) - (store_pair_lanes<mode>, *aarch64_combine_internal<mode>) - (*aarch64_combine_internal_be<mode>, *aarch64_combinez<mode>) - (*aarch64_combinez_be<mode>) - (aarch64_cm<optab><mode><vczle><vczbe>, *aarch64_cm<optab>di) - (aarch64_cm<optab><mode><vczle><vczbe>, *aarch64_mov<mode>) - (*aarch64_be_mov<mode>, *aarch64_be_movoi): Update to new syntax. - -2023-10-03 Andrea Corallo <andrea.corallo@arm.com> - - * gensupport.cc (convert_syntax): Skip spaces before "cons:" - in new compact pattern syntax. - -2023-10-03 Richard Sandiford <richard.sandiford@arm.com> - - * gensupport.cc (convert_syntax): Updated to support unordered - constraints in compact syntax. - -2023-10-02 Michael Meissner <meissner@linux.ibm.com> - - * config/rs6000/rs6000.md (UNSPEC_COPYSIGN): Delete. - (copysign<mode>3_fcpsg): Use copysign RTL instead of UNSPEC. - (copysign<mode>3_hard): Likewise. - (copysign<mode>3_soft): Likewise. - * config/rs6000/vector.md (vector_copysign<mode>3): Use copysign RTL - instead of UNSPEC. - * config/rs6000/vsx.md (vsx_copysign<mode>3): Use copysign RTL instead - of UNSPEC. - -2023-10-02 David Malcolm <dmalcolm@redhat.com> - - * diagnostic-format-json.cc (toplevel_array): Remove global in - favor of json_output_format::m_top_level_array. - (cur_group): Likewise, for json_output_format::m_cur_group. - (cur_children_array): Likewise, for - json_output_format::m_cur_children_array. - (class json_output_format): New. - (json_begin_diagnostic): Remove, in favor of - json_output_format::on_begin_diagnostic. - (json_end_diagnostic): Convert to... - (json_output_format::on_end_diagnostic): ...this. - (json_begin_group): Remove, in favor of - json_output_format::on_begin_group. - (json_end_group): Remove, in favor of - json_output_format::on_end_group. - (json_flush_to_file): Remove, in favor of - json_output_format::flush_to_file. - (json_stderr_final_cb): Remove, in favor of json_output_format - dtor. - (json_output_base_file_name): Remove global. - (class json_stderr_output_format): New. - (json_file_final_cb): Remove. - (class json_file_output_format): New. - (json_emit_diagram): Remove. - (diagnostic_output_format_init_json): Update. - (diagnostic_output_format_init_json_file): Update. - * diagnostic-format-sarif.cc (the_builder): Remove this global, - moving to a field of the sarif_output_format. - (sarif_builder::maybe_make_artifact_content_object): Use the - context's m_file_cache. - (get_source_lines): Convert to... - (sarif_builder::get_source_lines): ...this, using context's - m_file_cache. - (sarif_begin_diagnostic): Remove, in favor of - sarif_output_format::on_begin_diagnostic. - (sarif_end_diagnostic): Remove, in favor of - sarif_output_format::on_end_diagnostic. - (sarif_begin_group): Remove, in favor of - sarif_output_format::on_begin_group. - (sarif_end_group): Remove, in favor of - sarif_output_format::on_end_group. - (sarif_flush_to_file): Delete. - (sarif_stderr_final_cb): Delete. - (sarif_output_base_file_name): Delete. - (sarif_file_final_cb): Delete. - (class sarif_output_format): New. - (sarif_emit_diagram): Delete. - (class sarif_stream_output_format): New. - (class sarif_file_output_format): New. - (diagnostic_output_format_init_sarif): Update. - (diagnostic_output_format_init_sarif_stderr): Update. - (diagnostic_output_format_init_sarif_file): Update. - (diagnostic_output_format_init_sarif_stream): Update. - * diagnostic-show-locus.cc (diagnostic_show_locus): Update. - * diagnostic.cc (default_diagnostic_final_cb): Delete, moving to - diagnostic_text_output_format's dtor. - (diagnostic_initialize): Update, making a new instance of - diagnostic_text_output_format. - (diagnostic_finish): Delete m_output_format, rather than calling - final_cb. - (diagnostic_report_diagnostic): Assert that m_output_format is - non-NULL. Replace call to begin_group_cb with call to - m_output_format->on_begin_group. Replace call to - diagnostic_starter with call to - m_output_format->on_begin_diagnostic. Replace call to - diagnostic_finalizer with call to - m_output_format->on_end_diagnostic. - (diagnostic_emit_diagram): Replace both optional call to - m_diagrams.m_emission_cb and default implementation with call to - m_output_format->on_diagram. Move default implementation to - diagnostic_text_output_format::on_diagram. - (auto_diagnostic_group::~auto_diagnostic_group): Replace call to - end_group_cb with call to m_output_format->on_end_group. - (diagnostic_text_output_format::~diagnostic_text_output_format): - New, based on default_diagnostic_final_cb. - (diagnostic_text_output_format::on_begin_diagnostic): New, based - on code from diagnostic_report_diagnostic. - (diagnostic_text_output_format::on_end_diagnostic): Likewise. - (diagnostic_text_output_format::on_diagram): New, based on code - from diagnostic_emit_diagram. - * diagnostic.h (class diagnostic_output_format): New. - (class diagnostic_text_output_format): New. - (diagnostic_context::begin_diagnostic): Move to... - (diagnostic_context::m_text_callbacks::begin_diagnostic): ...here. - (diagnostic_context::start_span): Move to... - (diagnostic_context::m_text_callbacks::start_span): ...here. - (diagnostic_context::end_diagnostic): Move to... - (diagnostic_context::m_text_callbacks::end_diagnostic): ...here. - (diagnostic_context::begin_group_cb): Remove, in favor of - m_output_format->on_begin_group. - (diagnostic_context::end_group_cb): Remove, in favor of - m_output_format->on_end_group. - (diagnostic_context::final_cb): Remove, in favor of - m_output_format's dtor. - (diagnostic_context::m_output_format): New field. - (diagnostic_context::m_diagrams.m_emission_cb): Remove, in favor - of m_output_format->on_diagram. - (diagnostic_starter): Update. - (diagnostic_finalizer): Update. - (diagnostic_output_format_init_sarif_stream): New. - * input.cc (location_get_source_line): Move implementation apart from - call to diagnostic_file_cache_init to... - (file_cache::get_source_line): ...this new function... - (location_get_source_line): ...and reintroduce, rewritten in terms of - file_cache::get_source_line. - (get_source_file_content): Likewise, refactor into... - (file_cache::get_source_file_content): ...this new function. - * input.h (file_cache::get_source_line): New decl. - (file_cache::get_source_file_content): New decl. - * selftest-diagnostic.cc - (test_diagnostic_context::test_diagnostic_context): Update. - * tree-diagnostic-path.cc (event_range::print): Update for - change to diagnostic_context's start_span callback. - -2023-10-02 David Malcolm <dmalcolm@redhat.com> - - * diagnostic-show-locus.cc: Update for reorganization of - source-printing fields of diagnostic_context. - * diagnostic.cc (diagnostic_set_caret_max_width): Likewise. - (diagnostic_initialize): Likewise. - * diagnostic.h (diagnostic_context::show_caret): Move to... - (diagnostic_context::m_source_printing::enabled): ...here. - (diagnostic_context::caret_max_width): Move to... - (diagnostic_context::m_source_printing::max_width): ...here. - (diagnostic_context::caret_chars): Move to... - (diagnostic_context::m_source_printing::caret_chars): ...here. - (diagnostic_context::colorize_source_p): Move to... - (diagnostic_context::m_source_printing::colorize_source_p): ...here. - (diagnostic_context::show_labels_p): Move to... - (diagnostic_context::m_source_printing::show_labels_p): ...here. - (diagnostic_context::show_line_numbers_p): Move to... - (diagnostic_context::m_source_printing::show_line_numbers_p): ...here. - (diagnostic_context::min_margin_width): Move to... - (diagnostic_context::m_source_printing::min_margin_width): ...here. - (diagnostic_context::show_ruler_p): Move to... - (diagnostic_context::m_source_printing::show_ruler_p): ...here. - (diagnostic_same_line): Update for above changes. - * opts.cc (common_handle_option): Update for reorganization of - source-printing fields of diagnostic_context. - * selftest-diagnostic.cc - (test_diagnostic_context::test_diagnostic_context): Likewise. - * toplev.cc (general_init): Likewise. - * tree-diagnostic-path.cc (struct event_range): Likewise. - -2023-10-02 David Malcolm <dmalcolm@redhat.com> - - * diagnostic.cc (diagnostic_initialize): Initialize - set_locations_cb to nullptr. - -2023-10-02 Wilco Dijkstra <wilco.dijkstra@arm.com> - - PR target/111235 - * config/arm/constraints.md: Remove Pf constraint. - * config/arm/sync.md (arm_atomic_load<mode>): Add new pattern. - (arm_atomic_load_acquire<mode>): Likewise. - (arm_atomic_store<mode>): Likewise. - (arm_atomic_store_release<mode>): Likewise. - (atomic_load<mode>): Switch patterns to define_expand. - (atomic_store<mode>): Likewise. - (arm_atomic_loaddi2_ldrd): Remove predication. - (arm_load_exclusive<mode>): Likewise. - (arm_load_acquire_exclusive<mode>): Likewise. - (arm_load_exclusivesi): Likewise. - (arm_load_acquire_exclusivesi): Likewise. - (arm_load_exclusivedi): Likewise. - (arm_load_acquire_exclusivedi): Likewise. - (arm_store_exclusive<mode>): Likewise. - (arm_store_release_exclusivedi): Likewise. - (arm_store_release_exclusive<mode>): Likewise. - * config/arm/unspecs.md: Add VUNSPEC_LDR and VUNSPEC_STR. - -2023-10-02 Tamar Christina <tamar.christina@arm.com> - - Revert: - 2023-10-02 Tamar Christina <tamar.christina@arm.com> - - PR tree-optimization/109154 - * tree-if-conv.cc (INCLUDE_ALGORITHM): Remove. - (cmp_arg_entry): New. - (predicate_scalar_phi): Use it. - -2023-10-02 Tamar Christina <tamar.christina@arm.com> - - * config/aarch64/aarch64-simd.md (xorsign<mode>3): Renamed to.. - (@xorsign<mode>3): ...This. - * config/aarch64/aarch64.md (xorsign<mode>3): Renamed to... - (@xorsign<mode>3): ..This and emit vectors directly - * config/aarch64/iterators.md (VCONQ): Add SF and DF. - -2023-10-02 Tamar Christina <tamar.christina@arm.com> - - * emit-rtl.cc (validate_subreg): Relax subreg rule. - -2023-10-02 Tamar Christina <tamar.christina@arm.com> - - PR tree-optimization/109154 - * tree-if-conv.cc (INCLUDE_ALGORITHM): Remove. - (cmp_arg_entry): New. - (predicate_scalar_phi): Use it. - -2023-10-02 Richard Sandiford <richard.sandiford@arm.com> - - PR bootstrap/111642 - * rtl-tests.cc (const_poly_int_tests<N>::run): Use a local - poly_int64 typedef. - * simplify-rtx.cc (simplify_const_poly_int_tests<N>::run): Likewise. - -2023-10-02 Joern Rennecke <joern.rennecke@embecosm.com> - Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv-protos.h (riscv_vector::expand_block_move): - Declare. - * config/riscv/riscv-v.cc (riscv_vector::expand_block_move): - New function. - * config/riscv/riscv.md (cpymemsi): Use riscv_vector::expand_block_move. - Change to .. - (cpymem<P:mode>) .. this. - -2023-10-01 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com> - - * combine.cc (simplify_compare_const): Properly handle unsigned - constants while narrowing comparison of memory and constants. - -2023-10-01 Feng Wang <wangfeng@eswincomputing.com> - - * config/riscv/riscv-opts.h (MASK_ZICSR): Delete. - (MASK_ZIFENCEI): Delete; - (MASK_ZIHINTNTL): Ditto. - (MASK_ZIHINTPAUSE): Ditto. - (TARGET_ZICSR): Ditto. - (TARGET_ZIFENCEI): Ditto. - (TARGET_ZIHINTNTL): Ditto. - (TARGET_ZIHINTPAUSE): Ditto. - (MASK_ZAWRS): Ditto. - (TARGET_ZAWRS): Ditto. - (MASK_ZBA): Ditto. - (MASK_ZBB): Ditto. - (MASK_ZBC): Ditto. - (MASK_ZBS): Ditto. - (TARGET_ZBA): Ditto. - (TARGET_ZBB): Ditto. - (TARGET_ZBC): Ditto. - (TARGET_ZBS): Ditto. - (MASK_ZFINX): Ditto. - (MASK_ZDINX): Ditto. - (MASK_ZHINX): Ditto. - (MASK_ZHINXMIN): Ditto. - (TARGET_ZFINX): Ditto. - (TARGET_ZDINX): Ditto. - (TARGET_ZHINX): Ditto. - (TARGET_ZHINXMIN): Ditto. - (MASK_ZBKB): Ditto. - (MASK_ZBKC): Ditto. - (MASK_ZBKX): Ditto. - (MASK_ZKNE): Ditto. - (MASK_ZKND): Ditto. - (MASK_ZKNH): Ditto. - (MASK_ZKR): Ditto. - (MASK_ZKSED): Ditto. - (MASK_ZKSH): Ditto. - (MASK_ZKT): Ditto. - (TARGET_ZBKB): Ditto. - (TARGET_ZBKC): Ditto. - (TARGET_ZBKX): Ditto. - (TARGET_ZKNE): Ditto. - (TARGET_ZKND): Ditto. - (TARGET_ZKNH): Ditto. - (TARGET_ZKR): Ditto. - (TARGET_ZKSED): Ditto. - (TARGET_ZKSH): Ditto. - (TARGET_ZKT): Ditto. - (MASK_ZTSO): Ditto. - (TARGET_ZTSO): Ditto. - (MASK_VECTOR_ELEN_32): Ditto. - (MASK_VECTOR_ELEN_64): Ditto. - (MASK_VECTOR_ELEN_FP_32): Ditto. - (MASK_VECTOR_ELEN_FP_64): Ditto. - (MASK_VECTOR_ELEN_FP_16): Ditto. - (TARGET_VECTOR_ELEN_32): Ditto. - (TARGET_VECTOR_ELEN_64): Ditto. - (TARGET_VECTOR_ELEN_FP_32): Ditto. - (TARGET_VECTOR_ELEN_FP_64): Ditto. - (TARGET_VECTOR_ELEN_FP_16): Ditto. - (MASK_ZVBB): Ditto. - (MASK_ZVBC): Ditto. - (TARGET_ZVBB): Ditto. - (TARGET_ZVBC): Ditto. - (MASK_ZVKG): Ditto. - (MASK_ZVKNED): Ditto. - (MASK_ZVKNHA): Ditto. - (MASK_ZVKNHB): Ditto. - (MASK_ZVKSED): Ditto. - (MASK_ZVKSH): Ditto. - (MASK_ZVKN): Ditto. - (MASK_ZVKNC): Ditto. - (MASK_ZVKNG): Ditto. - (MASK_ZVKS): Ditto. - (MASK_ZVKSC): Ditto. - (MASK_ZVKSG): Ditto. - (MASK_ZVKT): Ditto. - (TARGET_ZVKG): Ditto. - (TARGET_ZVKNED): Ditto. - (TARGET_ZVKNHA): Ditto. - (TARGET_ZVKNHB): Ditto. - (TARGET_ZVKSED): Ditto. - (TARGET_ZVKSH): Ditto. - (TARGET_ZVKN): Ditto. - (TARGET_ZVKNC): Ditto. - (TARGET_ZVKNG): Ditto. - (TARGET_ZVKS): Ditto. - (TARGET_ZVKSC): Ditto. - (TARGET_ZVKSG): Ditto. - (TARGET_ZVKT): Ditto. - (MASK_ZVL32B): Ditto. - (MASK_ZVL64B): Ditto. - (MASK_ZVL128B): Ditto. - (MASK_ZVL256B): Ditto. - (MASK_ZVL512B): Ditto. - (MASK_ZVL1024B): Ditto. - (MASK_ZVL2048B): Ditto. - (MASK_ZVL4096B): Ditto. - (MASK_ZVL8192B): Ditto. - (MASK_ZVL16384B): Ditto. - (MASK_ZVL32768B): Ditto. - (MASK_ZVL65536B): Ditto. - (TARGET_ZVL32B): Ditto. - (TARGET_ZVL64B): Ditto. - (TARGET_ZVL128B): Ditto. - (TARGET_ZVL256B): Ditto. - (TARGET_ZVL512B): Ditto. - (TARGET_ZVL1024B): Ditto. - (TARGET_ZVL2048B): Ditto. - (TARGET_ZVL4096B): Ditto. - (TARGET_ZVL8192B): Ditto. - (TARGET_ZVL16384B): Ditto. - (TARGET_ZVL32768B): Ditto. - (TARGET_ZVL65536B): Ditto. - (MASK_ZICBOZ): Ditto. - (MASK_ZICBOM): Ditto. - (MASK_ZICBOP): Ditto. - (TARGET_ZICBOZ): Ditto. - (TARGET_ZICBOM): Ditto. - (TARGET_ZICBOP): Ditto. - (MASK_ZICOND): Ditto. - (TARGET_ZICOND): Ditto. - (MASK_ZFA): Ditto. - (TARGET_ZFA): Ditto. - (MASK_ZFHMIN): Ditto. - (MASK_ZFH): Ditto. - (MASK_ZVFHMIN): Ditto. - (MASK_ZVFH): Ditto. - (TARGET_ZFHMIN): Ditto. - (TARGET_ZFH): Ditto. - (TARGET_ZVFHMIN): Ditto. - (TARGET_ZVFH): Ditto. - (MASK_ZMMUL): Ditto. - (TARGET_ZMMUL): Ditto. - (MASK_ZCA): Ditto. - (MASK_ZCB): Ditto. - (MASK_ZCE): Ditto. - (MASK_ZCF): Ditto. - (MASK_ZCD): Ditto. - (MASK_ZCMP): Ditto. - (MASK_ZCMT): Ditto. - (TARGET_ZCA): Ditto. - (TARGET_ZCB): Ditto. - (TARGET_ZCE): Ditto. - (TARGET_ZCF): Ditto. - (TARGET_ZCD): Ditto. - (TARGET_ZCMP): Ditto. - (TARGET_ZCMT): Ditto. - (MASK_SVINVAL): Ditto. - (MASK_SVNAPOT): Ditto. - (TARGET_SVINVAL): Ditto. - (TARGET_SVNAPOT): Ditto. - (MASK_XTHEADBA): Ditto. - (MASK_XTHEADBB): Ditto. - (MASK_XTHEADBS): Ditto. - (MASK_XTHEADCMO): Ditto. - (MASK_XTHEADCONDMOV): Ditto. - (MASK_XTHEADFMEMIDX): Ditto. - (MASK_XTHEADFMV): Ditto. - (MASK_XTHEADINT): Ditto. - (MASK_XTHEADMAC): Ditto. - (MASK_XTHEADMEMIDX): Ditto. - (MASK_XTHEADMEMPAIR): Ditto. - (MASK_XTHEADSYNC): Ditto. - (TARGET_XTHEADBA): Ditto. - (TARGET_XTHEADBB): Ditto. - (TARGET_XTHEADBS): Ditto. - (TARGET_XTHEADCMO): Ditto. - (TARGET_XTHEADCONDMOV): Ditto. - (TARGET_XTHEADFMEMIDX): Ditto. - (TARGET_XTHEADFMV): Ditto. - (TARGET_XTHEADINT): Ditto. - (TARGET_XTHEADMAC): Ditto. - (TARGET_XTHEADMEMIDX): Ditto. - (TARGET_XTHEADMEMPAIR): Ditto. - (TARGET_XTHEADSYNC): Ditto. - (MASK_XVENTANACONDOPS): Ditto. - (TARGET_XVENTANACONDOPS): Ditto. - * config/riscv/riscv.opt: Add new Mask defination. - * doc/options.texi: Add explanation for this new usage. - * opt-functions.awk: Add new function to find the index - of target variable from extra_target_vars. - * opt-read.awk: Add new function to store the Mask flags. - * opth-gen.awk: Add new function to output the defination of - Mask Macro and Target Macro. - -2023-10-01 Joern Rennecke <joern.rennecke@embecosm.com> - Juzhe-Zhong <juzhe.zhong@rivai.ai> - Juzhe-Zhong <juzhe.zhong@rivai.ai> - - PR target/111566 - * config/riscv/riscv-protos.h (riscv_vector::legitimize_move): - Change second parameter to rtx *. - * config/riscv/riscv-v.cc (risv_vector::legitimize_move): Likewise. - * config/riscv/vector.md: Changed callers of - riscv_vector::legitimize_move. - (*mov<mode>_mem_to_mem): Remove. - -2023-09-30 Jakub Jelinek <jakub@redhat.com> - - PR target/111649 - * config/riscv/riscv-vsetvl.cc (vector_infos_manager::vector_infos_manager): - Replace safe_grow with safe_grow_cleared. - -2023-09-30 Jakub Jelinek <jakub@redhat.com> - - * gimple-match-head.cc (gimple_bitwise_inverted_equal_p): Fix a pasto - in function comment. - -2023-09-30 Jakub Jelinek <jakub@redhat.com> - - PR middle-end/111625 - PR middle-end/111637 - * gimple-lower-bitint.cc (range_to_prec): Use prec or -prec if - r.undefined_p (). - (bitint_large_huge::handle_operand_addr): For uninitialized operands - use limb_prec or -limb_prec precision. - -2023-09-30 Jakub Jelinek <jakub@redhat.com> - - * vec.h (quick_grow): Uncomment static_assert. - -2023-09-30 Jivan Hakobyan <jivanhakobyan9@gmail.com> - - * config/riscv/bitmanip.md (*<optab>_not_const<mode>): Added type attribute - -2023-09-29 Xiao Zeng <zengxiao@eswincomputing.com> - - * config/riscv/riscv.cc (riscv_rtx_costs): Better handle costing - SETs when the outer code is INSN. - -2023-09-29 Jivan Hakobyan <jivanhakobyan9@gmail.com> - - * config/riscv/bitmanip.md (*<optab>_not_const<mode>): New split - pattern. - -2023-09-29 Richard Sandiford <richard.sandiford@arm.com> - - * poly-int.h (poly_int_pod): Delete. - (poly_coeff_traits::init_cast): New type. - (poly_int_full, poly_int_hungry, poly_int_fullness): New structures. - (poly_int): Replace constructors that take 1 and 2 coefficients with - a general one that takes an arbitrary number of coefficients. - Delegate initialization to two new private constructors, one of - which uses the coefficients as-is and one of which adds an extra - zero of the appropriate type (and precision, where applicable). - (gt_ggc_mx, gt_pch_nx): Operate on poly_ints rather than poly_int_pods. - * poly-int-types.h (poly_uint16_pod, poly_int64_pod, poly_uint64_pod) - (poly_offset_int_pod, poly_wide_int_pod, poly_widest_int_pod): Delete. - * gengtype.cc (main): Don't register poly_int64_pod. - * calls.cc (initialize_argument_information): Use poly_int rather - than poly_int_pod. - (combine_pending_stack_adjustment_and_call): Likewise. - * config/aarch64/aarch64.cc (pure_scalable_type_info): Likewise. - * data-streamer.h (bp_unpack_poly_value): Likewise. - * dwarf2cfi.cc (struct dw_trace_info): Likewise. - (struct queued_reg_save): Likewise. - * dwarf2out.h (struct dw_cfa_location): Likewise. - * emit-rtl.h (struct incoming_args): Likewise. - (struct rtl_data): Likewise. - * expr.cc (get_bit_range): Likewise. - (get_inner_reference): Likewise. - * expr.h (get_bit_range): Likewise. - * fold-const.cc (split_address_to_core_and_offset): Likewise. - (ptr_difference_const): Likewise. - * fold-const.h (ptr_difference_const): Likewise. - * function.cc (try_fit_stack_local): Likewise. - (instantiate_new_reg): Likewise. - * function.h (struct expr_status): Likewise. - (struct args_size): Likewise. - * genmodes.cc (ZERO_COEFFS): Likewise. - (mode_size_inline): Likewise. - (mode_nunits_inline): Likewise. - (emit_mode_precision): Likewise. - (emit_mode_size): Likewise. - (emit_mode_nunits): Likewise. - * gimple-fold.cc (get_base_constructor): Likewise. - * gimple-ssa-store-merging.cc (struct symbolic_number): Likewise. - * inchash.h (class hash): Likewise. - * ipa-modref-tree.cc (modref_access_node::dump): Likewise. - * ipa-modref.cc (modref_access_analysis::merge_call_side_effects): - Likewise. - * ira-int.h (ira_spilled_reg_stack_slot): Likewise. - * lra-eliminations.cc (self_elim_offsets): Likewise. - * machmode.h (mode_size, mode_precision, mode_nunits): Likewise. - * omp-low.cc (omplow_simd_context): Likewise. - * pretty-print.cc (pp_wide_integer): Likewise. - * pretty-print.h (pp_wide_integer): Likewise. - * reload.cc (struct decomposition): Likewise. - * reload.h (struct reload): Likewise. - * reload1.cc (spill_stack_slot_width): Likewise. - (struct elim_table): Likewise. - (offsets_at): Likewise. - (init_eliminable_invariants): Likewise. - * rtl.h (union rtunion): Likewise. - (poly_int_rtx_p): Likewise. - (strip_offset): Likewise. - (strip_offset_and_add): Likewise. - * rtlanal.cc (strip_offset): Likewise. - * tree-dfa.cc (get_ref_base_and_extent): Likewise. - (get_addr_base_and_unit_offset_1): Likewise. - (get_addr_base_and_unit_offset): Likewise. - * tree-dfa.h (get_ref_base_and_extent): Likewise. - (get_addr_base_and_unit_offset_1): Likewise. - (get_addr_base_and_unit_offset): Likewise. - * tree-ssa-loop-ivopts.cc (struct iv_use): Likewise. - (strip_offset): Likewise. - * tree-ssa-sccvn.h (struct vn_reference_op_struct): Likewise. - * tree.cc (ptrdiff_tree_p): Likewise. - * tree.h (poly_int_tree_p): Likewise. - (ptrdiff_tree_p): Likewise. - (get_inner_reference): Likewise. - -2023-09-29 John David Anglin <danglin@gcc.gnu.org> - - * config/pa/pa.md (memory_barrier): Revise comment. - (memory_barrier_64, memory_barrier_32): Use ldcw,co on PA 2.0. - * config/pa/pa.opt (coherent-ldcw): Change default to disabled. - -2023-09-29 Jakub Jelinek <jakub@redhat.com> - - * vec.h (quick_insert, ordered_remove, unordered_remove, - block_remove, qsort, sort, stablesort, quick_grow): Guard - std::is_trivially_{copyable,default_constructible} and - vec_detail::is_trivially_copyable_or_pair static assertions - with GCC_VERSION >= 5000. - (vec_detail::is_trivially_copyable_or_pair): Guard definition - with GCC_VERSION >= 5000. - -2023-09-29 Manos Anagnostakis <manos.anagnostakis@vrull.eu> - - * config/aarch64/aarch64-opts.h (enum aarch64_ldp_policy): Removed. - (enum aarch64_ldp_stp_policy): Merged enums aarch64_ldp_policy - and aarch64_stp_policy to aarch64_ldp_stp_policy. - (enum aarch64_stp_policy): Removed. - * config/aarch64/aarch64-protos.h (struct tune_params): Removed - aarch64_ldp_policy_model and aarch64_stp_policy_model enum types - and left only the definitions to the aarch64-opts one. - * config/aarch64/aarch64.cc (aarch64_parse_ldp_policy): Removed. - (aarch64_parse_stp_policy): Removed. - (aarch64_override_options_internal): Removed calls to parsing - functions and added obvious direct assignments. - (aarch64_mem_ok_with_ldpstp_policy_model): Improved - code quality based on the new changes. - * config/aarch64/aarch64.opt: Use single enum type - aarch64_ldp_stp_policy for both ldp and stp options. - -2023-09-29 Richard Biener <rguenther@suse.de> - - PR tree-optimization/111583 - * tree-loop-distribution.cc (find_single_drs): Ensure the - load/store are always executed. - -2023-09-29 Jakub Jelinek <jakub@redhat.com> - - * tree-vect-patterns.cc (vect_recog_over_widening_pattern): Use - quick_grow_cleared method on unprom rather than quick_grow. - -2023-09-29 Sergei Trofimovich <siarheit@google.com> - - PR middle-end/111505 - * ggc-common.cc (ggc_zero_out_root_pointers, ggc_common_finalize): - Add new helper. Use helper instead of memset() to wipe out pointers. - -2023-09-29 Richard Sandiford <richard.sandiford@arm.com> - - * builtins.h (c_readstr): Take a fixed_size_mode rather than a - scalar_int_mode. - * builtins.cc (c_readstr): Likewise. Build a local array of - bytes and use native_decode_rtx to get the rtx image. - (builtin_memcpy_read_str): Simplify accordingly. - (builtin_strncpy_read_str): Likewise. - (builtin_memset_read_str): Likewise. - (builtin_memset_gen_str): Likewise. - * expr.cc (string_cst_read_str): Likewise. - -2023-09-29 Jakub Jelinek <jakub@redhat.com> - - * tree-ssa-loop-im.cc (tree_ssa_lim_initialize): Use quick_grow_cleared - instead of quick_grow on vec<bitmap_head> members. - * cfganal.cc (control_dependences::control_dependences): Likewise. - * rtl-ssa/blocks.cc (function_info::build_info::build_info): Likewise. - (function_info::place_phis): Use safe_grow_cleared instead of safe_grow - on auto_vec<bitmap_head> vars. - * tree-ssa-live.cc (compute_live_vars): Use quick_grow_cleared instead - of quick_grow on vec<bitmap_head> var. - -2023-09-28 Vladimir N. Makarov <vmakarov@redhat.com> - - Revert: - 2023-09-14 Vladimir N. Makarov <vmakarov@redhat.com> - - * ira-costs.cc (find_costs_and_classes): Decrease memory cost - by equiv savings. - -2023-09-28 Wilco Dijkstra <wilco.dijkstra@arm.com> - - PR target/111121 - * config/aarch64/aarch64.md (aarch64_movmemdi): Add new expander. - (movmemdi): Call aarch64_expand_cpymem_mops for correct expansion. - * config/aarch64/aarch64.cc (aarch64_expand_cpymem_mops): Add support - for memmove. - * config/aarch64/aarch64-protos.h (aarch64_expand_cpymem_mops): Add new - function. - -2023-09-28 Pan Li <pan2.li@intel.com> - - PR target/111506 - * config/riscv/autovec.md (<float_cvt><mode><vnnconvert>2): - New pattern. - * config/riscv/vector-iterators.md: New iterator. - -2023-09-28 Vladimir N. Makarov <vmakarov@redhat.com> - - * rtl.h (lra_in_progress): Change type to bool. - (ira_in_progress): Add new extern. - * ira.cc (ira_in_progress): New global. - (pass_ira::execute): Set up ira_in_progress. - * lra.cc: (lra_in_progress): Change type to bool and initialize. - (lra): Use bool values for lra_in_progress. - * lra-eliminations.cc (init_elim_table): Ditto. - -2023-09-28 Richard Biener <rguenther@suse.de> - - PR target/111600 - * gimple-ssa-warn-access.cc (pass_waccess::check_dangling_stores): - Use a heap allocated worklist for CFG traversal instead of - recursion. - -2023-09-28 Jakub Jelinek <jakub@redhat.com> - Jonathan Wakely <jwakely@redhat.com> - - * vec.h: Mention in file comment limited support for non-POD types - in some operations. - (vec_destruct): New function template. - (release): Use it for non-trivially destructible T. - (truncate): Likewise. - (quick_push): Perform a placement new into slot - instead of assignment. - (pop): For non-trivially destructible T return void - rather than T & and destruct the popped element. - (quick_insert, ordered_remove): Note that they aren't suitable - for non-trivially copyable types. Add static_asserts for that. - (block_remove): Assert T is trivially copyable. - (vec_detail::is_trivially_copyable_or_pair): New trait. - (qsort, sort, stablesort): Assert T is trivially copyable or - std::pair with both trivally copyable types. - (quick_grow): Add assert T is trivially default constructible, - for now commented out. - (quick_grow_cleared): Don't call quick_grow, instead inline it - by hand except for the new static_assert. - (gt_ggc_mx): Assert T is trivially destructable. - (auto_vec::operator=): Formatting fixes. - (auto_vec::auto_vec): Likewise. - (vec_safe_grow_cleared): Don't call vec_safe_grow, instead inline - it manually and call quick_grow_cleared method rather than quick_grow. - (safe_grow_cleared): Likewise. - * edit-context.cc (class line_event): Move definition earlier. - * tree-ssa-loop-im.cc (seq_entry::seq_entry): Make default ctor - defaulted. - * ipa-fnsummary.cc (evaluate_properties_for_edge): Use - safe_grow_cleared instead of safe_grow followed by placement new - constructing the elements. - -2023-09-28 Richard Sandiford <richard.sandiford@arm.com> - - * dwarf2out.cc (mem_loc_descriptor): Remove unused variables. - * tree-affine.cc (expr_to_aff_combination): Likewise. - -2023-09-28 Richard Biener <rguenther@suse.de> - - PR tree-optimization/111614 - * tree-ssa-reassoc.cc (undistribute_bitref_for_vector): Properly - convert the first vector when required. - -2023-09-28 xuli <xuli1@eswincomputing.com> - - PR target/111533 - * config/riscv/riscv-v.cc (expand_const_vector): Fix bug. - * config/riscv/riscv-vsetvl.cc (anticipatable_occurrence_p): Fix bug. - -2023-09-27 Sandra Loosemore <sandra@codesourcery.com> - - * gimple.cc (gimple_copy): Add case GIMPLE_OMP_STRUCTURED_BLOCK. - -2023-09-27 Iain Sandoe <iain@sandoe.co.uk> - - PR target/111610 - * configure: Regenerate. - * configure.ac: Rename the missing dsymutil case to "DET_UNKNOWN". - -2023-09-27 Manos Anagnostakis <manos.anagnostakis@vrull.eu> - Philipp Tomsich <philipp.tomsich@vrull.eu> - Manolis Tsamis <manolis.tsamis@vrull.eu> - - * config/aarch64/aarch64-opts.h (enum aarch64_ldp_policy): New - enum type. - (enum aarch64_stp_policy): New enum type. - * config/aarch64/aarch64-protos.h (struct tune_params): Add - appropriate enums for the policies. - (aarch64_mem_ok_with_ldpstp_policy_model): New declaration. - * config/aarch64/aarch64-tuning-flags.def - (AARCH64_EXTRA_TUNING_OPTION): Remove superseded tuning - options. - * config/aarch64/aarch64.cc (aarch64_parse_ldp_policy): New - function to parse ldp-policy parameter. - (aarch64_parse_stp_policy): New function to parse stp-policy parameter. - (aarch64_override_options_internal): Call parsing functions. - (aarch64_mem_ok_with_ldpstp_policy_model): New function. - (aarch64_operands_ok_for_ldpstp): Add call to - aarch64_mem_ok_with_ldpstp_policy_model for parameter-value - check and alignment check and remove superseded ones. - (aarch64_operands_adjust_ok_for_ldpstp): Add call to - aarch64_mem_ok_with_ldpstp_policy_model for parameter-value - check and alignment check and remove superseded ones. - * config/aarch64/aarch64.opt (aarch64-ldp-policy): New param. - (aarch64-stp-policy): New param. - * doc/invoke.texi: Document the parameters accordingly. - -2023-09-27 Andre Vieira <andre.simoesdiasvieira@arm.com> - - * tree-data-ref.cc (include calls.h): Add new include. - (get_references_in_stmt): Correctly handle IFN_MASK_CALL. - -2023-09-27 Richard Biener <rguenther@suse.de> - - * match.pd (abs (copysign (x, y)) -> abs (x)): New pattern. - -2023-09-27 Jakub Jelinek <jakub@redhat.com> - - PR c++/105606 - * system.h (BROKEN_VALUE_INITIALIZATION): Don't define. - * vec.h (vec_default_construct): Remove BROKEN_VALUE_INITIALIZATION - workaround. - * function.cc (assign_parm_find_data_types): Likewise. - -2023-09-27 Pan Li <pan2.li@intel.com> - - * config/riscv/autovec.md (roundeven<mode>2): New pattern. - * config/riscv/riscv-protos.h (enum insn_flags): New enum type. - (enum insn_type): Ditto. - (expand_vec_roundeven): New func decl. - * config/riscv/riscv-v.cc (expand_vec_roundeven): New func impl. - -2023-09-27 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - PR target/111590 - * dse.cc (find_shift_sequence): Check the mode with access_size exist on the target. - -2023-09-27 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * tree-if-conv.cc (is_cond_scalar_reduction): Fix comments. - -2023-09-27 Pan Li <pan2.li@intel.com> - - * config/riscv/autovec.md (btrunc<mode>2): New pattern. - * config/riscv/riscv-protos.h (expand_vec_trunc): New func decl. - * config/riscv/riscv-v.cc (emit_vec_cvt_x_f_rtz): New func impl. - (expand_vec_trunc): Ditto. - -2023-09-26 Hans-Peter Nilsson <hp@axis.com> - - PR target/107567 - PR target/109166 - * builtins.cc (expand_builtin) <case BUILT_IN_ATOMIC_TEST_AND_SET>: - Handle failure from expand_builtin_atomic_test_and_set. - * optabs.cc (expand_atomic_test_and_set): When all attempts fail to - generate atomic code through target support, return NULL - instead of emitting non-atomic code. Also, for code handling - targetm.atomic_test_and_set_trueval != 1, gcc_assert result - from calling emit_store_flag_force instead of returning NULL. - -2023-09-26 Andrew MacLeod <amacleod@redhat.com> - - PR tree-optimization/111599 - * value-relation.cc (relation_oracle::valid_equivs): Ensure - ssa_name is valid. - -2023-09-26 Andrew Pinski <apinski@marvell.com> - - PR tree-optimization/106164 - PR tree-optimization/111456 - * match.pd (`(A ==/!= B) & (A CMP C)`): - Support an optional cast on the second A. - (`(A ==/!= B) | (A CMP C)`): Likewise. - -2023-09-26 Andrew Pinski <apinski@marvell.com> - - PR tree-optimization/111469 - * tree-ssa-phiopt.cc (minmax_replacement): Fix - the assumption for the `non-diamond` handling cases - of diamond code. - -2023-09-26 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * match.pd: Optimize COND_ADD reduction pattern. - -2023-09-26 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - PR tree-optimization/111594 - PR tree-optimization/110660 - * match.pd: Optimize COND_LEN_ADD reduction. - -2023-09-26 Pan Li <pan2.li@intel.com> - - * config/riscv/autovec.md (round<mode>2): New pattern. - * config/riscv/riscv-protos.h (enum insn_flags): New enum type. - (enum insn_type): Ditto. - (expand_vec_round): New function decl. - * config/riscv/riscv-v.cc (expand_vec_round): New function impl. - -2023-09-26 Iain Sandoe <iain@sandoe.co.uk> - - * config/darwin.h (DARWIN_CC1_SPEC): Remove -dynamiclib. - -2023-09-26 Tobias Burnus <tobias@codesourcery.com> - - PR middle-end/111547 - * doc/invoke.texi (-fopenmp): Mention C++11 [[omp::decl(...)]] syntax. - (-fopenmp-simd): Likewise. Clarify 'loop' directive semantic. - -2023-09-26 Pan Li <pan2.li@intel.com> - - * config/riscv/autovec.md (rint<mode>2): New pattern. - * config/riscv/riscv-protos.h (expand_vec_rint): New function decl. - * config/riscv/riscv-v.cc (expand_vec_rint): New function impl. - -2023-09-26 Pan Li <pan2.li@intel.com> - - * config/riscv/autovec.md (nearbyint<mode>2): New pattern. - * config/riscv/riscv-protos.h (enum insn_type): New enum. - (expand_vec_nearbyint): New function decl. - * config/riscv/riscv-v.cc (expand_vec_nearbyint): New func impl. - -2023-09-26 Pan Li <pan2.li@intel.com> - - * config/riscv/riscv-v.cc (gen_ceil_const_fp): Remove. - (get_fp_rounding_coefficient): Rename. - (gen_floor_const_fp): Remove. - (expand_vec_ceil): Take renamed func. - (expand_vec_floor): Ditto. - -2023-09-25 Vladimir N. Makarov <vmakarov@redhat.com> - - PR middle-end/111497 - * lra-constraints.cc (lra_constraints): Copy substituted - equivalence. - * lra.cc (lra): Change comment for calling unshare_all_rtl_again. - -2023-09-25 Eric Botcazou <ebotcazou@adacore.com> - - * gimple-range-gori.cc (gori_compute::logical_combine): Add missing - return statement in the varying case. - -2023-09-25 Xi Ruoyao <xry111@xry111.site> - - * doc/invoke.texi: Update -m[no-]explicit-relocs for r14-4160. - -2023-09-25 Andrew Pinski <apinski@marvell.com> - - PR tree-optimization/110386 - * gimple-ssa-backprop.cc (strip_sign_op_1): Remove ABSU_EXPR. - -2023-09-25 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - PR target/111548 - * config/riscv/riscv-vsetvl.cc (earliest_pred_can_be_fused_p): Bugfix - -2023-09-25 Kewen Lin <linkw@linux.ibm.com> - - PR target/111366 - * config/rs6000/rs6000.cc (rs6000_update_ipa_fn_target_info): Skip - empty inline asm. - -2023-09-25 Kewen Lin <linkw@linux.ibm.com> - - PR target/111380 - * config/rs6000/rs6000.cc (rs6000_can_inline_p): Adopt - target_option_default_node when the callee has no option - attributes, also simplify the existing code accordingly. - -2023-09-25 Guo Jie <guojie@loongson.cn> - - * config/loongarch/lasx.md (lasx_vecinit_merge_<LASX:mode>): New - pattern for vector construction. - (vec_set<mode>_internal): Ditto. - (lasx_xvinsgr2vr_<mode256_i_half>_internal): Ditto. - (lasx_xvilvl_<lasxfmt_f>_internal): Ditto. - * config/loongarch/loongarch.cc (loongarch_expand_vector_init): - Optimized the implementation of vector construction. - (loongarch_expand_vector_init_same): New function. - * config/loongarch/lsx.md (lsx_vilvl_<lsxfmt_f>_internal): New - pattern for vector construction. - (lsx_vreplvei_mirror_<lsxfmt_f>): New pattern for vector - construction. - (vec_concatv2df): Ditto. - (vec_concatv4sf): Ditto. - -2023-09-24 Pan Li <pan2.li@intel.com> - - PR target/111546 - * config/riscv/riscv-v.cc - (expand_vector_init_merge_repeating_sequence): Bugfix - -2023-09-24 Andrew Pinski <apinski@marvell.com> - - PR tree-optimization/111543 - * match.pd (`(X & ~Y) & Y`, `(X | ~Y) | Y`): New patterns. - -2023-09-24 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/autovec-opt.md: Extend VLS modes - * config/riscv/vector-iterators.md: Ditto. - -2023-09-23 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/autovec-opt.md: Add VLS modes for conditional ABS/SQRT. - -2023-09-23 Pan Li <pan2.li@intel.com> - - * config/riscv/autovec.md (floor<mode>2): New pattern. - * config/riscv/riscv-protos.h (enum insn_flags): New enum type. - (enum insn_type): Ditto. - (expand_vec_floor): New function decl. - * config/riscv/riscv-v.cc (gen_floor_const_fp): New function impl. - (expand_vec_floor): Ditto. - -2023-09-22 Pan Li <pan2.li@intel.com> - - * config/riscv/riscv-v.cc (expand_vec_float_cmp_mask): Refactor. - (emit_vec_float_cmp_mask): Rename. - (expand_vec_copysign): Ditto. - (emit_vec_copysign): Ditto. - (emit_vec_abs): New function impl. - (emit_vec_cvt_x_f): Ditto. - (emit_vec_cvt_f_x): Ditto. - (expand_vec_ceil): Ditto. - -2023-09-22 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/vector-iterators.md: Extend VLS modes. - -2023-09-22 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv-v.cc (gen_const_vector_dup): Use global expand function. - * config/riscv/vector.md (@vec_duplicate<mode>): Remove @. - (vec_duplicate<mode>): Ditto. - -2023-09-22 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/autovec.md: Add VLS conditional patterns. - * config/riscv/riscv-protos.h (expand_cond_unop): Ditto. - (expand_cond_binop): Ditto. - (expand_cond_ternop): Ditto. - * config/riscv/riscv-v.cc (expand_cond_unop): Ditto. - (expand_cond_binop): Ditto. - (expand_cond_ternop): Ditto. - -2023-09-22 xuli <xuli1@eswincomputing.com> - - PR target/111451 - * config/riscv/riscv-v.cc (emit_vlmax_gather_insn): Optimization of vrgather.vv - into vrgatherei16.vv. - -2023-09-22 Lehua Ding <lehua.ding@rivai.ai> - - * config/riscv/autovec-opt.md (*cond_widen_reduc_plus_scal_<mode>): - New combine patterns. - * config/riscv/riscv-protos.h (enum insn_type): New insn_type. - -2023-09-22 Lehua Ding <lehua.ding@rivai.ai> - - * config/riscv/riscv-protos.h (enum avl_type): New VLS avl_type. - * config/riscv/riscv-v.cc (autovec_use_vlmax_p): Move comments. - -2023-09-22 Pan Li <pan2.li@intel.com> - - * config/riscv/autovec.md (ceil<mode>2): New pattern. - * config/riscv/riscv-protos.h (enum insn_flags): New enum type. - (enum insn_type): Ditto. - (expand_vec_ceil): New function decl. - * config/riscv/riscv-v.cc (gen_ceil_const_fp): New function impl. - (expand_vec_float_cmp_mask): Ditto. - (expand_vec_copysign): Ditto. - (expand_vec_ceil): Ditto. - * config/riscv/vector.md: Add VLS mode support. - -2023-09-21 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/autovec.md: Extend VLS modes. - -2023-09-21 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/vector-iterators.md: Extend VLS modes. - -2023-09-21 Lehua Ding <lehua.ding@rivai.ai> - Robin Dapp <rdapp.gcc@gmail.com> - - * config/riscv/riscv-v.cc (emit_vlmax_insn): Adjust comments. - (emit_nonvlmax_insn): Adjust comments. - (emit_vlmax_insn_lra): Adjust comments. - -2023-09-21 Iain Buclaw <ibuclaw@gdcproject.org> - - * config.gcc (*linux*): Set rust target_objs, and - target_has_targetrustm, - * config/t-linux (linux-rust.o): New rule. - * config/linux-rust.cc: New file. - -2023-09-21 Iain Buclaw <ibuclaw@gdcproject.org> - - * config.gcc (i[34567]86-*-mingw* | x86_64-*-mingw*): Set - rust_target_objs and target_has_targetrustm. - * config/t-winnt (winnt-rust.o): New rule. - * config/winnt-rust.cc: New file. - -2023-09-21 Iain Buclaw <ibuclaw@gdcproject.org> - - * config.gcc (*-*-fuchsia): Set tmake_rule, rust_target_objs, - and target_has_targetrustm. - * config/fuchsia-rust.cc: New file. - * config/t-fuchsia: New file. - -2023-09-21 Iain Buclaw <ibuclaw@gdcproject.org> - - * config.gcc (*-*-vxworks*): Set rust_target_objs and - target_has_targetrustm. - * config/t-vxworks (vxworks-rust.o): New rule. - * config/vxworks-rust.cc: New file. - -2023-09-21 Iain Buclaw <ibuclaw@gdcproject.org> - - * config.gcc (*-*-dragonfly*): Set rust_target_objs and - target_has_targetrustm. - * config/t-dragonfly (dragonfly-rust.o): New rule. - * config/dragonfly-rust.cc: New file. - -2023-09-21 Iain Buclaw <ibuclaw@gdcproject.org> - - * config.gcc (*-*-solaris2*): Set rust_target_objs and - target_has_targetrustm. - * config/t-sol2 (sol2-rust.o): New rule. - * config/sol2-rust.cc: New file. - -2023-09-21 Iain Buclaw <ibuclaw@gdcproject.org> - - * config.gcc (*-*-openbsd*): Set rust_target_objs and - target_has_targetrustm. - * config/t-openbsd (openbsd-rust.o): New rule. - * config/openbsd-rust.cc: New file. - -2023-09-21 Iain Buclaw <ibuclaw@gdcproject.org> - - * config.gcc (*-*-netbsd*): Set rust_target_objs and - target_has_targetrustm. - * config/t-netbsd (netbsd-rust.o): New rule. - * config/netbsd-rust.cc: New file. - -2023-09-21 Iain Buclaw <ibuclaw@gdcproject.org> - - * config.gcc (*-*-freebsd*): Set rust_target_objs and - target_has_targetrustm. - * config/t-freebsd (freebsd-rust.o): New rule. - * config/freebsd-rust.cc: New file. - -2023-09-21 Iain Buclaw <ibuclaw@gdcproject.org> - - * config.gcc (*-*-darwin*): Set rust_target_objs and - target_has_targetrustm. - * config/t-darwin (darwin-rust.o): New rule. - * config/darwin-rust.cc: New file. - -2023-09-21 Iain Buclaw <ibuclaw@gdcproject.org> - - * config/i386/t-i386 (i386-rust.o): New rule. - * config/i386/i386-rust.cc: New file. - * config/i386/i386-rust.h: New file. - -2023-09-21 Iain Buclaw <ibuclaw@gdcproject.org> - - * doc/tm.texi: Regenerate. - * doc/tm.texi.in: Document TARGET_RUST_OS_INFO. - -2023-09-21 Iain Buclaw <ibuclaw@gdcproject.org> - - * doc/tm.texi: Regenerate. - * doc/tm.texi.in: Add @node for Rust language and ABI, and document - TARGET_RUST_CPU_INFO. - -2023-09-21 Iain Buclaw <ibuclaw@gdcproject.org> - - * Makefile.in (tm_rust_file_list, tm_rust_include_list, TM_RUST_H, - RUST_TARGET_DEF, RUST_TARGET_H, RUST_TARGET_OBJS): New variables. - (tm_rust.h, cs-tm_rust.h, default-rust.o, - rust/rust-target-hooks-def.h, s-rust-target-hooks-def-h): New rules. - (s-tm-texi): Also check timestamp on rust-target.def. - (generated_files): Add TM_RUST_H and rust-target-hooks-def.h. - (build/genhooks.o): Also depend on RUST_TARGET_DEF. - * config.gcc (tm_rust_file, rust_target_objs, target_has_targetrustm): - New variables. - * configure: Regenerate. - * configure.ac (tm_rust_file_list, tm_rust_include_list, - rust_target_objs): Add substitutes. - * doc/tm.texi: Regenerate. - * doc/tm.texi.in (targetrustm): Document. - (target_has_targetrustm): Document. - * genhooks.cc: Include rust/rust-target.def. - * config/default-rust.cc: New file. - -2023-09-21 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - PR target/110751 - * config/riscv/autovec.md: Enable scratch rtx in ELSE operand. - * config/riscv/predicates.md (autovec_else_operand): New predicate. - * config/riscv/riscv-v.cc (get_else_operand): New function. - (expand_cond_len_unop): Adapt ELSE value. - (expand_cond_len_binop): Ditto. - (expand_cond_len_ternop): Ditto. - * config/riscv/riscv.cc (riscv_preferred_else_value): New function. - (TARGET_PREFERRED_ELSE_VALUE): New targethook. - -2023-09-21 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - PR target/111486 - * config/riscv/riscv.cc (riscv_legitimize_move): Fix bug. - -2023-09-21 Jiufu Guo <guojiufu@linux.ibm.com> - - PR tree-optimization/111355 - * match.pd ((X + C) / N): Update pattern. - -2023-09-21 Jiufu Guo <guojiufu@linux.ibm.com> - - * match.pd ((t * 2) / 2): Update to use overflow_free_p. - -2023-09-21 xuli <xuli1@eswincomputing.com> - - PR target/111450 - * config/riscv/constraints.md (c01): const_int 1. - (c02): const_int 2. - (c04): const_int 4. - (c08): const_int 8. - * config/riscv/predicates.md (vector_eew8_stride_operand): New predicate for stride operand. - (vector_eew16_stride_operand): Ditto. - (vector_eew32_stride_operand): Ditto. - (vector_eew64_stride_operand): Ditto. - * config/riscv/vector-iterators.md: New iterator for stride operand. - * config/riscv/vector.md: Add stride = element width constraint. - -2023-09-21 Lehua Ding <lehua.ding@rivai.ai> - - * config/riscv/predicates.md (const_1_or_2_operand): Rename. - (const_1_or_4_operand): Ditto. - (vector_gs_scale_operand_16): Ditto. - (vector_gs_scale_operand_32): Ditto. - * config/riscv/vector-iterators.md: Adjust. - -2023-09-21 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/autovec.md: Extend VLS modes. - * config/riscv/vector-iterators.md: Ditto. - * config/riscv/vector.md: Ditto. - -2023-09-20 Andrew MacLeod <amacleod@redhat.com> - - * gimple-range-cache.cc (ssa_cache::merge_range): Change meaning - of the return value. - (ssa_cache::dump): Don't print GLOBAL RANGE header. - (ssa_lazy_cache::merge_range): Adjust return value meaning. - (ranger_cache::dump): Print GLOBAL RANGE header. - -2023-09-20 Aldy Hernandez <aldyh@redhat.com> - - * range-op-float.cc (foperator_unordered_ge::fold_range): Remove - special casing. - (foperator_unordered_gt::fold_range): Same. - (foperator_unordered_lt::fold_range): Same. - (foperator_unordered_le::fold_range): Same. - -2023-09-20 Jakub Jelinek <jakub@redhat.com> - - * builtins.h (type_to_class): Declare. - * builtins.cc (type_to_class): No longer static. Return - int rather than enum. - * doc/extend.texi (__builtin_classify_type): Document. - -2023-09-20 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - PR target/110751 - * internal-fn.cc (expand_fn_using_insn): Support undefined rtx value. - * optabs.cc (maybe_legitimize_operand): Ditto. - (can_reuse_operands_p): Ditto. - * optabs.h (enum expand_operand_type): Ditto. - (create_undefined_input_operand): Ditto. - -2023-09-20 Tobias Burnus <tobias@codesourcery.com> - - * gimplify.cc (gimplify_bind_expr): Call GOMP_alloc/free for - 'omp allocate' variables; move stack cleanup after other - cleanup. - (omp_notice_variable): Process original decl when decl - of the value-expression for a 'omp allocate' variable is passed. - * omp-low.cc (scan_omp_1_op): Handle 'omp allocate' variables - -2023-09-20 Yanzhang Wang <yanzhang.wang@intel.com> - - * simplify-rtx.cc (simplify_context::simplify_binary_operation_1): - support simplifying vector int not only scalar int. - -2023-09-20 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/vector-iterators.md: Extend VLS floating-point. - -2023-09-20 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv-vsetvl.cc (vector_insn_info::operator==): Fix bug. - -2023-09-20 Iain Sandoe <iain@sandoe.co.uk> - - * config/darwin.h: - (SUBTARGET_DRIVER_SELF_SPECS): Move handling of 'shared' into the same - specs as 'dynamiclib'. (STARTFILE_SPEC): Handle 'shared'. - -2023-09-20 Richard Biener <rguenther@suse.de> - - PR tree-optimization/111489 - * params.opt (-param uninit-max-chain-len=): Raise default to 8. - -2023-09-20 Richard Biener <rguenther@suse.de> - - PR tree-optimization/111489 - * doc/invoke.texi (--param uninit-max-chain-len): Document. - (--param uninit-max-num-chains): Likewise. - * params.opt (-param=uninit-max-chain-len=): New. - (-param=uninit-max-num-chains=): Likewise. - * gimple-predicate-analysis.cc (MAX_NUM_CHAINS): Define to - param_uninit_max_num_chains. - (MAX_CHAIN_LEN): Define to param_uninit_max_chain_len. - (uninit_analysis::init_use_preds): Avoid VLA. - (uninit_analysis::init_from_phi_def): Likewise. - (compute_control_dep_chain): Avoid using MAX_CHAIN_LEN in - template parameter. - -2023-09-20 Jakub Jelinek <jakub@redhat.com> - - * match.pd ((x << c) >> c): Use MAX_FIXED_MODE_SIZE instead of - GET_MODE_PRECISION of TImode or DImode depending on whether - TImode is supported scalar mode. - * gimple-lower-bitint.cc (bitint_precision_kind): Likewise. - * expr.cc (expand_expr_real_1): Likewise. - * tree-ssa-sccvn.cc (eliminate_dom_walker::eliminate_stmt): Likewise. - * ubsan.cc (ubsan_encode_value, ubsan_type_descriptor): Likewise. - -2023-09-20 Lehua Ding <lehua.ding@rivai.ai> - - * config/riscv/autovec-opt.md (*<optab>not<mode>): Move and rename. - (*n<optab><mode>): Ditto. - (*v<any_shiftrt:optab><any_extend:optab>trunc<mode>): Ditto. - (*<any_shiftrt:optab>trunc<mode>): Ditto. - (*narrow_<any_shiftrt:optab><any_extend:optab><mode>): Ditto. - (*narrow_<any_shiftrt:optab><mode>_scalar): Ditto. - (*single_widen_mult<any_extend:su><mode>): Ditto. - (*single_widen_mul<any_extend:su><mode>): Ditto. - (*single_widen_mult<mode>): Ditto. - (*single_widen_mul<mode>): Ditto. - (*dual_widen_fma<mode>): Ditto. - (*dual_widen_fma<su><mode>): Ditto. - (*single_widen_fma<mode>): Ditto. - (*single_widen_fma<su><mode>): Ditto. - (*dual_fma<mode>): Ditto. - (*single_fma<mode>): Ditto. - (*dual_fnma<mode>): Ditto. - (*dual_widen_fnma<mode>): Ditto. - (*single_fnma<mode>): Ditto. - (*single_widen_fnma<mode>): Ditto. - (*dual_fms<mode>): Ditto. - (*dual_widen_fms<mode>): Ditto. - (*single_fms<mode>): Ditto. - (*single_widen_fms<mode>): Ditto. - (*dual_fnms<mode>): Ditto. - (*dual_widen_fnms<mode>): Ditto. - (*single_fnms<mode>): Ditto. - (*single_widen_fnms<mode>): Ditto. - -2023-09-20 Jakub Jelinek <jakub@redhat.com> - - PR c++/111392 - * attribs.cc (decl_attributes): Don't warn on omp::directive attribute - on vars or function decls if -fopenmp or -fopenmp-simd. - -2023-09-20 Lehua Ding <lehua.ding@rivai.ai> - - PR target/111488 - * config/riscv/autovec-opt.md: Add missed operand. - -2023-09-20 Omar Sandoval <osandov@osandov.com> - - PR debug/111409 - * dwarf2out.cc (output_macinfo): Don't call optimize_macinfo_range if - dwarf_split_debug_info. - -2023-09-20 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv-v.cc (can_find_related_mode_p): New function. - (vectorize_related_mode): Add VLS related modes. - * config/riscv/vector-iterators.md: Extend VLS modes. - -2023-09-20 Surya Kumari Jangala <jskumari@linux.ibm.com> - - PR rtl-optimization/110071 - * ira-color.cc (improve_allocation): Consider cost of callee - save registers. - -2023-09-20 mengqinggang <mengqinggang@loongson.cn> - Xi Ruoyao <xry111@xry111.site> - - * configure: Regenerate. - * configure.ac: Checking assembler for -mno-relax support. - Disable relaxation when probing leb128 support. - -2023-09-20 Lulu Cheng <chenglulu@loongson.cn> - - * config.in: Regenerate. - * config/loongarch/genopts/loongarch.opt.in: Add compilation option - mrelax. And set the initial value of explicit-relocs according to the - detection status. - * config/loongarch/gnu-user.h: When compiling with -mno-relax, pass the - --no-relax option to the linker. - * config/loongarch/loongarch-driver.h (ASM_SPEC): When compiling with - -mno-relax, pass the -mno-relax option to the assembler. - * config/loongarch/loongarch-opts.h (HAVE_AS_MRELAX_OPTION): Define macro. - * config/loongarch/loongarch.opt: Regenerate. - * configure: Regenerate. - * configure.ac: Add detection of support for binutils relax function. - -2023-09-19 Ben Boeckel <ben.boeckel@kitware.com> - - * doc/invoke.texi: Document -fdeps-format=, -fdeps-file=, and - -fdeps-target= flags. - * gcc.cc: add defaults for -fdeps-target= and -fdeps-file= when - only -fdeps-format= is specified. - * json.h: Add a TODO item to refactor out to share with - `libcpp/mkdeps.cc`. - -2023-09-19 Ben Boeckel <ben.boeckel@kitware.com> - Jason Merrill <jason@redhat.com> - - * gcc.cc (join_spec_func): Add a spec function to join all - arguments. - -2023-09-19 Patrick O'Neill <patrick@rivosinc.com> - - * config/riscv/riscv.cc (riscv_legitimize_const_move): Eliminate - src_op_0 var to avoid rtl check error. - -2023-09-19 Aldy Hernandez <aldyh@redhat.com> - - * range-op-float.cc (frelop_early_resolve): Clean-up and remove - special casing. - (operator_not_equal::fold_range): Handle VREL_EQ. - (operator_lt::fold_range): Remove special casing for VREL_EQ. - (operator_gt::fold_range): Same. - (foperator_unordered_equal::fold_range): Same. - -2023-09-19 Javier Martinez <javier.martinez.bugzilla@gmail.com> - - * doc/extend.texi: Document attributes hot, cold on C++ types. - -2023-09-19 Pat Haugen <pthaugen@linux.ibm.com> - - * config/rs6000/rs6000.cc (rs6000_rtx_costs): Check whether the - modulo instruction is disabled. - * config/rs6000/rs6000.h (RS6000_DISABLE_SCALAR_MODULO): New. - * config/rs6000/rs6000.md (mod<mode>3, *mod<mode>3): Check it. - (define_expand umod<mode>3): New. - (define_insn umod<mode>3): Rename to *umod<mode>3 and check if the modulo - instruction is disabled. - (umodti3, modti3): Check if the modulo instruction is disabled. - -2023-09-19 Gaius Mulley <gaiusmod2@gmail.com> - - * doc/gm2.texi (fdebug-builtins): Correct description. - -2023-09-19 Jeff Law <jlaw@ventanamicro.com> - - * config/iq2000/predicates.md (uns_arith_constant): New predicate. - * config/iq2000/iq2000.md (rotrsi3): Use it. - -2023-09-19 Aldy Hernandez <aldyh@redhat.com> - - * range-op-float.cc (operator_lt::op1_range): Remove known_isnan check. - (operator_lt::op2_range): Same. - (operator_le::op1_range): Same. - (operator_le::op2_range): Same. - (operator_gt::op1_range): Same. - (operator_gt::op2_range): Same. - (operator_ge::op1_range): Same. - (operator_ge::op2_range): Same. - (foperator_unordered_lt::op1_range): Same. - (foperator_unordered_lt::op2_range): Same. - (foperator_unordered_le::op1_range): Same. - (foperator_unordered_le::op2_range): Same. - (foperator_unordered_gt::op1_range): Same. - (foperator_unordered_gt::op2_range): Same. - (foperator_unordered_ge::op1_range): Same. - (foperator_unordered_ge::op2_range): Same. - -2023-09-19 Aldy Hernandez <aldyh@redhat.com> - - * value-range.h (frange::update_nan): New. - -2023-09-19 Aldy Hernandez <aldyh@redhat.com> - - * range-op-float.cc (operator_not_equal::op2_range): New. - * range-op-mixed.h: Add operator_not_equal::op2_range. - -2023-09-19 Andrew MacLeod <amacleod@redhat.com> - - PR tree-optimization/110080 - PR tree-optimization/110249 - * tree-vrp.cc (remove_unreachable::final_p): New. - (remove_unreachable::maybe_register): Rename from - maybe_register_block and call early or final routine. - (fully_replaceable): New. - (remove_unreachable::handle_early): New. - (remove_unreachable::remove_and_update_globals): Remove - non-final processing. - (rvrp_folder::rvrp_folder): Add final flag to constructor. - (rvrp_folder::post_fold_bb): Remove unreachable registration. - (rvrp_folder::pre_fold_stmt): Move unreachable processing to here. - (execute_ranger_vrp): Adjust some call parameters. - -2023-09-19 Richard Biener <rguenther@suse.de> - - PR c/111468 - * tree-pretty-print.h (op_symbol_code): Add defaulted flags - argument. - * tree-pretty-print.cc (op_symbol): Likewise. - (op_symbol_code): Print TDF_GIMPLE variant if requested. - * gimple-pretty-print.cc (dump_binary_rhs): Pass flags to - op_symbol_code. - (dump_gimple_cond): Likewise. - -2023-09-19 Thomas Schwinge <thomas@codesourcery.com> - Pan Li <pan2.li@intel.com> - - * tree-streamer.h (bp_unpack_machine_mode): If - 'ib->file_data->mode_table' not available, apply 1-to-1 mapping. - -2023-09-19 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv.cc (riscv_can_change_mode_class): Block unordered VLA and VLS modes. - -2023-09-19 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/autovec.md: Extend VLS modes. - * config/riscv/vector.md: Ditto. - -2023-09-19 Richard Biener <rguenther@suse.de> - - PR tree-optimization/111465 - * tree-ssa-threadupdate.cc (fwd_jt_path_registry::thread_block_1): - Cancel the path when a EDGE_NO_COPY_SRC_BLOCK became non-empty. - -2023-09-19 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/autovec.md: Extend VLS floating-point modes. - * config/riscv/vector.md: Ditto. - -2023-09-19 Jakub Jelinek <jakub@redhat.com> - - * match.pd ((x << c) >> c): Don't call build_nonstandard_integer_type - nor check type_has_mode_precision_p for width larger than [TD]Imode - precision. - (a ? CST1 : CST2): Don't use build_nonstandard_type, just convert - to type. Use boolean_true_node instead of - constant_boolean_node (true, boolean_type_node). Formatting fixes. - -2023-09-19 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/autovec.md: Add VLS modes. - * config/riscv/vector.md: Ditto. - -2023-09-19 Jakub Jelinek <jakub@redhat.com> - - * tree.cc (build_bitint_type): Assert precision is not 0, or - for signed types 1. - (signed_or_unsigned_type_for): Return INTEGER_TYPE for signed variant - of unsigned _BitInt(1). - -2023-09-19 Lehua Ding <lehua.ding@rivai.ai> - - * config/riscv/autovec-opt.md (*<optab>_fma<mode>): - Removed old combine patterns. - (*single_<optab>mult_plus<mode>): Ditto. - (*double_<optab>mult_plus<mode>): Ditto. - (*sign_zero_extend_fma): Ditto. - (*zero_sign_extend_fma): Ditto. - (*double_widen_fma<mode>): Ditto. - (*single_widen_fma<mode>): Ditto. - (*double_widen_fnma<mode>): Ditto. - (*single_widen_fnma<mode>): Ditto. - (*double_widen_fms<mode>): Ditto. - (*single_widen_fms<mode>): Ditto. - (*double_widen_fnms<mode>): Ditto. - (*single_widen_fnms<mode>): Ditto. - (*reduc_plus_scal_<mode>): Adjust name. - (*widen_reduc_plus_scal_<mode>): Adjust name. - (*dual_widen_fma<mode>): New combine pattern. - (*dual_widen_fmasu<mode>): Ditto. - (*dual_widen_fmaus<mode>): Ditto. - (*dual_fma<mode>): Ditto. - (*single_fma<mode>): Ditto. - (*dual_fnma<mode>): Ditto. - (*single_fnma<mode>): Ditto. - (*dual_fms<mode>): Ditto. - (*single_fms<mode>): Ditto. - (*dual_fnms<mode>): Ditto. - (*single_fnms<mode>): Ditto. - * config/riscv/autovec.md (fma<mode>4): - Reafctor fma pattern. - (*fma<VI:mode><P:mode>): Removed. - (fnma<mode>4): Reafctor. - (*fnma<VI:mode><P:mode>): Removed. - (*fma<VF:mode><P:mode>): Removed. - (*fnma<VF:mode><P:mode>): Removed. - (fms<mode>4): Reafctor. - (*fms<VF:mode><P:mode>): Removed. - (fnms<mode>4): Reafctor. - (*fnms<VF:mode><P:mode>): Removed. - * config/riscv/riscv-protos.h (prepare_ternary_operands): - Adjust prototype. - * config/riscv/riscv-v.cc (prepare_ternary_operands): Refactor. - * config/riscv/vector.md (*pred_mul_plus<mode>_undef): New pattern. - (*pred_mul_plus<mode>): Removed. - (*pred_mul_plus<mode>_scalar): Removed. - (*pred_mul_plus<mode>_extended_scalar): Removed. - (*pred_minus_mul<mode>_undef): New pattern. - (*pred_minus_mul<mode>): Removed. - (*pred_minus_mul<mode>_scalar): Removed. - (*pred_minus_mul<mode>_extended_scalar): Removed. - (*pred_mul_<optab><mode>_undef): New pattern. - (*pred_mul_<optab><mode>): Removed. - (*pred_mul_<optab><mode>_scalar): Removed. - (*pred_mul_neg_<optab><mode>_undef): New pattern. - (*pred_mul_neg_<optab><mode>): Removed. - (*pred_mul_neg_<optab><mode>_scalar): Removed. - -2023-09-19 Tsukasa OI <research_trasio@irq.a4lg.com> - - * config/riscv/riscv-vector-builtins.cc - (builtin_decl, expand_builtin): Replace SVE with RVV. - -2023-09-19 Tsukasa OI <research_trasio@irq.a4lg.com> - - * config/riscv/t-riscv: Add dependencies for riscv-builtins.cc, - riscv-cmo.def and riscv-scalar-crypto.def. - -2023-09-18 Pan Li <pan2.li@intel.com> - - * config/riscv/autovec.md: Extend to vls mode. - -2023-09-18 Pan Li <pan2.li@intel.com> - - * config/riscv/autovec.md: Bugfix. - * config/riscv/riscv-protos.h (SCALAR_MOVE_MERGED_OP): New enum. - -2023-09-18 Andrew Pinski <apinski@marvell.com> - - PR tree-optimization/111442 - * match.pd (zero_one_valued_p): Have the bit_and match not be - recursive. - -2023-09-18 Andrew Pinski <apinski@marvell.com> - - PR tree-optimization/111435 - * match.pd (zero_one_valued_p): Don't do recursion - on converts. - -2023-09-18 Iain Sandoe <iain@sandoe.co.uk> - - * config/darwin-protos.h (enum darwin_external_toolchain): New. - * config/darwin.cc (DSYMUTIL_VERSION): New. - (darwin_override_options): Choose the default debug DWARF version - depending on the configured dsymutil version. - -2023-09-18 Iain Sandoe <iain@sandoe.co.uk> - - * configure: Regenerate. - * configure.ac: Handle explict disable of stdlib option, set - defaults for Darwin. - -2023-09-18 Andrew Pinski <apinski@marvell.com> - - PR tree-optimization/111431 - * match.pd (`(a == CST) & a`): New pattern. - -2023-09-18 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv-selftests.cc (run_broadcast_selftests): Adapt selftests. - * config/riscv/vector.md (@vec_duplicate<mode>): Remove. - -2023-09-18 Wilco Dijkstra <wilco.dijkstra@arm.com> - - PR target/105928 - * config/aarch64/aarch64.cc (aarch64_internal_mov_immediate) - Add support for immediates using shifted ORR/BIC. - (aarch64_split_dimode_const_store): Apply if we save one instruction. - * config/aarch64/aarch64.md (<LOGICAL:optab>_<SHIFT:optab><mode>3): - Make pattern global. - -2023-09-18 Wilco Dijkstra <wilco.dijkstra@arm.com> - - * config/aarch64/aarch64-cores.def (neoverse-n1): Place before ares. - (neoverse-v1): Place before zeus. - (neoverse-v2): Place before demeter. - * config/aarch64/aarch64-tune.md: Regenerate. - -2023-09-18 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/autovec.md: Add VLS modes. - * config/riscv/vector-iterators.md: Ditto. - * config/riscv/vector.md: Ditto. - -2023-09-18 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv-vsetvl.cc (vlmul_for_greatest_sew_second_ratio): New function. - * config/riscv/riscv-vsetvl.def (DEF_SEW_LMUL_FUSE_RULE): Fix bug. - -2023-09-18 Richard Biener <rguenther@suse.de> - - PR tree-optimization/111294 - * tree-ssa-threadbackward.cc (back_threader_profitability::m_name): - Remove - (back_threader::find_paths_to_names): Adjust. - (back_threader::maybe_thread_block): Likewise. - (back_threader_profitability::possibly_profitable_path_p): Remove - code applying extra costs to copies PHIs. - -2023-09-18 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/autovec.md: Extend VLS modes. - * config/riscv/vector.md: Ditto. - -2023-09-18 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/vector.md (mov<mode>): New pattern. - (*mov<mode>_mem_to_mem): Ditto. - (*mov<mode>): Ditto. - (@mov<VLS_AVL_REG:mode><P:mode>_lra): Ditto. - (*mov<VLS_AVL_REG:mode><P:mode>_lra): Ditto. - (*mov<mode>_vls): Ditto. - (movmisalign<mode>): Ditto. - (@vec_duplicate<mode>): Ditto. - * config/riscv/autovec-vls.md: Removed. - -2023-09-18 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - PR target/111153 - * config/riscv/autovec.md: Add VLS modes. - -2023-09-18 Jason Merrill <jason@redhat.com> - - * doc/gty.texi: Add discussion of cache vs. deletable. - -2023-09-18 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/autovec-vls.md (<optab><mode>3): Deleted. - (copysign<mode>3): Ditto. - (xorsign<mode>3): Ditto. - (<optab><mode>2): Ditto. - * config/riscv/autovec.md: Extend VLS modes. - -2023-09-18 Jiufu Guo <guojiufu@linux.ibm.com> - - PR middle-end/111303 - * match.pd ((t * 2) / 2): Update pattern. - -2023-09-17 Ajit Kumar Agarwal <aagarwa1@linux.ibm.com> - - * config/rs6000/vsx.md (*vctzlsbb_zext_<mode>): New define_insn. - -2023-09-16 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - PR target/111391 - * config/riscv/autovec.md (@vec_extract<mode><vel>): Remove @. - (vec_extract<mode><vel>): Ditto. - * config/riscv/riscv-vsetvl.cc (emit_vsetvl_insn): Fix bug. - (pass_vsetvl::local_eliminate_vsetvl_insn): Fix bug. - * config/riscv/riscv.cc (riscv_legitimize_move): Expand VLS mode to scalar mode move. - -2023-09-16 Tsukasa OI <research_trasio@irq.a4lg.com> - - * config/riscv/crypto.md (riscv_sha256sig0_<mode>, - riscv_sha256sig1_<mode>, riscv_sha256sum0_<mode>, - riscv_sha256sum1_<mode>, riscv_sm3p0_<mode>, riscv_sm3p1_<mode>, - riscv_sm4ed_<mode>, riscv_sm4ks_<mode>): Remove and replace with - new insn/expansions. - (SHA256_OP, SM3_OP, SM4_OP): New iterators. - (sha256_op, sm3_op, sm4_op): New attributes for iteration. - (*riscv_<sha256_op>_si): New raw instruction for RV32. - (*riscv_<sm3_op>_si): Ditto. - (*riscv_<sm4_op>_si): Ditto. - (riscv_<sha256_op>_di_extended): New base instruction for RV64. - (riscv_<sm3_op>_di_extended): Ditto. - (riscv_<sm4_op>_di_extended): Ditto. - (riscv_<sha256_op>_si): New common instruction expansion. - (riscv_<sm3_op>_si): Ditto. - (riscv_<sm4_op>_si): Ditto. - * config/riscv/riscv-builtins.cc: Add availability "crypto_zknh", - "crypto_zksh" and "crypto_zksed". Remove availability - "crypto_zksh{32,64}" and "crypto_zksed{32,64}". - * config/riscv/riscv-ftypes.def: Remove unused function type. - * config/riscv/riscv-scalar-crypto.def: Make SHA-256, SM3 and SM4 - intrinsics to operate on uint32_t. - -2023-09-16 Tsukasa OI <research_trasio@irq.a4lg.com> - - * config/riscv/riscv-builtins.cc (RISCV_ATYPE_UQI): New for - uint8_t. (RISCV_ATYPE_UHI): New for uint16_t. - (RISCV_ATYPE_QI, RISCV_ATYPE_HI, RISCV_ATYPE_SI, RISCV_ATYPE_DI): - Removed as no longer used. - (RISCV_ATYPE_UDI): New for uint64_t. - * config/riscv/riscv-cmo.def: Make types unsigned for not working - "zicbop_cbo_prefetchi" and working bit manipulation clmul builtin - argument/return types. - * config/riscv/riscv-ftypes.def: Make bit manipulation, round - number and shift amount types unsigned. - * config/riscv/riscv-scalar-crypto.def: Ditto. - -2023-09-16 Pan Li <pan2.li@intel.com> - - * config/riscv/autovec-vls.md (xorsign<mode>3): New pattern. - -2023-09-15 Fei Gao <gaofei@eswincomputing.com> - - * config/riscv/predicates.md: Restrict predicate - to allow 'reg' only. - -2023-09-15 Andrew Pinski <apinski@marvell.com> - - * match.pd (zero_one_valued_p): Match a cast from a zero_one_valued_p. - Also match `a & zero_one_valued_p` too. - -2023-09-15 Andrew Pinski <apinski@marvell.com> - - PR tree-optimization/111414 - * match.pd (`(1 >> X) != 0`): Check to see if - the integer_onep was an integral type (not a vector type). - -2023-09-15 Andrew MacLeod <amacleod@redhat.com> - - * gimple-range-fold.cc (fold_using_range::range_of_phi): Always - run phi analysis, and do it before loop analysis. - -2023-09-15 Andrew MacLeod <amacleod@redhat.com> - - * gimple-range-fold.cc (fold_using_range::range_of_phi): Fix - indentation. - -2023-09-15 Qing Zhao <qing.zhao@oracle.com> - - PR tree-optimization/111407 - * tree-ssa-math-opts.cc (convert_mult_to_widen): Avoid the transform - when one of the operands is subject to abnormal coalescing. - -2023-09-15 Lehua Ding <lehua.ding@rivai.ai> - - * config/riscv/riscv-protos.h (enum insn_flags): Change name. - (enum insn_type): Ditto. - * config/riscv/riscv-v.cc (get_mask_mode_from_insn_flags): Removed. - (emit_vlmax_insn): Adjust. - (emit_nonvlmax_insn): Adjust. - (emit_vlmax_insn_lra): Adjust. - -2023-09-15 Lehua Ding <lehua.ding@rivai.ai> - - * config/riscv/autovec-opt.md: Adjust. - * config/riscv/autovec.md: Ditto. - * config/riscv/riscv-protos.h (enum class): Delete enum reduction_type. - (expand_reduction): Adjust expand_reduction prototype. - * config/riscv/riscv-v.cc (need_mask_operand_p): New helper function. - (expand_reduction): Refactor expand_reduction. - -2023-09-15 Richard Sandiford <richard.sandiford@arm.com> - - PR target/111411 - * config/aarch64/aarch64.cc (aarch64_operands_ok_for_ldpstp): Require - the lower memory access to a mem-pair operand. - -2023-09-15 Yang Yujie <yangyujie@loongson.cn> - - * config.gcc: Pass the default ABI via TM_MULTILIB_CONFIG. - * config/loongarch/loongarch-driver.h: Invoke MLIB_SELF_SPECS - before the driver canonicalization routines. - * config/loongarch/loongarch.h: Move definitions of CC1_SPEC etc. - to loongarch-driver.h - * config/loongarch/t-linux: Move multilib-related definitions to - t-multilib. - * config/loongarch/t-multilib: New file. Inject library build - options obtained from --with-multilib-list. - * config/loongarch/t-loongarch: Same. - -2023-09-15 Lehua Ding <lehua.ding@rivai.ai> - - PR target/111381 - * config/riscv/autovec-opt.md (*reduc_plus_scal_<mode>): - New combine pattern. - (*fold_left_widen_plus_<mode>): Ditto. - (*mask_len_fold_left_widen_plus_<mode>): Ditto. - * config/riscv/autovec.md (reduc_plus_scal_<mode>): - Change from define_expand to define_insn_and_split. - (fold_left_plus_<mode>): Ditto. - (mask_len_fold_left_plus_<mode>): Ditto. - * config/riscv/riscv-v.cc (expand_reduction): - Support widen reduction. - * config/riscv/vector-iterators.md (UNSPEC_WREDUC_SUM): - Add new iterators and attrs. - -2023-09-14 David Malcolm <dmalcolm@redhat.com> - - * diagnostic-event-id.h (diagnostic_thread_id_t): New typedef. - * diagnostic-format-sarif.cc (class sarif_thread_flow): New. - (sarif_thread_flow::sarif_thread_flow): New. - (sarif_builder::make_code_flow_object): Reimplement, creating - per-thread threadFlow objects, populating them with the relevant - events. - (sarif_builder::make_thread_flow_object): Delete, moving the - code into sarif_builder::make_code_flow_object. - (sarif_builder::make_thread_flow_location_object): Add - "path_event_idx" param. Use it to set "executionOrder" - property. - * diagnostic-path.h (diagnostic_event::get_thread_id): New - pure-virtual vfunc. - (class diagnostic_thread): New. - (diagnostic_path::num_threads): New pure-virtual vfunc. - (diagnostic_path::get_thread): New pure-virtual vfunc. - (diagnostic_path::multithreaded_p): New decl. - (simple_diagnostic_event::simple_diagnostic_event): Add optional - thread_id param. - (simple_diagnostic_event::get_thread_id): New accessor. - (simple_diagnostic_event::m_thread_id): New. - (class simple_diagnostic_thread): New. - (simple_diagnostic_path::simple_diagnostic_path): Move definition - to diagnostic.cc. - (simple_diagnostic_path::num_threads): New. - (simple_diagnostic_path::get_thread): New. - (simple_diagnostic_path::add_thread): New. - (simple_diagnostic_path::add_thread_event): New. - (simple_diagnostic_path::m_threads): New. - * diagnostic-show-locus.cc (layout::layout): Add pretty_printer - param for overriding the context's printer. - (diagnostic_show_locus): Likwise. - * diagnostic.cc (simple_diagnostic_path::simple_diagnostic_path): - Move here from diagnostic-path.h. Add main thread. - (simple_diagnostic_path::num_threads): New. - (simple_diagnostic_path::get_thread): New. - (simple_diagnostic_path::add_thread): New. - (simple_diagnostic_path::add_thread_event): New. - (simple_diagnostic_event::simple_diagnostic_event): Add thread_id - param and use it to initialize m_thread_id. Reformat. - * diagnostic.h: Add pretty_printer param for overriding the - context's printer. - * tree-diagnostic-path.cc: Add #define INCLUDE_VECTOR. - (can_consolidate_events): Compare thread ids. - (class per_thread_summary): New. - (event_range::event_range): Add per_thread_summary arg. - (event_range::print): Add "pp" param and use it rather than dc's - printer. - (event_range::m_thread_id): New field. - (event_range::m_per_thread_summary): New field. - (path_summary::multithreaded_p): New. - (path_summary::get_events_for_thread_id): New. - (path_summary::m_per_thread_summary): New field. - (path_summary::m_thread_id_to_events): New field. - (path_summary::get_or_create_events_for_thread_id): New. - (path_summary::path_summary): Create per_thread_summary instances - as needed and associate the event_range instances with them. - (base_indent): Move here from print_path_summary_as_text. - (per_frame_indent): Likewise. - (class thread_event_printer): New, adapted from parts of - print_path_summary_as_text. - (print_path_summary_as_text): Make static. Reimplement to - moving most of existing code to class thread_event_printer, - capturing state as per-thread as appropriate. - (default_tree_diagnostic_path_printer): Add missing 'break' on - final case. - -2023-09-14 David Malcolm <dmalcolm@redhat.com> - - * dwarf2cfi.cc (dwarf2cfi_cc_finalize): New. - * dwarf2out.h (dwarf2cfi_cc_finalize): New decl. - * ggc-common.cc (ggc_mark_roots): Multiply by rti->nelt when - clearing the deletable gcc_root_tab_t. - (ggc_common_finalize): New. - * ggc.h (ggc_common_finalize): New decl. - * toplev.cc (toplev::finalize): Call dwarf2cfi_cc_finalize and - ggc_common_finalize. - -2023-09-14 Max Filippov <jcmvbkbc@gmail.com> - - * config/xtensa/predicates.md (xtensa_cstoresi_operator): Add - unsigned comparisons. - * config/xtensa/xtensa.cc (xtensa_expand_scc): Add code - generation of salt/saltu instructions. - * config/xtensa/xtensa.h (TARGET_SALT): New macro. - * config/xtensa/xtensa.md (salt, saltu): New instruction - patterns. - -2023-09-14 Vladimir N. Makarov <vmakarov@redhat.com> - - * ira-costs.cc (find_costs_and_classes): Decrease memory cost - by equiv savings. - -2023-09-14 Lehua Ding <lehua.ding@rivai.ai> - - * config/riscv/autovec.md: Change rtx code to unspec. - * config/riscv/riscv-protos.h (expand_reduction): Change prototype. - * config/riscv/riscv-v.cc (expand_reduction): Change prototype. - * config/riscv/riscv-vector-builtins-bases.cc (class widen_reducop): - Removed. - (class widen_freducop): Removed. - * config/riscv/vector-iterators.md (minu): Add reduc unspec, iterators, attrs. - * config/riscv/vector.md (@pred_reduc_<reduc><mode>): Change name. - (@pred_<reduc_op><mode>): New name. - (@pred_widen_reduc_plus<v_su><mode>): Change name. - (@pred_reduc_plus<order><mode>): Change name. - (@pred_widen_reduc_plus<order><mode>): Change name. - -2023-09-14 Lehua Ding <lehua.ding@rivai.ai> - - * config/riscv/riscv-v.cc (expand_reduction): Adjust call. - * config/riscv/riscv-vector-builtins-bases.cc: Adjust call. - * config/riscv/vector-iterators.md: New iterators and attrs. - * config/riscv/vector.md (@pred_reduc_<reduc><VQI:mode><VQI_LMUL1:mode>): - Removed. - (@pred_reduc_<reduc><VHI:mode><VHI_LMUL1:mode>): Removed. - (@pred_reduc_<reduc><VSI:mode><VSI_LMUL1:mode>): Removed. - (@pred_reduc_<reduc><VDI:mode><VDI_LMUL1:mode>): Removed. - (@pred_reduc_<reduc><mode>): Added. - (@pred_widen_reduc_plus<v_su><VQI:mode><VHI_LMUL1:mode>): Removed. - (@pred_widen_reduc_plus<v_su><VHI:mode><VSI_LMUL1:mode>): Removed. - (@pred_widen_reduc_plus<v_su><mode>): Added. - (@pred_widen_reduc_plus<v_su><VSI:mode><VDI_LMUL1:mode>): Removed. - (@pred_reduc_<reduc><VHF:mode><VHF_LMUL1:mode>): Removed. - (@pred_reduc_<reduc><VSF:mode><VSF_LMUL1:mode>): Removed. - (@pred_reduc_<reduc><VDF:mode><VDF_LMUL1:mode>): Removed. - (@pred_reduc_plus<order><VHF:mode><VHF_LMUL1:mode>): Removed. - (@pred_reduc_plus<order><VSF:mode><VSF_LMUL1:mode>): Removed. - (@pred_reduc_plus<order><mode>): Added. - (@pred_reduc_plus<order><VDF:mode><VDF_LMUL1:mode>): Removed. - (@pred_widen_reduc_plus<order><VHF:mode><VSF_LMUL1:mode>): Removed. - (@pred_widen_reduc_plus<order><VSF:mode><VDF_LMUL1:mode>): Removed. - (@pred_widen_reduc_plus<order><mode>): Added. - -2023-09-14 Richard Sandiford <richard.sandiford@arm.com> - - * config/aarch64/aarch64.cc (aarch64_vector_costs::analyze_loop_info): - Move WHILELO handling to... - (aarch64_vector_costs::finish_cost): ...here. Check whether the - vectorizer has decided to use a predicated loop. - -2023-09-14 Andrew Pinski <apinski@marvell.com> - - PR tree-optimization/106164 - * match.pd (`(X CMP1 CST1) AND/IOR (X CMP2 CST2)`): - Expand to support constants that are off by one. - -2023-09-14 Andrew Pinski <apinski@marvell.com> - - * genmatch.cc (parser::parse_result): For an else clause - of an if statement inside a switch, error out explictly. - -2023-09-14 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/autovec-opt.md: Add VLS mask modes. - * config/riscv/autovec.md (@vcond_mask_<mode><vm>): Remove @. - (vcond_mask_<mode><vm>): Add VLS mask modes. - * config/riscv/vector.md: Ditto. - -2023-09-14 Richard Biener <rguenther@suse.de> - - PR tree-optimization/111294 - * tree-ssa-forwprop.cc (pass_forwprop::execute): Track - operands that eventually become dead and use simple_dce_from_worklist - to remove their definitions if they did so. - -2023-09-14 Richard Sandiford <richard.sandiford@arm.com> - - * config/aarch64/aarch64-sve.md (@aarch64_vec_duplicate_vq<mode>_le): - Accept all nonimmediate_operands, but keep the existing constraints. - If the instruction is split before RA, load invalid addresses into - a temporary register. - * config/aarch64/predicates.md (aarch64_sve_dup_ld1rq_operand): Delete. - -2023-09-14 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - PR target/111395 - * config/riscv/riscv-vsetvl.cc (avl_info::operator==): Fix ICE. - (vector_insn_info::global_merge): Ditto. - (vector_insn_info::get_avl_or_vl_reg): Ditto. - -2023-09-14 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv-vsetvl.cc (pass_vsetvl::global_eliminate_vsetvl_insn): Format it. - -2023-09-14 Lulu Cheng <chenglulu@loongson.cn> - - * config/loongarch/loongarch-def.c: Modify the default value of - branch_cost. - -2023-09-14 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp> - - * config/xtensa/xtensa.cc (xtensa_expand_scc): - Revert the changes from the last patch, as the work in the RTL - expansion pass is too far to determine the physical registers. - * config/xtensa/xtensa.md (*eqne_INT_MIN): Ditto. - (eq_zero_NSA, eqne_zero, *eqne_zero_masked_bits): New patterns. - -2023-09-14 Lulu Cheng <chenglulu@loongson.cn> - - PR target/111334 - * config/loongarch/loongarch.md: Fix bug of '<optab>di3_fake'. - -2023-09-13 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/autovec.md (vec_extract<mode><vel>): Add VLS modes. - (@vec_extract<mode><vel>): Ditto. - * config/riscv/vector.md: Ditto - -2023-09-13 Andrew Pinski <apinski@marvell.com> - - * match.pd (`X <= MAX(X, Y)`): - Move before `MIN (X, C1) < C2` pattern. - -2023-09-13 Andrew Pinski <apinski@marvell.com> - - PR tree-optimization/111364 - * match.pd (`MIN (X, Y) == X`): Extend - to min/lt, min/ge, max/gt, max/le. - -2023-09-13 Andrew Pinski <apinski@marvell.com> - - PR tree-optimization/111345 - * match.pd (`Y > (X % Y)`): Merge - into ... - (`(X % Y) < Y`): Pattern by adding `:c` - on the comparison. - -2023-09-13 Richard Biener <rguenther@suse.de> - - PR tree-optimization/111387 - * tree-vect-slp.cc (vect_get_and_check_slp_defs): Check - EDGE_DFS_BACK when doing BB vectorization. - (vect_slp_function): Use rev_post_order_and_mark_dfs_back_seme - to compute RPO and mark backedges. - -2023-09-13 Lehua Ding <lehua.ding@rivai.ai> - - * config/riscv/autovec-opt.md (*cond_<mulh_table><mode>3_highpart): - New combine pattern. - * config/riscv/autovec.md (smul<mode>3_highpart): Mrege smul and umul. - (<mulh_table><mode>3_highpart): Merged pattern. - (umul<mode>3_highpart): Mrege smul and umul. - * config/riscv/vector-iterators.md (umul): New iterators. - (UNSPEC_VMULHU): New iterators. - -2023-09-13 Lehua Ding <lehua.ding@rivai.ai> - - * config/riscv/autovec-opt.md (*cond_v<any_shiftrt:optab><any_extend:optab>trunc<mode>): - New combine pattern. - (*cond_<any_shiftrt:optab>trunc<mode>): Ditto. - -2023-09-13 Lehua Ding <lehua.ding@rivai.ai> - - * config/riscv/autovec-opt.md (*copysign<mode>_neg): Move. - (*cond_copysign<mode>): New combine pattern. - * config/riscv/riscv-v.cc (needs_fp_rounding): Extend. - -2023-09-13 Richard Biener <rguenther@suse.de> - - PR tree-optimization/111397 - * tree-ssa-propagate.cc (may_propagate_copy): Change optional - argument to specify whether the PHI destination doesn't flow in - from an abnormal PHI. - (propagate_value): Adjust. - * tree-ssa-forwprop.cc (pass_forwprop::execute): Indicate abnormal - PHI dest. - * tree-ssa-sccvn.cc (eliminate_dom_walker::before_dom_children): - Likewise. - (process_bb): Likewise. - -2023-09-13 Pan Li <pan2.li@intel.com> - - PR target/111362 - * config/riscv/riscv.cc (riscv_emit_frm_mode_set): Bugfix. - -2023-09-13 Jiufu Guo <guojiufu@linux.ibm.com> - - PR tree-optimization/111303 - * match.pd ((X - N * M) / N): Add undefined_p checking. - ((X + N * M) / N): Likewise. - ((X + C) div_rshift N): Likewise. - -2023-09-12 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - PR target/111337 - * config/riscv/autovec.md (vcond_mask_<mode><mode>): New pattern. - -2023-09-12 Martin Jambor <mjambor@suse.cz> - - * dbgcnt.def (form_fma): New. - * tree-ssa-math-opts.cc: Include dbgcnt.h. - (convert_mult_to_fma): Bail out if the debug counter say so. - -2023-09-12 Edwin Lu <ewlu@rivosinc.com> - - * config/riscv/autovec-opt.md: Update type - * config/riscv/riscv.cc (riscv_sched_variable_issue): Enable assert - -2023-09-12 Richard Sandiford <richard.sandiford@arm.com> - - * config/aarch64/aarch64.cc (aarch64_save_regs_above_locals_p): - New function. - (aarch64_layout_frame): Use it to decide whether locals should - go above or below the saved registers. - (aarch64_expand_prologue): Update stack layout comment. - Emit a stack tie after the final adjustment. - -2023-09-12 Richard Sandiford <richard.sandiford@arm.com> - - * config/aarch64/aarch64.h (aarch64_frame::saved_regs_size) - (aarch64_frame::below_hard_fp_saved_regs_size): Delete. - * config/aarch64/aarch64.cc (aarch64_layout_frame): Update accordingly. - -2023-09-12 Richard Sandiford <richard.sandiford@arm.com> - - * config/aarch64/aarch64.h (aarch64_frame::sve_save_and_probe) - (aarch64_frame::hard_fp_save_and_probe): New fields. - * config/aarch64/aarch64.cc (aarch64_layout_frame): Initialize them. - Rather than asserting that a leaf function saves LR, instead assert - that a leaf function saves something. - (aarch64_get_separate_components): Prevent the chosen probe - registers from being individually shrink-wrapped. - (aarch64_allocate_and_probe_stack_space): Remove workaround for - probe registers that aren't at the bottom of the previous allocation. - -2023-09-12 Richard Sandiford <richard.sandiford@arm.com> - - * config/aarch64/aarch64.cc (aarch64_allocate_and_probe_stack_space): - Always probe the residual allocation at offset 1024, asserting - that that is in range. - -2023-09-12 Richard Sandiford <richard.sandiford@arm.com> - - * config/aarch64/aarch64.cc (aarch64_layout_frame): Ensure that - the LR save slot is in the first 16 bytes of the register save area. - Only form STP/LDP push/pop candidates if both registers are valid. - (aarch64_allocate_and_probe_stack_space): Remove workaround for - when LR was not in the first 16 bytes. - -2023-09-12 Richard Sandiford <richard.sandiford@arm.com> - - * config/aarch64/aarch64.cc (aarch64_allocate_and_probe_stack_space): - Don't probe final allocations that are exactly 1KiB in size (after - unprobed space above the final allocation has been deducted). - -2023-09-12 Richard Sandiford <richard.sandiford@arm.com> - - * config/aarch64/aarch64.cc (aarch64_layout_frame): Tweak - calculation of initial_adjust for frames in which all saves - are SVE saves. - -2023-09-12 Richard Sandiford <richard.sandiford@arm.com> - - * config/aarch64/aarch64.cc (aarch64_layout_frame): Simplify - the allocation of the top of the frame. - -2023-09-12 Richard Sandiford <richard.sandiford@arm.com> - - * config/aarch64/aarch64.h (aarch64_frame): Add comment above - reg_offset. - * config/aarch64/aarch64.cc (aarch64_layout_frame): Walk offsets - from the bottom of the frame, rather than the bottom of the saved - register area. Measure reg_offset from the bottom of the frame - rather than the bottom of the saved register area. - (aarch64_save_callee_saves): Update accordingly. - (aarch64_restore_callee_saves): Likewise. - (aarch64_get_separate_components): Likewise. - (aarch64_process_components): Likewise. - -2023-09-12 Richard Sandiford <richard.sandiford@arm.com> - - * config/aarch64/aarch64.h (aarch64_frame::frame_size): Tweak comment. - -2023-09-12 Richard Sandiford <richard.sandiford@arm.com> - - * config/aarch64/aarch64.h (aarch64_frame::hard_fp_offset): Rename - to... - (aarch64_frame::bytes_above_hard_fp): ...this. - * config/aarch64/aarch64.cc (aarch64_layout_frame) - (aarch64_expand_prologue): Update accordingly. - (aarch64_initial_elimination_offset): Likewise. - -2023-09-12 Richard Sandiford <richard.sandiford@arm.com> - - * config/aarch64/aarch64.h (aarch64_frame::locals_offset): Rename to... - (aarch64_frame::bytes_above_locals): ...this. - * config/aarch64/aarch64.cc (aarch64_layout_frame) - (aarch64_initial_elimination_offset): Update accordingly. - -2023-09-12 Richard Sandiford <richard.sandiford@arm.com> - - * config/aarch64/aarch64.cc (aarch64_expand_prologue): Move the - calculation of chain_offset into the emit_frame_chain block. - -2023-09-12 Richard Sandiford <richard.sandiford@arm.com> - - * config/aarch64/aarch64.h (aarch64_frame::callee_offset): Delete. - * config/aarch64/aarch64.cc (aarch64_layout_frame): Remove - callee_offset handling. - (aarch64_save_callee_saves): Replace the start_offset parameter - with a bytes_below_sp parameter. - (aarch64_restore_callee_saves): Likewise. - (aarch64_expand_prologue): Update accordingly. - (aarch64_expand_epilogue): Likewise. - -2023-09-12 Richard Sandiford <richard.sandiford@arm.com> - - * config/aarch64/aarch64.h (aarch64_frame::bytes_below_hard_fp): New - field. - * config/aarch64/aarch64.cc (aarch64_layout_frame): Initialize it. - (aarch64_expand_epilogue): Use it instead of - below_hard_fp_saved_regs_size. - -2023-09-12 Richard Sandiford <richard.sandiford@arm.com> - - * config/aarch64/aarch64.h (aarch64_frame::bytes_below_saved_regs): New - field. - * config/aarch64/aarch64.cc (aarch64_layout_frame): Initialize it, - and use it instead of crtl->outgoing_args_size. - (aarch64_get_separate_components): Use bytes_below_saved_regs instead - of outgoing_args_size. - (aarch64_process_components): Likewise. - -2023-09-12 Richard Sandiford <richard.sandiford@arm.com> - - * config/aarch64/aarch64.cc (aarch64_layout_frame): Explicitly - allocate the frame in one go if there are no saved registers. - -2023-09-12 Richard Sandiford <richard.sandiford@arm.com> - - * config/aarch64/aarch64.cc (aarch64_expand_prologue): Use - chain_offset rather than callee_offset. - -2023-09-12 Richard Sandiford <richard.sandiford@arm.com> - - * config/aarch64/aarch64.cc (aarch64_save_callee_saves): Use - a local shorthand for cfun->machine->frame. - (aarch64_restore_callee_saves, aarch64_get_separate_components): - (aarch64_process_components): Likewise. - (aarch64_allocate_and_probe_stack_space): Likewise. - (aarch64_expand_prologue, aarch64_expand_epilogue): Likewise. - (aarch64_layout_frame): Use existing shorthand for one more case. - -2023-09-12 Andrew Pinski <apinski@marvell.com> - - PR tree-optimization/107881 - * match.pd (`(a CMP1 b) ^ (a CMP2 b)`): New pattern. - (`(a CMP1 b) == (a CMP2 b)`): New pattern. - -2023-09-12 Pan Li <pan2.li@intel.com> - - * config/riscv/riscv-vector-costs.h (struct range): Removed. - -2023-09-12 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv-vector-costs.cc (get_last_live_range): New function. - (compute_nregs_for_mode): Ditto. - (live_range_conflict_p): Ditto. - (max_number_of_live_regs): Ditto. - (compute_lmul): Ditto. - (costs::prefer_new_lmul_p): Ditto. - (costs::better_main_loop_than_p): Ditto. - * config/riscv/riscv-vector-costs.h (struct stmt_point): New struct. - (struct var_live_range): Ditto. - (struct autovec_info): Ditto. - * config/riscv/t-riscv: Update makefile for COST model. - -2023-09-12 Jakub Jelinek <jakub@redhat.com> - - * fold-const.cc (range_check_type): Handle BITINT_TYPE like - OFFSET_TYPE. - -2023-09-12 Jakub Jelinek <jakub@redhat.com> - - PR middle-end/111338 - * tree-ssa-sccvn.cc (struct vn_walk_cb_data): Add bufsize non-static - data member. - (vn_walk_cb_data::push_partial_def): Remove bufsize variable. - (visit_nary_op): Avoid the BIT_AND_EXPR with constant rhs2 - optimization if type's precision is too large for - vn_walk_cb_data::bufsize. - -2023-09-12 Gaius Mulley <gaiusmod2@gmail.com> - - * doc/gm2.texi (Compiler options): Document new option - -Wcase-enum. - -2023-09-12 Thomas Schwinge <thomas@codesourcery.com> - - * doc/sourcebuild.texi (stack_size): Update. - -2023-09-12 Christoph Müllner <christoph.muellner@vrull.eu> - - * config/riscv/bitmanip.md (*<optab>_not<mode>): Export INSN name. - (<optab>_not<mode>3): Likewise. - * config/riscv/riscv-protos.h (riscv_expand_strcmp): New - prototype. - * config/riscv/riscv-string.cc (GEN_EMIT_HELPER3): New helper - macros. - (GEN_EMIT_HELPER2): Likewise. - (emit_strcmp_scalar_compare_byte): New function. - (emit_strcmp_scalar_compare_subword): Likewise. - (emit_strcmp_scalar_compare_word): Likewise. - (emit_strcmp_scalar_load_and_compare): Likewise. - (emit_strcmp_scalar_call_to_libc): Likewise. - (emit_strcmp_scalar_result_calculation_nonul): Likewise. - (emit_strcmp_scalar_result_calculation): Likewise. - (riscv_expand_strcmp_scalar): Likewise. - (riscv_expand_strcmp): Likewise. - * config/riscv/riscv.md (*slt<u>_<X:mode><GPR:mode>): Export - INSN name. - (@slt<u>_<X:mode><GPR:mode>3): Likewise. - (cmpstrnsi): Invoke expansion function for str(n)cmp. - (cmpstrsi): Likewise. - * config/riscv/riscv.opt: Add new parameter - '-mstring-compare-inline-limit'. - * doc/invoke.texi: Document new parameter - '-mstring-compare-inline-limit'. - -2023-09-12 Christoph Müllner <christoph.muellner@vrull.eu> - - * config.gcc: Add new object riscv-string.o. - riscv-string.cc. - * config/riscv/riscv-protos.h (riscv_expand_strlen): - New function. - * config/riscv/riscv.md (strlen<mode>): New expand INSN. - * config/riscv/riscv.opt: New flag 'minline-strlen'. - * config/riscv/t-riscv: Add new object riscv-string.o. - * config/riscv/thead.md (th_rev<mode>2): Export INSN name. - (th_rev<mode>2): Likewise. - (th_tstnbz<mode>2): New INSN. - * doc/invoke.texi: Document '-minline-strlen'. - * emit-rtl.cc (emit_likely_jump_insn): New helper function. - (emit_unlikely_jump_insn): Likewise. - * rtl.h (emit_likely_jump_insn): New prototype. - (emit_unlikely_jump_insn): Likewise. - * config/riscv/riscv-string.cc: New file. - -2023-09-12 Thomas Schwinge <thomas@codesourcery.com> - - * config/nvptx/nvptx.h (TARGET_USE_LOCAL_THUNK_ALIAS_P) - (TARGET_SUPPORTS_ALIASES): Define. - -2023-09-12 Thomas Schwinge <thomas@codesourcery.com> - - * doc/sourcebuild.texi (check-function-bodies): Update. - -2023-09-12 Tobias Burnus <tobias@codesourcery.com> - - * gimplify.cc (gimplify_bind_expr): Check for - insertion after variable cleanup. Convert 'omp allocate' - var-decl attribute to GOMP_alloc/GOMP_free calls. - -2023-09-12 xuli <xuli1@eswincomputing.com> - - * config/riscv/riscv-vector-builtins-bases.cc: remove unused - parameter e and replace NULL_RTX with gcc_unreachable. - -2023-09-12 xuli <xuli1@eswincomputing.com> - - * config/riscv/riscv-vector-builtins-bases.cc (class vcreate): New class. - (BASE): Ditto. - * config/riscv/riscv-vector-builtins-bases.h: Ditto. - * config/riscv/riscv-vector-builtins-functions.def (vcreate): Add vcreate support. - * config/riscv/riscv-vector-builtins-shapes.cc (struct vcreate_def): Ditto. - (SHAPE): Ditto. - * config/riscv/riscv-vector-builtins-shapes.h: Ditto. - * config/riscv/riscv-vector-builtins.cc: Add args type. - -2023-09-12 Fei Gao <gaofei@eswincomputing.com> - - * config/riscv/riscv.cc - (riscv_avoid_shrink_wrapping_separate): wrap the condition check in - riscv_avoid_shrink_wrapping_separate. - (riscv_avoid_multi_push):avoid multi push if shrink_wrapping_separate - is active. - (riscv_get_separate_components):call riscv_avoid_shrink_wrapping_separate - -2023-09-12 Fei Gao <gaofei@eswincomputing.com> - - * shrink-wrap.cc (try_shrink_wrapping_separate):call - use_shrink_wrapping_separate. - (use_shrink_wrapping_separate): wrap the condition - check in use_shrink_wrapping_separate. - * shrink-wrap.h (use_shrink_wrapping_separate): add to extern - -2023-09-11 Andrew Pinski <apinski@marvell.com> - - PR tree-optimization/111348 - * match.pd (`(a CMP b) ? minmax<a, c> : minmax<b, c>`): Add :c on - the cmp part of the pattern. - -2023-09-11 Uros Bizjak <ubizjak@gmail.com> - - PR target/111340 - * config/i386/i386.cc (output_pic_addr_const): Handle CONST_WIDE_INT. - Call output_addr_const for CASE_CONST_SCALAR_INT. - -2023-09-11 Edwin Lu <ewlu@rivosinc.com> - - * config/riscv/thead.md: Update types - -2023-09-11 Edwin Lu <ewlu@rivosinc.com> - - * config/riscv/riscv.md: Update types - -2023-09-11 Edwin Lu <ewlu@rivosinc.com> - - * config/riscv/riscv.md: Add "zicond" type - * config/riscv/zicond.md: Update types - -2023-09-11 Edwin Lu <ewlu@rivosinc.com> - - * config/riscv/riscv.md: Add "pushpop" and "mvpair" types - * config/riscv/zc.md: Update types - -2023-09-11 Edwin Lu <ewlu@rivosinc.com> - - * config/riscv/autovec-opt.md: Update types - * config/riscv/autovec.md: likewise - -2023-09-11 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com> - - * config/s390/s390-builtins.def (s390_vec_signed_flt): Fix - builtin flag. - (s390_vec_unsigned_flt): Ditto. - (s390_vec_revb_flt): Ditto. - (s390_vec_reve_flt): Ditto. - (s390_vclfnhs): Fix operand flags. - (s390_vclfnls): Ditto. - (s390_vcrnfs): Ditto. - (s390_vcfn): Ditto. - (s390_vcnf): Ditto. - -2023-09-11 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com> - - * config/s390/s390-builtins.def (O_U64): New. - (O1_U64): Ditto. - (O2_U64): Ditto. - (O3_U64): Ditto. - (O4_U64): Ditto. - (O_M12): Change bit position. - (O_S2): Ditto. - (O_S3): Ditto. - (O_S4): Ditto. - (O_S5): Ditto. - (O_S8): Ditto. - (O_S12): Ditto. - (O_S16): Ditto. - (O_S32): Ditto. - (O_ELEM): Ditto. - (O_LIT): Ditto. - (OB_DEF_VAR): Add operand constraints. - (B_DEF): Ditto. - * config/s390/s390.cc (s390_const_operand_ok): Honour 64 bit - operands. - -2023-09-11 Andrew Pinski <apinski@marvell.com> - - PR tree-optimization/111349 - * match.pd (`(a CMP CST1) ? max<a,CST2> : a`): Add :c on - the cmp part of the pattern. - -2023-09-11 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - PR target/111311 - * config/riscv/riscv.opt: Set default as scalable vectorization. - -2023-09-11 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv-protos.h (get_all_predecessors): Remove. - (get_all_successors): Ditto. - * config/riscv/riscv-v.cc (get_all_predecessors): Ditto. - (get_all_successors): Ditto. - -2023-09-11 Jakub Jelinek <jakub@redhat.com> - - PR middle-end/111329 - * pretty-print.h (pp_wide_int): Rewrite from macro into inline - function. For printing values which don't fit into digit_buffer - use out-of-line function. - * wide-int-print.h (pp_wide_int_large): Declare. - * wide-int-print.cc: Include pretty-print.h. - (pp_wide_int_large): Define. - -2023-09-11 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv-vsetvl.cc (pass_vsetvl::global_eliminate_vsetvl_insn): - Use dominance analysis. - (pass_vsetvl::init): Ditto. - (pass_vsetvl::done): Ditto. - -2023-09-11 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - PR target/111311 - * config/riscv/autovec.md: Add VLS modes. - * config/riscv/riscv-protos.h (cmp_lmul_le_one): New function. - (cmp_lmul_gt_one): Ditto. - * config/riscv/riscv-v.cc (cmp_lmul_le_one): Ditto. - (cmp_lmul_gt_one): Ditto. - * config/riscv/riscv.cc (riscv_print_operand): Add VLS modes. - (riscv_vectorize_vec_perm_const): Ditto. - * config/riscv/vector-iterators.md: Ditto. - * config/riscv/vector.md: Ditto. - -2023-09-11 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/autovec-vls.md (*mov<mode>_vls): New pattern. - * config/riscv/vector-iterators.md: New iterator - -2023-09-11 Andrew Pinski <apinski@marvell.com> - - PR tree-optimization/111346 - * match.pd (`X CMP MINMAX`): Add `:c` on the cmp part - of the pattern - -2023-09-11 liuhongt <hongtao.liu@intel.com> - - PR target/111306 - PR target/111335 - * config/i386/sse.md (int_comm): New int_attr. - (fma_<complexopname>_<mode><sdc_maskz_name><round_name>): - Remove % for Complex conjugate operations since they're not - commutative. - (fma_<complexpairopname>_<mode>_pair): Ditto. - (<avx512>_<complexopname>_<mode>_mask<round_name>): Ditto. - (cmul<conj_op><mode>3): Ditto. - -2023-09-10 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv-v.cc (shuffle_generic_patterns): Expand - fixed-vlmax/vls vector permutation. - -2023-09-10 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv-v.cc (shuffle_compress_patterns): Avoid unnecessary slideup. - -2023-09-10 Andrew Pinski <apinski@marvell.com> - - PR tree-optimization/111331 - * match.pd (`(a CMP CST1) ? max<a,CST2> : a`): - Fix the LE/GE comparison to the correct value. - * tree-ssa-phiopt.cc (minmax_replacement): - Fix the LE/GE comparison for the - `(a CMP CST1) ? max<a,CST2> : a` optimization. - -2023-09-10 Iain Sandoe <iain@sandoe.co.uk> - - * config/darwin.cc (darwin_function_section): Place unlikely - executed global init code into the standard cold section. - -2023-09-10 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - PR target/111311 - * config/riscv/riscv-vsetvl.cc (pass_vsetvl::vsetvl_fusion): Add TDF_DETAILS. - (pass_vsetvl::pre_vsetvl): Ditto. - (pass_vsetvl::init): Ditto. - (pass_vsetvl::lazy_vsetvl): Ditto. - -2023-09-09 Lulu Cheng <chenglulu@loongson.cn> - - * config/loongarch/loongarch.md (mulsidi3_64bit): - Field unsigned extension support. - (<u>muldi3_highpart): Modify template name. - (<u>mulsi3_highpart): Likewise. - (<u>mulsidi3_64bit): Field unsigned extension support. - (<su>muldi3_highpart): Modify muldi3_highpart to - smuldi3_highpart. - (<su>mulsi3_highpart): Modify mulsi3_highpart to - smulsi3_highpart. - -2023-09-09 Xi Ruoyao <xry111@xry111.site> - - * config/loongarch/loongarch.cc (loongarch_block_move_straight): - Check precondition (delta must be a power of 2) and use - popcount_hwi instead of a homebrew loop. - -2023-09-09 Xi Ruoyao <xry111@xry111.site> - - * config/loongarch/loongarch.h (LARCH_MAX_MOVE_PER_INSN): - Define to the maximum amount of bytes able to be loaded or - stored with one machine instruction. - * config/loongarch/loongarch.cc (loongarch_mode_for_move_size): - New static function. - (loongarch_block_move_straight): Call - loongarch_mode_for_move_size for machine_mode to be moved. - (loongarch_expand_block_move): Use LARCH_MAX_MOVE_PER_INSN - instead of UNITS_PER_WORD. - -2023-09-09 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/vector-iterators.md: Fix floating-point operations predicate. - -2023-09-09 Lehua Ding <lehua.ding@rivai.ai> - - * fold-const.cc (can_min_p): New function. - (poly_int_binop): Try fold MIN_EXPR. - -2023-09-08 Aldy Hernandez <aldyh@redhat.com> - - * range-op-float.cc (foperator_ltgt::fold_range): Do not special - case VREL_EQ nor call frelop_early_resolve. - -2023-09-08 Christoph Müllner <christoph.muellner@vrull.eu> - - * config/riscv/thead.md (*extend<SHORT:mode><SUPERQI:mode>2_th_ext): - Remove broken INSN. - (*extendhi<SUPERQI:mode>2_th_ext): New INSN. - (*extendqi<SUPERQI:mode>2_th_ext): New INSN. - -2023-09-08 Christoph Müllner <christoph.muellner@vrull.eu> - - * config/riscv/thead.md: Use more appropriate mode attributes - for extensions. - -2023-09-08 Guo Jie <guojie@loongson.cn> - - * common/config/loongarch/loongarch-common.cc: - (default_options loongarch_option_optimization_table): - Default to -fsched-pressure. - -2023-09-08 Yang Yujie <yangyujie@loongson.cn> - - * config.gcc: remove non-POSIX syntax "<<<". - -2023-09-08 Christoph Müllner <christoph.muellner@vrull.eu> - - * config/riscv/bitmanip.md (*extend<SHORT:mode><SUPERQI:mode>2_zbb): - Rename postfix to _bitmanip. - (*extend<SHORT:mode><SUPERQI:mode>2_bitmanip): Renamed pattern. - (*zero_extendhi<GPR:mode>2_zbb): Remove duplicated pattern. - -2023-09-08 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv.cc (riscv_pass_in_vector_p): Only allow RVV type. - -2023-09-08 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv.cc (riscv_hard_regno_nregs): Fix bug. - -2023-09-07 liuhongt <hongtao.liu@intel.com> - - * config/i386/sse.md - (<avx512>_vpermt2var<mode>3<sd_maskz_name>): New define_insn. - (VHFBF_AVX512VL): New mode iterator. - (VI2HFBF_AVX512VL): New mode iterator. - -2023-09-07 Aldy Hernandez <aldyh@redhat.com> - - * value-range.h (contains_zero_p): Return false for undefined ranges. - * range-op-float.cc (operator_gt::op1_op2_relation): Adjust for - contains_zero_p change above. - (operator_ge::op1_op2_relation): Same. - (operator_equal::op1_op2_relation): Same. - (operator_not_equal::op1_op2_relation): Same. - (operator_lt::op1_op2_relation): Same. - (operator_le::op1_op2_relation): Same. - (operator_ge::op1_op2_relation): Same. - * range-op.cc (operator_equal::op1_op2_relation): Same. - (operator_not_equal::op1_op2_relation): Same. - (operator_lt::op1_op2_relation): Same. - (operator_le::op1_op2_relation): Same. - (operator_cast::op1_range): Same. - (set_nonzero_range_from_mask): Same. - (operator_bitwise_xor::op1_range): Same. - (operator_addr_expr::fold_range): Same. - (operator_addr_expr::op1_range): Same. - -2023-09-07 Andrew MacLeod <amacleod@redhat.com> - - PR tree-optimization/110875 - * gimple-range.cc (gimple_ranger::prefill_name): Only invoke - cache-prefilling routine when the ssa-name has no global value. - -2023-09-07 Vladimir N. Makarov <vmakarov@redhat.com> - - PR target/111225 - * lra-constraints.cc (goal_reuse_alt_p): New global flag. - (process_alt_operands): Set up the flag. Clear flag for chosen - alternative with special memory constraints. - (process_alt_operands): Set up used insn alternative depending on the flag. - -2023-09-07 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/autovec-vls.md: Add VLS mask modes mov patterns. - * config/riscv/riscv.md: Ditto. - * config/riscv/vector-iterators.md: Ditto. - * config/riscv/vector.md: Ditto. - -2023-09-07 David Malcolm <dmalcolm@redhat.com> - - * diagnostic-core.h (error_meta): New decl. - * diagnostic.cc (error_meta): New. - -2023-09-07 Jakub Jelinek <jakub@redhat.com> - - PR c/102989 - * expr.cc (expand_expr_real_1): Don't call targetm.c.bitint_type_info - inside gcc_assert, as later code relies on it filling info variable. - * gimple-fold.cc (clear_padding_bitint_needs_padding_p, - clear_padding_type): Likewise. - * varasm.cc (output_constant): Likewise. - * fold-const.cc (native_encode_int, native_interpret_int): Likewise. - * stor-layout.cc (finish_bitfield_representative, layout_type): - Likewise. - * gimple-lower-bitint.cc (bitint_precision_kind): Likewise. - -2023-09-07 Xi Ruoyao <xry111@xry111.site> - - PR target/111252 - * config/loongarch/loongarch-protos.h - (loongarch_pre_reload_split): Declare new function. - (loongarch_use_bstrins_for_ior_with_mask): Likewise. - * config/loongarch/loongarch.cc - (loongarch_pre_reload_split): Implement. - (loongarch_use_bstrins_for_ior_with_mask): Likewise. - * config/loongarch/predicates.md (ins_zero_bitmask_operand): - New predicate. - * config/loongarch/loongarch.md (bstrins_<mode>_for_mask): - New define_insn_and_split. - (bstrins_<mode>_for_ior_mask): Likewise. - (define_peephole2): Further optimize code sequence produced by - bstrins_<mode>_for_ior_mask if possible. - -2023-09-07 Richard Sandiford <richard.sandiford@arm.com> - - * lra-eliminations.cc (lra_eliminate_regs_1): Use simplify_gen_binary - rather than gen_rtx_PLUS. - -2023-09-07 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - PR target/111313 - * config/riscv/riscv-vsetvl.cc (pass_vsetvl::cleanup_earliest_vsetvls): Remove. - (pass_vsetvl::df_post_optimization): Remove incorrect function. - -2023-09-07 Tsukasa OI <research_trasio@irq.a4lg.com> - - * common/config/riscv/riscv-common.cc (riscv_ext_flag_table): - Parse 'XVentanaCondOps' extension. - * config/riscv/riscv-opts.h (MASK_XVENTANACONDOPS): New. - (TARGET_XVENTANACONDOPS): Ditto. - (TARGET_ZICOND_LIKE): New to represent targets with conditional - moves like 'Zicond'. It includes RV64 + 'XVentanaCondOps'. - * config/riscv/riscv.cc (riscv_rtx_costs): Replace TARGET_ZICOND - with TARGET_ZICOND_LIKE. - (riscv_expand_conditional_move): Ditto. - * config/riscv/riscv.md (mov<mode>cc): Replace TARGET_ZICOND with - TARGET_ZICOND_LIKE. - * config/riscv/riscv.opt: Add new riscv_xventana_subext. - * config/riscv/zicond.md: Modify description. - (eqz_ventana): New to match corresponding czero instructions. - (nez_ventana): Ditto. - (*czero.<eqz>.<GPR><X>): Emit a 'XVentanaCondOps' instruction if - 'Zicond' is not available but 'XVentanaCondOps' + RV64 is. - (*czero.<eqz>.<GPR><X>): Ditto. - (*czero.eqz.<GPR><X>.opt1): Ditto. - (*czero.nez.<GPR><X>.opt2): Ditto. - -2023-09-06 Ian Lance Taylor <iant@golang.org> - - PR go/111310 - * godump.cc (go_format_type): Handle BITINT_TYPE. - -2023-09-06 Jakub Jelinek <jakub@redhat.com> - - PR c/102989 - * tree.cc (build_one_cst, build_minus_one_cst): Handle BITINT_TYPE - like INTEGER_TYPE. - -2023-09-06 Jakub Jelinek <jakub@redhat.com> - - PR c/102989 - * gimple-lower-bitint.cc (bitint_large_huge::if_then_else, - bitint_large_huge::if_then_if_then_else): Use make_single_succ_edge - rather than make_edge, initialize bb->count. - -2023-09-06 Jakub Jelinek <jakub@redhat.com> - - PR c/102989 - * doc/libgcc.texi (Bit-precise integer arithmetic functions): - Document general rules for _BitInt support library functions - and document __mulbitint3 and __divmodbitint4. - (Conversion functions): Document __fix{s,d,x,t}fbitint, - __floatbitint{s,d,x,t,h,b}f, __bid_fix{s,d,t}dbitint and - __bid_floatbitint{s,d,t}d. - -2023-09-06 Jakub Jelinek <jakub@redhat.com> - - PR c/102989 - * glimits.h (BITINT_MAXWIDTH): Define if __BITINT_MAXWIDTH__ is - predefined. - -2023-09-06 Jakub Jelinek <jakub@redhat.com> - - PR c/102989 - * internal-fn.cc (expand_ubsan_result_store): Add LHS, MODE and - DO_ERROR arguments. For non-mode precision BITINT_TYPE results - check if all padding bits up to mode precision are zeros or sign - bit copies and if not, jump to DO_ERROR. - (expand_addsub_overflow, expand_neg_overflow, expand_mul_overflow): - Adjust expand_ubsan_result_store callers. - * ubsan.cc: Include target.h and langhooks.h. - (ubsan_encode_value): Pass BITINT_TYPE values which fit into pointer - size converted to pointer sized integer, pass BITINT_TYPE values - which fit into TImode (if supported) or DImode as those integer types - or otherwise for now punt (pass 0). - (ubsan_type_descriptor): Handle BITINT_TYPE. For pstyle of - UBSAN_PRINT_FORCE_INT use TK_Integer (0x0000) mode with a - TImode/DImode precision rather than TK_Unknown used otherwise for - large/huge BITINT_TYPEs. - (instrument_si_overflow): Instrument BITINT_TYPE operations even when - they don't have mode precision. - * ubsan.h (enum ubsan_print_style): New enumerator. - -2023-09-06 Jakub Jelinek <jakub@redhat.com> - - PR c/102989 - * config/i386/i386.cc (classify_argument): Handle BITINT_TYPE. - (ix86_bitint_type_info): New function. - (TARGET_C_BITINT_TYPE_INFO): Redefine. - -2023-09-06 Jakub Jelinek <jakub@redhat.com> - - PR c/102989 - * Makefile.in (OBJS): Add gimple-lower-bitint.o. - * passes.def: Add pass_lower_bitint after pass_lower_complex and - pass_lower_bitint_O0 after pass_lower_complex_O0. - * tree-pass.h (PROP_gimple_lbitint): Define. - (make_pass_lower_bitint_O0, make_pass_lower_bitint): Declare. - * gimple-lower-bitint.h: New file. - * tree-ssa-live.h (struct _var_map): Add bitint member. - (init_var_map): Adjust declaration. - (region_contains_p): Handle map->bitint like map->outofssa_p. - * tree-ssa-live.cc (init_var_map): Add BITINT argument, initialize - map->bitint and set map->outofssa_p to false if it is non-NULL. - * tree-ssa-coalesce.cc: Include gimple-lower-bitint.h. - (build_ssa_conflict_graph): Call build_bitint_stmt_ssa_conflicts if - map->bitint. - (create_coalesce_list_for_region): For map->bitint ignore SSA_NAMEs - not in that bitmap, and allow res without default def. - (compute_optimized_partition_bases): In map->bitint mode try hard to - coalesce any SSA_NAMEs with the same size. - (coalesce_bitint): New function. - (coalesce_ssa_name): In map->bitint mode, or map->bitmap into - used_in_copies and call coalesce_bitint. - * gimple-lower-bitint.cc: New file. - -2023-09-06 Jakub Jelinek <jakub@redhat.com> - - PR c/102989 - * tree.def (BITINT_TYPE): New type. - * tree.h (TREE_CHECK6, TREE_NOT_CHECK6): Define. - (NUMERICAL_TYPE_CHECK, INTEGRAL_TYPE_P): Include - BITINT_TYPE. - (BITINT_TYPE_P): Define. - (CONSTRUCTOR_BITFIELD_P): Return true even for BLKmode bit-fields if - they have BITINT_TYPE type. - (tree_check6, tree_not_check6): New inline functions. - (any_integral_type_check): Include BITINT_TYPE. - (build_bitint_type): Declare. - * tree.cc (tree_code_size, wide_int_to_tree_1, cache_integer_cst, - build_zero_cst, type_hash_canon_hash, type_cache_hasher::equal, - type_hash_canon): Handle BITINT_TYPE. - (bitint_type_cache): New variable. - (build_bitint_type): New function. - (signed_or_unsigned_type_for, verify_type_variant, verify_type): - Handle BITINT_TYPE. - (tree_cc_finalize): Free bitint_type_cache. - * builtins.cc (type_to_class): Handle BITINT_TYPE. - (fold_builtin_unordered_cmp): Handle BITINT_TYPE like INTEGER_TYPE. - * cfgexpand.cc (expand_debug_expr): Punt on BLKmode BITINT_TYPE - INTEGER_CSTs. - * convert.cc (convert_to_pointer_1, convert_to_real_1, - convert_to_complex_1): Handle BITINT_TYPE like INTEGER_TYPE. - (convert_to_integer_1): Likewise. For BITINT_TYPE don't check - GET_MODE_PRECISION (TYPE_MODE (type)). - * doc/generic.texi (BITINT_TYPE): Document. - * doc/tm.texi.in (TARGET_C_BITINT_TYPE_INFO): New. - * doc/tm.texi: Regenerated. - * dwarf2out.cc (base_type_die, is_base_type, modified_type_die, - gen_type_die_with_usage): Handle BITINT_TYPE. - (rtl_for_decl_init): Punt on BLKmode BITINT_TYPE INTEGER_CSTs or - handle those which fit into shwi. - * expr.cc (expand_expr_real_1): Define EXTEND_BITINT macro, reduce - to bitfield precision reads from BITINT_TYPE vars, parameters or - memory locations. Expand large/huge BITINT_TYPE INTEGER_CSTs into - memory. - * fold-const.cc (fold_convert_loc, make_range_step): Handle - BITINT_TYPE. - (extract_muldiv_1): For BITINT_TYPE use TYPE_PRECISION rather than - GET_MODE_SIZE (SCALAR_INT_TYPE_MODE). - (native_encode_int, native_interpret_int, native_interpret_expr): - Handle BITINT_TYPE. - * gimple-expr.cc (useless_type_conversion_p): Make BITINT_TYPE - to some other integral type or vice versa conversions non-useless. - * gimple-fold.cc (gimple_fold_builtin_memset): Punt for BITINT_TYPE. - (clear_padding_unit): Mention in comment that _BitInt types don't need - to fit either. - (clear_padding_bitint_needs_padding_p): New function. - (clear_padding_type_may_have_padding_p): Handle BITINT_TYPE. - (clear_padding_type): Likewise. - * internal-fn.cc (expand_mul_overflow): For unsigned non-mode - precision operands force pos_neg? to 1. - (expand_MULBITINT, expand_DIVMODBITINT, expand_FLOATTOBITINT, - expand_BITINTTOFLOAT): New functions. - * internal-fn.def (MULBITINT, DIVMODBITINT, FLOATTOBITINT, - BITINTTOFLOAT): New internal functions. - * internal-fn.h (expand_MULBITINT, expand_DIVMODBITINT, - expand_FLOATTOBITINT, expand_BITINTTOFLOAT): Declare. - * match.pd (non-equality compare simplifications from fold_binary): - Punt if TYPE_MODE (arg1_type) is BLKmode. - * pretty-print.h (pp_wide_int): Handle printing of large precision - wide_ints which would buffer overflow digit_buffer. - * stor-layout.cc (finish_bitfield_representative): For bit-fields - with BITINT_TYPE, prefer representatives with precisions in - multiple of limb precision. - (layout_type): Handle BITINT_TYPE. Handle COMPLEX_TYPE with BLKmode - element type and assert it is BITINT_TYPE. - * target.def (bitint_type_info): New C target hook. - * target.h (struct bitint_info): New type. - * targhooks.cc (default_bitint_type_info): New function. - * targhooks.h (default_bitint_type_info): Declare. - * tree-pretty-print.cc (dump_generic_node): Handle BITINT_TYPE. - Handle printing large wide_ints which would buffer overflow - digit_buffer. - * tree-ssa-sccvn.cc: Include target.h. - (eliminate_dom_walker::eliminate_stmt): Punt for large/huge - BITINT_TYPE. - * tree-switch-conversion.cc (jump_table_cluster::emit): For more than - 64-bit BITINT_TYPE subtract low bound from expression and cast to - 64-bit integer type both the controlling expression and case labels. - * typeclass.h (enum type_class): Add bitint_type_class enumerator. - * varasm.cc (output_constant): Handle BITINT_TYPE INTEGER_CSTs. - * vr-values.cc (check_for_binary_op_overflow): Use widest2_int rather - than widest_int. - (simplify_using_ranges::simplify_internal_call_using_ranges): Use - unsigned_type_for rather than build_nonstandard_integer_type. - -2023-09-06 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - PR target/111296 - * config/riscv/riscv.cc (riscv_modes_tieable_p): Fix incorrect mode - tieable for RVV modes. - -2023-09-06 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - PR target/111295 - * config/riscv/riscv-vsetvl.cc (insert_vsetvl): Bug fix. - -2023-09-06 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv-vector-switch.def (VLS_ENTRY): Remove TARGET_64BIT - -2023-09-06 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp> - - * config/xtensa/xtensa.cc (xtensa_expand_scc): - Add code for particular constants (only 0 and INT_MIN for now) - for EQ/NE boolean evaluation in SImode. - * config/xtensa/xtensa.md (*eqne_INT_MIN): Remove because its - implementation has been integrated into the above. - -2023-09-06 Lehua Ding <lehua.ding@rivai.ai> - - PR target/111232 - * config/riscv/autovec-opt.md (@pred_single_widen_mul<any_extend:su><mode>): - Delete. - (*pred_widen_mulsu<mode>): Delete. - (*pred_single_widen_mul<mode>): Delete. - (*dual_widen_<any_widen_binop:optab><any_extend:su><mode>): - Add new combine patterns. - (*single_widen_sub<any_extend:su><mode>): Ditto. - (*single_widen_add<any_extend:su><mode>): Ditto. - (*single_widen_mult<any_extend:su><mode>): Ditto. - (*dual_widen_mulsu<mode>): Ditto. - (*dual_widen_mulus<mode>): Ditto. - (*dual_widen_<optab><mode>): Ditto. - (*single_widen_add<mode>): Ditto. - (*single_widen_sub<mode>): Ditto. - (*single_widen_mult<mode>): Ditto. - * config/riscv/autovec.md (<optab><mode>3): - Change define_expand to define_insn_and_split. - (<optab><mode>2): Ditto. - (abs<mode>2): Ditto. - (smul<mode>3_highpart): Ditto. - (umul<mode>3_highpart): Ditto. - -2023-09-06 Lehua Ding <lehua.ding@rivai.ai> - - * config/riscv/riscv-protos.h (riscv_declare_function_name): Add protos. - (riscv_asm_output_alias): Ditto. - (riscv_asm_output_external): Ditto. - * config/riscv/riscv.cc (riscv_asm_output_variant_cc): - Output .variant_cc directive for vector function. - (riscv_declare_function_name): Ditto. - (riscv_asm_output_alias): Ditto. - (riscv_asm_output_external): Ditto. - * config/riscv/riscv.h (ASM_DECLARE_FUNCTION_NAME): - Implement ASM_DECLARE_FUNCTION_NAME. - (ASM_OUTPUT_DEF_FROM_DECLS): Implement ASM_OUTPUT_DEF_FROM_DECLS. - (ASM_OUTPUT_EXTERNAL): Implement ASM_OUTPUT_EXTERNAL. - -2023-09-06 Lehua Ding <lehua.ding@rivai.ai> - - * config/riscv/riscv-sr.cc (riscv_remove_unneeded_save_restore_calls): Pass riscv_cc. - * config/riscv/riscv.cc (struct riscv_frame_info): Add new fileds. - (riscv_frame_info::reset): Reset new fileds. - (riscv_call_tls_get_addr): Pass riscv_cc. - (riscv_function_arg): Return riscv_cc for call patterm. - (get_riscv_cc): New function return riscv_cc from rtl call_insn. - (riscv_insn_callee_abi): Implement TARGET_INSN_CALLEE_ABI. - (riscv_save_reg_p): Add vector callee-saved check. - (riscv_stack_align): Add vector save area comment. - (riscv_compute_frame_info): Ditto. - (riscv_restore_reg): Update for type change. - (riscv_for_each_saved_v_reg): New function save vector registers. - (riscv_first_stack_step): Handle funciton with vector callee-saved registers. - (riscv_expand_prologue): Ditto. - (riscv_expand_epilogue): Ditto. - (riscv_output_mi_thunk): Pass riscv_cc. - (TARGET_INSN_CALLEE_ABI): Implement TARGET_INSN_CALLEE_ABI. - * config/riscv/riscv.h (get_riscv_cc): Export get_riscv_cc function. - * config/riscv/riscv.md: Add CALLEE_CC operand for call pattern. - -2023-09-06 Lehua Ding <lehua.ding@rivai.ai> - - * config/riscv/riscv-protos.h (builtin_type_p): New function for checking vector type. - * config/riscv/riscv-vector-builtins.cc (builtin_type_p): Ditto. - * config/riscv/riscv.cc (struct riscv_arg_info): New fields. - (riscv_init_cumulative_args): Setup variant_cc field. - (riscv_vector_type_p): New function for checking vector type. - (riscv_hard_regno_nregs): Hoist declare. - (riscv_get_vector_arg): Subroutine of riscv_get_arg_info. - (riscv_get_arg_info): Support vector cc. - (riscv_function_arg_advance): Update cum. - (riscv_pass_by_reference): Handle vector args. - (riscv_v_abi): New function return vector abi. - (riscv_return_value_is_vector_type_p): New function for check vector arguments. - (riscv_arguments_is_vector_type_p): New function for check vector returns. - (riscv_fntype_abi): Implement TARGET_FNTYPE_ABI. - (TARGET_FNTYPE_ABI): Implement TARGET_FNTYPE_ABI. - * config/riscv/riscv.h (GCC_RISCV_H): Define macros for vector abi. - (MAX_ARGS_IN_VECTOR_REGISTERS): Ditto. - (MAX_ARGS_IN_MASK_REGISTERS): Ditto. - (V_ARG_FIRST): Ditto. - (V_ARG_LAST): Ditto. - (enum riscv_cc): Define all RISCV_CC variants. - * config/riscv/riscv.opt: Add --param=riscv-vector-abi. - -2023-09-06 Lehua Ding <lehua.ding@rivai.ai> - - * config/riscv/autovec-opt.md (*cond_<optab><mode>): - Add sqrt + vcond_mask combine pattern. - * config/riscv/autovec.md (<optab><mode>2): - Change define_expand to define_insn_and_split. - -2023-09-06 Jason Merrill <jason@redhat.com> - - * common.opt: Update -fabi-version=19. - -2023-09-06 Tsukasa OI <research_trasio@irq.a4lg.com> - - * config/riscv/zicond.md: Add closing parent to a comment. - -2023-09-06 Tsukasa OI <research_trasio@irq.a4lg.com> - - * config/riscv/riscv.cc (riscv_expand_conditional_move): Force - large constant cons/alt into a register. - -2023-09-05 Christoph Müllner <christoph.muellner@vrull.eu> - - * config/riscv/riscv.cc (riscv_build_integer_1): Don't - require one zero bit in the upper 32 bits for LI+RORI synthesis. - -2023-09-05 Jeff Law <jlaw@ventanamicro.com> - - * config/riscv/bitmanip.md (bswapsi2): Expose for TARGET_64BIT. - -2023-09-05 Andrew Pinski <apinski@marvell.com> - - PR tree-optimization/98710 - * match.pd (`(x | c) & ~(y | c)`, `(x & c) | ~(y & c)`): New pattern. - (`x & ~(y | x)`, `x | ~(y & x)`): New patterns. - -2023-09-05 Andrew Pinski <apinski@marvell.com> - - PR tree-optimization/103536 - * match.pd (`(x | y) & (x & z)`, - `(x & y) | (x | z)`): New patterns. - -2023-09-05 Andrew Pinski <apinski@marvell.com> - - PR tree-optimization/107137 - * match.pd (`(nop_convert)-(convert)a`): New pattern. - -2023-09-05 Andrew Pinski <apinski@marvell.com> - - PR tree-optimization/96694 - * match.pd (`~MAX(~X, Y)`, `~MIN(~X, Y)`): New patterns. - -2023-09-05 Andrew Pinski <apinski@marvell.com> - - PR tree-optimization/105832 - * match.pd (`(1 >> X) != 0`): New pattern - -2023-09-05 Edwin Lu <ewlu@rivosinc.com> - - * config/riscv/riscv.md: Update/Add types - -2023-09-05 Edwin Lu <ewlu@rivosinc.com> - - * config/riscv/pic.md: Update types - -2023-09-05 Christoph Müllner <christoph.muellner@vrull.eu> - - * config/riscv/riscv.cc (riscv_build_integer_1): Enable constant - synthesis with rotate-right for XTheadBb. - -2023-09-05 Vineet Gupta <vineetg@rivosinc.com> - - * config/riscv/zicond.md: Fix op2 pattern. - -2023-09-05 Szabolcs Nagy <szabolcs.nagy@arm.com> - - * config/aarch64/aarch64.h (AARCH64_ISA_RCPC): Remove dup. - -2023-09-05 Xi Ruoyao <xry111@xry111.site> - - * config/loongarch/loongarch-opts.h (HAVE_AS_EXPLICIT_RELOCS): - Define to 0 if not defined yet. - -2023-09-05 Kito Cheng <kito.cheng@sifive.com> - - * config/riscv/linux.h (TARGET_ASM_FILE_END): Move ... - * config/riscv/riscv.cc (TARGET_ASM_FILE_END): to here. - -2023-09-05 Pan Li <pan2.li@intel.com> - - * config/riscv/autovec-vls.md (copysign<mode>3): New pattern. - * config/riscv/vector.md: Extend iterator for VLS. - -2023-09-05 Lulu Cheng <chenglulu@loongson.cn> - - * config.gcc: Export the header file lasxintrin.h. - * config/loongarch/loongarch-builtins.cc (enum loongarch_builtin_type): - Add Loongson ASX builtin functions support. - (AVAIL_ALL): Ditto. - (LASX_BUILTIN): Ditto. - (LASX_NO_TARGET_BUILTIN): Ditto. - (LASX_BUILTIN_TEST_BRANCH): Ditto. - (CODE_FOR_lasx_xvsadd_b): Ditto. - (CODE_FOR_lasx_xvsadd_h): Ditto. - (CODE_FOR_lasx_xvsadd_w): Ditto. - (CODE_FOR_lasx_xvsadd_d): Ditto. - (CODE_FOR_lasx_xvsadd_bu): Ditto. - (CODE_FOR_lasx_xvsadd_hu): Ditto. - (CODE_FOR_lasx_xvsadd_wu): Ditto. - (CODE_FOR_lasx_xvsadd_du): Ditto. - (CODE_FOR_lasx_xvadd_b): Ditto. - (CODE_FOR_lasx_xvadd_h): Ditto. - (CODE_FOR_lasx_xvadd_w): Ditto. - (CODE_FOR_lasx_xvadd_d): Ditto. - (CODE_FOR_lasx_xvaddi_bu): Ditto. - (CODE_FOR_lasx_xvaddi_hu): Ditto. - (CODE_FOR_lasx_xvaddi_wu): Ditto. - (CODE_FOR_lasx_xvaddi_du): Ditto. - (CODE_FOR_lasx_xvand_v): Ditto. - (CODE_FOR_lasx_xvandi_b): Ditto. - (CODE_FOR_lasx_xvbitsel_v): Ditto. - (CODE_FOR_lasx_xvseqi_b): Ditto. - (CODE_FOR_lasx_xvseqi_h): Ditto. - (CODE_FOR_lasx_xvseqi_w): Ditto. - (CODE_FOR_lasx_xvseqi_d): Ditto. - (CODE_FOR_lasx_xvslti_b): Ditto. - (CODE_FOR_lasx_xvslti_h): Ditto. - (CODE_FOR_lasx_xvslti_w): Ditto. - (CODE_FOR_lasx_xvslti_d): Ditto. - (CODE_FOR_lasx_xvslti_bu): Ditto. - (CODE_FOR_lasx_xvslti_hu): Ditto. - (CODE_FOR_lasx_xvslti_wu): Ditto. - (CODE_FOR_lasx_xvslti_du): Ditto. - (CODE_FOR_lasx_xvslei_b): Ditto. - (CODE_FOR_lasx_xvslei_h): Ditto. - (CODE_FOR_lasx_xvslei_w): Ditto. - (CODE_FOR_lasx_xvslei_d): Ditto. - (CODE_FOR_lasx_xvslei_bu): Ditto. - (CODE_FOR_lasx_xvslei_hu): Ditto. - (CODE_FOR_lasx_xvslei_wu): Ditto. - (CODE_FOR_lasx_xvslei_du): Ditto. - (CODE_FOR_lasx_xvdiv_b): Ditto. - (CODE_FOR_lasx_xvdiv_h): Ditto. - (CODE_FOR_lasx_xvdiv_w): Ditto. - (CODE_FOR_lasx_xvdiv_d): Ditto. - (CODE_FOR_lasx_xvdiv_bu): Ditto. - (CODE_FOR_lasx_xvdiv_hu): Ditto. - (CODE_FOR_lasx_xvdiv_wu): Ditto. - (CODE_FOR_lasx_xvdiv_du): Ditto. - (CODE_FOR_lasx_xvfadd_s): Ditto. - (CODE_FOR_lasx_xvfadd_d): Ditto. - (CODE_FOR_lasx_xvftintrz_w_s): Ditto. - (CODE_FOR_lasx_xvftintrz_l_d): Ditto. - (CODE_FOR_lasx_xvftintrz_wu_s): Ditto. - (CODE_FOR_lasx_xvftintrz_lu_d): Ditto. - (CODE_FOR_lasx_xvffint_s_w): Ditto. - (CODE_FOR_lasx_xvffint_d_l): Ditto. - (CODE_FOR_lasx_xvffint_s_wu): Ditto. - (CODE_FOR_lasx_xvffint_d_lu): Ditto. - (CODE_FOR_lasx_xvfsub_s): Ditto. - (CODE_FOR_lasx_xvfsub_d): Ditto. - (CODE_FOR_lasx_xvfmul_s): Ditto. - (CODE_FOR_lasx_xvfmul_d): Ditto. - (CODE_FOR_lasx_xvfdiv_s): Ditto. - (CODE_FOR_lasx_xvfdiv_d): Ditto. - (CODE_FOR_lasx_xvfmax_s): Ditto. - (CODE_FOR_lasx_xvfmax_d): Ditto. - (CODE_FOR_lasx_xvfmin_s): Ditto. - (CODE_FOR_lasx_xvfmin_d): Ditto. - (CODE_FOR_lasx_xvfsqrt_s): Ditto. - (CODE_FOR_lasx_xvfsqrt_d): Ditto. - (CODE_FOR_lasx_xvflogb_s): Ditto. - (CODE_FOR_lasx_xvflogb_d): Ditto. - (CODE_FOR_lasx_xvmax_b): Ditto. - (CODE_FOR_lasx_xvmax_h): Ditto. - (CODE_FOR_lasx_xvmax_w): Ditto. - (CODE_FOR_lasx_xvmax_d): Ditto. - (CODE_FOR_lasx_xvmaxi_b): Ditto. - (CODE_FOR_lasx_xvmaxi_h): Ditto. - (CODE_FOR_lasx_xvmaxi_w): Ditto. - (CODE_FOR_lasx_xvmaxi_d): Ditto. - (CODE_FOR_lasx_xvmax_bu): Ditto. - (CODE_FOR_lasx_xvmax_hu): Ditto. - (CODE_FOR_lasx_xvmax_wu): Ditto. - (CODE_FOR_lasx_xvmax_du): Ditto. - (CODE_FOR_lasx_xvmaxi_bu): Ditto. - (CODE_FOR_lasx_xvmaxi_hu): Ditto. - (CODE_FOR_lasx_xvmaxi_wu): Ditto. - (CODE_FOR_lasx_xvmaxi_du): Ditto. - (CODE_FOR_lasx_xvmin_b): Ditto. - (CODE_FOR_lasx_xvmin_h): Ditto. - (CODE_FOR_lasx_xvmin_w): Ditto. - (CODE_FOR_lasx_xvmin_d): Ditto. - (CODE_FOR_lasx_xvmini_b): Ditto. - (CODE_FOR_lasx_xvmini_h): Ditto. - (CODE_FOR_lasx_xvmini_w): Ditto. - (CODE_FOR_lasx_xvmini_d): Ditto. - (CODE_FOR_lasx_xvmin_bu): Ditto. - (CODE_FOR_lasx_xvmin_hu): Ditto. - (CODE_FOR_lasx_xvmin_wu): Ditto. - (CODE_FOR_lasx_xvmin_du): Ditto. - (CODE_FOR_lasx_xvmini_bu): Ditto. - (CODE_FOR_lasx_xvmini_hu): Ditto. - (CODE_FOR_lasx_xvmini_wu): Ditto. - (CODE_FOR_lasx_xvmini_du): Ditto. - (CODE_FOR_lasx_xvmod_b): Ditto. - (CODE_FOR_lasx_xvmod_h): Ditto. - (CODE_FOR_lasx_xvmod_w): Ditto. - (CODE_FOR_lasx_xvmod_d): Ditto. - (CODE_FOR_lasx_xvmod_bu): Ditto. - (CODE_FOR_lasx_xvmod_hu): Ditto. - (CODE_FOR_lasx_xvmod_wu): Ditto. - (CODE_FOR_lasx_xvmod_du): Ditto. - (CODE_FOR_lasx_xvmul_b): Ditto. - (CODE_FOR_lasx_xvmul_h): Ditto. - (CODE_FOR_lasx_xvmul_w): Ditto. - (CODE_FOR_lasx_xvmul_d): Ditto. - (CODE_FOR_lasx_xvclz_b): Ditto. - (CODE_FOR_lasx_xvclz_h): Ditto. - (CODE_FOR_lasx_xvclz_w): Ditto. - (CODE_FOR_lasx_xvclz_d): Ditto. - (CODE_FOR_lasx_xvnor_v): Ditto. - (CODE_FOR_lasx_xvor_v): Ditto. - (CODE_FOR_lasx_xvori_b): Ditto. - (CODE_FOR_lasx_xvnori_b): Ditto. - (CODE_FOR_lasx_xvpcnt_b): Ditto. - (CODE_FOR_lasx_xvpcnt_h): Ditto. - (CODE_FOR_lasx_xvpcnt_w): Ditto. - (CODE_FOR_lasx_xvpcnt_d): Ditto. - (CODE_FOR_lasx_xvxor_v): Ditto. - (CODE_FOR_lasx_xvxori_b): Ditto. - (CODE_FOR_lasx_xvsll_b): Ditto. - (CODE_FOR_lasx_xvsll_h): Ditto. - (CODE_FOR_lasx_xvsll_w): Ditto. - (CODE_FOR_lasx_xvsll_d): Ditto. - (CODE_FOR_lasx_xvslli_b): Ditto. - (CODE_FOR_lasx_xvslli_h): Ditto. - (CODE_FOR_lasx_xvslli_w): Ditto. - (CODE_FOR_lasx_xvslli_d): Ditto. - (CODE_FOR_lasx_xvsra_b): Ditto. - (CODE_FOR_lasx_xvsra_h): Ditto. - (CODE_FOR_lasx_xvsra_w): Ditto. - (CODE_FOR_lasx_xvsra_d): Ditto. - (CODE_FOR_lasx_xvsrai_b): Ditto. - (CODE_FOR_lasx_xvsrai_h): Ditto. - (CODE_FOR_lasx_xvsrai_w): Ditto. - (CODE_FOR_lasx_xvsrai_d): Ditto. - (CODE_FOR_lasx_xvsrl_b): Ditto. - (CODE_FOR_lasx_xvsrl_h): Ditto. - (CODE_FOR_lasx_xvsrl_w): Ditto. - (CODE_FOR_lasx_xvsrl_d): Ditto. - (CODE_FOR_lasx_xvsrli_b): Ditto. - (CODE_FOR_lasx_xvsrli_h): Ditto. - (CODE_FOR_lasx_xvsrli_w): Ditto. - (CODE_FOR_lasx_xvsrli_d): Ditto. - (CODE_FOR_lasx_xvsub_b): Ditto. - (CODE_FOR_lasx_xvsub_h): Ditto. - (CODE_FOR_lasx_xvsub_w): Ditto. - (CODE_FOR_lasx_xvsub_d): Ditto. - (CODE_FOR_lasx_xvsubi_bu): Ditto. - (CODE_FOR_lasx_xvsubi_hu): Ditto. - (CODE_FOR_lasx_xvsubi_wu): Ditto. - (CODE_FOR_lasx_xvsubi_du): Ditto. - (CODE_FOR_lasx_xvpackod_d): Ditto. - (CODE_FOR_lasx_xvpackev_d): Ditto. - (CODE_FOR_lasx_xvpickod_d): Ditto. - (CODE_FOR_lasx_xvpickev_d): Ditto. - (CODE_FOR_lasx_xvrepli_b): Ditto. - (CODE_FOR_lasx_xvrepli_h): Ditto. - (CODE_FOR_lasx_xvrepli_w): Ditto. - (CODE_FOR_lasx_xvrepli_d): Ditto. - (CODE_FOR_lasx_xvandn_v): Ditto. - (CODE_FOR_lasx_xvorn_v): Ditto. - (CODE_FOR_lasx_xvneg_b): Ditto. - (CODE_FOR_lasx_xvneg_h): Ditto. - (CODE_FOR_lasx_xvneg_w): Ditto. - (CODE_FOR_lasx_xvneg_d): Ditto. - (CODE_FOR_lasx_xvbsrl_v): Ditto. - (CODE_FOR_lasx_xvbsll_v): Ditto. - (CODE_FOR_lasx_xvfmadd_s): Ditto. - (CODE_FOR_lasx_xvfmadd_d): Ditto. - (CODE_FOR_lasx_xvfmsub_s): Ditto. - (CODE_FOR_lasx_xvfmsub_d): Ditto. - (CODE_FOR_lasx_xvfnmadd_s): Ditto. - (CODE_FOR_lasx_xvfnmadd_d): Ditto. - (CODE_FOR_lasx_xvfnmsub_s): Ditto. - (CODE_FOR_lasx_xvfnmsub_d): Ditto. - (CODE_FOR_lasx_xvpermi_q): Ditto. - (CODE_FOR_lasx_xvpermi_d): Ditto. - (CODE_FOR_lasx_xbnz_v): Ditto. - (CODE_FOR_lasx_xbz_v): Ditto. - (CODE_FOR_lasx_xvssub_b): Ditto. - (CODE_FOR_lasx_xvssub_h): Ditto. - (CODE_FOR_lasx_xvssub_w): Ditto. - (CODE_FOR_lasx_xvssub_d): Ditto. - (CODE_FOR_lasx_xvssub_bu): Ditto. - (CODE_FOR_lasx_xvssub_hu): Ditto. - (CODE_FOR_lasx_xvssub_wu): Ditto. - (CODE_FOR_lasx_xvssub_du): Ditto. - (CODE_FOR_lasx_xvabsd_b): Ditto. - (CODE_FOR_lasx_xvabsd_h): Ditto. - (CODE_FOR_lasx_xvabsd_w): Ditto. - (CODE_FOR_lasx_xvabsd_d): Ditto. - (CODE_FOR_lasx_xvabsd_bu): Ditto. - (CODE_FOR_lasx_xvabsd_hu): Ditto. - (CODE_FOR_lasx_xvabsd_wu): Ditto. - (CODE_FOR_lasx_xvabsd_du): Ditto. - (CODE_FOR_lasx_xvavg_b): Ditto. - (CODE_FOR_lasx_xvavg_h): Ditto. - (CODE_FOR_lasx_xvavg_w): Ditto. - (CODE_FOR_lasx_xvavg_d): Ditto. - (CODE_FOR_lasx_xvavg_bu): Ditto. - (CODE_FOR_lasx_xvavg_hu): Ditto. - (CODE_FOR_lasx_xvavg_wu): Ditto. - (CODE_FOR_lasx_xvavg_du): Ditto. - (CODE_FOR_lasx_xvavgr_b): Ditto. - (CODE_FOR_lasx_xvavgr_h): Ditto. - (CODE_FOR_lasx_xvavgr_w): Ditto. - (CODE_FOR_lasx_xvavgr_d): Ditto. - (CODE_FOR_lasx_xvavgr_bu): Ditto. - (CODE_FOR_lasx_xvavgr_hu): Ditto. - (CODE_FOR_lasx_xvavgr_wu): Ditto. - (CODE_FOR_lasx_xvavgr_du): Ditto. - (CODE_FOR_lasx_xvmuh_b): Ditto. - (CODE_FOR_lasx_xvmuh_h): Ditto. - (CODE_FOR_lasx_xvmuh_w): Ditto. - (CODE_FOR_lasx_xvmuh_d): Ditto. - (CODE_FOR_lasx_xvmuh_bu): Ditto. - (CODE_FOR_lasx_xvmuh_hu): Ditto. - (CODE_FOR_lasx_xvmuh_wu): Ditto. - (CODE_FOR_lasx_xvmuh_du): Ditto. - (CODE_FOR_lasx_xvssran_b_h): Ditto. - (CODE_FOR_lasx_xvssran_h_w): Ditto. - (CODE_FOR_lasx_xvssran_w_d): Ditto. - (CODE_FOR_lasx_xvssran_bu_h): Ditto. - (CODE_FOR_lasx_xvssran_hu_w): Ditto. - (CODE_FOR_lasx_xvssran_wu_d): Ditto. - (CODE_FOR_lasx_xvssrarn_b_h): Ditto. - (CODE_FOR_lasx_xvssrarn_h_w): Ditto. - (CODE_FOR_lasx_xvssrarn_w_d): Ditto. - (CODE_FOR_lasx_xvssrarn_bu_h): Ditto. - (CODE_FOR_lasx_xvssrarn_hu_w): Ditto. - (CODE_FOR_lasx_xvssrarn_wu_d): Ditto. - (CODE_FOR_lasx_xvssrln_bu_h): Ditto. - (CODE_FOR_lasx_xvssrln_hu_w): Ditto. - (CODE_FOR_lasx_xvssrln_wu_d): Ditto. - (CODE_FOR_lasx_xvssrlrn_bu_h): Ditto. - (CODE_FOR_lasx_xvssrlrn_hu_w): Ditto. - (CODE_FOR_lasx_xvssrlrn_wu_d): Ditto. - (CODE_FOR_lasx_xvftint_w_s): Ditto. - (CODE_FOR_lasx_xvftint_l_d): Ditto. - (CODE_FOR_lasx_xvftint_wu_s): Ditto. - (CODE_FOR_lasx_xvftint_lu_d): Ditto. - (CODE_FOR_lasx_xvsllwil_h_b): Ditto. - (CODE_FOR_lasx_xvsllwil_w_h): Ditto. - (CODE_FOR_lasx_xvsllwil_d_w): Ditto. - (CODE_FOR_lasx_xvsllwil_hu_bu): Ditto. - (CODE_FOR_lasx_xvsllwil_wu_hu): Ditto. - (CODE_FOR_lasx_xvsllwil_du_wu): Ditto. - (CODE_FOR_lasx_xvsat_b): Ditto. - (CODE_FOR_lasx_xvsat_h): Ditto. - (CODE_FOR_lasx_xvsat_w): Ditto. - (CODE_FOR_lasx_xvsat_d): Ditto. - (CODE_FOR_lasx_xvsat_bu): Ditto. - (CODE_FOR_lasx_xvsat_hu): Ditto. - (CODE_FOR_lasx_xvsat_wu): Ditto. - (CODE_FOR_lasx_xvsat_du): Ditto. - (loongarch_builtin_vectorized_function): Ditto. - (loongarch_expand_builtin_insn): Ditto. - (loongarch_expand_builtin): Ditto. - * config/loongarch/loongarch-ftypes.def (1): Ditto. - (2): Ditto. - (3): Ditto. - (4): Ditto. - * config/loongarch/lasxintrin.h: New file. - -2023-09-05 Lulu Cheng <chenglulu@loongson.cn> - - * config/loongarch/loongarch-modes.def - (VECTOR_MODES): Add Loongson ASX instruction support. - * config/loongarch/loongarch-protos.h (loongarch_split_256bit_move): Ditto. - (loongarch_split_256bit_move_p): Ditto. - (loongarch_expand_vector_group_init): Ditto. - (loongarch_expand_vec_perm_1): Ditto. - * config/loongarch/loongarch.cc (loongarch_symbol_insns): Ditto. - (loongarch_valid_offset_p): Ditto. - (loongarch_address_insns): Ditto. - (loongarch_const_insns): Ditto. - (loongarch_legitimize_move): Ditto. - (loongarch_builtin_vectorization_cost): Ditto. - (loongarch_split_move_p): Ditto. - (loongarch_split_move): Ditto. - (loongarch_output_move_index_float): Ditto. - (loongarch_split_256bit_move_p): Ditto. - (loongarch_split_256bit_move): Ditto. - (loongarch_output_move): Ditto. - (loongarch_print_operand_reloc): Ditto. - (loongarch_print_operand): Ditto. - (loongarch_hard_regno_mode_ok_uncached): Ditto. - (loongarch_hard_regno_nregs): Ditto. - (loongarch_class_max_nregs): Ditto. - (loongarch_can_change_mode_class): Ditto. - (loongarch_mode_ok_for_mov_fmt_p): Ditto. - (loongarch_vector_mode_supported_p): Ditto. - (loongarch_preferred_simd_mode): Ditto. - (loongarch_autovectorize_vector_modes): Ditto. - (loongarch_lsx_output_division): Ditto. - (loongarch_expand_lsx_shuffle): Ditto. - (loongarch_expand_vec_perm): Ditto. - (loongarch_expand_vec_perm_interleave): Ditto. - (loongarch_try_expand_lsx_vshuf_const): Ditto. - (loongarch_expand_vec_perm_even_odd_1): Ditto. - (loongarch_expand_vec_perm_even_odd): Ditto. - (loongarch_expand_vec_perm_1): Ditto. - (loongarch_expand_vec_perm_const_2): Ditto. - (loongarch_is_quad_duplicate): Ditto. - (loongarch_is_double_duplicate): Ditto. - (loongarch_is_odd_extraction): Ditto. - (loongarch_is_even_extraction): Ditto. - (loongarch_is_extraction_permutation): Ditto. - (loongarch_is_center_extraction): Ditto. - (loongarch_is_reversing_permutation): Ditto. - (loongarch_is_di_misalign_extract): Ditto. - (loongarch_is_si_misalign_extract): Ditto. - (loongarch_is_lasx_lowpart_interleave): Ditto. - (loongarch_is_lasx_lowpart_interleave_2): Ditto. - (COMPARE_SELECTOR): Ditto. - (loongarch_is_lasx_lowpart_extract): Ditto. - (loongarch_is_lasx_highpart_interleave): Ditto. - (loongarch_is_lasx_highpart_interleave_2): Ditto. - (loongarch_is_elem_duplicate): Ditto. - (loongarch_is_op_reverse_perm): Ditto. - (loongarch_is_single_op_perm): Ditto. - (loongarch_is_divisible_perm): Ditto. - (loongarch_is_triple_stride_extract): Ditto. - (loongarch_vectorize_vec_perm_const): Ditto. - (loongarch_cpu_sched_reassociation_width): Ditto. - (loongarch_expand_vector_extract): Ditto. - (emit_reduc_half): Ditto. - (loongarch_expand_vec_unpack): Ditto. - (loongarch_expand_vector_group_init): Ditto. - (loongarch_expand_vector_init): Ditto. - (loongarch_expand_lsx_cmp): Ditto. - (loongarch_builtin_support_vector_misalignment): Ditto. - * config/loongarch/loongarch.h (UNITS_PER_LASX_REG): Ditto. - (BITS_PER_LASX_REG): Ditto. - (STRUCTURE_SIZE_BOUNDARY): Ditto. - (LASX_REG_FIRST): Ditto. - (LASX_REG_LAST): Ditto. - (LASX_REG_NUM): Ditto. - (LASX_REG_P): Ditto. - (LASX_REG_RTX_P): Ditto. - (LASX_SUPPORTED_MODE_P): Ditto. - * config/loongarch/loongarch.md: Ditto. - * config/loongarch/lasx.md: New file. - -2023-09-05 Lulu Cheng <chenglulu@loongson.cn> - - * config.gcc: Export the header file lsxintrin.h. - * config/loongarch/loongarch-builtins.cc (LARCH_FTYPE_NAME4): Add builtin function support. - (enum loongarch_builtin_type): Ditto. - (AVAIL_ALL): Ditto. - (LARCH_BUILTIN): Ditto. - (LSX_BUILTIN): Ditto. - (LSX_BUILTIN_TEST_BRANCH): Ditto. - (LSX_NO_TARGET_BUILTIN): Ditto. - (CODE_FOR_lsx_vsadd_b): Ditto. - (CODE_FOR_lsx_vsadd_h): Ditto. - (CODE_FOR_lsx_vsadd_w): Ditto. - (CODE_FOR_lsx_vsadd_d): Ditto. - (CODE_FOR_lsx_vsadd_bu): Ditto. - (CODE_FOR_lsx_vsadd_hu): Ditto. - (CODE_FOR_lsx_vsadd_wu): Ditto. - (CODE_FOR_lsx_vsadd_du): Ditto. - (CODE_FOR_lsx_vadd_b): Ditto. - (CODE_FOR_lsx_vadd_h): Ditto. - (CODE_FOR_lsx_vadd_w): Ditto. - (CODE_FOR_lsx_vadd_d): Ditto. - (CODE_FOR_lsx_vaddi_bu): Ditto. - (CODE_FOR_lsx_vaddi_hu): Ditto. - (CODE_FOR_lsx_vaddi_wu): Ditto. - (CODE_FOR_lsx_vaddi_du): Ditto. - (CODE_FOR_lsx_vand_v): Ditto. - (CODE_FOR_lsx_vandi_b): Ditto. - (CODE_FOR_lsx_bnz_v): Ditto. - (CODE_FOR_lsx_bz_v): Ditto. - (CODE_FOR_lsx_vbitsel_v): Ditto. - (CODE_FOR_lsx_vseqi_b): Ditto. - (CODE_FOR_lsx_vseqi_h): Ditto. - (CODE_FOR_lsx_vseqi_w): Ditto. - (CODE_FOR_lsx_vseqi_d): Ditto. - (CODE_FOR_lsx_vslti_b): Ditto. - (CODE_FOR_lsx_vslti_h): Ditto. - (CODE_FOR_lsx_vslti_w): Ditto. - (CODE_FOR_lsx_vslti_d): Ditto. - (CODE_FOR_lsx_vslti_bu): Ditto. - (CODE_FOR_lsx_vslti_hu): Ditto. - (CODE_FOR_lsx_vslti_wu): Ditto. - (CODE_FOR_lsx_vslti_du): Ditto. - (CODE_FOR_lsx_vslei_b): Ditto. - (CODE_FOR_lsx_vslei_h): Ditto. - (CODE_FOR_lsx_vslei_w): Ditto. - (CODE_FOR_lsx_vslei_d): Ditto. - (CODE_FOR_lsx_vslei_bu): Ditto. - (CODE_FOR_lsx_vslei_hu): Ditto. - (CODE_FOR_lsx_vslei_wu): Ditto. - (CODE_FOR_lsx_vslei_du): Ditto. - (CODE_FOR_lsx_vdiv_b): Ditto. - (CODE_FOR_lsx_vdiv_h): Ditto. - (CODE_FOR_lsx_vdiv_w): Ditto. - (CODE_FOR_lsx_vdiv_d): Ditto. - (CODE_FOR_lsx_vdiv_bu): Ditto. - (CODE_FOR_lsx_vdiv_hu): Ditto. - (CODE_FOR_lsx_vdiv_wu): Ditto. - (CODE_FOR_lsx_vdiv_du): Ditto. - (CODE_FOR_lsx_vfadd_s): Ditto. - (CODE_FOR_lsx_vfadd_d): Ditto. - (CODE_FOR_lsx_vftintrz_w_s): Ditto. - (CODE_FOR_lsx_vftintrz_l_d): Ditto. - (CODE_FOR_lsx_vftintrz_wu_s): Ditto. - (CODE_FOR_lsx_vftintrz_lu_d): Ditto. - (CODE_FOR_lsx_vffint_s_w): Ditto. - (CODE_FOR_lsx_vffint_d_l): Ditto. - (CODE_FOR_lsx_vffint_s_wu): Ditto. - (CODE_FOR_lsx_vffint_d_lu): Ditto. - (CODE_FOR_lsx_vfsub_s): Ditto. - (CODE_FOR_lsx_vfsub_d): Ditto. - (CODE_FOR_lsx_vfmul_s): Ditto. - (CODE_FOR_lsx_vfmul_d): Ditto. - (CODE_FOR_lsx_vfdiv_s): Ditto. - (CODE_FOR_lsx_vfdiv_d): Ditto. - (CODE_FOR_lsx_vfmax_s): Ditto. - (CODE_FOR_lsx_vfmax_d): Ditto. - (CODE_FOR_lsx_vfmin_s): Ditto. - (CODE_FOR_lsx_vfmin_d): Ditto. - (CODE_FOR_lsx_vfsqrt_s): Ditto. - (CODE_FOR_lsx_vfsqrt_d): Ditto. - (CODE_FOR_lsx_vflogb_s): Ditto. - (CODE_FOR_lsx_vflogb_d): Ditto. - (CODE_FOR_lsx_vmax_b): Ditto. - (CODE_FOR_lsx_vmax_h): Ditto. - (CODE_FOR_lsx_vmax_w): Ditto. - (CODE_FOR_lsx_vmax_d): Ditto. - (CODE_FOR_lsx_vmaxi_b): Ditto. - (CODE_FOR_lsx_vmaxi_h): Ditto. - (CODE_FOR_lsx_vmaxi_w): Ditto. - (CODE_FOR_lsx_vmaxi_d): Ditto. - (CODE_FOR_lsx_vmax_bu): Ditto. - (CODE_FOR_lsx_vmax_hu): Ditto. - (CODE_FOR_lsx_vmax_wu): Ditto. - (CODE_FOR_lsx_vmax_du): Ditto. - (CODE_FOR_lsx_vmaxi_bu): Ditto. - (CODE_FOR_lsx_vmaxi_hu): Ditto. - (CODE_FOR_lsx_vmaxi_wu): Ditto. - (CODE_FOR_lsx_vmaxi_du): Ditto. - (CODE_FOR_lsx_vmin_b): Ditto. - (CODE_FOR_lsx_vmin_h): Ditto. - (CODE_FOR_lsx_vmin_w): Ditto. - (CODE_FOR_lsx_vmin_d): Ditto. - (CODE_FOR_lsx_vmini_b): Ditto. - (CODE_FOR_lsx_vmini_h): Ditto. - (CODE_FOR_lsx_vmini_w): Ditto. - (CODE_FOR_lsx_vmini_d): Ditto. - (CODE_FOR_lsx_vmin_bu): Ditto. - (CODE_FOR_lsx_vmin_hu): Ditto. - (CODE_FOR_lsx_vmin_wu): Ditto. - (CODE_FOR_lsx_vmin_du): Ditto. - (CODE_FOR_lsx_vmini_bu): Ditto. - (CODE_FOR_lsx_vmini_hu): Ditto. - (CODE_FOR_lsx_vmini_wu): Ditto. - (CODE_FOR_lsx_vmini_du): Ditto. - (CODE_FOR_lsx_vmod_b): Ditto. - (CODE_FOR_lsx_vmod_h): Ditto. - (CODE_FOR_lsx_vmod_w): Ditto. - (CODE_FOR_lsx_vmod_d): Ditto. - (CODE_FOR_lsx_vmod_bu): Ditto. - (CODE_FOR_lsx_vmod_hu): Ditto. - (CODE_FOR_lsx_vmod_wu): Ditto. - (CODE_FOR_lsx_vmod_du): Ditto. - (CODE_FOR_lsx_vmul_b): Ditto. - (CODE_FOR_lsx_vmul_h): Ditto. - (CODE_FOR_lsx_vmul_w): Ditto. - (CODE_FOR_lsx_vmul_d): Ditto. - (CODE_FOR_lsx_vclz_b): Ditto. - (CODE_FOR_lsx_vclz_h): Ditto. - (CODE_FOR_lsx_vclz_w): Ditto. - (CODE_FOR_lsx_vclz_d): Ditto. - (CODE_FOR_lsx_vnor_v): Ditto. - (CODE_FOR_lsx_vor_v): Ditto. - (CODE_FOR_lsx_vori_b): Ditto. - (CODE_FOR_lsx_vnori_b): Ditto. - (CODE_FOR_lsx_vpcnt_b): Ditto. - (CODE_FOR_lsx_vpcnt_h): Ditto. - (CODE_FOR_lsx_vpcnt_w): Ditto. - (CODE_FOR_lsx_vpcnt_d): Ditto. - (CODE_FOR_lsx_vxor_v): Ditto. - (CODE_FOR_lsx_vxori_b): Ditto. - (CODE_FOR_lsx_vsll_b): Ditto. - (CODE_FOR_lsx_vsll_h): Ditto. - (CODE_FOR_lsx_vsll_w): Ditto. - (CODE_FOR_lsx_vsll_d): Ditto. - (CODE_FOR_lsx_vslli_b): Ditto. - (CODE_FOR_lsx_vslli_h): Ditto. - (CODE_FOR_lsx_vslli_w): Ditto. - (CODE_FOR_lsx_vslli_d): Ditto. - (CODE_FOR_lsx_vsra_b): Ditto. - (CODE_FOR_lsx_vsra_h): Ditto. - (CODE_FOR_lsx_vsra_w): Ditto. - (CODE_FOR_lsx_vsra_d): Ditto. - (CODE_FOR_lsx_vsrai_b): Ditto. - (CODE_FOR_lsx_vsrai_h): Ditto. - (CODE_FOR_lsx_vsrai_w): Ditto. - (CODE_FOR_lsx_vsrai_d): Ditto. - (CODE_FOR_lsx_vsrl_b): Ditto. - (CODE_FOR_lsx_vsrl_h): Ditto. - (CODE_FOR_lsx_vsrl_w): Ditto. - (CODE_FOR_lsx_vsrl_d): Ditto. - (CODE_FOR_lsx_vsrli_b): Ditto. - (CODE_FOR_lsx_vsrli_h): Ditto. - (CODE_FOR_lsx_vsrli_w): Ditto. - (CODE_FOR_lsx_vsrli_d): Ditto. - (CODE_FOR_lsx_vsub_b): Ditto. - (CODE_FOR_lsx_vsub_h): Ditto. - (CODE_FOR_lsx_vsub_w): Ditto. - (CODE_FOR_lsx_vsub_d): Ditto. - (CODE_FOR_lsx_vsubi_bu): Ditto. - (CODE_FOR_lsx_vsubi_hu): Ditto. - (CODE_FOR_lsx_vsubi_wu): Ditto. - (CODE_FOR_lsx_vsubi_du): Ditto. - (CODE_FOR_lsx_vpackod_d): Ditto. - (CODE_FOR_lsx_vpackev_d): Ditto. - (CODE_FOR_lsx_vpickod_d): Ditto. - (CODE_FOR_lsx_vpickev_d): Ditto. - (CODE_FOR_lsx_vrepli_b): Ditto. - (CODE_FOR_lsx_vrepli_h): Ditto. - (CODE_FOR_lsx_vrepli_w): Ditto. - (CODE_FOR_lsx_vrepli_d): Ditto. - (CODE_FOR_lsx_vsat_b): Ditto. - (CODE_FOR_lsx_vsat_h): Ditto. - (CODE_FOR_lsx_vsat_w): Ditto. - (CODE_FOR_lsx_vsat_d): Ditto. - (CODE_FOR_lsx_vsat_bu): Ditto. - (CODE_FOR_lsx_vsat_hu): Ditto. - (CODE_FOR_lsx_vsat_wu): Ditto. - (CODE_FOR_lsx_vsat_du): Ditto. - (CODE_FOR_lsx_vavg_b): Ditto. - (CODE_FOR_lsx_vavg_h): Ditto. - (CODE_FOR_lsx_vavg_w): Ditto. - (CODE_FOR_lsx_vavg_d): Ditto. - (CODE_FOR_lsx_vavg_bu): Ditto. - (CODE_FOR_lsx_vavg_hu): Ditto. - (CODE_FOR_lsx_vavg_wu): Ditto. - (CODE_FOR_lsx_vavg_du): Ditto. - (CODE_FOR_lsx_vavgr_b): Ditto. - (CODE_FOR_lsx_vavgr_h): Ditto. - (CODE_FOR_lsx_vavgr_w): Ditto. - (CODE_FOR_lsx_vavgr_d): Ditto. - (CODE_FOR_lsx_vavgr_bu): Ditto. - (CODE_FOR_lsx_vavgr_hu): Ditto. - (CODE_FOR_lsx_vavgr_wu): Ditto. - (CODE_FOR_lsx_vavgr_du): Ditto. - (CODE_FOR_lsx_vssub_b): Ditto. - (CODE_FOR_lsx_vssub_h): Ditto. - (CODE_FOR_lsx_vssub_w): Ditto. - (CODE_FOR_lsx_vssub_d): Ditto. - (CODE_FOR_lsx_vssub_bu): Ditto. - (CODE_FOR_lsx_vssub_hu): Ditto. - (CODE_FOR_lsx_vssub_wu): Ditto. - (CODE_FOR_lsx_vssub_du): Ditto. - (CODE_FOR_lsx_vabsd_b): Ditto. - (CODE_FOR_lsx_vabsd_h): Ditto. - (CODE_FOR_lsx_vabsd_w): Ditto. - (CODE_FOR_lsx_vabsd_d): Ditto. - (CODE_FOR_lsx_vabsd_bu): Ditto. - (CODE_FOR_lsx_vabsd_hu): Ditto. - (CODE_FOR_lsx_vabsd_wu): Ditto. - (CODE_FOR_lsx_vabsd_du): Ditto. - (CODE_FOR_lsx_vftint_w_s): Ditto. - (CODE_FOR_lsx_vftint_l_d): Ditto. - (CODE_FOR_lsx_vftint_wu_s): Ditto. - (CODE_FOR_lsx_vftint_lu_d): Ditto. - (CODE_FOR_lsx_vandn_v): Ditto. - (CODE_FOR_lsx_vorn_v): Ditto. - (CODE_FOR_lsx_vneg_b): Ditto. - (CODE_FOR_lsx_vneg_h): Ditto. - (CODE_FOR_lsx_vneg_w): Ditto. - (CODE_FOR_lsx_vneg_d): Ditto. - (CODE_FOR_lsx_vshuf4i_d): Ditto. - (CODE_FOR_lsx_vbsrl_v): Ditto. - (CODE_FOR_lsx_vbsll_v): Ditto. - (CODE_FOR_lsx_vfmadd_s): Ditto. - (CODE_FOR_lsx_vfmadd_d): Ditto. - (CODE_FOR_lsx_vfmsub_s): Ditto. - (CODE_FOR_lsx_vfmsub_d): Ditto. - (CODE_FOR_lsx_vfnmadd_s): Ditto. - (CODE_FOR_lsx_vfnmadd_d): Ditto. - (CODE_FOR_lsx_vfnmsub_s): Ditto. - (CODE_FOR_lsx_vfnmsub_d): Ditto. - (CODE_FOR_lsx_vmuh_b): Ditto. - (CODE_FOR_lsx_vmuh_h): Ditto. - (CODE_FOR_lsx_vmuh_w): Ditto. - (CODE_FOR_lsx_vmuh_d): Ditto. - (CODE_FOR_lsx_vmuh_bu): Ditto. - (CODE_FOR_lsx_vmuh_hu): Ditto. - (CODE_FOR_lsx_vmuh_wu): Ditto. - (CODE_FOR_lsx_vmuh_du): Ditto. - (CODE_FOR_lsx_vsllwil_h_b): Ditto. - (CODE_FOR_lsx_vsllwil_w_h): Ditto. - (CODE_FOR_lsx_vsllwil_d_w): Ditto. - (CODE_FOR_lsx_vsllwil_hu_bu): Ditto. - (CODE_FOR_lsx_vsllwil_wu_hu): Ditto. - (CODE_FOR_lsx_vsllwil_du_wu): Ditto. - (CODE_FOR_lsx_vssran_b_h): Ditto. - (CODE_FOR_lsx_vssran_h_w): Ditto. - (CODE_FOR_lsx_vssran_w_d): Ditto. - (CODE_FOR_lsx_vssran_bu_h): Ditto. - (CODE_FOR_lsx_vssran_hu_w): Ditto. - (CODE_FOR_lsx_vssran_wu_d): Ditto. - (CODE_FOR_lsx_vssrarn_b_h): Ditto. - (CODE_FOR_lsx_vssrarn_h_w): Ditto. - (CODE_FOR_lsx_vssrarn_w_d): Ditto. - (CODE_FOR_lsx_vssrarn_bu_h): Ditto. - (CODE_FOR_lsx_vssrarn_hu_w): Ditto. - (CODE_FOR_lsx_vssrarn_wu_d): Ditto. - (CODE_FOR_lsx_vssrln_bu_h): Ditto. - (CODE_FOR_lsx_vssrln_hu_w): Ditto. - (CODE_FOR_lsx_vssrln_wu_d): Ditto. - (CODE_FOR_lsx_vssrlrn_bu_h): Ditto. - (CODE_FOR_lsx_vssrlrn_hu_w): Ditto. - (CODE_FOR_lsx_vssrlrn_wu_d): Ditto. - (loongarch_builtin_vector_type): Ditto. - (loongarch_build_cvpointer_type): Ditto. - (LARCH_ATYPE_CVPOINTER): Ditto. - (LARCH_ATYPE_BOOLEAN): Ditto. - (LARCH_ATYPE_V2SF): Ditto. - (LARCH_ATYPE_V2HI): Ditto. - (LARCH_ATYPE_V2SI): Ditto. - (LARCH_ATYPE_V4QI): Ditto. - (LARCH_ATYPE_V4HI): Ditto. - (LARCH_ATYPE_V8QI): Ditto. - (LARCH_ATYPE_V2DI): Ditto. - (LARCH_ATYPE_V4SI): Ditto. - (LARCH_ATYPE_V8HI): Ditto. - (LARCH_ATYPE_V16QI): Ditto. - (LARCH_ATYPE_V2DF): Ditto. - (LARCH_ATYPE_V4SF): Ditto. - (LARCH_ATYPE_V4DI): Ditto. - (LARCH_ATYPE_V8SI): Ditto. - (LARCH_ATYPE_V16HI): Ditto. - (LARCH_ATYPE_V32QI): Ditto. - (LARCH_ATYPE_V4DF): Ditto. - (LARCH_ATYPE_V8SF): Ditto. - (LARCH_ATYPE_UV2DI): Ditto. - (LARCH_ATYPE_UV4SI): Ditto. - (LARCH_ATYPE_UV8HI): Ditto. - (LARCH_ATYPE_UV16QI): Ditto. - (LARCH_ATYPE_UV4DI): Ditto. - (LARCH_ATYPE_UV8SI): Ditto. - (LARCH_ATYPE_UV16HI): Ditto. - (LARCH_ATYPE_UV32QI): Ditto. - (LARCH_ATYPE_UV2SI): Ditto. - (LARCH_ATYPE_UV4HI): Ditto. - (LARCH_ATYPE_UV8QI): Ditto. - (loongarch_builtin_vectorized_function): Ditto. - (LARCH_GET_BUILTIN): Ditto. - (loongarch_expand_builtin_insn): Ditto. - (loongarch_expand_builtin_lsx_test_branch): Ditto. - (loongarch_expand_builtin): Ditto. - * config/loongarch/loongarch-ftypes.def (1): Ditto. - (2): Ditto. - (3): Ditto. - (4): Ditto. - * config/loongarch/lsxintrin.h: New file. - -2023-09-05 Lulu Cheng <chenglulu@loongson.cn> - - * config/loongarch/constraints.md (M): Add Loongson LSX base instruction support. - (N): Ditto. - (O): Ditto. - (P): Ditto. - (R): Ditto. - (S): Ditto. - (YG): Ditto. - (YA): Ditto. - (YB): Ditto. - (Yb): Ditto. - (Yh): Ditto. - (Yw): Ditto. - (YI): Ditto. - (YC): Ditto. - (YZ): Ditto. - (Unv5): Ditto. - (Uuv5): Ditto. - (Usv5): Ditto. - (Uuv6): Ditto. - (Urv8): Ditto. - * config/loongarch/genopts/loongarch.opt.in: Ditto. - * config/loongarch/loongarch-builtins.cc (loongarch_gen_const_int_vector): Ditto. - * config/loongarch/loongarch-modes.def (VECTOR_MODES): Ditto. - (VECTOR_MODE): Ditto. - (INT_MODE): Ditto. - * config/loongarch/loongarch-protos.h (loongarch_split_move_insn_p): Ditto. - (loongarch_split_move_insn): Ditto. - (loongarch_split_128bit_move): Ditto. - (loongarch_split_128bit_move_p): Ditto. - (loongarch_split_lsx_copy_d): Ditto. - (loongarch_split_lsx_insert_d): Ditto. - (loongarch_split_lsx_fill_d): Ditto. - (loongarch_expand_vec_cmp): Ditto. - (loongarch_const_vector_same_val_p): Ditto. - (loongarch_const_vector_same_bytes_p): Ditto. - (loongarch_const_vector_same_int_p): Ditto. - (loongarch_const_vector_shuffle_set_p): Ditto. - (loongarch_const_vector_bitimm_set_p): Ditto. - (loongarch_const_vector_bitimm_clr_p): Ditto. - (loongarch_lsx_vec_parallel_const_half): Ditto. - (loongarch_gen_const_int_vector): Ditto. - (loongarch_lsx_output_division): Ditto. - (loongarch_expand_vector_init): Ditto. - (loongarch_expand_vec_unpack): Ditto. - (loongarch_expand_vec_perm): Ditto. - (loongarch_expand_vector_extract): Ditto. - (loongarch_expand_vector_reduc): Ditto. - (loongarch_ldst_scaled_shift): Ditto. - (loongarch_expand_vec_cond_expr): Ditto. - (loongarch_expand_vec_cond_mask_expr): Ditto. - (loongarch_builtin_vectorized_function): Ditto. - (loongarch_gen_const_int_vector_shuffle): Ditto. - (loongarch_build_signbit_mask): Ditto. - * config/loongarch/loongarch.cc (loongarch_pass_aggregate_num_fpr): Ditto. - (loongarch_setup_incoming_varargs): Ditto. - (loongarch_emit_move): Ditto. - (loongarch_const_vector_bitimm_set_p): Ditto. - (loongarch_const_vector_bitimm_clr_p): Ditto. - (loongarch_const_vector_same_val_p): Ditto. - (loongarch_const_vector_same_bytes_p): Ditto. - (loongarch_const_vector_same_int_p): Ditto. - (loongarch_const_vector_shuffle_set_p): Ditto. - (loongarch_symbol_insns): Ditto. - (loongarch_cannot_force_const_mem): Ditto. - (loongarch_valid_offset_p): Ditto. - (loongarch_valid_index_p): Ditto. - (loongarch_classify_address): Ditto. - (loongarch_address_insns): Ditto. - (loongarch_ldst_scaled_shift): Ditto. - (loongarch_const_insns): Ditto. - (loongarch_split_move_insn_p): Ditto. - (loongarch_subword_at_byte): Ditto. - (loongarch_legitimize_move): Ditto. - (loongarch_builtin_vectorization_cost): Ditto. - (loongarch_split_move_p): Ditto. - (loongarch_split_move): Ditto. - (loongarch_split_move_insn): Ditto. - (loongarch_output_move_index_float): Ditto. - (loongarch_split_128bit_move_p): Ditto. - (loongarch_split_128bit_move): Ditto. - (loongarch_split_lsx_copy_d): Ditto. - (loongarch_split_lsx_insert_d): Ditto. - (loongarch_split_lsx_fill_d): Ditto. - (loongarch_output_move): Ditto. - (loongarch_extend_comparands): Ditto. - (loongarch_print_operand_reloc): Ditto. - (loongarch_print_operand): Ditto. - (loongarch_hard_regno_mode_ok_uncached): Ditto. - (loongarch_hard_regno_call_part_clobbered): Ditto. - (loongarch_hard_regno_nregs): Ditto. - (loongarch_class_max_nregs): Ditto. - (loongarch_can_change_mode_class): Ditto. - (loongarch_mode_ok_for_mov_fmt_p): Ditto. - (loongarch_secondary_reload): Ditto. - (loongarch_vector_mode_supported_p): Ditto. - (loongarch_preferred_simd_mode): Ditto. - (loongarch_autovectorize_vector_modes): Ditto. - (loongarch_lsx_output_division): Ditto. - (loongarch_option_override_internal): Ditto. - (loongarch_hard_regno_caller_save_mode): Ditto. - (MAX_VECT_LEN): Ditto. - (loongarch_spill_class): Ditto. - (struct expand_vec_perm_d): Ditto. - (loongarch_promote_function_mode): Ditto. - (loongarch_expand_vselect): Ditto. - (loongarch_starting_frame_offset): Ditto. - (loongarch_expand_vselect_vconcat): Ditto. - (TARGET_ASM_ALIGNED_DI_OP): Ditto. - (TARGET_OPTION_OVERRIDE): Ditto. - (TARGET_LEGITIMIZE_ADDRESS): Ditto. - (TARGET_ASM_SELECT_RTX_SECTION): Ditto. - (TARGET_ASM_FUNCTION_RODATA_SECTION): Ditto. - (loongarch_expand_lsx_shuffle): Ditto. - (TARGET_SCHED_INIT): Ditto. - (TARGET_SCHED_REORDER): Ditto. - (TARGET_SCHED_REORDER2): Ditto. - (TARGET_SCHED_VARIABLE_ISSUE): Ditto. - (TARGET_SCHED_ADJUST_COST): Ditto. - (TARGET_SCHED_ISSUE_RATE): Ditto. - (TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD): Ditto. - (TARGET_FUNCTION_OK_FOR_SIBCALL): Ditto. - (TARGET_VALID_POINTER_MODE): Ditto. - (TARGET_REGISTER_MOVE_COST): Ditto. - (TARGET_MEMORY_MOVE_COST): Ditto. - (TARGET_RTX_COSTS): Ditto. - (TARGET_ADDRESS_COST): Ditto. - (TARGET_IN_SMALL_DATA_P): Ditto. - (TARGET_PREFERRED_RELOAD_CLASS): Ditto. - (TARGET_ASM_FILE_START_FILE_DIRECTIVE): Ditto. - (TARGET_EXPAND_BUILTIN_VA_START): Ditto. - (loongarch_expand_vec_perm): Ditto. - (TARGET_PROMOTE_FUNCTION_MODE): Ditto. - (TARGET_RETURN_IN_MEMORY): Ditto. - (TARGET_FUNCTION_VALUE): Ditto. - (TARGET_LIBCALL_VALUE): Ditto. - (loongarch_try_expand_lsx_vshuf_const): Ditto. - (TARGET_ASM_OUTPUT_MI_THUNK): Ditto. - (TARGET_ASM_CAN_OUTPUT_MI_THUNK): Ditto. - (TARGET_PRINT_OPERAND): Ditto. - (TARGET_PRINT_OPERAND_ADDRESS): Ditto. - (TARGET_PRINT_OPERAND_PUNCT_VALID_P): Ditto. - (TARGET_SETUP_INCOMING_VARARGS): Ditto. - (TARGET_STRICT_ARGUMENT_NAMING): Ditto. - (TARGET_MUST_PASS_IN_STACK): Ditto. - (TARGET_PASS_BY_REFERENCE): Ditto. - (TARGET_ARG_PARTIAL_BYTES): Ditto. - (TARGET_FUNCTION_ARG): Ditto. - (TARGET_FUNCTION_ARG_ADVANCE): Ditto. - (TARGET_FUNCTION_ARG_BOUNDARY): Ditto. - (TARGET_SCALAR_MODE_SUPPORTED_P): Ditto. - (TARGET_INIT_BUILTINS): Ditto. - (loongarch_expand_vec_perm_const_1): Ditto. - (loongarch_expand_vec_perm_const_2): Ditto. - (loongarch_vectorize_vec_perm_const): Ditto. - (loongarch_cpu_sched_reassociation_width): Ditto. - (loongarch_sched_reassociation_width): Ditto. - (loongarch_expand_vector_extract): Ditto. - (emit_reduc_half): Ditto. - (loongarch_expand_vector_reduc): Ditto. - (loongarch_expand_vec_unpack): Ditto. - (loongarch_lsx_vec_parallel_const_half): Ditto. - (loongarch_constant_elt_p): Ditto. - (loongarch_gen_const_int_vector_shuffle): Ditto. - (loongarch_expand_vector_init): Ditto. - (loongarch_expand_lsx_cmp): Ditto. - (loongarch_expand_vec_cond_expr): Ditto. - (loongarch_expand_vec_cond_mask_expr): Ditto. - (loongarch_expand_vec_cmp): Ditto. - (loongarch_case_values_threshold): Ditto. - (loongarch_build_const_vector): Ditto. - (loongarch_build_signbit_mask): Ditto. - (loongarch_builtin_support_vector_misalignment): Ditto. - (TARGET_ASM_ALIGNED_HI_OP): Ditto. - (TARGET_ASM_ALIGNED_SI_OP): Ditto. - (TARGET_VECTORIZE_BUILTIN_VECTORIZATION_COST): Ditto. - (TARGET_VECTOR_MODE_SUPPORTED_P): Ditto. - (TARGET_VECTORIZE_PREFERRED_SIMD_MODE): Ditto. - (TARGET_VECTORIZE_AUTOVECTORIZE_VECTOR_MODES): Ditto. - (TARGET_VECTORIZE_VEC_PERM_CONST): Ditto. - (TARGET_SCHED_REASSOCIATION_WIDTH): Ditto. - (TARGET_CASE_VALUES_THRESHOLD): Ditto. - (TARGET_HARD_REGNO_CALL_PART_CLOBBERED): Ditto. - (TARGET_VECTORIZE_SUPPORT_VECTOR_MISALIGNMENT): Ditto. - * config/loongarch/loongarch.h (TARGET_SUPPORTS_WIDE_INT): Ditto. - (UNITS_PER_LSX_REG): Ditto. - (BITS_PER_LSX_REG): Ditto. - (BIGGEST_ALIGNMENT): Ditto. - (LSX_REG_FIRST): Ditto. - (LSX_REG_LAST): Ditto. - (LSX_REG_NUM): Ditto. - (LSX_REG_P): Ditto. - (LSX_REG_RTX_P): Ditto. - (IMM13_OPERAND): Ditto. - (LSX_SUPPORTED_MODE_P): Ditto. - * config/loongarch/loongarch.md (unknown,add,sub,not,nor,and,or,xor): Ditto. - (unknown,add,sub,not,nor,and,or,xor,simd_add): Ditto. - (unknown,none,QI,HI,SI,DI,TI,SF,DF,TF,FCC): Ditto. - (mode" ): Ditto. - (DF): Ditto. - (SF): Ditto. - (sf): Ditto. - (DI): Ditto. - (SI): Ditto. - * config/loongarch/loongarch.opt: Ditto. - * config/loongarch/predicates.md (const_lsx_branch_operand): Ditto. - (const_uimm3_operand): Ditto. - (const_8_to_11_operand): Ditto. - (const_12_to_15_operand): Ditto. - (const_uimm4_operand): Ditto. - (const_uimm6_operand): Ditto. - (const_uimm7_operand): Ditto. - (const_uimm8_operand): Ditto. - (const_imm5_operand): Ditto. - (const_imm10_operand): Ditto. - (const_imm13_operand): Ditto. - (reg_imm10_operand): Ditto. - (aq8b_operand): Ditto. - (aq8h_operand): Ditto. - (aq8w_operand): Ditto. - (aq8d_operand): Ditto. - (aq10b_operand): Ditto. - (aq10h_operand): Ditto. - (aq10w_operand): Ditto. - (aq10d_operand): Ditto. - (aq12b_operand): Ditto. - (aq12h_operand): Ditto. - (aq12w_operand): Ditto. - (aq12d_operand): Ditto. - (const_m1_operand): Ditto. - (reg_or_m1_operand): Ditto. - (const_exp_2_operand): Ditto. - (const_exp_4_operand): Ditto. - (const_exp_8_operand): Ditto. - (const_exp_16_operand): Ditto. - (const_exp_32_operand): Ditto. - (const_0_or_1_operand): Ditto. - (const_0_to_3_operand): Ditto. - (const_0_to_7_operand): Ditto. - (const_2_or_3_operand): Ditto. - (const_4_to_7_operand): Ditto. - (const_8_to_15_operand): Ditto. - (const_16_to_31_operand): Ditto. - (qi_mask_operand): Ditto. - (hi_mask_operand): Ditto. - (si_mask_operand): Ditto. - (d_operand): Ditto. - (db4_operand): Ditto. - (db7_operand): Ditto. - (db8_operand): Ditto. - (ib3_operand): Ditto. - (sb4_operand): Ditto. - (sb5_operand): Ditto. - (sb8_operand): Ditto. - (sd8_operand): Ditto. - (ub4_operand): Ditto. - (ub8_operand): Ditto. - (uh4_operand): Ditto. - (uw4_operand): Ditto. - (uw5_operand): Ditto. - (uw6_operand): Ditto. - (uw8_operand): Ditto. - (addiur2_operand): Ditto. - (addiusp_operand): Ditto. - (andi16_operand): Ditto. - (movep_src_register): Ditto. - (movep_src_operand): Ditto. - (fcc_reload_operand): Ditto. - (muldiv_target_operand): Ditto. - (const_vector_same_val_operand): Ditto. - (const_vector_same_simm5_operand): Ditto. - (const_vector_same_uimm5_operand): Ditto. - (const_vector_same_ximm5_operand): Ditto. - (const_vector_same_uimm6_operand): Ditto. - (par_const_vector_shf_set_operand): Ditto. - (reg_or_vector_same_val_operand): Ditto. - (reg_or_vector_same_simm5_operand): Ditto. - (reg_or_vector_same_uimm5_operand): Ditto. - (reg_or_vector_same_ximm5_operand): Ditto. - (reg_or_vector_same_uimm6_operand): Ditto. - * doc/md.texi: Ditto. - * config/loongarch/lsx.md: New file. - -2023-09-05 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv-protos.h (lookup_vector_type_attribute): Export global. - (get_all_predecessors): New function. - (get_all_successors): Ditto. - * config/riscv/riscv-v.cc (get_all_predecessors): Ditto. - (get_all_successors): Ditto. - * config/riscv/riscv-vector-builtins.cc (sizeless_type_p): Export global. - * config/riscv/riscv-vsetvl.cc (get_all_predecessors): Remove it. - -2023-09-05 Claudiu Zissulescu <claziss@gmail.com> - - * config/arc/arc-protos.h (arc_output_addsi): Remove declaration. - (split_addsi): Likewise. - * config/arc/arc.cc (arc_print_operand): Add/repurpose 's', 'S', - 'N', 'x', and 'J' code letters. - (arc_output_addsi): Make it static. - (split_addsi): Remove it. - * config/arc/arc.h (UNSIGNED_INT*): New defines. - (SINNED_INT*): Likewise. - * config/arc/arc.md (type): Add add, sub, bxor types. - (tst_movb): Change code letter from 's' to 'x'. - (andsi3_i): Likewise. - (addsi3_mixed): Refurbish the pattern. - (call_i): Change code letter from 'S' to 'J'. - * config/arc/arc700.md: Add newly introduced types. - * config/arc/arcHS.md: Likewsie. - * config/arc/arcHS4x.md: Likewise. - * config/arc/constraints.md (Cca, CL2, Csp, C2a): Remove it. - (CM4): Update description. - (CP4, C6u, C6n, CIs, C4p): New constraint. - -2023-09-05 Claudiu Zissulescu <claziss@gmail.com> - - * common/config/arc/arc-common.cc (arc_option_optimization_table): - Remove mbbit_peephole. - * config/arc/arc.md (UNSPEC_ARC_DIRECT): Remove. - (store_direct): Likewise. - (BBIT peephole2): Likewise. - * config/arc/arc.opt (mbbit-peephole): Ignore option. - * doc/invoke.texi (mbbit-peephole): Update document. - -2023-09-05 Jakub Jelinek <jakub@redhat.com> - - * tree-ssa-tail-merge.cc (replace_block_by): Fix a comment typo: - avreage -> average. - -2023-09-05 Yang Yujie <yangyujie@loongson.cn> - - * config/loongarch/loongarch.h (CC1_SPEC): Mark normalized - options passed from driver to gnat1 as explicit for multilib. - -2023-09-05 Yang Yujie <yangyujie@loongson.cn> - - * config.gcc: add loongarch*-elf target. - * config/loongarch/elf.h: New file. - Link against newlib by default. - -2023-09-05 Yang Yujie <yangyujie@loongson.cn> - - * config.gcc: use -mstrict-align for building libraries - if --with-strict-align-lib is given. - * doc/install.texi: likewise. - -2023-09-05 Yang Yujie <yangyujie@loongson.cn> - - * config/loongarch/loongarch-c.cc: Export macros - "__loongarch_{arch,tune}" in the preprocessor. - -2023-09-05 Yang Yujie <yangyujie@loongson.cn> - - * config.gcc: Make --with-abi= obsolete, decide the default ABI - with target triplet. Allow specifying multilib library build - options with --with-multilib-list and --with-multilib-default. - * config/loongarch/t-linux: Likewise. - * config/loongarch/genopts/loongarch-strings: Likewise. - * config/loongarch/loongarch-str.h: Likewise. - * doc/install.texi: Likewise. - * config/loongarch/genopts/loongarch.opt.in: Introduce - -m[no-]l[a]sx options. Only process -m*-float and - -m[no-]l[a]sx in the GCC driver. - * config/loongarch/loongarch.opt: Likewise. - * config/loongarch/la464.md: Likewise. - * config/loongarch/loongarch-c.cc: Likewise. - * config/loongarch/loongarch-cpu.cc: Likewise. - * config/loongarch/loongarch-cpu.h: Likewise. - * config/loongarch/loongarch-def.c: Likewise. - * config/loongarch/loongarch-def.h: Likewise. - * config/loongarch/loongarch-driver.cc: Likewise. - * config/loongarch/loongarch-driver.h: Likewise. - * config/loongarch/loongarch-opts.cc: Likewise. - * config/loongarch/loongarch-opts.h: Likewise. - * config/loongarch/loongarch.cc: Likewise. - * doc/invoke.texi: Likewise. - -2023-09-05 liuhongt <hongtao.liu@intel.com> - - * config/i386/sse.md: (V8BFH_128): Renamed to .. - (VHFBF_128): .. this. - (V16BFH_256): Renamed to .. - (VHFBF_256): .. this. - (avx512f_mov<mode>): Extend to V_128. - (vcvtnee<bf16_ph>2ps_<mode>): Changed to VHFBF_128. - (vcvtneo<bf16_ph>2ps_<mode>): Ditto. - (vcvtnee<bf16_ph>2ps_<mode>): Changed to VHFBF_256. - (vcvtneo<bf16_ph>2ps_<mode>): Ditto. - * config/i386/i386-expand.cc (expand_vec_perm_blend): - Canonicalize vec_merge. - -2023-09-05 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv-opts.h (enum riscv_autovec_lmul_enum): Fix Dynamic status. - * config/riscv/riscv-v.cc (preferred_simd_mode): Ditto. - (autovectorize_vector_modes): Ditto. - (vectorize_related_mode): Ditto. - -2023-09-04 Iain Sandoe <iain@sandoe.co.uk> - - * config/rs6000/darwin.h (LIB_SPEC): Include libSystemStubs for - all 32b Darwin PowerPC cases. - -2023-09-04 Iain Sandoe <iain@sandoe.co.uk> - - * config/darwin-sections.def (static_init_section): Add the - __TEXT,__StaticInit section. - * config/darwin.cc (darwin_function_section): Use the static init - section for global initializers, to match other platform toolchains. - -2023-09-04 Iain Sandoe <iain@sandoe.co.uk> - - * config/darwin-sections.def (darwin_exception_section): Move to - the __TEXT segment. - * config/darwin.cc (darwin_emit_except_table_label): Align before - the exception table label. - * config/darwin.h (ASM_PREFERRED_EH_DATA_FORMAT): Use indirect PC- - relative 4byte relocs. - -2023-09-04 Iain Sandoe <iain@sandoe.co.uk> - - * config/darwin.cc (dump_machopic_symref_flags): New. - (debug_machopic_symref_flags): New. - -2023-09-04 Pan Li <pan2.li@intel.com> - - * config/riscv/riscv-vector-builtins-types.def - (vfloat16mf4_t): Add FP16 intrinsic def. - (vfloat16mf2_t): Ditto. - (vfloat16m1_t): Ditto. - (vfloat16m2_t): Ditto. - (vfloat16m4_t): Ditto. - (vfloat16m8_t): Ditto. - -2023-09-04 Jiufu Guo <guojiufu@linux.ibm.com> - - PR tree-optimization/108757 - * match.pd ((X - N * M) / N): New pattern. - ((X + N * M) / N): New pattern. - ((X + C) div_rshift N): New pattern. - -2023-09-04 Guo Jie <guojie@loongson.cn> - - * config/loongarch/loongarch.md: Support 'G' -> 'k' in - movsf_hardfloat and movdf_hardfloat. - -2023-09-04 Lulu Cheng <chenglulu@loongson.cn> - - * config/loongarch/loongarch.cc (loongarch_extend_comparands): - In unsigned QImode test, check for sign extended subreg and/or - constant operands, and do a sign extension in that case. - * config/loongarch/loongarch.md (TARGET_64BIT): Define - template cbranchqi4. - -2023-09-04 Lulu Cheng <chenglulu@loongson.cn> - - * config/loongarch/loongarch.md: Allows fixed-point values to be loaded - from memory into floating-point registers. - -2023-09-03 Pan Li <pan2.li@intel.com> - - * config/riscv/autovec-vls.md (<optab><mode>3): New pattern for - fmax/fmin - * config/riscv/vector.md: Add VLS modes to vfmax/vfmin. - -2023-09-02 Mikael Morin <mikael@gcc.gnu.org> - - * tree-diagnostic.cc (tree_diagnostics_defaults): Delete allocated - pointer before overwriting it. - -2023-09-02 chenxiaolong <chenxiaolong@loongson.cn> - - * config/loongarch/loongarch-builtins.cc (loongarch_init_builtins): - Associate the __float128 type to float128_type_node so that it can - be recognized by the compiler. - * config/loongarch/loongarch-c.cc (loongarch_cpu_cpp_builtins): - Add the flag "FLOAT128_TYPE" to gcc and associate a function - with the suffix "q" to "f128". - * doc/extend.texi:Added support for 128-bit floating-point functions on - the LoongArch architecture. - -2023-09-01 Jakub Jelinek <jakub@redhat.com> - - PR c++/111069 - * common.opt (fabi-version=): Document version 19. - * doc/invoke.texi (-fabi-version=): Likewise. - -2023-09-01 Lehua Ding <lehua.ding@rivai.ai> - - * config/riscv/autovec-opt.md (*cond_<optab><mode><vconvert>): - New combine pattern. - (*cond_<float_cvt><vconvert><mode>): Ditto. - (*cond_<optab><vnconvert><mode>): Ditto. - (*cond_<float_cvt><vnconvert><mode>): Ditto. - (*cond_<optab><mode><vnconvert>): Ditto. - (*cond_<float_cvt><mode><vnconvert>2): Ditto. - * config/riscv/autovec.md (<optab><mode><vconvert>2): Adjust. - (<float_cvt><vconvert><mode>2): Adjust. - (<optab><vnconvert><mode>2): Adjust. - (<float_cvt><vnconvert><mode>2): Adjust. - (<optab><mode><vnconvert>2): Adjust. - (<float_cvt><mode><vnconvert>2): Adjust. - * config/riscv/riscv-v.cc (needs_fp_rounding): Add INT->FP extend. - -2023-09-01 Lehua Ding <lehua.ding@rivai.ai> - - * config/riscv/autovec-opt.md (*cond_extend<v_double_trunc><mode>): - New combine pattern. - (*cond_trunc<mode><v_double_trunc>): Ditto. - * config/riscv/autovec.md: Adjust. - * config/riscv/riscv-v.cc (needs_fp_rounding): Add FP extend. - -2023-09-01 Lehua Ding <lehua.ding@rivai.ai> - - * config/riscv/autovec-opt.md (*cond_<optab><v_double_trunc><mode>): - New combine pattern. - (*cond_<optab><v_quad_trunc><mode>): Ditto. - (*cond_<optab><v_oct_trunc><mode>): Ditto. - (*cond_trunc<mode><v_double_trunc>): Ditto. - * config/riscv/autovec.md (<optab><v_quad_trunc><mode>2): Adjust. - (<optab><v_oct_trunc><mode>2): Ditto. - -2023-09-01 Lehua Ding <lehua.ding@rivai.ai> - - * config/riscv/autovec.md: Adjust. - * config/riscv/riscv-protos.h (expand_cond_len_unop): Ditto. - (expand_cond_len_binop): Ditto. - * config/riscv/riscv-v.cc (needs_fp_rounding): Ditto. - (expand_cond_len_op): Ditto. - (expand_cond_len_unop): Ditto. - (expand_cond_len_binop): Ditto. - (expand_cond_len_ternop): Ditto. - -2023-09-01 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv-v.cc (autovectorize_vector_modes): Enable - VECT_COMPARE_COSTS by default. - -2023-09-01 Robin Dapp <rdapp@ventanamicro.com> - - * config/riscv/autovec.md (vec_extract<mode>qi): New expander. - -2023-09-01 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv-opts.h (enum riscv_autovec_lmul_enum): Add - dynamic enum. - * config/riscv/riscv.opt: Add dynamic compile option. - -2023-09-01 Pan Li <pan2.li@intel.com> - - * config/riscv/autovec-vls.md (<optab><mode>3): New pattern for - vls floating-point autovec. - * config/riscv/vector-iterators.md: New iterator for - floating-point V and VLS. - * config/riscv/vector.md: Add VLS to floating-point binop. - -2023-09-01 Andrew Pinski <apinski@marvell.com> - - PR tree-optimization/19832 - * match.pd: Add pattern to optimize - `(a != b) ? a OP b : c`. - -2023-09-01 Lulu Cheng <chenglulu@loongson.cn> - Guo Jie <guojie@loongson.cn> - - PR target/110484 - * config/loongarch/loongarch.cc (loongarch_emit_stack_tie): Use the - frame_pointer_needed to determine whether to use the $fp register. - -2023-08-31 Andrew Pinski <apinski@marvell.com> - - PR tree-optimization/110915 - * match.pd (min_value, max_value): Extend to vector constants. - -2023-08-31 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org> - - * config.in: Regenerate. - * config/darwin-c.cc: Change spelling to macOS. - * config/darwin-driver.cc: Likewise. - * config/darwin.h: Likewise. - * configure.ac: Likewise. - * doc/contrib.texi: Likewise. - * doc/extend.texi: Likewise. - * doc/invoke.texi: Likewise. - * doc/plugins.texi: Likewise. - * doc/tm.texi: Regenerate. - * doc/tm.texi.in: Change spelling to macOS. - * plugin.cc: Likewise. - -2023-08-31 Pan Li <pan2.li@intel.com> - - * config/riscv/autovec-opt.md: Add FRM_REGNUM to vfnmadd/vfnmacc. - * config/riscv/autovec.md: Ditto. - -2023-08-31 Pan Li <pan2.li@intel.com> - - * config/riscv/autovec-opt.md: Add FRM_REGNUM to vfnmsac/vfnmsub - * config/riscv/autovec.md: Ditto. - -2023-08-31 Richard Sandiford <richard.sandiford@arm.com> - - * config/aarch64/aarch64.md (untyped_call): Emit a call_value - rather than a call. List each possible destination register - in the call pattern. - -2023-08-31 Pan Li <pan2.li@intel.com> - - * config/riscv/autovec-opt.md: Add FRM_REGNUM to vfmsac/vfmsub - * config/riscv/autovec.md: Ditto. - -2023-08-31 Pan Li <pan2.li@intel.com> - Ju-Zhe Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/autovec-opt.md: Add FRM_REGNUM to vfmadd/vfmacc. - * config/riscv/autovec.md: Ditto. - * config/riscv/vector-iterators.md: Add UNSPEC_VFFMA. - -2023-08-31 Palmer Dabbelt <palmer@rivosinc.com> - - * config/riscv/autovec.md (shifts): Use - vector_scalar_shift_operand. - * config/riscv/predicates.md (vector_scalar_shift_operand): New - predicate. - -2023-08-31 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config.gcc: Add vector cost model framework for RVV. - * config/riscv/riscv.cc (riscv_vectorize_create_costs): Ditto. - (TARGET_VECTORIZE_CREATE_COSTS): Ditto. - * config/riscv/t-riscv: Ditto. - * config/riscv/riscv-vector-costs.cc: New file. - * config/riscv/riscv-vector-costs.h: New file. - -2023-08-31 Jeevitha Palanisamy <jeevitha@linux.ibm.com> - - PR target/110411 - * config/rs6000/mma.md (define_insn_and_split movoo): Disallow - AltiVec address operands. - (define_insn_and_split movxo): Likewise. - * config/rs6000/predicates.md (vsx_quad_dform_memory_operand): Remove - redundant mode size check. - -2023-08-31 Lehua Ding <lehua.ding@rivai.ai> - - * config/riscv/riscv-protos.h (IS_AGNOSTIC): Move to here. - * config/riscv/riscv-v.cc (gen_no_side_effects_vsetvl_rtx): - Change to default policy. - * config/riscv/riscv-vector-builtins-bases.cc: Change to default policy. - * config/riscv/riscv-vsetvl.h (IS_AGNOSTIC): Delete. - * config/riscv/riscv.cc (riscv_print_operand): Use IS_AGNOSTIC to test. - -2023-08-31 Lehua Ding <lehua.ding@rivai.ai> - - * config/riscv/autovec-opt.md: Adjust. - * config/riscv/autovec-vls.md: Ditto. - * config/riscv/autovec.md: Ditto. - * config/riscv/riscv-protos.h (enum insn_type): Add insn_type. - (enum insn_flags): Add insn flags. - (emit_vlmax_insn): Adjust. - (emit_vlmax_fp_insn): Delete. - (emit_vlmax_ternary_insn): Delete. - (emit_vlmax_fp_ternary_insn): Delete. - (emit_nonvlmax_insn): Adjust. - (emit_vlmax_slide_insn): Delete. - (emit_nonvlmax_slide_tu_insn): Delete. - (emit_vlmax_merge_insn): Delete. - (emit_vlmax_cmp_insn): Delete. - (emit_vlmax_cmp_mu_insn): Delete. - (emit_vlmax_masked_mu_insn): Delete. - (emit_scalar_move_insn): Delete. - (emit_nonvlmax_integer_move_insn): Delete. - (emit_vlmax_insn_lra): Add. - * config/riscv/riscv-v.cc (get_mask_mode_from_insn_flags): New. - (emit_vlmax_insn): Adjust. - (emit_nonvlmax_insn): Adjust. - (emit_vlmax_insn_lra): Add. - (emit_vlmax_fp_insn): Delete. - (emit_vlmax_ternary_insn): Delete. - (emit_vlmax_fp_ternary_insn): Delete. - (emit_vlmax_slide_insn): Delete. - (emit_nonvlmax_slide_tu_insn): Delete. - (emit_nonvlmax_slide_insn): Delete. - (emit_vlmax_merge_insn): Delete. - (emit_vlmax_cmp_insn): Delete. - (emit_vlmax_cmp_mu_insn): Delete. - (emit_vlmax_masked_insn): Delete. - (emit_nonvlmax_masked_insn): Delete. - (emit_vlmax_masked_store_insn): Delete. - (emit_nonvlmax_masked_store_insn): Delete. - (emit_vlmax_masked_mu_insn): Delete. - (emit_vlmax_masked_fp_mu_insn): Delete. - (emit_nonvlmax_tu_insn): Delete. - (emit_nonvlmax_fp_tu_insn): Delete. - (emit_nonvlmax_tumu_insn): Delete. - (emit_nonvlmax_fp_tumu_insn): Delete. - (emit_scalar_move_insn): Delete. - (emit_cpop_insn): Delete. - (emit_vlmax_integer_move_insn): Delete. - (emit_nonvlmax_integer_move_insn): Delete. - (emit_vlmax_gather_insn): Delete. - (emit_vlmax_masked_gather_mu_insn): Delete. - (emit_vlmax_compress_insn): Delete. - (emit_nonvlmax_compress_insn): Delete. - (emit_vlmax_reduction_insn): Delete. - (emit_vlmax_fp_reduction_insn): Delete. - (emit_nonvlmax_fp_reduction_insn): Delete. - (expand_vec_series): Adjust. - (expand_const_vector): Adjust. - (legitimize_move): Adjust. - (sew64_scalar_helper): Adjust. - (expand_tuple_move): Adjust. - (expand_vector_init_insert_elems): Adjust. - (expand_vector_init_merge_repeating_sequence): Adjust. - (expand_vec_cmp): Adjust. - (expand_vec_cmp_float): Adjust. - (expand_vec_perm): Adjust. - (shuffle_merge_patterns): Adjust. - (shuffle_compress_patterns): Adjust. - (shuffle_decompress_patterns): Adjust. - (expand_load_store): Adjust. - (expand_cond_len_op): Adjust. - (expand_cond_len_unop): Adjust. - (expand_cond_len_binop): Adjust. - (expand_gather_scatter): Adjust. - (expand_cond_len_ternop): Adjust. - (expand_reduction): Adjust. - (expand_lanes_load_store): Adjust. - (expand_fold_extract_last): Adjust. - * config/riscv/riscv.cc (vector_zero_call_used_regs): Adjust. - * config/riscv/vector.md: Adjust. - -2023-08-31 Haochen Gui <guihaoc@gcc.gnu.org> - - PR target/96762 - * config/rs6000/rs6000-string.cc (expand_block_move): Call vector - load/store with length only on 64-bit Power10. - -2023-08-31 Claudiu Zissulescu <claziss@gmail.com> - - * config/arc/arc.cc (arc_split_mov_const): Use LSL16 only when - SWAP option is enabled. - * config/arc/arc.md (ashlsi2_cnt16): Likewise. - -2023-08-31 Stamatis Markianos-Wright <stam.markianos-wright@arm.com> - - * config/arm/arm-mve-builtins-base.cc (vcaddq_rot90, vcaddq_rot270): - Use common insn for signed and unsigned front-end definitions. - * config/arm/arm_mve_builtins.def - (vcaddq_rot90_m_u, vcaddq_rot270_m_u): Make common. - (vcaddq_rot90_m_s, vcaddq_rot270_m_s): Remove. - * config/arm/iterators.md (mve_insn): Merge signed and unsigned defs. - (isu): Likewise. - (rot): Likewise. - (mve_rot): Likewise. - (supf): Likewise. - (VxCADDQ_M): Likewise. - * config/arm/unspecs.md (unspec): Likewise. - * config/arm/mve.md: Fix minor typo. - -2023-08-31 liuhongt <hongtao.liu@intel.com> - - * config/i386/sse.md (<avx512>_blendm<mode>): Merge - VF_AVX512HFBFVL into VI12HFBF_AVX512VL. - (VF_AVX512HFBF16): Renamed to VHFBF. - (VF_AVX512FP16VL): Renamed to VHF_AVX512VL. - (VF_AVX512FP16): Removed. - (div<mode>3): Adjust VF_AVX512FP16VL to VHF_AVX512VL. - (avx512fp16_rcp<mode>2<mask_name>): Ditto. - (rsqrt<mode>2): Ditto. - (<sse>_rsqrt<mode>2<mask_name>): Ditto. - (vcond<mode><code>): Ditto. - (vcond<sseintvecmodelower><mode>): Ditto. - (<avx512>_fmaddc_<mode>_mask1<round_expand_name>): Ditto. - (<avx512>_fmaddc_<mode>_maskz<round_expand_name>): Ditto. - (<avx512>_fcmaddc_<mode>_mask1<round_expand_name>): Ditto. - (<avx512>_fcmaddc_<mode>_maskz<round_expand_name>): Ditto. - (cmla<conj_op><mode>4): Ditto. - (fma_<mode>_fadd_fmul): Ditto. - (fma_<mode>_fadd_fcmul): Ditto. - (fma_<complexopname>_<mode>_fma_zero): Ditto. - (fma_<mode>_fmaddc_bcst): Ditto. - (fma_<mode>_fcmaddc_bcst): Ditto. - (<avx512>_<complexopname>_<mode>_mask<round_name>): Ditto. - (cmul<conj_op><mode>3): Ditto. - (<avx512>_<complexopname>_<mode><maskc_name><round_name>): - Ditto. - (vec_unpacks_lo_<mode>): Ditto. - (vec_unpacks_hi_<mode>): Ditto. - (vec_unpack_<fixprefix>fix_trunc_lo_<mode>): Ditto. - (vec_unpack_<fixprefix>fix_trunc_lo_<mode>): Ditto. - (*vec_extract<mode>_0): Ditto. - (*<avx512>_cmp<mode>3): Extend to V48H_AVX512VL. - -2023-08-31 Lehua Ding <lehua.ding@rivai.ai> - - PR target/111234 - * config/riscv/riscv-vsetvl.cc (gen_vsetvl_pat): Remove condition. - -2023-08-31 Jiufu Guo <guojiufu@linux.ibm.com> - - * range-op-mixed.h (operator_plus::overflow_free_p): New declare. - (operator_minus::overflow_free_p): New declare. - (operator_mult::overflow_free_p): New declare. - * range-op.cc (range_op_handler::overflow_free_p): New function. - (range_operator::overflow_free_p): New default function. - (operator_plus::overflow_free_p): New function. - (operator_minus::overflow_free_p): New function. - (operator_mult::overflow_free_p): New function. - * range-op.h (range_op_handler::overflow_free_p): New declare. - (range_operator::overflow_free_p): New declare. - * value-range.cc (irange::nonnegative_p): New function. - (irange::nonpositive_p): New function. - * value-range.h (irange::nonnegative_p): New declare. - (irange::nonpositive_p): New declare. - -2023-08-30 Dimitar Dimitrov <dimitar@dinux.eu> - - PR target/106562 - * config/pru/predicates.md (const_0_operand): New predicate. - (pru_cstore_comparison_operator): Ditto. - * config/pru/pru.md (cstore<mode>4): New pattern. - (cstoredi4): Ditto. - -2023-08-30 Richard Biener <rguenther@suse.de> - - PR tree-optimization/111228 - * match.pd ((vec_perm (vec_perm ..) @5 ..) -> (vec_perm @x @5 ..)): - New simplifications. - -2023-08-30 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/autovec.md (movmisalign<mode>): Delete. - -2023-08-30 Die Li <lidie@eswincomputing.com> - Fei Gao <gaofei@eswincomputing.com> - - * config/riscv/peephole.md: New pattern. - * config/riscv/predicates.md (a0a1_reg_operand): New predicate. - (zcmp_mv_sreg_operand): New predicate. - * config/riscv/riscv.md: New predicate. - * config/riscv/zc.md (*mva01s<X:mode>): New pattern. - (*mvsa01<X:mode>): New pattern. - -2023-08-30 Fei Gao <gaofei@eswincomputing.com> - - * config/riscv/riscv.cc - (riscv_zcmp_can_use_popretz): true if popretz can be used - (riscv_gen_multi_pop_insn): interface to generate cm.pop[ret][z] - (riscv_expand_epilogue): expand cm.pop[ret][z] in epilogue - * config/riscv/riscv.md: define A0_REGNUM - * config/riscv/zc.md - (@gpr_multi_popretz_up_to_ra_<mode>): md for popretz ra - (@gpr_multi_popretz_up_to_s0_<mode>): md for popretz ra, s0 - (@gpr_multi_popretz_up_to_s1_<mode>): likewise - (@gpr_multi_popretz_up_to_s2_<mode>): likewise - (@gpr_multi_popretz_up_to_s3_<mode>): likewise - (@gpr_multi_popretz_up_to_s4_<mode>): likewise - (@gpr_multi_popretz_up_to_s5_<mode>): likewise - (@gpr_multi_popretz_up_to_s6_<mode>): likewise - (@gpr_multi_popretz_up_to_s7_<mode>): likewise - (@gpr_multi_popretz_up_to_s8_<mode>): likewise - (@gpr_multi_popretz_up_to_s9_<mode>): likewise - (@gpr_multi_popretz_up_to_s11_<mode>): likewise - -2023-08-30 Fei Gao <gaofei@eswincomputing.com> - - * config/riscv/iterators.md - (slot0_offset): slot 0 offset in stack GPRs area in bytes - (slot1_offset): slot 1 offset in stack GPRs area in bytes - (slot2_offset): likewise - (slot3_offset): likewise - (slot4_offset): likewise - (slot5_offset): likewise - (slot6_offset): likewise - (slot7_offset): likewise - (slot8_offset): likewise - (slot9_offset): likewise - (slot10_offset): likewise - (slot11_offset): likewise - (slot12_offset): likewise - * config/riscv/predicates.md - (stack_push_up_to_ra_operand): predicates of stack adjust pushing ra - (stack_push_up_to_s0_operand): predicates of stack adjust pushing ra, s0 - (stack_push_up_to_s1_operand): likewise - (stack_push_up_to_s2_operand): likewise - (stack_push_up_to_s3_operand): likewise - (stack_push_up_to_s4_operand): likewise - (stack_push_up_to_s5_operand): likewise - (stack_push_up_to_s6_operand): likewise - (stack_push_up_to_s7_operand): likewise - (stack_push_up_to_s8_operand): likewise - (stack_push_up_to_s9_operand): likewise - (stack_push_up_to_s11_operand): likewise - (stack_pop_up_to_ra_operand): predicates of stack adjust poping ra - (stack_pop_up_to_s0_operand): predicates of stack adjust poping ra, s0 - (stack_pop_up_to_s1_operand): likewise - (stack_pop_up_to_s2_operand): likewise - (stack_pop_up_to_s3_operand): likewise - (stack_pop_up_to_s4_operand): likewise - (stack_pop_up_to_s5_operand): likewise - (stack_pop_up_to_s6_operand): likewise - (stack_pop_up_to_s7_operand): likewise - (stack_pop_up_to_s8_operand): likewise - (stack_pop_up_to_s9_operand): likewise - (stack_pop_up_to_s11_operand): likewise - * config/riscv/riscv-protos.h - (riscv_zcmp_valid_stack_adj_bytes_p):declaration - * config/riscv/riscv.cc (struct riscv_frame_info): comment change - (riscv_avoid_multi_push): helper function of riscv_use_multi_push - (riscv_use_multi_push): true if multi push is used - (riscv_multi_push_sregs_count): num of sregs in multi-push - (riscv_multi_push_regs_count): num of regs in multi-push - (riscv_16bytes_align): align to 16 bytes - (riscv_stack_align): moved to a better place - (riscv_save_libcall_count): no functional change - (riscv_compute_frame_info): add zcmp frame info - (riscv_for_each_saved_reg): save or restore fprs in specified slot for zcmp - (riscv_adjust_multi_push_cfi_prologue): adjust cfi for cm.push - (riscv_gen_multi_push_pop_insn): gen function for multi push and pop - (get_multi_push_fpr_mask): get mask for the fprs pushed by cm.push - (riscv_expand_prologue): allocate stack by cm.push - (riscv_adjust_multi_pop_cfi_epilogue): adjust cfi for cm.pop[ret] - (riscv_expand_epilogue): allocate stack by cm.pop[ret] - (zcmp_base_adj): calculate stack adjustment base size - (zcmp_additional_adj): calculate stack adjustment additional size - (riscv_zcmp_valid_stack_adj_bytes_p): check if stack adjustment valid - * config/riscv/riscv.h (RETURN_ADDR_MASK): mask of ra - (S0_MASK): likewise - (S1_MASK): likewise - (S2_MASK): likewise - (S3_MASK): likewise - (S4_MASK): likewise - (S5_MASK): likewise - (S6_MASK): likewise - (S7_MASK): likewise - (S8_MASK): likewise - (S9_MASK): likewise - (S10_MASK): likewise - (S11_MASK): likewise - (MULTI_PUSH_GPR_MASK): GPR_MASK that cm.push can cover at most - (ZCMP_MAX_SPIMM): max spimm value - (ZCMP_SP_INC_STEP): zcmp sp increment step - (ZCMP_INVALID_S0S10_SREGS_COUNTS): num of s0-s10 - (ZCMP_S0S11_SREGS_COUNTS): num of s0-s11 - (ZCMP_MAX_GRP_SLOTS): max slots of pushing and poping in zcmp - (CALLEE_SAVED_FREG_NUMBER): get x of fsx(fs0 ~ fs11) - * config/riscv/riscv.md: include zc.md - * config/riscv/zc.md: New file. machine description for zcmp - -2023-08-30 Jakub Jelinek <jakub@redhat.com> - - PR tree-optimization/110914 - * tree-ssa-strlen.cc (strlen_pass::handle_builtin_memcpy): Don't call - adjust_last_stmt unless len is known constant. - -2023-08-30 Jakub Jelinek <jakub@redhat.com> - - PR tree-optimization/111015 - * gimple-ssa-store-merging.cc - (imm_store_chain_info::output_merged_store): Use wi::mask and - wide_int_to_tree instead of unsigned HOST_WIDE_INT shift and - build_int_cst to build BIT_AND_EXPR mask. - -2023-08-30 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * tree-ssa-alias.cc (ref_maybe_used_by_call_p_1): Add MASK_LEN_ variant. - (call_may_clobber_ref_p_1): Ditto. - * tree-ssa-loop-ivopts.cc (get_mem_type_for_internal_fn): Ditto. - (get_alias_ptr_type_for_ptr_address): Ditto. - -2023-08-30 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv-vsetvl.cc - (vector_insn_info::get_avl_or_vl_reg): Fix bug. - -2023-08-30 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/autovec-vls.md (movmisalign<mode>): New pattern. - * config/riscv/riscv.cc (riscv_support_vector_misalignment): Support - VLS misalign. - -2023-08-29 Philipp Tomsich <philipp.tomsich@vrull.eu> - - * config/riscv/zicond.md: New splitters to rewrite single bit - sign extension as the condition to a czero in the desired form. - -2023-08-29 David Malcolm <dmalcolm@redhat.com> - - PR analyzer/99860 - * doc/invoke.texi: Add -Wanalyzer-overlapping-buffers. - -2023-08-29 David Malcolm <dmalcolm@redhat.com> - - PR analyzer/99860 - * Makefile.in (ANALYZER_OBJS): Add analyzer/ranges.o. - -2023-08-29 Jin Ma <jinma@linux.alibaba.com> - - * config/riscv/riscv.cc (riscv_float_const_rtx_index_for_fli): - zvfh can generate zfa extended instruction fli.h, just like zfh. - -2023-08-29 Edwin Lu <ewlu@rivosinc.com> - Vineet Gupta <vineetg@rivosinc.com> - - * config/riscv/riscv-c.cc (riscv_cpu_cpp_builtins): Generate - __riscv_unaligned_avoid with value 1 or - __riscv_unaligned_slow with value 1 or - __riscv_unaligned_fast with value 1 - * config/riscv/riscv.cc (riscv_option_override): Define - riscv_user_wants_strict_align. Set - riscv_user_wants_strict_align to TARGET_STRICT_ALIGN - * config/riscv/riscv.h: Declare riscv_user_wants_strict_align - -2023-08-29 Edwin Lu <ewlu@rivosinc.com> - - * config/riscv/autovec-vls.md: Update types - * config/riscv/riscv.md: Add vector placeholder type - * config/riscv/vector.md: Update types - -2023-08-29 Carl Love <cel@us.ibm.com> - - * config/rs6000/dfp.md (UNSPEC_DQUAN): New unspec. - (dfp_dqua_<mode>, dfp_dquai_<mode>): New define_insn. - * config/rs6000/rs6000-builtins.def (__builtin_dfp_dqua, - __builtin_dfp_dquai, __builtin_dfp_dquaq, __builtin_dfp_dquaqi): - New buit-in definitions. - * config/rs6000/rs6000-overload.def (__builtin_dfp_quantize): New - overloaded definition. - * doc/extend.texi: Add documentation for __builtin_dfp_quantize. - -2023-08-29 Pan Li <pan2.li@intel.com> - Ju-Zhe Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv.cc (riscv_legitimize_poly_move): New declaration. - (riscv_legitimize_const_move): Handle ref plus const poly. - -2023-08-29 Tsukasa OI <research_trasio@irq.a4lg.com> - - * common/config/riscv/riscv-common.cc - (riscv_implied_info): Add implications from unprivileged extensions. - (riscv_ext_version_table): Add stub support for all unprivileged - extensions supported by Binutils as well as 'Zce', 'Zcmp', 'Zcmt'. - -2023-08-29 Tsukasa OI <research_trasio@irq.a4lg.com> - - * common/config/riscv/riscv-common.cc (riscv_ext_version_table): - Add stub support for all vendor extensions supported by Binutils. - -2023-08-29 Tsukasa OI <research_trasio@irq.a4lg.com> - - * common/config/riscv/riscv-common.cc - (riscv_implied_info): Add implications from privileged extensions. - (riscv_ext_version_table): Add stub support for all privileged - extensions supported by Binutils. - -2023-08-29 Lehua Ding <lehua.ding@rivai.ai> - - * config/riscv/autovec.md: Adjust - * config/riscv/riscv-protos.h (RVV_VUNDEF): Clean. - (get_vlmax_rtx): Exported. - * config/riscv/riscv-v.cc (emit_nonvlmax_fp_ternary_tu_insn): Deleted. - (emit_vlmax_masked_gather_mu_insn): Adjust. - (get_vlmax_rtx): New func. - (expand_load_store): Adjust. - (expand_cond_len_unop): Call expand_cond_len_op. - (expand_cond_len_op): New subroutine. - (expand_cond_len_binop): Call expand_cond_len_op. - (expand_cond_len_ternop): Call expand_cond_len_op. - (expand_lanes_load_store): Adjust. - -2023-08-29 Jakub Jelinek <jakub@redhat.com> - - PR middle-end/79173 - PR middle-end/111209 - * tree-ssa-math-opts.cc (match_uaddc_usubc): Match also - just 2 limb uaddc/usubc with 0 carry-in on lower limb and ignored - carry-out on higher limb. Don't match it though if it could be - matched later on 4 argument addition/subtraction. - -2023-08-29 Andrew Pinski <apinski@marvell.com> - - PR tree-optimization/111147 - * match.pd (`(x | y) & (~x ^ y)`) Use bitwise_inverted_equal_p - instead of matching bit_not. - -2023-08-29 Christophe Lyon <christophe.lyon@linaro.org> - - * config/arm/arm-mve-builtins.cc (type_suffixes): Add missing - initializer. - -2023-08-29 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv-vsetvl.cc (vector_insn_info::get_avl_or_vl_reg): New function. - (pass_vsetvl::compute_local_properties): Fix bug. - (pass_vsetvl::commit_vsetvls): Ditto. - * config/riscv/riscv-vsetvl.h: New function. - -2023-08-29 Lehua Ding <lehua.ding@rivai.ai> - - PR target/110943 - * config/riscv/predicates.md (vector_const_int_or_double_0_operand): - New predicate. - * config/riscv/riscv-vector-builtins.cc (function_expander::function_expander): - force_reg mem target operand. - * config/riscv/vector.md (@pred_mov<mode>): Wrapper. - (*pred_mov<mode>): Remove imm -> reg pattern. - (*pred_broadcast<mode>_imm): Add imm -> reg pattern. - -2023-08-29 Lulu Cheng <chenglulu@loongson.cn> - - * common/config/loongarch/loongarch-common.cc: - Enable '-free' on O2 and above. - * doc/invoke.texi: Modify the description information - of the '-free' compilation option and add the LoongArch - description. - -2023-08-28 Tsukasa OI <research_trasio@irq.a4lg.com> - - * doc/extend.texi: Fix the description of __builtin_riscv_pause. - -2023-08-28 Tsukasa OI <research_trasio@irq.a4lg.com> - - * common/config/riscv/riscv-common.cc (riscv_ext_version_table): - Implement the 'Zihintpause' extension, version 2.0. - (riscv_ext_flag_table) Add 'Zihintpause' handling. - * config/riscv/riscv-builtins.cc: Remove availability predicate - "always" and add "hint_pause". - (riscv_builtins) : Add "pause" extension. - * config/riscv/riscv-opts.h (MASK_ZIHINTPAUSE, TARGET_ZIHINTPAUSE): New. - * config/riscv/riscv.md (riscv_pause): Adjust output based on - TARGET_ZIHINTPAUSE. - -2023-08-28 Andrew Pinski <apinski@marvell.com> - - * match.pd (`(X & ~Y) | (~X & Y)`): Use bitwise_inverted_equal_p - instead of specifically checking for ~X. - -2023-08-28 Andrew Pinski <apinski@marvell.com> - - PR tree-optimization/111146 - * match.pd (`(x | y) & ~x`, `(x & y) | ~x`): Remove - redundant pattern. - -2023-08-28 Andrew Pinski <apinski@marvell.com> - - * tree-ssa-phiopt.cc (gimple_simplify_phiopt): Add dump information - when resimplify returns true. - (match_simplify_replacement): Print only if accepted the match-and-simplify - result rather than the full sequence. - -2023-08-28 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv-vsetvl.cc (pass_vsetvl::earliest_fusion): Skip - never probability. - (pass_vsetvl::compute_probabilities): Fix unitialized probability. - -2023-08-28 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv-vsetvl.cc (pass_vsetvl::earliest_fusion): Fix bug. - -2023-08-28 Christophe Lyon <christophe.lyon@linaro.org> - - * config/arm/arm-mve-builtins-base.cc (vmullbq_poly) - (vmulltq_poly): New. - * config/arm/arm-mve-builtins-base.def (vmullbq_poly) - (vmulltq_poly): New. - * config/arm/arm-mve-builtins-base.h (vmullbq_poly) - (vmulltq_poly): New. - * config/arm/arm_mve.h (vmulltq_poly): Remove. - (vmullbq_poly): Remove. - (vmullbq_poly_m): Remove. - (vmulltq_poly_m): Remove. - (vmullbq_poly_x): Remove. - (vmulltq_poly_x): Remove. - (vmulltq_poly_p8): Remove. - (vmullbq_poly_p8): Remove. - (vmulltq_poly_p16): Remove. - (vmullbq_poly_p16): Remove. - (vmullbq_poly_m_p8): Remove. - (vmullbq_poly_m_p16): Remove. - (vmulltq_poly_m_p8): Remove. - (vmulltq_poly_m_p16): Remove. - (vmullbq_poly_x_p8): Remove. - (vmullbq_poly_x_p16): Remove. - (vmulltq_poly_x_p8): Remove. - (vmulltq_poly_x_p16): Remove. - (__arm_vmulltq_poly_p8): Remove. - (__arm_vmullbq_poly_p8): Remove. - (__arm_vmulltq_poly_p16): Remove. - (__arm_vmullbq_poly_p16): Remove. - (__arm_vmullbq_poly_m_p8): Remove. - (__arm_vmullbq_poly_m_p16): Remove. - (__arm_vmulltq_poly_m_p8): Remove. - (__arm_vmulltq_poly_m_p16): Remove. - (__arm_vmullbq_poly_x_p8): Remove. - (__arm_vmullbq_poly_x_p16): Remove. - (__arm_vmulltq_poly_x_p8): Remove. - (__arm_vmulltq_poly_x_p16): Remove. - (__arm_vmulltq_poly): Remove. - (__arm_vmullbq_poly): Remove. - (__arm_vmullbq_poly_m): Remove. - (__arm_vmulltq_poly_m): Remove. - (__arm_vmullbq_poly_x): Remove. - (__arm_vmulltq_poly_x): Remove. - -2023-08-28 Christophe Lyon <christophe.lyon@linaro.org> - - * config/arm/arm-mve-builtins-functions.h (class - unspec_mve_function_exact_insn_vmull_poly): New. - -2023-08-28 Christophe Lyon <christophe.lyon@linaro.org> - - * config/arm/arm-mve-builtins-shapes.cc (binary_widen_poly): New. - * config/arm/arm-mve-builtins-shapes.h (binary_widen_poly): New. - -2023-08-28 Christophe Lyon <christophe.lyon@linaro.org> - - * config/arm/arm-mve-builtins-shapes.cc (parse_element_type): Add - support for 'U' and 'p' format specifiers. - -2023-08-28 Christophe Lyon <christophe.lyon@linaro.org> - - * config/arm/arm-mve-builtins.cc (type_suffixes): Handle poly_p - field.. - (TYPES_poly_8_16): New. - (poly_8_16): New. - * config/arm/arm-mve-builtins.def (p8): New type suffix. - (p16): Likewise. - * config/arm/arm-mve-builtins.h (enum type_class_index): Add - TYPE_poly. - (struct type_suffix_info): Add poly_p field. - -2023-08-28 Christophe Lyon <christophe.lyon@linaro.org> - - * config/arm/arm-mve-builtins-base.cc (vmullbq_int, vmulltq_int): - New. - * config/arm/arm-mve-builtins-base.def (vmullbq_int, vmulltq_int): - New. - * config/arm/arm-mve-builtins-base.h (vmullbq_int, vmulltq_int): - New. - * config/arm/arm_mve.h (vmulltq_int): Remove. - (vmullbq_int): Remove. - (vmullbq_int_m): Remove. - (vmulltq_int_m): Remove. - (vmullbq_int_x): Remove. - (vmulltq_int_x): Remove. - (vmulltq_int_u8): Remove. - (vmullbq_int_u8): Remove. - (vmulltq_int_s8): Remove. - (vmullbq_int_s8): Remove. - (vmulltq_int_u16): Remove. - (vmullbq_int_u16): Remove. - (vmulltq_int_s16): Remove. - (vmullbq_int_s16): Remove. - (vmulltq_int_u32): Remove. - (vmullbq_int_u32): Remove. - (vmulltq_int_s32): Remove. - (vmullbq_int_s32): Remove. - (vmullbq_int_m_s8): Remove. - (vmullbq_int_m_s32): Remove. - (vmullbq_int_m_s16): Remove. - (vmullbq_int_m_u8): Remove. - (vmullbq_int_m_u32): Remove. - (vmullbq_int_m_u16): Remove. - (vmulltq_int_m_s8): Remove. - (vmulltq_int_m_s32): Remove. - (vmulltq_int_m_s16): Remove. - (vmulltq_int_m_u8): Remove. - (vmulltq_int_m_u32): Remove. - (vmulltq_int_m_u16): Remove. - (vmullbq_int_x_s8): Remove. - (vmullbq_int_x_s16): Remove. - (vmullbq_int_x_s32): Remove. - (vmullbq_int_x_u8): Remove. - (vmullbq_int_x_u16): Remove. - (vmullbq_int_x_u32): Remove. - (vmulltq_int_x_s8): Remove. - (vmulltq_int_x_s16): Remove. - (vmulltq_int_x_s32): Remove. - (vmulltq_int_x_u8): Remove. - (vmulltq_int_x_u16): Remove. - (vmulltq_int_x_u32): Remove. - (__arm_vmulltq_int_u8): Remove. - (__arm_vmullbq_int_u8): Remove. - (__arm_vmulltq_int_s8): Remove. - (__arm_vmullbq_int_s8): Remove. - (__arm_vmulltq_int_u16): Remove. - (__arm_vmullbq_int_u16): Remove. - (__arm_vmulltq_int_s16): Remove. - (__arm_vmullbq_int_s16): Remove. - (__arm_vmulltq_int_u32): Remove. - (__arm_vmullbq_int_u32): Remove. - (__arm_vmulltq_int_s32): Remove. - (__arm_vmullbq_int_s32): Remove. - (__arm_vmullbq_int_m_s8): Remove. - (__arm_vmullbq_int_m_s32): Remove. - (__arm_vmullbq_int_m_s16): Remove. - (__arm_vmullbq_int_m_u8): Remove. - (__arm_vmullbq_int_m_u32): Remove. - (__arm_vmullbq_int_m_u16): Remove. - (__arm_vmulltq_int_m_s8): Remove. - (__arm_vmulltq_int_m_s32): Remove. - (__arm_vmulltq_int_m_s16): Remove. - (__arm_vmulltq_int_m_u8): Remove. - (__arm_vmulltq_int_m_u32): Remove. - (__arm_vmulltq_int_m_u16): Remove. - (__arm_vmullbq_int_x_s8): Remove. - (__arm_vmullbq_int_x_s16): Remove. - (__arm_vmullbq_int_x_s32): Remove. - (__arm_vmullbq_int_x_u8): Remove. - (__arm_vmullbq_int_x_u16): Remove. - (__arm_vmullbq_int_x_u32): Remove. - (__arm_vmulltq_int_x_s8): Remove. - (__arm_vmulltq_int_x_s16): Remove. - (__arm_vmulltq_int_x_s32): Remove. - (__arm_vmulltq_int_x_u8): Remove. - (__arm_vmulltq_int_x_u16): Remove. - (__arm_vmulltq_int_x_u32): Remove. - (__arm_vmulltq_int): Remove. - (__arm_vmullbq_int): Remove. - (__arm_vmullbq_int_m): Remove. - (__arm_vmulltq_int_m): Remove. - (__arm_vmullbq_int_x): Remove. - (__arm_vmulltq_int_x): Remove. - -2023-08-28 Christophe Lyon <christophe.lyon@linaro.org> - - * config/arm/arm-mve-builtins-shapes.cc (binary_widen): New. - * config/arm/arm-mve-builtins-shapes.h (binary_widen): New. - -2023-08-28 Christophe Lyon <christophe.lyon@linaro.org> - - * config/arm/arm-mve-builtins-functions.h (class - unspec_mve_function_exact_insn_vmull): New. - -2023-08-28 Christophe Lyon <christophe.lyon@linaro.org> - - * config/arm/iterators.md (mve_insn): Add vmullb, vmullt. - (isu): Add VMULLBQ_INT_S, VMULLBQ_INT_U, VMULLTQ_INT_S, - VMULLTQ_INT_U. - (supf): Add VMULLBQ_POLY_P, VMULLTQ_POLY_P, VMULLBQ_POLY_M_P, - VMULLTQ_POLY_M_P. - (VMULLBQ_INT, VMULLTQ_INT, VMULLBQ_INT_M, VMULLTQ_INT_M): Delete. - (VMULLxQ_INT, VMULLxQ_POLY, VMULLxQ_INT_M, VMULLxQ_POLY_M): New. - * config/arm/mve.md (mve_vmullbq_int_<supf><mode>) - (mve_vmulltq_int_<supf><mode>): Merge into ... - (@mve_<mve_insn>q_int_<supf><mode>) ... this. - (mve_vmulltq_poly_p<mode>, mve_vmullbq_poly_p<mode>): Merge into ... - (@mve_<mve_insn>q_poly_<supf><mode>): ... this. - (mve_vmullbq_int_m_<supf><mode>, mve_vmulltq_int_m_<supf><mode>): Merge into ... - (@mve_<mve_insn>q_int_m_<supf><mode>): ... this. - (mve_vmullbq_poly_m_p<mode>, mve_vmulltq_poly_m_p<mode>): Merge into ... - (@mve_<mve_insn>q_poly_m_<supf><mode>): ... this. - -2023-08-28 Christophe Lyon <christophe.lyon@linaro.org> - - * config/arm/arm-mve-builtins-shapes.cc (parse_element_type): - Remove dead check. - -2023-08-28 Christophe Lyon <christophe.lyon@linaro.org> - - * config/arm/arm-mve-builtins-shapes.cc (binary_acca_int32): Fix loop bound. - (binary_acca_int64): Likewise. - -2023-08-28 Aldy Hernandez <aldyh@redhat.com> - - * range-op-float.cc (fold_range): Handle relations. - -2023-08-28 Lulu Cheng <chenglulu@loongson.cn> - - * config/loongarch/loongarch.cc (loongarch_expand_conditional_move): - Optimize the function implementation. - -2023-08-28 liuhongt <hongtao.liu@intel.com> - - PR target/111119 - * config/i386/sse.md (V48_AVX2): Rename to .. - (V48_128_256): .. this. - (ssefltmodesuffix): Extend to V4SF/V8SF/V2DF/V4DF. - (<avx_avx2>_maskload<ssemodesuffix><avxsizesuffix>): Change - V48_AVX2 to V48_128_256, also generate vmaskmov{ps,pd} for - integral modes when TARGET_AVX2 is not available. - (<avx_avx2>_maskstore<ssemodesuffix><avxsizesuffix>): Ditto. - (maskload<mode><sseintvecmodelower>): Change V48_AVX2 to - V48_128_256. - (maskstore<mode><sseintvecmodelower>): Ditto. - -2023-08-28 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv-vsetvl.cc (vsetvl_vtype_change_only_p): - New function. - (after_or_same_p): Ditto. - (find_reg_killed_by): Delete. - (has_vsetvl_killed_avl_p): Ditto. - (anticipatable_occurrence_p): Refactor. - (any_set_in_bb_p): Delete. - (count_regno_occurrences): Ditto. - (backward_propagate_worthwhile_p): Ditto. - (demands_can_be_fused_p): Ditto. - (earliest_pred_can_be_fused_p): New function. - (vsetvl_dominated_by_p): Ditto. - (vector_insn_info::parse_insn): Refactor. - (vector_insn_info::merge): Refactor. - (vector_insn_info::dump): Refactor. - (vector_infos_manager::vector_infos_manager): Refactor. - (vector_infos_manager::all_empty_predecessor_p): Delete. - (vector_infos_manager::all_same_avl_p): Ditto. - (vector_infos_manager::create_bitmap_vectors): Refactor. - (vector_infos_manager::free_bitmap_vectors): Refactor. - (vector_infos_manager::dump): Refactor. - (pass_vsetvl::update_block_info): New function. - (enum fusion_type): Ditto. - (pass_vsetvl::get_backward_fusion_type): Delete. - (pass_vsetvl::hard_empty_block_p): Ditto. - (pass_vsetvl::backward_demand_fusion): Ditto. - (pass_vsetvl::forward_demand_fusion): Ditto. - (pass_vsetvl::demand_fusion): Ditto. - (pass_vsetvl::cleanup_illegal_dirty_blocks): Ditto. - (pass_vsetvl::compute_local_properties): Ditto. - (pass_vsetvl::earliest_fusion): New function. - (pass_vsetvl::vsetvl_fusion): Ditto. - (pass_vsetvl::commit_vsetvls): Refactor. - (get_first_vsetvl_before_rvv_insns): Ditto. - (pass_vsetvl::global_eliminate_vsetvl_insn): Ditto. - (pass_vsetvl::cleanup_earliest_vsetvls): New function. - (pass_vsetvl::df_post_optimization): Refactor. - (pass_vsetvl::lazy_vsetvl): Ditto. - * config/riscv/riscv-vsetvl.h: Ditto. - -2023-08-26 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/autovec.md (len_fold_extract_last_<mode>): New pattern. - * config/riscv/riscv-protos.h (enum insn_type): New enum. - (expand_fold_extract_last): New function. - * config/riscv/riscv-v.cc (emit_nonvlmax_slide_insn): Ditto. - (emit_cpop_insn): Ditto. - (emit_nonvlmax_compress_insn): Ditto. - (expand_fold_extract_last): Ditto. - * config/riscv/vector.md: Fix vcpop.m ratio demand. - -2023-08-25 Edwin Lu <ewlu@rivosinc.com> - - * config/riscv/sync-rvwmo.md: updated types to "multi" or - "atomic" based on number of assembly lines generated - * config/riscv/sync-ztso.md: likewise - * config/riscv/sync.md: likewise - -2023-08-25 Jin Ma <jinma@linux.alibaba.com> - - * common/config/riscv/riscv-common.cc: Add zfa extension version, which depends on - the F extension. - * config/riscv/constraints.md (zfli): Constrain the floating point number that the - instructions FLI.H/S/D can load. - * config/riscv/iterators.md (ceil): New. - * config/riscv/riscv-opts.h (MASK_ZFA): New. - (TARGET_ZFA): New. - * config/riscv/riscv-protos.h (riscv_float_const_rtx_index_for_fli): New. - * config/riscv/riscv.cc (riscv_float_const_rtx_index_for_fli): New. - (riscv_cannot_force_const_mem): If instruction FLI.H/S/D can be used, memory is - not applicable. - (riscv_const_insns): Likewise. - (riscv_legitimize_const_move): Likewise. - (riscv_split_64bit_move_p): If instruction FLI.H/S/D can be used, no split is - required. - (riscv_split_doubleword_move): Likewise. - (riscv_output_move): Output the mov instructions in zfa extension. - (riscv_print_operand): Output the floating-point value of the FLI.H/S/D immediate - in assembly. - (riscv_secondary_memory_needed): Likewise. - * config/riscv/riscv.md (fminm<mode>3): New. - (fmaxm<mode>3): New. - (movsidf2_low_rv32): New. - (movsidf2_high_rv32): New. - (movdfsisi3_rv32): New. - (f<quiet_pattern>_quiet<ANYF:mode><X:mode>4_zfa): New. - * config/riscv/riscv.opt: New. - -2023-08-25 Sandra Loosemore <sandra@codesourcery.com> - - * omp-api.h: New. - * omp-general.cc (omp_runtime_api_procname): New. - (omp_runtime_api_call): Moved here from omp-low.cc, and make - non-static. - * omp-general.h: Include omp-api.h. - * omp-low.cc (omp_runtime_api_call): Delete this copy. - -2023-08-25 Sandra Loosemore <sandra@codesourcery.com> - - * doc/generic.texi (OpenMP): Document OMP_STRUCTURED_BLOCK. - * doc/gimple.texi (GIMPLE instruction set): Add - GIMPLE_OMP_STRUCTURED_BLOCK. - (GIMPLE_OMP_STRUCTURED_BLOCK): New subsection. - * gimple-low.cc (lower_stmt): Error on GIMPLE_OMP_STRUCTURED_BLOCK. - * gimple-pretty-print.cc (dump_gimple_omp_block): Handle - GIMPLE_OMP_STRUCTURED_BLOCK. - (pp_gimple_stmt_1): Likewise. - * gimple-walk.cc (walk_gimple_stmt): Likewise. - * gimple.cc (gimple_build_omp_structured_block): New. - * gimple.def (GIMPLE_OMP_STRUCTURED_BLOCK): New. - * gimple.h (gimple_build_omp_structured_block): Declare. - (gimple_has_substatements): Handle GIMPLE_OMP_STRUCTURED_BLOCK. - (CASE_GIMPLE_OMP): Likewise. - * gimplify.cc (is_gimple_stmt): Handle OMP_STRUCTURED_BLOCK. - (gimplify_expr): Likewise. - * omp-expand.cc (GIMPLE_OMP_STRUCTURED_BLOCK): Error on - GIMPLE_OMP_STRUCTURED_BLOCK. - * omp-low.cc (scan_omp_1_stmt): Handle GIMPLE_OMP_STRUCTURED_BLOCK. - (lower_omp_1): Likewise. - (diagnose_sb_1): Likewise. - (diagnose_sb_2): Likewise. - * tree-inline.cc (remap_gimple_stmt): Handle - GIMPLE_OMP_STRUCTURED_BLOCK. - (estimate_num_insns): Likewise. - * tree-nested.cc (convert_nonlocal_reference_stmt): Likewise. - (convert_local_reference_stmt): Likewise. - (convert_gimple_call): Likewise. - * tree-pretty-print.cc (dump_generic_node): Handle - OMP_STRUCTURED_BLOCK. - * tree.def (OMP_STRUCTURED_BLOCK): New. - * tree.h (OMP_STRUCTURED_BLOCK_BODY): New. - -2023-08-25 Vineet Gupta <vineetg@rivosinc.com> - - * config/riscv/riscv.cc (riscv_rtx_costs): Adjust const_int - cost. Add some comments about different constants handling. - -2023-08-25 Andrew Pinski <apinski@marvell.com> - - * match.pd (`a ? one_zero : one_zero`): Move - below detection of minmax. - -2023-08-25 Andrew Pinski <apinski@marvell.com> - - * match.pd (`a | C -> C`): New pattern. - -2023-08-25 Uros Bizjak <ubizjak@gmail.com> - - * caller-save.cc (new_saved_hard_reg): - Rename TRUE/FALSE to true/false. - (setup_save_areas): Ditto. - * gcc.cc (set_collect_gcc_options): Ditto. - (driver::build_multilib_strings): Ditto. - (print_multilib_info): Ditto. - * genautomata.cc (gen_cpu_unit): Ditto. - (gen_query_cpu_unit): Ditto. - (gen_bypass): Ditto. - (gen_excl_set): Ditto. - (gen_presence_absence_set): Ditto. - (gen_presence_set): Ditto. - (gen_final_presence_set): Ditto. - (gen_absence_set): Ditto. - (gen_final_absence_set): Ditto. - (gen_automaton): Ditto. - (gen_regexp_repeat): Ditto. - (gen_regexp_allof): Ditto. - (gen_regexp_oneof): Ditto. - (gen_regexp_sequence): Ditto. - (process_decls): Ditto. - (reserv_sets_are_intersected): Ditto. - (initiate_excl_sets): Ditto. - (form_reserv_sets_list): Ditto. - (check_presence_pattern_sets): Ditto. - (check_absence_pattern_sets): Ditto. - (check_regexp_units_distribution): Ditto. - (check_unit_distributions_to_automata): Ditto. - (create_ainsns): Ditto. - (output_insn_code_cases): Ditto. - (output_internal_dead_lock_func): Ditto. - (form_important_insn_automata_lists): Ditto. - * gengtype-state.cc (read_state_files_list): Ditto. - * gengtype.cc (main): Ditto. - * gimple-array-bounds.cc (array_bounds_checker::check_array_bounds): - Ditto. - * gimple.cc (gimple_build_call_from_tree): Ditto. - (preprocess_case_label_vec_for_gimple): Ditto. - * gimplify.cc (gimplify_call_expr): Ditto. - * ordered-hash-map-tests.cc (test_map_of_int_to_strings): Ditto. - -2023-08-25 Richard Biener <rguenther@suse.de> - - PR tree-optimization/111137 - * tree-vect-data-refs.cc (vect_slp_analyze_load_dependences): - Properly handle grouped stores from other SLP instances. - -2023-08-25 Richard Biener <rguenther@suse.de> - - * tree-vect-data-refs.cc (vect_slp_analyze_store_dependences): - Split out from vect_slp_analyze_node_dependences, remove - dead code. - (vect_slp_analyze_load_dependences): Split out from - vect_slp_analyze_node_dependences, adjust comments. Process - queued stores before any disambiguation. - (vect_slp_analyze_node_dependences): Remove. - (vect_slp_analyze_instance_dependence): Adjust. - -2023-08-25 Aldy Hernandez <aldyh@redhat.com> - - * range-op-float.cc (frelop_early_resolve): Rewrite for better NAN - handling. - (operator_not_equal::fold_range): Adjust for relations. - (operator_lt::fold_range): Same. - (operator_gt::fold_range): Same. - (foperator_unordered_equal::fold_range): Same. - (foperator_unordered_lt::fold_range): Same. - (foperator_unordered_le::fold_range): Same. - (foperator_unordered_gt::fold_range): Same. - (foperator_unordered_ge::fold_range): Same. - -2023-08-25 Richard Biener <rguenther@suse.de> - - PR tree-optimization/111136 - * tree-vect-loop.cc (vect_dissolve_slp_only_groups): For - stores force STMT_VINFO_STRIDED_P and also duplicate that - to all elements. - -2023-08-25 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv-vsetvl.cc (pass_vsetvl::compute_local_properties): - Add early continue. - -2023-08-25 liuhongt <hongtao.liu@intel.com> - - * config/i386/sse.md (vec_set<mode>): Removed. - (V_128H): Merge into .. - (V_128): .. this. - (V_256H): Merge into .. - (V_256): .. this. - (V_512): Add V32HF, V32BF. - (*ssse3_palignr<mode>_perm): Adjust mode iterator from V_128H - to V_128. - (vcond<mode><sseintvecmodelower>): Removed - (vcondu<mode><sseintvecmodelower>): Removed. - (avx_vbroadcastf128_<mode>): Refator from V_256H to V_256. - -2023-08-25 Hongyu Wang <hongyu.wang@intel.com> - - PR target/111127 - * config/i386/sse.md (avx512f_cvtne2ps2bf16_<mode>_maskz): - Adjust paramter order. - -2023-08-24 Uros Bizjak <ubizjak@gmail.com> - - PR target/94866 - * config/i386/sse.md (*sse2_movq128_<mode>_1): New insn pattern. - -2023-08-24 David Malcolm <dmalcolm@redhat.com> - - PR analyzer/105899 - * doc/invoke.texi (Static Analyzer Options): Add "strcat" to the - list of functions known to the analyzer. - -2023-08-24 Richard Biener <rguenther@suse.de> - - PR tree-optimization/111123 - * tree-ssa-ccp.cc (pass_fold_builtins::execute): Do not - remove indirect clobbers here ... - * tree-outof-ssa.cc (rewrite_out_of_ssa): ... but here. - (remove_indirect_clobbers): New function. - -2023-08-24 Jan Hubicka <jh@suse.cz> - - * cfg.h (struct control_flow_graph): New field full_profile. - * auto-profile.cc (afdo_annotate_cfg): Set full_profile to true. - * cfg.cc (init_flow): Set full_profile to false. - * graphite.cc (graphite_transform_loops): Set full_profile to false. - * lto-streamer-in.cc (input_cfg): Initialize full_profile flag. - * predict.cc (pass_profile::execute): Set full_profile to true. - * symtab-thunks.cc (expand_thunk): Set full_profile to true. - * tree-cfg.cc (gimple_verify_flow_info): Verify that profile is full - if full_profile is set. - * tree-inline.cc (initialize_cfun): Initialize full_profile. - (expand_call_inline): Combine full_profile. - -2023-08-24 Richard Biener <rguenther@suse.de> - - * tree-vect-slp.cc (vect_build_slp_tree_1): Rename - load_p to ldst_p, fix mistakes and rely on - STMT_VINFO_DATA_REF. - -2023-08-24 Jan Hubicka <jh@suse.cz> - - * gimple-harden-conditionals.cc (insert_check_and_trap): Set count - of newly build trap bb. - -2023-08-24 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv.cc (riscv_preferred_else_value): Remove it since - it forbid COND_LEN_FMS/COND_LEN_FNMS STMT fold. - (TARGET_PREFERRED_ELSE_VALUE): Ditto. - -2023-08-24 Robin Dapp <rdapp.gcc@gmail.com> - - * common/config/riscv/riscv-common.cc: Add -fsched-pressure. - * config/riscv/riscv.cc (riscv_option_override): Set sched - pressure algorithm. - -2023-08-24 Robin Dapp <rdapp@ventanamicro.com> - - * config/riscv/riscv.cc (riscv_print_operand): Allow vk operand. - -2023-08-24 Richard Biener <rguenther@suse.de> - - PR tree-optimization/111125 - * tree-vect-slp.cc (vect_slp_function): Split at novector - loop entry, do not push blocks in novector loops. - -2023-08-24 Richard Sandiford <richard.sandiford@arm.com> - - * doc/extend.texi: Document the C [[__extension__ ...]] construct. - -2023-08-24 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * genmatch.cc (decision_tree::gen): Support - COND_LEN_FNMA/COND_LEN_FMS/COND_LEN_FNMS gimple fold. - * gimple-match-exports.cc (gimple_simplify): Ditto. - (gimple_resimplify6): New function. - (gimple_resimplify7): New function. - (gimple_match_op::resimplify): Support - COND_LEN_FNMA/COND_LEN_FMS/COND_LEN_FNMS gimple fold. - (convert_conditional_op): Ditto. - (build_call_internal): Ditto. - (try_conditional_simplification): Ditto. - (gimple_extract): Ditto. - * gimple-match.h (gimple_match_cond::gimple_match_cond): Ditto. - * internal-fn.cc (CASE): Ditto. - -2023-08-24 Richard Biener <rguenther@suse.de> - - PR tree-optimization/111115 - * tree-vectorizer.h (vect_slp_child_index_for_operand): New. - * tree-vect-data-refs.cc (can_group_stmts_p): Also group - .MASK_STORE. - * tree-vect-slp.cc (arg3_arg2_map): New. - (vect_get_operand_map): Handle IFN_MASK_STORE. - (vect_slp_child_index_for_operand): New function. - (vect_build_slp_tree_1): Handle statements with no LHS, - masked store ifns. - (vect_remove_slp_scalar_calls): Likewise. - * tree-vect-stmts.cc (vect_check_store_rhs): Lookup the - SLP child corresponding to the ifn value index. - (vectorizable_store): Likewise for the mask index. Support - masked stores. - (vectorizable_load): Lookup the SLP child corresponding to the - ifn mask index. - -2023-08-24 Richard Biener <rguenther@suse.de> - - PR tree-optimization/111125 - * tree-vect-slp.cc (vectorizable_bb_reduc_epilogue): Account - for the remain_defs processing. - -2023-08-24 Richard Sandiford <richard.sandiford@arm.com> - - * config/aarch64/aarch64.cc: Include ssa.h. - (aarch64_multiply_add_p): Require the second operand of an - Advanced SIMD subtraction to be a multiplication. Assume that - such an operation won't be fused if the second operand is used - multiple times and if the first operand is also a multiplication. - -2023-08-24 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * tree-vect-loop.cc (vectorizable_reduction): Apply - LEN_FOLD_EXTRACT_LAST. - * tree-vect-stmts.cc (vectorizable_condition): Ditto. - -2023-08-24 Richard Biener <rguenther@suse.de> - - PR tree-optimization/111128 - * tree-vect-patterns.cc (vect_recog_over_widening_pattern): - Emit external shift operand inline if we promoted it with - another pattern stmt. - -2023-08-24 Pan Li <pan2.li@intel.com> - - * config/riscv/autovec.md: Fix typo. - -2023-08-24 Pan Li <pan2.li@intel.com> - - * config/riscv/riscv-vector-builtins-bases.cc - (class binop_frm): Removed. - (class reverse_binop_frm): Ditto. - (class widen_binop_frm): Ditto. - (class vfmacc_frm): Ditto. - (class vfnmacc_frm): Ditto. - (class vfmsac_frm): Ditto. - (class vfnmsac_frm): Ditto. - (class vfmadd_frm): Ditto. - (class vfnmadd_frm): Ditto. - (class vfmsub_frm): Ditto. - (class vfnmsub_frm): Ditto. - (class vfwmacc_frm): Ditto. - (class vfwnmacc_frm): Ditto. - (class vfwmsac_frm): Ditto. - (class vfwnmsac_frm): Ditto. - (class unop_frm): Ditto. - (class vfrec7_frm): Ditto. - (class binop): Add frm_op_type template arg. - (class unop): Ditto. - (class widen_binop): Ditto. - (class widen_binop_fp): Ditto. - (class reverse_binop): Ditto. - (class vfmacc): Ditto. - (class vfnmsac): Ditto. - (class vfmadd): Ditto. - (class vfnmsub): Ditto. - (class vfnmacc): Ditto. - (class vfmsac): Ditto. - (class vfnmadd): Ditto. - (class vfmsub): Ditto. - (class vfwmacc): Ditto. - (class vfwnmacc): Ditto. - (class vfwmsac): Ditto. - (class vfwnmsac): Ditto. - (class float_misc): Ditto. - -2023-08-24 Andrew Pinski <apinski@marvell.com> - - PR tree-optimization/111109 - * match.pd (ior(cond,cond), ior(vec_cond,vec_cond)): - Add check to make sure cmp and icmp are inverse. - -2023-08-24 Andrew Pinski <apinski@marvell.com> - - PR tree-optimization/95929 - * match.pd (convert?(-a)): New pattern - for 1bit integer types. - -2023-08-24 Haochen Jiang <haochen.jiang@intel.com> - - Revert: - 2023-08-17 Haochen Jiang <haochen.jiang@intel.com> - - * common/config/i386/cpuinfo.h (get_available_features): - Add avx10_set and version and detect avx10.1. - (cpu_indicator_init): Handle avx10.1-512. - * common/config/i386/i386-common.cc - (OPTION_MASK_ISA2_AVX10_512BIT_SET): New. - (OPTION_MASK_ISA2_AVX10_1_SET): Ditto. - (OPTION_MASK_ISA2_AVX10_512BIT_UNSET): Ditto. - (OPTION_MASK_ISA2_AVX10_1_UNSET): Ditto. - (OPTION_MASK_ISA2_AVX2_UNSET): Modify for AVX10_1. - (ix86_handle_option): Handle -mavx10.1, -mavx10.1-256 and - -mavx10.1-512. - * common/config/i386/i386-cpuinfo.h (enum processor_features): - Add FEATURE_AVX10_512BIT, FEATURE_AVX10_1 and - FEATURE_AVX10_512BIT. - * common/config/i386/i386-isas.h: Add ISA_NAME_TABLE_ENTRY for - AVX10_512BIT, AVX10_1 and AVX10_1_512. - * config/i386/constraints.md (Yk): Add AVX10_1. - (Yv): Ditto. - (k): Ditto. - * config/i386/cpuid.h (bit_AVX10): New. - (bit_AVX10_256): Ditto. - (bit_AVX10_512): Ditto. - * config/i386/i386-c.cc (ix86_target_macros_internal): - Define AVX10_512BIT and AVX10_1. - * config/i386/i386-isa.def - (AVX10_512BIT): Add DEF_PTA(AVX10_512BIT). - (AVX10_1): Add DEF_PTA(AVX10_1). - * config/i386/i386-options.cc (isa2_opts): Add -mavx10.1. - (ix86_valid_target_attribute_inner_p): Handle avx10-512bit, avx10.1 - and avx10.1-512. - (ix86_option_override_internal): Enable AVX512{F,VL,BW,DQ,CD,BF16, - FP16,VBMI,VBMI2,VNNI,IFMA,BITALG,VPOPCNTDQ} features for avx10.1-512. - (ix86_valid_target_attribute_inner_p): Handle AVX10_1. - * config/i386/i386.cc (ix86_get_ssemov): Add AVX10_1. - (ix86_conditional_register_usage): Ditto. - (ix86_hard_regno_mode_ok): Ditto. - (ix86_rtx_costs): Ditto. - * config/i386/i386.h (VALID_MASK_AVX10_MODE): New macro. - * config/i386/i386.opt: Add option -mavx10.1, -mavx10.1-256 and - -mavx10.1-512. - * doc/extend.texi: Document avx10.1, avx10.1-256 and avx10.1-512. - * doc/invoke.texi: Document -mavx10.1, -mavx10.1-256 and -mavx10.1-512. - * doc/sourcebuild.texi: Document target avx10.1, avx10.1-256 - and avx10.1-512. - -2023-08-24 Haochen Jiang <haochen.jiang@intel.com> - - Revert: - 2023-08-17 Haochen Jiang <haochen.jiang@intel.com> - - * common/config/i386/i386-common.cc - (ix86_check_avx10): New function to check isa_flags and - isa_flags_explicit to emit warning when AVX10 is enabled - by "-m" option. - (ix86_check_avx512): New function to check isa_flags and - isa_flags_explicit to emit warning when AVX512 is enabled - by "-m" option. - (ix86_handle_option): Do not change the flags when warning - is emitted. - * config/i386/driver-i386.cc (host_detect_local_cpu): - Do not append -mno-avx10.1 for -march=native. - -2023-08-24 Haochen Jiang <haochen.jiang@intel.com> - - Revert: - 2023-08-17 Haochen Jiang <haochen.jiang@intel.com> - - * common/config/i386/i386-common.cc - (ix86_check_avx10_vector_width): New function to check isa_flags - to emit a warning when there is a conflict in AVX10 options for - vector width. - (ix86_handle_option): Add check for avx10.1-256 and avx10.1-512. - * config/i386/driver-i386.cc (host_detect_local_cpu): - Do not append -mno-avx10-max-512bit for -march=native. - -2023-08-24 Haochen Jiang <haochen.jiang@intel.com> - - Revert: - 2023-08-17 Haochen Jiang <haochen.jiang@intel.com> - - * config/i386/avx512vldqintrin.h: Remove target attribute. - * config/i386/i386-builtin.def (BDESC): - Add OPTION_MASK_ISA2_AVX10_1. - * config/i386/i386-builtins.cc (def_builtin): Handle AVX10_1. - * config/i386/i386-expand.cc - (ix86_check_builtin_isa_match): Ditto. - (ix86_expand_sse2_mulvxdi3): Add TARGET_AVX10_1. - * config/i386/i386.md: Add new isa attribute avx10_1_or_avx512dq - and avx10_1_or_avx512vl. - * config/i386/sse.md: (VF2_AVX512VLDQ_AVX10_1): New. - (VF1_128_256VLDQ_AVX10_1): Ditto. - (VI8_AVX512VLDQ_AVX10_1): Ditto. - (<sse>_andnot<mode>3<mask_name>): - Add TARGET_AVX10_1 and change isa attr from avx512dq to - avx10_1_or_avx512dq. - (*andnot<mode>3): Add TARGET_AVX10_1 and change isa attr from - avx512vl to avx10_1_or_avx512vl. - (fix<fixunssuffix>_trunc<mode><sseintvecmodelower>2<mask_name><round_saeonly_name>): - Change iterator to VF2_AVX512VLDQ_AVX10_1. Remove target check. - (fix_notrunc<mode><sseintvecmodelower>2<mask_name><round_name>): - Ditto. - (ufix_notrunc<mode><sseintvecmodelower>2<mask_name><round_name>): - Ditto. - (fix<fixunssuffix>_trunc<mode><sselongvecmodelower>2<mask_name><round_saeonly_name>): - Change iterator to VF1_128_256VLDQ_AVX10_1. Remove target check. - (avx512dq_fix<fixunssuffix>_truncv2sfv2di2<mask_name>): - Add TARGET_AVX10_1. - (fix<fixunssuffix>_truncv2sfv2di2): Ditto. - (cond_mul<mode>): Change iterator to VI8_AVX10_1_AVX512DQVL. - Remove target check. - (avx512dq_mul<mode>3<mask_name>): Ditto. - (*avx512dq_mul<mode>3<mask_name>): Ditto. - (VI4F_BRCST32x2): Add TARGET_AVX512DQ and TARGET_AVX10_1. - (<mask_codefor>avx512dq_broadcast<mode><mask_name>): - Remove target check. - (VI8F_BRCST64x2): Add TARGET_AVX512DQ and TARGET_AVX10_1. - (<mask_codefor>avx512dq_broadcast<mode><mask_name>_1): - Remove target check. - * config/i386/subst.md (mask_mode512bit_condition): Add TARGET_AVX10_1. - (mask_avx512vl_condition): Ditto. - (mask): Ditto. - -2023-08-24 Haochen Jiang <haochen.jiang@intel.com> - - Revert: - 2023-08-17 Haochen Jiang <haochen.jiang@intel.com> - - * config/i386/avx512vldqintrin.h: Remove target attribute. - * config/i386/i386-builtin.def (BDESC): - Add OPTION_MASK_ISA2_AVX10_1. - * config/i386/i386.cc (standard_sse_constant_opcode): Add TARGET_AVX10_1. - * config/i386/sse.md: (VI48_AVX512VL_AVX10_1): New. - (VI48_AVX512VLDQ_AVX10_1): Ditto. - (VF2_AVX512VL): Remove. - (VI8_256_512VLDQ_AVX10_1): Rename from VI8_256_512. - Add TARGET_AVX10_1. - (*<code><mode>3<mask_name>): Change isa attribute to - avx10_1_or_avx512dq. Add TARGET_AVX10_1. - (<code><mode>3): Add TARGET_AVX10_1. Change isa attr - to avx10_1_or_avx512vl. - (<mask_codefor>avx512dq_cvtps2qq<mode><mask_name><round_name>): - Change iterator to VI8_256_512VLDQ_AVX10_1. Remove target check. - (<mask_codefor>avx512dq_cvtps2qqv2di<mask_name>): - Add TARGET_AVX10_1. - (<mask_codefor>avx512dq_cvtps2uqq<mode><mask_name><round_name>): - Change iterator to VI8_256_512VLDQ_AVX10_1. Remove target check. - (<mask_codefor>avx512dq_cvtps2uqqv2di<mask_name>): - Add TARGET_AVX10_1. - (float<floatunssuffix><sseintvecmodelower><mode>2<mask_name><round_name>): - Change iterator to VF2_AVX512VLDQ_AVX10_1. Remove target check. - (float<floatunssuffix><sselongvecmodelower><mode>2<mask_name><round_name>): - Change iterator to VF1_128_256VLDQ_AVX10_1. Remove target check. - (float<floatunssuffix>v4div4sf2<mask_name>): - Add TARGET_AVX10_1. - (avx512dq_float<floatunssuffix>v2div2sf2): Ditto. - (*avx512dq_float<floatunssuffix>v2div2sf2): Ditto. - (float<floatunssuffix>v2div2sf2): Ditto. - (float<floatunssuffix>v2div2sf2_mask): Ditto. - (*float<floatunssuffix>v2div2sf2_mask): Ditto. - (*float<floatunssuffix>v2div2sf2_mask_1): Ditto. - (<avx512>_cvt<ssemodesuffix>2mask<mode>): - Change iterator to VI48_AVX512VLDQ_AVX10_1. Remove target check. - (<avx512>_cvtmask2<ssemodesuffix><mode>): Ditto. - (*<avx512>_cvtmask2<ssemodesuffix><mode>): - Change iterator to VI48_AVX512VL_AVX10_1. Remove target check. - Change when constraint is enabled. - -2023-08-24 Haochen Jiang <haochen.jiang@intel.com> - - Revert: - 2023-08-17 Haochen Jiang <haochen.jiang@intel.com> - - * config/i386/avx512vldqintrin.h: Remove target attribute. - * config/i386/i386-builtin.def (BDESC): - Add OPTION_MASK_ISA2_AVX10_1. - * config/i386/sse.md (VF_AVX512VLDQ_AVX10_1): New. - (VFH_AVX512VLDQ_AVX10_1): Ditto. - (VF1_AVX512VLDQ_AVX10_1): Ditto. - (<mask_codefor>reducep<mode><mask_name><round_saeonly_name>): - Change iterator to VFH_AVX512VLDQ_AVX10_1. Remove target check. - (vec_pack<floatprefix>_float_<mode>): Change iterator to - VI8_AVX512VLDQ_AVX10_1. Remove target check. - (vec_unpack_<fixprefix>fix_trunc_lo_<mode>): Change iterator to - VF1_AVX512VLDQ_AVX10_1. Remove target check. - (vec_unpack_<fixprefix>fix_trunc_hi_<mode>): Ditto. - (VI48F_256_DQVL_AVX10_1): Rename from VI48F_256_DQ. - (avx512vl_vextractf128<mode>): Change iterator to - VI48F_256_DQVL_AVX10_1. Remove target check. - (vec_extract_hi_<mode>_mask): Add TARGET_AVX10_1. - (vec_extract_hi_<mode>): Ditto. - (avx512vl_vinsert<mode>): Ditto. - (vec_set_lo_<mode><mask_name>): Ditto. - (vec_set_hi_<mode><mask_name>): Ditto. - (avx512dq_rangep<mode><mask_name><round_saeonly_name>): Change - iterator to VF_AVX512VLDQ_AVX10_1. Remove target check. - (avx512dq_fpclass<mode><mask_scalar_merge_name>): Change - iterator to VFH_AVX512VLDQ_AVX10_1. Remove target check. - * config/i386/subst.md (mask_avx512dq_condition): Add - TARGET_AVX10_1. - (mask_scalar_merge): Ditto. - -2023-08-24 Haochen Jiang <haochen.jiang@intel.com> - - Revert: - 2023-08-18 Haochen Jiang <haochen.jiang@intel.com> - - PR target/111051 - * config/i386/avx512vldqintrin.h: Push AVX2 when AVX2 is - disabled. - -2023-08-24 Richard Biener <rguenther@suse.de> - - PR debug/111080 - * dwarf2out.cc (prune_unused_types_walk): Handle - DW_TAG_restrict_type, DW_TAG_shared_type, DW_TAG_atomic_type, - DW_TAG_immutable_type, DW_TAG_coarray_type, DW_TAG_unspecified_type - and DW_TAG_dynamic_type as to only output them when referenced. - -2023-08-24 liuhongt <hongtao.liu@intel.com> - - * config/i386/i386.cc (ix86_invalid_conversion): Adjust GCC - V13 to GCC 13.1. - -2023-08-24 liuhongt <hongtao.liu@intel.com> - - * common/config/i386/i386-common.cc (processor_names): Add new - member graniterapids-s and arrowlake-s. - * config/i386/i386-options.cc (processor_alias_table): Update - table with PROCESSOR_ARROWLAKE_S and - PROCESSOR_GRANITERAPIDS_D. - (m_GRANITERAPID_D): New macro. - (m_ARROWLAKE_S): Ditto. - (m_CORE_AVX512): Add m_GRANITERAPIDS_D. - (processor_cost_table): Add icelake_cost for - PROCESSOR_GRANITERAPIDS_D and alderlake_cost for - PROCESSOR_ARROWLAKE_S. - * config/i386/x86-tune.def: Hanlde m_ARROWLAKE_S same as - m_ARROWLAKE. - * config/i386/i386.h (enum processor_type): Add new member - PROCESSOR_GRANITERAPIDS_D and PROCESSOR_ARROWLAKE_S. - * config/i386/i386-c.cc (ix86_target_macros_internal): Handle - PROCESSOR_GRANITERAPIDS_D and PROCESSOR_ARROWLAKE_S - -2023-08-23 Jivan Hakobyan <jivanhakobyan9@gmail.com> - - * lra-eliminations.cc (eliminate_regs_in_insn): Use equivalences to - to help simplify code further. - -2023-08-23 Andrew MacLeod <amacleod@redhat.com> - - * gimple-range-fold.cc (fold_using_range::range_of_phi): Tweak output. - * gimple-range-phi.cc (phi_group::phi_group): Remove unused members. - Initialize using a range instead of value and edge. - (phi_group::calculate_using_modifier): Use initializer value and - process for relations after trying for iteration convergence. - (phi_group::refine_using_relation): Use initializer range. - (phi_group::dump): Rework the dump output. - (phi_analyzer::process_phi): Allow multiple constant initilizers. - Dump groups immediately as created. - (phi_analyzer::dump): Tweak output. - * gimple-range-phi.h (phi_group::phi_group): Adjust prototype. - (phi_group::initial_value): Delete. - (phi_group::refine_using_relation): Adjust prototype. - (phi_group::m_initial_value): Delete. - (phi_group::m_initial_edge): Delete. - (phi_group::m_vr): Use int_range_max. - * tree-vrp.cc (execute_ranger_vrp): Don't dump phi groups. - -2023-08-23 Andrew MacLeod <amacleod@redhat.com> - - * gimple-range-phi.cc (phi_analyzer::operator[]): Return NULL if - no group was created. - (phi_analyzer::process_phi): Do not create groups of one phi node. - -2023-08-23 Richard Earnshaw <rearnsha@arm.com> - - * target.def (gen_ccmp_first, gen_ccmp_next): Use rtx_code for - CODE, CMP_CODE and BIT_CODE arguments. - * config/aarch64/aarch64.cc (aarch64_gen_ccmp_first): Likewise. - (aarch64_gen_ccmp_next): Likewise. - * doc/tm.texi: Regenerated. - -2023-08-23 Richard Earnshaw <rearnsha@arm.com> - - * coretypes.h (rtx_code): Add forward declaration. - * rtl.h (rtx_code): Make compatible with forward declaration. - -2023-08-23 Uros Bizjak <ubizjak@gmail.com> - - PR target/111010 - * config/i386/i386.md (*concat<any_or_plus:mode><dwi>3_3): - Merge pattern from *concatditi3_3 and *concatsidi3_3 using - DWIH mode iterator. Disable (=&r,m,m) alternative for - 32-bit targets. - (*concat<any_or_plus:mode><dwi>3_3): Disable (=&r,m,m) - alternative for 32-bit targets. - -2023-08-23 Zhangjin Liao <liaozhangjin@eswincomputing.com> - - * config/riscv/bitmanip.md (*<bitmanip_optab>disi2_sext): Add a more - appropriate type attribute. - -2023-08-23 Lehua Ding <lehua.ding@rivai.ai> - - * config/riscv/autovec-opt.md (*cond_abs<mode>): New combine pattern. - (*copysign<mode>_neg): Ditto. - * config/riscv/autovec.md (@vcond_mask_<mode><vm>): Adjust. - (<optab><mode>2): Ditto. - (cond_<optab><mode>): New. - (cond_len_<optab><mode>): Ditto. - * config/riscv/riscv-protos.h (enum insn_type): New. - (expand_cond_len_unop): New helper func. - * config/riscv/riscv-v.cc (shuffle_merge_patterns): Adjust. - (expand_cond_len_unop): New helper func. - -2023-08-23 Jan Hubicka <jh@suse.cz> - - * tree-ssa-loop-ch.cc (enum ch_decision): Fix comment. - (should_duplicate_loop_header_p): Fix return value for static exits. - (ch_base::copy_headers): Improve handling of ch_possible_zero_cost. - -2023-08-23 Kewen Lin <linkw@linux.ibm.com> - - * tree-vect-stmts.cc (vectorizable_store): Move the handlings on - VMAT_GATHER_SCATTER in the final loop nest to its own loop, - and update the final nest accordingly. - -2023-08-23 Kewen Lin <linkw@linux.ibm.com> - - * tree-vect-stmts.cc (vectorizable_store): Move the handlings on - VMAT_LOAD_STORE_LANES in the final loop nest to its own loop, - and update the final nest accordingly. - -2023-08-23 Kewen Lin <linkw@linux.ibm.com> - - * tree-vect-stmts.cc (vectorizable_store): Remove vec oprnds, - adjust vec result_chain, vec_oprnd with auto_vec, and adjust - gvec_oprnds with auto_delete_vec. - -2023-08-23 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv-vsetvl.cc - (pass_vsetvl::global_eliminate_vsetvl_insn): Fix potential ICE. - -2023-08-23 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv-vsetvl.cc (ge_sew_ratio_unavailable_p): - Fix fuse rule bug. - * config/riscv/riscv-vsetvl.def (DEF_SEW_LMUL_FUSE_RULE): Ditto. - -2023-08-23 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/vector.md: Add attribute. - -2023-08-22 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv-vsetvl.cc (change_insn): Clang format. - (vector_infos_manager::all_same_ratio_p): Ditto. - (vector_infos_manager::all_same_avl_p): Ditto. - (pass_vsetvl::refine_vsetvls): Ditto. - (pass_vsetvl::cleanup_vsetvls): Ditto. - (pass_vsetvl::commit_vsetvls): Ditto. - (pass_vsetvl::local_eliminate_vsetvl_insn): Ditto. - (pass_vsetvl::global_eliminate_vsetvl_insn): Ditto. - (pass_vsetvl::compute_probabilities): Ditto. - -2023-08-22 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/t-riscv: Add riscv-vsetvl.def - -2023-08-22 Vineet Gupta <vineetg@rivosinc.com> - - * config/riscv/riscv.opt: Add --param names - riscv-autovec-preference and riscv-autovec-lmul - -2023-08-22 Raphael Moreira Zinsly <rzinsly@ventanamicro.com> - - * config/riscv/t-linux: Add MULTIARCH_DIRNAME. - -2023-08-22 Tobias Burnus <tobias@codesourcery.com> - - * tree-core.h (enum omp_clause_defaultmap_kind): Add - OMP_CLAUSE_DEFAULTMAP_CATEGORY_ALL. - * gimplify.cc (gimplify_scan_omp_clauses): Handle it. - * tree-pretty-print.cc (dump_omp_clause): Likewise. - -2023-08-22 Jakub Jelinek <jakub@redhat.com> - - PR c++/106652 - * doc/extend.texi (_Float<n>): Drop obsolete sentence that the - types aren't supported in C++. - -2023-08-22 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * doc/md.texi: Add LEN_FOLD_EXTRACT_LAST pattern. - * internal-fn.cc (fold_len_extract_direct): Ditto. - (expand_fold_len_extract_optab_fn): Ditto. - (direct_fold_len_extract_optab_supported_p): Ditto. - * internal-fn.def (LEN_FOLD_EXTRACT_LAST): Ditto. - * optabs.def (OPTAB_D): Ditto. - -2023-08-22 Richard Biener <rguenther@suse.de> - - * tree-vect-stmts.cc (vectorizable_store): Do not bump - DR_GROUP_STORE_COUNT here. Remove early out. - (vect_transform_stmt): Only call vectorizable_store on - the last element of an interleaving chain. - -2023-08-22 Richard Biener <rguenther@suse.de> - - PR tree-optimization/94864 - PR tree-optimization/94865 - PR tree-optimization/93080 - * match.pd (bit_insert @0 (BIT_FIELD_REF @1 ..) ..): New pattern - for vector insertion from vector extraction. - -2023-08-22 Juzhe-Zhong <juzhe.zhong@rivai.ai> - Kewen.Lin <linkw@linux.ibm.com> - - * tree-vect-loop.cc (vect_verify_loop_lens): Add exists check. - (vectorizable_live_operation): Add live vectorization for length loop - control. - -2023-08-22 David Malcolm <dmalcolm@redhat.com> - - PR analyzer/105899 - * doc/invoke.texi: Remove -Wanalyzer-unterminated-string. - -2023-08-22 Pan Li <pan2.li@intel.com> - - * config/riscv/riscv-vector-builtins-bases.cc - (vfwredusum_frm_obj): New declaration. - (BASE): Ditto. - * config/riscv/riscv-vector-builtins-bases.h: Ditto. - * config/riscv/riscv-vector-builtins-functions.def - (vfwredusum_frm): New intrinsic function def. - -2023-08-21 David Faust <david.faust@oracle.com> - - * config/bpf/bpf.md (neg): Second operand must be a register. - -2023-08-21 Edwin Lu <ewlu@rivosinc.com> - - * config/riscv/bitmanip.md: Added bitmanip type to insns - that are missing types. - -2023-08-21 Jeff Law <jlaw@ventanamicro.com> - - * config/riscv/sync-ztso.md (atomic_load_ztso<mode>): Avoid extraenous - newline. - -2023-08-21 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org> - - * config/aarch64/falkor-tag-collision-avoidance.cc (dump_insn_list): - Fix format specifier. - -2023-08-21 Aldy Hernandez <aldyh@redhat.com> - - * value-range.cc (frange::union_nans): Return false if nothing - changed. - (range_tests_floats): New test. - -2023-08-21 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org> - - PR tree-optimization/111048 - * fold-const.cc (valid_mask_for_fold_vec_perm_cst_p): Set arg_npatterns - correctly. - (fold_vec_perm_cst): Remove workaround and again call - valid_mask_fold_vec_perm_cst_p for both VLS and VLA vectors. - (test_fold_vec_perm_cst::test_nunits_min_4): Add test-case. - -2023-08-21 Richard Biener <rguenther@suse.de> - - PR tree-optimization/111082 - * tree-vect-slp.cc (vectorize_slp_instance_root_stmt): Only - pun operations that can overflow. - -2023-08-21 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * lcm.cc (compute_antinout_edge): Export as global use. - (compute_earliest): Ditto. - (compute_rev_insert_delete): Ditto. - * lcm.h (compute_antinout_edge): Ditto. - (compute_earliest): Ditto. - -2023-08-21 Richard Biener <rguenther@suse.de> - - PR tree-optimization/111070 - * tree-ssa-ifcombine.cc (ifcombine_ifandif): Check we have - an SSA name before checking SSA_NAME_OCCURS_IN_ABNORMAL_PHI. - -2023-08-21 Andrew Pinski <apinski@marvell.com> - - PR tree-optimization/111002 - * match.pd (view_convert(vec_cond(a,b,c))): New pattern. - -2023-08-21 liuhongt <hongtao.liu@intel.com> - - * common/config/i386/cpuinfo.h (get_intel_cpu): Detect - Alderlake-N. - * common/config/i386/i386-common.cc (alias_table): Support - -march=gracemont as an alias of -march=alderlake. - -2023-08-20 Uros Bizjak <ubizjak@gmail.com> - - * config/i386/i386-expand.cc (ix86_expand_sse_extend): Use ops[1] - instead of src in the call to ix86_expand_sse_cmp. - * config/i386/sse.md (<any_extend:insn>v8qiv8hi2): Do not - force operands[1] to a register. - (<any_extend:insn>v4hiv4si2): Ditto. - (<any_extend:insn>v2siv2di2): Ditto. - -2023-08-20 Andrew Pinski <apinski@marvell.com> - - PR tree-optimization/111006 - PR tree-optimization/110986 - * match.pd: (op(vec_cond(a,b,c))): Handle convert for op. - -2023-08-20 Eric Gallager <egallager@gcc.gnu.org> - - PR target/90835 - * Makefile.in: improve error message when /usr/include is - missing - -2023-08-19 Tobias Burnus <tobias@codesourcery.com> - - PR middle-end/111017 - * omp-expand.cc (expand_omp_for_init_vars): Pass after=true - to expand_omp_build_cond for 'factor != 0' condition, resulting - in pre-r12-5295-g47de0b56ee455e code for the gimple insert. - -2023-08-19 Guo Jie <guojie@loongson.cn> - Lulu Cheng <chenglulu@loongson.cn> - - * config/loongarch/t-loongarch: Add loongarch-driver.h into - TM_H. Add loongarch-def.h and loongarch-tune.h into - OPTIONS_H_EXTRA. - -2023-08-18 Uros Bizjak <ubizjak@gmail.com> - - PR target/111023 - * config/i386/i386-expand.cc (ix86_split_mmx_punpck): - Also handle V2QImode. - (ix86_expand_sse_extend): New function. - * config/i386/i386-protos.h (ix86_expand_sse_extend): New prototype. - * config/i386/mmx.md (<any_extend:insn>v4qiv4hi2): Enable for - TARGET_SSE2. Expand through ix86_expand_sse_extend for !TARGET_SSE4_1. - (<any_extend:insn>v2hiv2si2): Ditto. - (<any_extend:insn>v2qiv2hi2): Ditto. - * config/i386/sse.md (<any_extend:insn>v8qiv8hi2): Ditto. - (<any_extend:insn>v4hiv4si2): Ditto. - (<any_extend:insn>v2siv2di2): Ditto. - -2023-08-18 Aldy Hernandez <aldyh@redhat.com> - - PR ipa/110753 - * value-range.cc (irange::union_bitmask): Return FALSE if updated - bitmask is semantically equivalent to the original mask. - (irange::intersect_bitmask): Same. - (irange::get_bitmask): Add comment. - -2023-08-18 Richard Biener <rguenther@suse.de> - - PR tree-optimization/111019 - * tree-ssa-loop-im.cc (gather_mem_refs_stmt): When canonicalizing - also scrap base and offset in case the ref is indirect. - -2023-08-18 Jose E. Marchesi <jose.marchesi@oracle.com> - - * config/bpf/bpf.opt (mframe-limit): Set default to 32767. - -2023-08-18 Kewen Lin <linkw@linux.ibm.com> - - PR bootstrap/111021 - * Makefile.in (TM_P_H): Add $(TREE_H) as dependence. - -2023-08-18 Kewen Lin <linkw@linux.ibm.com> - - * tree-vect-stmts.cc (vect_build_scatter_store_calls): New, factor - out from ... - (vectorizable_store): ... here. - -2023-08-18 Richard Biener <rguenther@suse.de> - - PR tree-optimization/111048 - * fold-const.cc (fold_vec_perm_cst): Check for non-VLA - vectors first. - -2023-08-18 Haochen Jiang <haochen.jiang@intel.com> - - PR target/111051 - * config/i386/avx512vldqintrin.h: Push AVX2 when AVX2 is - disabled. - -2023-08-18 Kewen Lin <linkw@linux.ibm.com> - - * tree-vect-stmts.cc (vectorizable_load): Move the handlings on - VMAT_GATHER_SCATTER in the final loop nest to its own loop, - and update the final nest accordingly. - -2023-08-18 Andrew Pinski <apinski@marvell.com> - - * doc/md.texi (Standard patterns): Document cond_neg, cond_one_cmpl, - cond_len_neg and cond_len_one_cmpl. - -2023-08-18 Lehua Ding <lehua.ding@rivai.ai> - - * config/riscv/iterators.md (TARGET_HARD_FLOAT || TARGET_ZFINX): New. - * config/riscv/pic.md (*local_pic_load<ANYF:mode>): Change ANYF. - (*local_pic_load<ANYLSF:mode>): To ANYLSF. - (*local_pic_load_32d<ANYF:mode>): Ditto. - (*local_pic_load_32d<ANYLSF:mode>): Ditto. - (*local_pic_store<ANYF:mode>): Ditto. - (*local_pic_store<ANYLSF:mode>): Ditto. - (*local_pic_store_32d<ANYF:mode>): Ditto. - (*local_pic_store_32d<ANYLSF:mode>): Ditto. - -2023-08-18 Lehua Ding <lehua.ding@rivai.ai> - Ju-Zhe Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/predicates.md (vector_const_0_operand): New. - * config/riscv/vector.md (*pred_broadcast<mode>_zero): Ditto. - -2023-08-18 Lehua Ding <lehua.ding@rivai.ai> - - * config/riscv/riscv-vsetvl.cc (pass_vsetvl::backward_demand_fusion): - Forbidden. - -2023-08-17 Andrew MacLeod <amacleod@redhat.com> - - PR tree-optimization/111009 - * range-op.cc (operator_addr_expr::op1_range): Be more restrictive. - -2023-08-17 Vladimir N. Makarov <vmakarov@redhat.com> - - * lra-spills.cc (assign_stack_slot_num_and_sort_pseudos): Moving - slots_num initialization from here ... - (lra_spill): ... to here before the 1st call of - assign_stack_slot_num_and_sort_pseudos. Add the 2nd call after - fp->sp elimination. - -2023-08-17 Jose E. Marchesi <jose.marchesi@oracle.com> - - PR c/106537 - * doc/invoke.texi (Option Summary): Mention - -Wcompare-distinct-pointer-types under `Warning Options'. - (Warning Options): Document -Wcompare-distinct-pointer-types. - -2023-08-17 Jan-Benedict Glaw <jbglaw@lug-owl.de> - - * recog.cc (memory_address_addr_space_p): Mark possibly unused - argument as unused. - -2023-08-17 Richard Biener <rguenther@suse.de> - - PR tree-optimization/111039 - * tree-ssa-ifcombine.cc (ifcombine_ifandif): Check for - SSA_NAME_OCCURS_IN_ABNORMAL_PHI. - -2023-08-17 Alex Coplan <alex.coplan@arm.com> - - * doc/rtl.texi: Fix up sample code for RTL-SSA insn changes. - -2023-08-17 Jose E. Marchesi <jose.marchesi@oracle.com> - - PR target/111046 - * config/bpf/bpf.cc (bpf_attribute_table): Add entry for the - `naked' function attribute. - (bpf_warn_func_return): New function. - (TARGET_WARN_FUNC_RETURN): Define. - (bpf_expand_prologue): Add preventive comment. - (bpf_expand_epilogue): Likewise. - * doc/extend.texi (BPF Function Attributes): Document the `naked' - function attribute. - -2023-08-17 Richard Biener <rguenther@suse.de> - - * tree-vect-slp.cc (vect_slp_check_for_roots): Use - !needs_fold_left_reduction_p to decide whether we can - handle the reduction with association. - (vectorize_slp_instance_root_stmt): For TYPE_OVERFLOW_UNDEFINED - reductions perform all arithmetic in an unsigned type. - -2023-08-17 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> - - * configure.ac (gcc_cv_ld64_version): Allow for dyld in ld -v - output. - * configure: Regenerate. - -2023-08-17 Pan Li <pan2.li@intel.com> - - * config/riscv/riscv-vector-builtins-bases.cc - (widen_freducop): Add frm_opt_type template arg. - (vfwredosum_frm_obj): New declaration. - (BASE): Ditto. - * config/riscv/riscv-vector-builtins-bases.h: Ditto. - * config/riscv/riscv-vector-builtins-functions.def - (vfwredosum_frm): New intrinsic function def. - -2023-08-17 Pan Li <pan2.li@intel.com> - - * config/riscv/riscv-vector-builtins-bases.cc - (vfredosum_frm_obj): New declaration. - (BASE): Ditto. - * config/riscv/riscv-vector-builtins-bases.h: Ditto. - * config/riscv/riscv-vector-builtins-functions.def - (vfredosum_frm): New intrinsic function def. - -2023-08-17 Pan Li <pan2.li@intel.com> - - * config/riscv/riscv-vector-builtins-bases.cc - (class freducop): Add frm_op_type template arg. - (vfredusum_frm_obj): New declaration. - (BASE): Ditto. - * config/riscv/riscv-vector-builtins-bases.h: Ditto. - * config/riscv/riscv-vector-builtins-functions.def - (vfredusum_frm): New intrinsic function def. - * config/riscv/riscv-vector-builtins-shapes.cc - (struct reduc_alu_frm_def): New class for frm shape. - (SHAPE): New declaration. - * config/riscv/riscv-vector-builtins-shapes.h: Ditto. - -2023-08-17 Pan Li <pan2.li@intel.com> - - * config/riscv/riscv-vector-builtins-bases.cc - (class vfncvt_f): Add frm_op_type template arg. - (vfncvt_f_frm_obj): New declaration. - (BASE): Ditto. - * config/riscv/riscv-vector-builtins-bases.h: Ditto. - * config/riscv/riscv-vector-builtins-functions.def - (vfncvt_f_frm): New intrinsic function def. - -2023-08-17 Pan Li <pan2.li@intel.com> - - * config/riscv/riscv-vector-builtins-bases.cc - (vfncvt_xu_frm_obj): New declaration. - (BASE): Ditto. - * config/riscv/riscv-vector-builtins-bases.h: Ditto. - * config/riscv/riscv-vector-builtins-functions.def - (vfncvt_xu_frm): New intrinsic function def. - -2023-08-17 Pan Li <pan2.li@intel.com> - - * config/riscv/riscv-vector-builtins-bases.cc - (class vfncvt_x): Add frm_op_type template arg. - (BASE): New declaration. - * config/riscv/riscv-vector-builtins-bases.h: Ditto. - * config/riscv/riscv-vector-builtins-functions.def - (vfncvt_x_frm): New intrinsic function def. - * config/riscv/riscv-vector-builtins-shapes.cc - (struct narrow_alu_frm_def): New shape function for frm. - (SHAPE): New declaration. - * config/riscv/riscv-vector-builtins-shapes.h: Ditto. - -2023-08-17 Haochen Jiang <haochen.jiang@intel.com> - - * config/i386/avx512vldqintrin.h: Remove target attribute. - * config/i386/i386-builtin.def (BDESC): - Add OPTION_MASK_ISA2_AVX10_1. - * config/i386/sse.md (VF_AVX512VLDQ_AVX10_1): New. - (VFH_AVX512VLDQ_AVX10_1): Ditto. - (VF1_AVX512VLDQ_AVX10_1): Ditto. - (<mask_codefor>reducep<mode><mask_name><round_saeonly_name>): - Change iterator to VFH_AVX512VLDQ_AVX10_1. Remove target check. - (vec_pack<floatprefix>_float_<mode>): Change iterator to - VI8_AVX512VLDQ_AVX10_1. Remove target check. - (vec_unpack_<fixprefix>fix_trunc_lo_<mode>): Change iterator to - VF1_AVX512VLDQ_AVX10_1. Remove target check. - (vec_unpack_<fixprefix>fix_trunc_hi_<mode>): Ditto. - (VI48F_256_DQVL_AVX10_1): Rename from VI48F_256_DQ. - (avx512vl_vextractf128<mode>): Change iterator to - VI48F_256_DQVL_AVX10_1. Remove target check. - (vec_extract_hi_<mode>_mask): Add TARGET_AVX10_1. - (vec_extract_hi_<mode>): Ditto. - (avx512vl_vinsert<mode>): Ditto. - (vec_set_lo_<mode><mask_name>): Ditto. - (vec_set_hi_<mode><mask_name>): Ditto. - (avx512dq_rangep<mode><mask_name><round_saeonly_name>): Change - iterator to VF_AVX512VLDQ_AVX10_1. Remove target check. - (avx512dq_fpclass<mode><mask_scalar_merge_name>): Change - iterator to VFH_AVX512VLDQ_AVX10_1. Remove target check. - * config/i386/subst.md (mask_avx512dq_condition): Add - TARGET_AVX10_1. - (mask_scalar_merge): Ditto. - -2023-08-17 Haochen Jiang <haochen.jiang@intel.com> - - * config/i386/avx512vldqintrin.h: Remove target attribute. - * config/i386/i386-builtin.def (BDESC): - Add OPTION_MASK_ISA2_AVX10_1. - * config/i386/i386.cc (standard_sse_constant_opcode): Add TARGET_AVX10_1. - * config/i386/sse.md: (VI48_AVX512VL_AVX10_1): New. - (VI48_AVX512VLDQ_AVX10_1): Ditto. - (VF2_AVX512VL): Remove. - (VI8_256_512VLDQ_AVX10_1): Rename from VI8_256_512. - Add TARGET_AVX10_1. - (*<code><mode>3<mask_name>): Change isa attribute to - avx10_1_or_avx512dq. Add TARGET_AVX10_1. - (<code><mode>3): Add TARGET_AVX10_1. Change isa attr - to avx10_1_or_avx512vl. - (<mask_codefor>avx512dq_cvtps2qq<mode><mask_name><round_name>): - Change iterator to VI8_256_512VLDQ_AVX10_1. Remove target check. - (<mask_codefor>avx512dq_cvtps2qqv2di<mask_name>): - Add TARGET_AVX10_1. - (<mask_codefor>avx512dq_cvtps2uqq<mode><mask_name><round_name>): - Change iterator to VI8_256_512VLDQ_AVX10_1. Remove target check. - (<mask_codefor>avx512dq_cvtps2uqqv2di<mask_name>): - Add TARGET_AVX10_1. - (float<floatunssuffix><sseintvecmodelower><mode>2<mask_name><round_name>): - Change iterator to VF2_AVX512VLDQ_AVX10_1. Remove target check. - (float<floatunssuffix><sselongvecmodelower><mode>2<mask_name><round_name>): - Change iterator to VF1_128_256VLDQ_AVX10_1. Remove target check. - (float<floatunssuffix>v4div4sf2<mask_name>): - Add TARGET_AVX10_1. - (avx512dq_float<floatunssuffix>v2div2sf2): Ditto. - (*avx512dq_float<floatunssuffix>v2div2sf2): Ditto. - (float<floatunssuffix>v2div2sf2): Ditto. - (float<floatunssuffix>v2div2sf2_mask): Ditto. - (*float<floatunssuffix>v2div2sf2_mask): Ditto. - (*float<floatunssuffix>v2div2sf2_mask_1): Ditto. - (<avx512>_cvt<ssemodesuffix>2mask<mode>): - Change iterator to VI48_AVX512VLDQ_AVX10_1. Remove target check. - (<avx512>_cvtmask2<ssemodesuffix><mode>): Ditto. - (*<avx512>_cvtmask2<ssemodesuffix><mode>): - Change iterator to VI48_AVX512VL_AVX10_1. Remove target check. - Change when constraint is enabled. - -2023-08-17 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - PR target/111037 - * config/riscv/riscv-vsetvl.cc (float_insn_valid_sew_p): New function. - (second_sew_less_than_first_sew_p): Fix bug. - (first_sew_less_than_second_sew_p): Ditto. - -2023-08-17 Haochen Jiang <haochen.jiang@intel.com> - - * config/i386/avx512vldqintrin.h: Remove target attribute. - * config/i386/i386-builtin.def (BDESC): - Add OPTION_MASK_ISA2_AVX10_1. - * config/i386/i386-builtins.cc (def_builtin): Handle AVX10_1. - * config/i386/i386-expand.cc - (ix86_check_builtin_isa_match): Ditto. - (ix86_expand_sse2_mulvxdi3): Add TARGET_AVX10_1. - * config/i386/i386.md: Add new isa attribute avx10_1_or_avx512dq - and avx10_1_or_avx512vl. - * config/i386/sse.md: (VF2_AVX512VLDQ_AVX10_1): New. - (VF1_128_256VLDQ_AVX10_1): Ditto. - (VI8_AVX512VLDQ_AVX10_1): Ditto. - (<sse>_andnot<mode>3<mask_name>): - Add TARGET_AVX10_1 and change isa attr from avx512dq to - avx10_1_or_avx512dq. - (*andnot<mode>3): Add TARGET_AVX10_1 and change isa attr from - avx512vl to avx10_1_or_avx512vl. - (fix<fixunssuffix>_trunc<mode><sseintvecmodelower>2<mask_name><round_saeonly_name>): - Change iterator to VF2_AVX512VLDQ_AVX10_1. Remove target check. - (fix_notrunc<mode><sseintvecmodelower>2<mask_name><round_name>): - Ditto. - (ufix_notrunc<mode><sseintvecmodelower>2<mask_name><round_name>): - Ditto. - (fix<fixunssuffix>_trunc<mode><sselongvecmodelower>2<mask_name><round_saeonly_name>): - Change iterator to VF1_128_256VLDQ_AVX10_1. Remove target check. - (avx512dq_fix<fixunssuffix>_truncv2sfv2di2<mask_name>): - Add TARGET_AVX10_1. - (fix<fixunssuffix>_truncv2sfv2di2): Ditto. - (cond_mul<mode>): Change iterator to VI8_AVX10_1_AVX512DQVL. - Remove target check. - (avx512dq_mul<mode>3<mask_name>): Ditto. - (*avx512dq_mul<mode>3<mask_name>): Ditto. - (VI4F_BRCST32x2): Add TARGET_AVX512DQ and TARGET_AVX10_1. - (<mask_codefor>avx512dq_broadcast<mode><mask_name>): - Remove target check. - (VI8F_BRCST64x2): Add TARGET_AVX512DQ and TARGET_AVX10_1. - (<mask_codefor>avx512dq_broadcast<mode><mask_name>_1): - Remove target check. - * config/i386/subst.md (mask_mode512bit_condition): Add TARGET_AVX10_1. - (mask_avx512vl_condition): Ditto. - (mask): Ditto. - -2023-08-17 Haochen Jiang <haochen.jiang@intel.com> - - * common/config/i386/i386-common.cc - (ix86_check_avx10_vector_width): New function to check isa_flags - to emit a warning when there is a conflict in AVX10 options for - vector width. - (ix86_handle_option): Add check for avx10.1-256 and avx10.1-512. - * config/i386/driver-i386.cc (host_detect_local_cpu): - Do not append -mno-avx10-max-512bit for -march=native. - -2023-08-17 Haochen Jiang <haochen.jiang@intel.com> - - * common/config/i386/i386-common.cc - (ix86_check_avx10): New function to check isa_flags and - isa_flags_explicit to emit warning when AVX10 is enabled - by "-m" option. - (ix86_check_avx512): New function to check isa_flags and - isa_flags_explicit to emit warning when AVX512 is enabled - by "-m" option. - (ix86_handle_option): Do not change the flags when warning - is emitted. - * config/i386/driver-i386.cc (host_detect_local_cpu): - Do not append -mno-avx10.1 for -march=native. - -2023-08-17 Haochen Jiang <haochen.jiang@intel.com> - - * common/config/i386/cpuinfo.h (get_available_features): - Add avx10_set and version and detect avx10.1. - (cpu_indicator_init): Handle avx10.1-512. - * common/config/i386/i386-common.cc - (OPTION_MASK_ISA2_AVX10_512BIT_SET): New. - (OPTION_MASK_ISA2_AVX10_1_SET): Ditto. - (OPTION_MASK_ISA2_AVX10_512BIT_UNSET): Ditto. - (OPTION_MASK_ISA2_AVX10_1_UNSET): Ditto. - (OPTION_MASK_ISA2_AVX2_UNSET): Modify for AVX10_1. - (ix86_handle_option): Handle -mavx10.1, -mavx10.1-256 and - -mavx10.1-512. - * common/config/i386/i386-cpuinfo.h (enum processor_features): - Add FEATURE_AVX10_512BIT, FEATURE_AVX10_1 and - FEATURE_AVX10_512BIT. - * common/config/i386/i386-isas.h: Add ISA_NAME_TABLE_ENTRY for - AVX10_512BIT, AVX10_1 and AVX10_1_512. - * config/i386/constraints.md (Yk): Add AVX10_1. - (Yv): Ditto. - (k): Ditto. - * config/i386/cpuid.h (bit_AVX10): New. - (bit_AVX10_256): Ditto. - (bit_AVX10_512): Ditto. - * config/i386/i386-c.cc (ix86_target_macros_internal): - Define AVX10_512BIT and AVX10_1. - * config/i386/i386-isa.def - (AVX10_512BIT): Add DEF_PTA(AVX10_512BIT). - (AVX10_1): Add DEF_PTA(AVX10_1). - * config/i386/i386-options.cc (isa2_opts): Add -mavx10.1. - (ix86_valid_target_attribute_inner_p): Handle avx10-512bit, avx10.1 - and avx10.1-512. - (ix86_option_override_internal): Enable AVX512{F,VL,BW,DQ,CD,BF16, - FP16,VBMI,VBMI2,VNNI,IFMA,BITALG,VPOPCNTDQ} features for avx10.1-512. - (ix86_valid_target_attribute_inner_p): Handle AVX10_1. - * config/i386/i386.cc (ix86_get_ssemov): Add AVX10_1. - (ix86_conditional_register_usage): Ditto. - (ix86_hard_regno_mode_ok): Ditto. - (ix86_rtx_costs): Ditto. - * config/i386/i386.h (VALID_MASK_AVX10_MODE): New macro. - * config/i386/i386.opt: Add option -mavx10.1, -mavx10.1-256 and - -mavx10.1-512. - * doc/extend.texi: Document avx10.1, avx10.1-256 and avx10.1-512. - * doc/invoke.texi: Document -mavx10.1, -mavx10.1-256 and -mavx10.1-512. - * doc/sourcebuild.texi: Document target avx10.1, avx10.1-256 - and avx10.1-512. - -2023-08-17 Sergei Trofimovich <siarheit@google.com> - - * flag-types.h (vrp_mode): Remove unused. - -2023-08-17 Yanzhang Wang <yanzhang.wang@intel.com> - - * simplify-rtx.cc (simplify_context::simplify_binary_operation_1): Use - CONSTM1_RTX. - -2023-08-17 Andrew Pinski <apinski@marvell.com> - - * internal-fn.def (COND_NOT): New internal function. - * match.pd (UNCOND_UNARY, COND_UNARY): Add bit_not/not - to the lists. - (`vec (a ? -1 : 0) ^ b`): New pattern to convert - into conditional not. - * optabs.def (cond_one_cmpl): New optab. - (cond_len_one_cmpl): Likewise. - -2023-08-16 Surya Kumari Jangala <jskumari@linux.ibm.com> - - PR rtl-optimization/110254 - * ira-color.cc (improve_allocation): Update array - allocated_hard_reg_p. - -2023-08-16 Vladimir N. Makarov <vmakarov@redhat.com> - - * lra-int.h (lra_update_fp2sp_elimination): Change the prototype. - * lra-eliminations.cc (spill_pseudos): Record spilled pseudos. - (lra_update_fp2sp_elimination): Ditto. - (update_reg_eliminate): Adjust spill_pseudos call. - * lra-spills.cc (lra_spill): Assign stack slots to pseudos spilled - in lra_update_fp2sp_elimination. - -2023-08-16 Richard Ball <richard.ball@arm.com> - - * config/aarch64/aarch64-cores.def (AARCH64_CORE): Add Cortex-A720 CPU. - * config/aarch64/aarch64-tune.md: Regenerate. - * doc/invoke.texi: Document Cortex-A720 CPU. - -2023-08-16 Robin Dapp <rdapp@ventanamicro.com> - - * config/riscv/autovec.md (<u>avg<v_double_trunc>3_floor): - Implement expander. - (<u>avg<v_double_trunc>3_ceil): Ditto. - * config/riscv/vector-iterators.md (ashiftrt): New iterator. - (ASHIFTRT): Ditto. - -2023-08-16 Robin Dapp <rdapp@ventanamicro.com> - - * internal-fn.cc (vec_extract_direct): Change type argument - numbers. - (expand_vec_extract_optab_fn): Call convert_optab_fn. - (direct_vec_extract_optab_supported_p): Use - convert_optab_supported_p. - -2023-08-16 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org> - Richard Sandiford <richard.sandiford@arm.com> - - * fold-const.cc (INCLUDE_ALGORITHM): Add Include. - (valid_mask_for_fold_vec_perm_cst_p): New function. - (fold_vec_perm_cst): Likewise. - (fold_vec_perm): Adjust assert and call fold_vec_perm_cst. - (test_fold_vec_perm_cst): New namespace. - (test_fold_vec_perm_cst::build_vec_cst_rand): New function. - (test_fold_vec_perm_cst::validate_res): Likewise. - (test_fold_vec_perm_cst::validate_res_vls): Likewise. - (test_fold_vec_perm_cst::builder_push_elems): Likewise. - (test_fold_vec_perm_cst::test_vnx4si_v4si): Likewise. - (test_fold_vec_perm_cst::test_v4si_vnx4si): Likewise. - (test_fold_vec_perm_cst::test_all_nunits): Likewise. - (test_fold_vec_perm_cst::test_nunits_min_2): Likewise. - (test_fold_vec_perm_cst::test_nunits_min_4): Likewise. - (test_fold_vec_perm_cst::test_nunits_min_8): Likewise. - (test_fold_vec_perm_cst::test_nunits_max_4): Likewise. - (test_fold_vec_perm_cst::is_simple_vla_size): Likewise. - (test_fold_vec_perm_cst::test): Likewise. - (fold_const_cc_tests): Call test_fold_vec_perm_cst::test. - -2023-08-16 Pan Li <pan2.li@intel.com> - - * config/riscv/riscv-vector-builtins-bases.cc - (BASE): New declaration. - * config/riscv/riscv-vector-builtins-bases.h: Ditto. - * config/riscv/riscv-vector-builtins-functions.def - (vfwcvt_xu_frm): New intrinsic function def. - -2023-08-16 Pan Li <pan2.li@intel.com> - - * config/riscv/riscv-vector-builtins-bases.cc: Use explicit argument. - -2023-08-16 Pan Li <pan2.li@intel.com> - - * config/riscv/riscv-vector-builtins-bases.cc - (BASE): New declaration. - * config/riscv/riscv-vector-builtins-bases.h: Ditto. - * config/riscv/riscv-vector-builtins-functions.def - (vfwcvt_x_frm): New intrinsic function def. - -2023-08-16 Pan Li <pan2.li@intel.com> - - * config/riscv/riscv-vector-builtins-bases.cc (BASE): New declaration. - * config/riscv/riscv-vector-builtins-bases.h: Ditto. - * config/riscv/riscv-vector-builtins-functions.def - (vfcvt_f_frm): New intrinsic function def. - -2023-08-16 Pan Li <pan2.li@intel.com> - - * config/riscv/riscv-vector-builtins-bases.cc - (BASE): New declaration. - * config/riscv/riscv-vector-builtins-bases.h: Ditto. - * config/riscv/riscv-vector-builtins-functions.def - (vfcvt_xu_frm): New intrinsic function def.. - -2023-08-16 Haochen Gui <guihaoc@gcc.gnu.org> - - PR target/110429 - * config/rs6000/vsx.md (*vsx_extract_<mode>_store_p9): Skip vector - extract when the element is 7 on BE while 8 on LE for byte or 3 on - BE while 4 on LE for halfword. - -2023-08-16 Haochen Gui <guihaoc@gcc.gnu.org> - - PR target/106769 - * config/rs6000/vsx.md (expand vsx_extract_<mode>): Set it only - for V8HI and V16QI. - (vsx_extract_v4si): New expand for V4SI extraction. - (vsx_extract_v4si_w1): New insn pattern for V4SI extraction on - word 1 from BE order. - (*mfvsrwz): New insn pattern for mfvsrwz. - (*vsx_extract_<mode>_di_p9): Assert that it won't be generated on - word 1 from BE order. - (*vsx_extract_si): Remove. - (*vsx_extract_v4si_w023): New insn and split pattern on word 0, 2, - 3 from BE order. - -2023-08-16 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/autovec.md (vec_mask_len_load_lanes<mode><vsingle>): - New pattern. - (vec_mask_len_store_lanes<mode><vsingle>): Ditto. - * config/riscv/riscv-protos.h (expand_lanes_load_store): New function. - * config/riscv/riscv-v.cc (get_mask_mode): Add tuple mask mode. - (expand_lanes_load_store): New function. - * config/riscv/vector-iterators.md: New iterator. - -2023-08-16 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * internal-fn.cc (internal_load_fn_p): Apply - MASK_LEN_{LOAD_LANES,STORE_LANES} into vectorizer. - (internal_store_fn_p): Ditto. - (internal_fn_len_index): Ditto. - (internal_fn_mask_index): Ditto. - (internal_fn_stored_value_index): Ditto. - * tree-vect-data-refs.cc (vect_store_lanes_supported): Ditto. - (vect_load_lanes_supported): Ditto. - * tree-vect-loop.cc: Ditto. - * tree-vect-slp.cc (vect_slp_prefer_store_lanes_p): Ditto. - * tree-vect-stmts.cc (check_load_store_for_partial_vectors): Ditto. - (get_group_load_store_type): Ditto. - (vectorizable_store): Ditto. - (vectorizable_load): Ditto. - * tree-vectorizer.h (vect_store_lanes_supported): Ditto. - (vect_load_lanes_supported): Ditto. - -2023-08-16 Pan Li <pan2.li@intel.com> - - * config/riscv/riscv-vector-builtins-bases.cc - (enum frm_op_type): New type for frm. - (BASE): New declaration. - * config/riscv/riscv-vector-builtins-bases.h: Ditto. - * config/riscv/riscv-vector-builtins-functions.def - (vfcvt_x_frm): New intrinsic function def. - -2023-08-16 liuhongt <hongtao.liu@intel.com> - - * config/i386/i386-builtins.cc - (ix86_vectorize_builtin_gather): Adjust for use_gather_8parts. - * config/i386/i386-options.cc (parse_mtune_ctrl_str): - Set/Clear tune features use_{gather,scatter}_{2parts, 4parts, - 8parts} for -mtune-crtl={,^}{use_gather,use_scatter}. - * config/i386/i386.cc (ix86_vectorize_builtin_scatter): Adjust - for use_scatter_8parts - * config/i386/i386.h (TARGET_USE_GATHER): Rename to .. - (TARGET_USE_GATHER_8PARTS): .. this. - (TARGET_USE_SCATTER): Rename to .. - (TARGET_USE_SCATTER_8PARTS): .. this. - * config/i386/x86-tune.def (X86_TUNE_USE_GATHER): Rename to - (X86_TUNE_USE_GATHER_8PARTS): .. this. - (X86_TUNE_USE_SCATTER): Rename to - (X86_TUNE_USE_SCATTER_8PARTS): .. this. - * config/i386/i386.opt: Add new options mgather, mscatter. - -2023-08-16 liuhongt <hongtao.liu@intel.com> - - * config/i386/i386-options.cc (m_GDS): New macro. - * config/i386/x86-tune.def (X86_TUNE_USE_GATHER_2PARTS): Don't - enable for m_GDS. - (X86_TUNE_USE_GATHER_4PARTS): Ditto. - (X86_TUNE_USE_GATHER): Ditto. - -2023-08-16 liuhongt <hongtao.liu@intel.com> - - * config/i386/i386.md (movdf_internal): Generate vmovapd instead of - vmovsd when moving DFmode between SSE_REGS. - (movhi_internal): Generate vmovdqa instead of vmovsh when - moving HImode between SSE_REGS. - (mov<mode>_internal): Use vmovaps instead of vmovsh when - moving HF/BFmode between SSE_REGS. - -2023-08-15 David Faust <david.faust@oracle.com> - - * config/bpf/bpf.md (extendsisi2): Delete useless define_insn. - -2023-08-15 David Faust <david.faust@oracle.com> - - PR target/111029 - * config/bpf/bpf.cc (bpf_print_register): Print 'w' registers - for any mode 32-bits or smaller, not just SImode. - -2023-08-15 Martin Jambor <mjambor@suse.cz> - - PR ipa/68930 - PR ipa/92497 - * ipa-prop.h (ipcp_get_aggregate_const): Declare. - * ipa-prop.cc (ipcp_get_aggregate_const): New function. - (ipcp_transform_function): Do not deallocate transformation info. - * tree-ssa-sccvn.cc: Include alloc-pool.h, symbol-summary.h and - ipa-prop.h. - (vn_reference_lookup_2): When hitting default-def vuse, query - IPA-CP transformation info for any known constants. - -2023-08-15 Chung-Lin Tang <cltang@codesourcery.com> - Thomas Schwinge <thomas@codesourcery.com> - - * gimplify.cc (oacc_region_type_name): New function. - (oacc_default_clause): If no 'default' clause appears on this - compute construct, see if one appears on a lexically containing - 'data' construct. - (gimplify_scan_omp_clauses): Upon OMP_CLAUSE_DEFAULT case, set - ctx->oacc_default_clause_ctx to current context. - -2023-08-15 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - PR target/110989 - * config/riscv/predicates.md: Fix predicate. - -2023-08-15 Richard Biener <rguenther@suse.de> - - * tree-vect-slp.cc (vect_analyze_slp_instance): Remove - slp_inst_kind_ctor handling. - (vect_analyze_slp): Simplify. - (vect_build_slp_instance): Dump when we analyze a CTOR. - (vect_slp_check_for_constructors): Rename to ... - (vect_slp_check_for_roots): ... this. Register a - slp_root for CONSTRUCTORs instead of shoving them to - the set of grouped stores. - (vect_slp_analyze_bb_1): Adjust. - -2023-08-15 Richard Biener <rguenther@suse.de> - - * tree-vectorizer.h (_slp_instance::remain_stmts): Change - to ... - (_slp_instance::remain_defs): ... this. - (SLP_INSTANCE_REMAIN_STMTS): Rename to ... - (SLP_INSTANCE_REMAIN_DEFS): ... this. - (slp_root::remain): New. - (slp_root::slp_root): Adjust. - * tree-vect-slp.cc (vect_free_slp_instance): Adjust. - (vect_build_slp_instance): Get extra remain parameter, - adjust former handling of a cut off stmt. - (vect_analyze_slp_instance): Adjust. - (vect_analyze_slp): Likewise. - (_bb_vec_info::~_bb_vec_info): Likewise. - (vectorizable_bb_reduc_epilogue): Dump something if we fail. - (vect_slp_check_for_constructors): Handle non-internal - defs as remain defs of a reduction. - (vectorize_slp_instance_root_stmt): Adjust. - -2023-08-15 Richard Biener <rguenther@suse.de> - - * tree-ssa-loop-ivcanon.cc: Include tree-vectorizer.h - (canonicalize_loop_induction_variables): Use find_loop_location. - -2023-08-15 Hans-Peter Nilsson <hp@axis.com> - - PR bootstrap/111021 - * config/cris/cris-protos.h: Revert recent change. - * config/cris/cris.cc (cris_legitimate_address_p): Remove - code_helper unused parameter. - (cris_legitimate_address_p_hook): New wrapper function. - (TARGET_LEGITIMATE_ADDRESS_P): Change to - cris_legitimate_address_p_hook. - -2023-08-15 Richard Biener <rguenther@suse.de> - - PR tree-optimization/110963 - * tree-ssa-pre.cc (do_pre_regular_insertion): Also insert - a PHI node when the expression is available on all edges - and we insert at most one copy from a constant. - -2023-08-15 Richard Biener <rguenther@suse.de> - - PR tree-optimization/110991 - * tree-ssa-loop-ivcanon.cc (constant_after_peeling): Handle - VIEW_CONVERT_EXPR <op>, handle more simple IV-like SSA cycles - that will end up constant. - -2023-08-15 Kewen Lin <linkw@linux.ibm.com> - - PR bootstrap/111021 - * Makefile.in (RECOG_H): Add $(TREE_H) as dependence. - -2023-08-15 Kewen Lin <linkw@linux.ibm.com> - - * tree-vect-stmts.cc (vectorizable_load): Move the handlings on - VMAT_LOAD_STORE_LANES in the final loop nest to its own loop, - and update the final nest accordingly. - -2023-08-15 Kewen Lin <linkw@linux.ibm.com> - - * tree-vect-stmts.cc (vectorizable_load): Remove some useless checks - on VMAT_INVARIANT. - -2023-08-15 Pan Li <pan2.li@intel.com> - - * mode-switching.cc (create_pre_exit): Add SET insn check. - -2023-08-15 Pan Li <pan2.li@intel.com> - - * config/riscv/riscv-vector-builtins-bases.cc - (class vfrec7_frm): New class for frm. - (vfrec7_frm_obj): New declaration. - (BASE): Ditto. - * config/riscv/riscv-vector-builtins-bases.h: Ditto. - * config/riscv/riscv-vector-builtins-functions.def - (vfrec7_frm): New intrinsic function definition. - * config/riscv/vector-iterators.md - (VFMISC): Remove VFREC7. - (misc_op): Ditto. - (float_insn_type): Ditto. - (VFMISC_FRM): New int iterator. - (misc_frm_op): New op for frm. - (float_frm_insn_type): New type for frm. - * config/riscv/vector.md (@pred_<misc_frm_op><mode>): - New pattern for misc frm. - -2023-08-14 Vladimir N. Makarov <vmakarov@redhat.com> - - * lra-constraints.cc (curr_insn_transform): Process output stack - pointer reloads before emitting reload insns. - -2023-08-14 benjamin priour <vultkayn@gcc.gnu.org> - - PR analyzer/110543 - * doc/invoke.texi: Add documentation of - fanalyzer-show-events-in-system-headers - -2023-08-14 Jan Hubicka <jh@suse.cz> - - PR gcov-profile/110988 - * tree-cfg.cc (fold_loop_internal_call): Avoid division by zero. - -2023-08-14 Jiawei <jiawei@iscas.ac.cn> - - * config/riscv/riscv-c.cc (riscv_cpu_cpp_builtins): - Enable compressed builtins when ZC* extensions enabled. - * config/riscv/riscv-shorten-memrefs.cc: - Enable shorten_memrefs pass when ZC* extensions enabled. - * config/riscv/riscv.cc (riscv_compressed_reg_p): - Enable compressible registers when ZC* extensions enabled. - (riscv_rtx_costs): Allow adjusting rtx costs when ZC* extensions enabled. - (riscv_address_cost): Allow adjusting address cost when ZC* extensions enabled. - (riscv_first_stack_step): Allow compression of the register saves - without adding extra instructions. - * config/riscv/riscv.h (FUNCTION_BOUNDARY): Adjusts function boundary - to 16 bits when ZC* extensions enabled. - -2023-08-14 Jiawei <jiawei@iscas.ac.cn> - - * common/config/riscv/riscv-common.cc (riscv_subset_list::parse): New extensions. - * config/riscv/riscv-opts.h (MASK_ZCA): New mask. - (MASK_ZCB): Ditto. - (MASK_ZCE): Ditto. - (MASK_ZCF): Ditto. - (MASK_ZCD): Ditto. - (MASK_ZCMP): Ditto. - (MASK_ZCMT): Ditto. - (TARGET_ZCA): New target. - (TARGET_ZCB): Ditto. - (TARGET_ZCE): Ditto. - (TARGET_ZCF): Ditto. - (TARGET_ZCD): Ditto. - (TARGET_ZCMP): Ditto. - (TARGET_ZCMT): Ditto. - * config/riscv/riscv.opt: New target variable. - -2023-08-14 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - Revert: - 2023-05-17 Jin Ma <jinma@linux.alibaba.com> - - * genrecog.cc (print_nonbool_test): Fix type error of - switch (SUBREG_BYTE (op))'. - -2023-08-14 Richard Biener <rguenther@suse.de> - - * tree-cfg.cc (print_loop_info): Dump to 'file', not 'dump_file'. - -2023-08-14 Pan Li <pan2.li@intel.com> - - * config/riscv/riscv-vector-builtins-bases.cc - (class unop_frm): New class for frm. - (vfsqrt_frm_obj): New declaration. - (BASE): Ditto. - * config/riscv/riscv-vector-builtins-bases.h: Ditto. - * config/riscv/riscv-vector-builtins-functions.def - (vfsqrt_frm): New intrinsic function definition. - -2023-08-14 Pan Li <pan2.li@intel.com> - - * config/riscv/riscv-vector-builtins-bases.cc - (class vfwnmsac_frm): New class for frm. - (vfwnmsac_frm_obj): New declaration. - (BASE): Ditto. - * config/riscv/riscv-vector-builtins-bases.h: Ditto. - * config/riscv/riscv-vector-builtins-functions.def - (vfwnmsac_frm): New intrinsic function definition. - -2023-08-14 Pan Li <pan2.li@intel.com> - - * config/riscv/riscv-vector-builtins-bases.cc - (class vfwmsac_frm): New class for frm. - (vfwmsac_frm_obj): New declaration. - (BASE): Ditto. - * config/riscv/riscv-vector-builtins-bases.h: Ditto. - * config/riscv/riscv-vector-builtins-functions.def - (vfwmsac_frm): New intrinsic function definition. - -2023-08-14 Pan Li <pan2.li@intel.com> - - * config/riscv/riscv-vector-builtins-bases.cc - (class vfwnmacc_frm): New class for frm. - (vfwnmacc_frm_obj): New declaration. - (BASE): Ditto. - * config/riscv/riscv-vector-builtins-bases.h: Ditto. - * config/riscv/riscv-vector-builtins-functions.def - (vfwnmacc_frm): New intrinsic function definition. - -2023-08-14 Cui, Lili <lili.cui@intel.com> - - * common/config/i386/cpuinfo.h (get_intel_cpu): Add model value 0xba - to Raptorlake. - -2023-08-14 Hans-Peter Nilsson <hp@axis.com> - - * config/mmix/predicates.md (mmix_address_operand): Use - lra_in_progress, not reload_in_progress. - -2023-08-14 Hans-Peter Nilsson <hp@axis.com> - - * config/mmix/mmix.cc: Re-enable LRA. - -2023-08-14 Hans-Peter Nilsson <hp@axis.com> - - * config/mmix/predicates.md (frame_pointer_operand): Handle FP+offset - when lra_in_progress. - -2023-08-14 Hans-Peter Nilsson <hp@axis.com> - - * config/mmix/mmix.cc: Disable LRA for MMIX. - -2023-08-14 Pan Li <pan2.li@intel.com> - - * config/riscv/riscv-vector-builtins-bases.cc - (class vfwmacc_frm): New class for vfwmacc frm. - (vfwmacc_frm_obj): New declaration. - (BASE): Ditto. - * config/riscv/riscv-vector-builtins-bases.h: Ditto. - * config/riscv/riscv-vector-builtins-functions.def - (vfwmacc_frm): Function definition for vfwmacc. - * config/riscv/riscv-vector-builtins.cc - (function_expander::use_widen_ternop_insn): Add frm support. - -2023-08-14 Pan Li <pan2.li@intel.com> - - * config/riscv/riscv-vector-builtins-bases.cc - (class vfnmsub_frm): New class for vfnmsub frm. - (vfnmsub_frm): New declaration. - (BASE): Ditto. - * config/riscv/riscv-vector-builtins-bases.h: Ditto. - * config/riscv/riscv-vector-builtins-functions.def - (vfnmsub_frm): New function declaration. - -2023-08-14 Vladimir N. Makarov <vmakarov@redhat.com> - - * lra-constraints.cc (curr_insn_transform): Set done_p up and - check it on true after processing output stack pointer reload. - -2023-08-12 Jakub Jelinek <jakub@redhat.com> - - * Makefile.in (USER_H): Add stdckdint.h. - * ginclude/stdckdint.h: New file. - -2023-08-12 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - PR target/110994 - * config/riscv/riscv-opts.h (TARGET_VECTOR_VLS): Add TARGET_VETOR. - -2023-08-12 Patrick Palka <ppalka@redhat.com> - - * tree-pretty-print.cc (dump_generic_node) <case TREE_VEC>: - Delimit output with braces. - -2023-08-12 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - PR target/110985 - * config/riscv/riscv-v.cc (expand_vec_series): Refactor the expander. - -2023-08-12 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/autovec.md: Add VLS CONST_VECTOR. - * config/riscv/riscv.cc (riscv_const_insns): Ditto. - * config/riscv/vector.md: Ditto. - -2023-08-11 David Malcolm <dmalcolm@redhat.com> - - PR analyzer/105899 - * doc/analyzer.texi (__analyzer_get_strlen): New. - * doc/invoke.texi: Add -Wanalyzer-unterminated-string. - -2023-08-11 Jeff Law <jlaw@ventanamicro.com> - - * config/rx/rx.md (subdi3): Fix test for borrow. - -2023-08-11 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - PR middle-end/110989 - * tree-vect-stmts.cc (vectorizable_store): Replace iv_type with sizetype. - (vectorizable_load): Ditto. - -2023-08-11 Jose E. Marchesi <jose.marchesi@oracle.com> - - * config/bpf/bpf.md (allocate_stack): Define. - * config/bpf/bpf.h (FIRST_PSEUDO_REGISTER): Make room for fake - stack pointer register. - (FIXED_REGISTERS): Adjust accordingly. - (CALL_USED_REGISTERS): Likewise. - (REG_CLASS_CONTENTS): Likewise. - (REGISTER_NAMES): Likewise. - * config/bpf/bpf.cc (bpf_compute_frame_layout): Do not reserve - space for callee-saved registers. - (bpf_expand_prologue): Do not save callee-saved registers in xbpf. - (bpf_expand_epilogue): Do not restore callee-saved registers in - xbpf. - -2023-08-11 Jose E. Marchesi <jose.marchesi@oracle.com> - - * config/bpf/bpf.cc (bpf_function_arg_advance): Do not complain - about too many arguments if function is always inlined. - -2023-08-11 Patrick Palka <ppalka@redhat.com> - - * tree-pretty-print.cc (dump_generic_node) <case COMPONENT_REF>: - Don't call component_ref_field_offset if the RHS isn't a decl. - -2023-08-11 John David Anglin <danglin@gcc.gnu.org> - - PR bootstrap/110646 - * gensupport.cc(class conlist): Use strtol instead of std::stoi. - -2023-08-11 Vladimir N. Makarov <vmakarov@redhat.com> - - * lra-constraints.cc (goal_alt_out_sp_reload_p): New flag. - (process_alt_operands): Set the flag. - (curr_insn_transform): Modify stack pointer offsets if output - stack pointer reload is generated. - -2023-08-11 Joseph Myers <joseph@codesourcery.com> - - * configure: Regenerate. - -2023-08-11 Richard Biener <rguenther@suse.de> - - PR tree-optimization/110979 - * tree-vect-loop.cc (vectorizable_reduction): For - FOLD_LEFT_REDUCTION without target support make sure - we don't need to honor signed zeros and sign dependent rounding. - -2023-08-11 Richard Biener <rguenther@suse.de> - - * tree-vect-slp.cc (vect_slp_region): Provide opt-info for all SLP - subgraph entries. Dump the used vector size based on the - SLP subgraph entry root vector type. - -2023-08-11 Pan Li <pan2.li@intel.com> - - * config/riscv/riscv-vector-builtins-bases.cc - (class vfmsub_frm): New class for vfmsub frm. - (vfmsub_frm): New declaration. - (BASE): Ditto. - * config/riscv/riscv-vector-builtins-bases.h: Ditto. - * config/riscv/riscv-vector-builtins-functions.def - (vfmsub_frm): New function declaration. - -2023-08-11 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * doc/md.texi: Add vec_mask_len_{load_lanes,store_lanes} patterns. - * internal-fn.cc (expand_partial_load_optab_fn): Ditto. - (expand_partial_store_optab_fn): Ditto. - * internal-fn.def (MASK_LEN_LOAD_LANES): Ditto. - (MASK_LEN_STORE_LANES): Ditto. - * optabs.def (OPTAB_CD): Ditto. - -2023-08-11 Pan Li <pan2.li@intel.com> - - * config/riscv/riscv-vector-builtins-bases.cc - (class vfnmadd_frm): New class for vfnmadd frm. - (vfnmadd_frm): New declaration. - (BASE): Ditto. - * config/riscv/riscv-vector-builtins-bases.h: Ditto. - * config/riscv/riscv-vector-builtins-functions.def - (vfnmadd_frm): New function declaration. - -2023-08-11 Drew Ross <drross@redhat.com> - Jakub Jelinek <jakub@redhat.com> - - PR tree-optimization/109938 - * match.pd (((x ^ y) & z) | x -> (z & y) | x): New simplification. - -2023-08-11 Pan Li <pan2.li@intel.com> - - * config/riscv/riscv-vector-builtins-bases.cc - (class vfmadd_frm): New class for vfmadd frm. - (vfmadd_frm_obj): New declaration. - (BASE): Ditto. - * config/riscv/riscv-vector-builtins-bases.h: Ditto. - * config/riscv/riscv-vector-builtins-functions.def - (vfmadd_frm): New function definition. - -2023-08-11 Pan Li <pan2.li@intel.com> - - * config/riscv/riscv-vector-builtins-bases.cc - (class vfnmsac_frm): New class for vfnmsac frm. - (vfnmsac_frm_obj): New declaration. - (BASE): Ditto. - * config/riscv/riscv-vector-builtins-bases.h: Ditto. - * config/riscv/riscv-vector-builtins-functions.def - (vfnmsac_frm): New function definition. - -2023-08-11 Jakub Jelinek <jakub@redhat.com> - - * doc/extend.texi (Typeof): Document typeof_unqual - and __typeof_unqual__. - -2023-08-11 Andrew Pinski <apinski@marvell.com> - - PR tree-optimization/110954 - * generic-match-head.cc (bitwise_inverted_equal_p): Add - wascmp argument and set it accordingly. - * gimple-match-head.cc (bitwise_inverted_equal_p): Add - wascmp argument to the macro. - (gimple_bitwise_inverted_equal_p): Add - wascmp argument and set it accordingly. - * match.pd (`a & ~a`, `a ^| ~a`): Update call - to bitwise_inverted_equal_p and handle wascmp case. - (`(~x | y) & x`, `(~x | y) & x`, `a?~t:t`): Update - call to bitwise_inverted_equal_p and check to see - if was !wascmp or if precision was 1. - -2023-08-11 Martin Uecker <uecker@tugraz.at> - - PR c/84510 - * doc/invoke.texi: Update. - -2023-08-11 Pan Li <pan2.li@intel.com> - - * config/riscv/riscv-vector-builtins-bases.cc - (class vfmsac_frm): New class for vfmsac frm. - (vfmsac_frm_obj): New declaration. - (BASE): Ditto. - * config/riscv/riscv-vector-builtins-bases.h: Ditto. - * config/riscv/riscv-vector-builtins-functions.def - (vfmsac_frm): New function definition - -2023-08-10 Jan Hubicka <jh@suse.cz> - - PR middle-end/110923 - * tree-ssa-loop-split.cc (split_loop): Watch for division by zero. - -2023-08-10 Patrick O'Neill <patrick@rivosinc.com> - - * common/config/riscv/riscv-common.cc: Add Ztso and mark Ztso as - dependent on 'a' extension. - * config/riscv/riscv-opts.h (MASK_ZTSO): New mask. - (TARGET_ZTSO): New target. - * config/riscv/riscv.cc (riscv_memmodel_needs_amo_acquire): Add - Ztso case. - (riscv_memmodel_needs_amo_release): Add Ztso case. - (riscv_print_operand): Add Ztso case for LR/SC annotations. - * config/riscv/riscv.md: Import sync-rvwmo.md and sync-ztso.md. - * config/riscv/riscv.opt: Add Ztso target variable. - * config/riscv/sync.md (mem_thread_fence_1): Expand to RVWMO or - Ztso specific insn. - (atomic_load<mode>): Expand to RVWMO or Ztso specific insn. - (atomic_store<mode>): Expand to RVWMO or Ztso specific insn. - * config/riscv/sync-rvwmo.md: New file. Seperate out RVWMO - specific load/store/fence mappings. - * config/riscv/sync-ztso.md: New file. Seperate out Ztso - specific load/store/fence mappings. - -2023-08-10 Jan Hubicka <jh@suse.cz> - - * cfgloopmanip.cc (duplicate_loop_body_to_header_edge): Special case loops with - 0 iteration count. - -2023-08-10 Jan Hubicka <jh@suse.cz> - - * tree-ssa-threadupdate.cc (ssa_fix_duplicate_block_edges): Fix profile update. - -2023-08-10 Jan Hubicka <jh@suse.cz> - - * profile-count.cc (profile_count::differs_from_p): Fix overflow and - handling of undefined values. - -2023-08-10 Jakub Jelinek <jakub@redhat.com> - - PR c/102989 - * tree-ssa-phiopt.cc (single_non_singleton_phi_for_edges): Never - return virtual phis and return NULL if there is a virtual phi - where the arguments from E0 and E1 edges aren't equal. - -2023-08-10 Richard Biener <rguenther@suse.de> - - * internal-fn.def (VCOND, VCONDU, VCONDEQ, VCOND_MASK, - VEC_SET, VEC_EXTRACT): Make ECF_CONST | ECF_NOTHROW. - -2023-08-10 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - PR target/110962 - * config/riscv/autovec.md (vec_duplicate<mode>): New pattern. - -2023-08-10 Pan Li <pan2.li@intel.com> - - * config/riscv/riscv-vector-builtins-bases.cc - (class vfnmacc_frm): New class for vfnmacc. - (vfnmacc_frm_obj): New declaration. - (BASE): Ditto. - * config/riscv/riscv-vector-builtins-bases.h: Ditto. - * config/riscv/riscv-vector-builtins-functions.def - (vfnmacc_frm): New function definition. - -2023-08-10 Pan Li <pan2.li@intel.com> - - * config/riscv/riscv-vector-builtins-bases.cc - (class vfmacc_frm): New class for vfmacc frm. - (vfmacc_frm_obj): New declaration. - (BASE): Ditto. - * config/riscv/riscv-vector-builtins-bases.h: Ditto. - * config/riscv/riscv-vector-builtins-functions.def - (vfmacc_frm): New function definition. - -2023-08-10 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - PR target/110964 - * config/riscv/riscv-v.cc (expand_cond_len_ternop): Add integer ternary. - -2023-08-10 Richard Biener <rguenther@suse.de> - - * tree-vectorizer.h (vectorizable_live_operation): Remove - gimple_stmt_iterator * argument. - * tree-vect-loop.cc (vectorizable_live_operation): Likewise. - Adjust plumbing around vect_get_loop_mask. - (vect_analyze_loop_operations): Adjust. - * tree-vect-slp.cc (vect_slp_analyze_node_operations_1): Likewise. - (vect_bb_slp_mark_live_stmts): Likewise. - (vect_schedule_slp_node): Likewise. - * tree-vect-stmts.cc (can_vectorize_live_stmts): Likewise. - Remove gimple_stmt_iterator * argument. - (vect_transform_stmt): Adjust. - -2023-08-10 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/vector-iterators.md: Add missing modes. - -2023-08-10 Jakub Jelinek <jakub@redhat.com> - - PR c/102989 - * lto-streamer-in.cc (lto_input_tree_1): Assert TYPE_PRECISION - is up to WIDE_INT_MAX_PRECISION rather than MAX_BITSIZE_MODE_ANY_INT. - -2023-08-10 Jakub Jelinek <jakub@redhat.com> - - PR c/102989 - * expr.cc (expand_expr_real_1) <case MEM_REF>: Add an early return for - EXPAND_WRITE or EXPAND_MEMORY modifiers to avoid testing it multiple - times. - -2023-08-10 liuhongt <hongtao.liu@intel.com> - - PR target/110832 - * config/i386/mmx.md: (movq_<mode>_to_sse): Also do not - sanitize upper part of V4HFmode register with - -fno-trapping-math. - (<insn>v4hf3): Enable for ix86_partial_vec_fp_math. - (<divv4hf3): Ditto. - (<insn>v2hf3): Ditto. - (divv2hf3): Ditto. - (movd_v2hf_to_sse): Do not sanitize upper part of V2HFmode - register with -fno-trapping-math. - -2023-08-10 Pan Li <pan2.li@intel.com> - Kito Cheng <kito.cheng@sifive.com> - - * config/riscv/riscv-protos.h - (enum floating_point_rounding_mode): Add NONE, DYN_EXIT and DYN_CALL. - (get_frm_mode): New declaration. - * config/riscv/riscv-v.cc (get_frm_mode): New function to get frm mode. - * config/riscv/riscv-vector-builtins.cc - (function_expander::use_ternop_insn): Take care of frm reg. - * config/riscv/riscv.cc (riscv_static_frm_mode_p): Migrate to FRM_XXX. - (riscv_emit_frm_mode_set): Ditto. - (riscv_emit_mode_set): Ditto. - (riscv_frm_adjust_mode_after_call): Ditto. - (riscv_frm_mode_needed): Ditto. - (riscv_frm_mode_after): Ditto. - (riscv_mode_entry): Ditto. - (riscv_mode_exit): Ditto. - * config/riscv/riscv.h (NUM_MODES_FOR_MODE_SWITCHING): Ditto. - * config/riscv/vector.md - (rne,rtz,rdn,rup,rmm,dyn,dyn_exit,dyn_call,none): Removed - (symbol_ref): * config/riscv/vector.md: Set frm_mode attr explicitly. - -2023-08-09 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv-vsetvl.cc (anticipatable_occurrence_p): Fix - incorrect anticipate info. - -2023-08-09 Tsukasa OI <research_trasio@irq.a4lg.com> - - * common/config/riscv/riscv-common.cc (riscv_ext_version_table): - Remove 'Zve32d' from the version list. - -2023-08-09 Jin Ma <jinma@linux.alibaba.com> - - * config/riscv/riscv.cc (riscv_sched_variable_issue): New function. - (TARGET_SCHED_VARIABLE_ISSUE): New macro. - Co-authored-by: Philipp Tomsich <philipp.tomsich@vrull.eu> - Co-authored-by: Jeff Law <jlaw@ventanamicro.com> - -2023-08-09 Jivan Hakobyan <jivanhakobyan9@gmail.com> - - * config/riscv/riscv.cc (riscv_legitimize_address): Handle folding. - (mem_shadd_or_shadd_rtx_p): New function. - -2023-08-09 Andrew Pinski <apinski@marvell.com> - - PR tree-optimization/110937 - PR tree-optimization/100798 - * match.pd (`a ? ~b : b`): Handle this - case. - -2023-08-09 Uros Bizjak <ubizjak@gmail.com> - - * config/i386/i386.opt (mpartial-vector-fp-math): Add dot. - -2023-08-09 Richard Ball <richard.ball@arm.com> - - * config/aarch64/aarch64-cores.def (AARCH64_CORE): Add Cortex-A520 CPU. - * config/aarch64/aarch64-tune.md: Regenerate. - * doc/invoke.texi: Document Cortex-A520 CPU. - -2023-08-09 Carl Love <cel@us.ibm.com> - - * config/rs6000/rs6000-builtins.def (vcmpneb, vcmpneh, vcmpnew): - Move definitions to Altivec stanza. - * config/rs6000/altivec.md (vcmpneb, vcmpneh, vcmpnew): New - define_expand. - -2023-08-09 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - PR target/110950 - * config/riscv/riscv-v.cc (expand_const_vector): Add NPATTERNS = 1 - stepped vector support. - -2023-08-09 liuhongt <hongtao.liu@intel.com> - - * common/config/i386/cpuinfo.h (get_available_features): - Rename local variable subleaf_level to max_subleaf_level. - -2023-08-09 Richard Biener <rguenther@suse.de> - - PR rtl-optimization/110587 - * lra-assigns.cc (find_hard_regno_for_1): Re-order checks. - -2023-08-09 Kewen Lin <linkw@linux.ibm.com> - - PR tree-optimization/110248 - * config/rs6000/rs6000.cc (rs6000_legitimate_address_p): Check if - the given code is for ifn LEN_{LOAD,STORE}, if yes then make it not - legitimate when outer code is PLUS. - -2023-08-09 Kewen Lin <linkw@linux.ibm.com> - - PR tree-optimization/110248 - * recog.cc (memory_address_addr_space_p): Add one more argument ch of - type code_helper and pass it to targetm.addr_space.legitimate_address_p - instead of ERROR_MARK. - (offsettable_address_addr_space_p): Update one function pointer with - one more argument of type code_helper as its assignees - memory_address_addr_space_p and strict_memory_address_addr_space_p - have been adjusted, and adjust some call sites with ERROR_MARK. - * recog.h (tree.h): New include header file for tree_code ERROR_MARK. - (memory_address_addr_space_p): Adjust with one more unnamed argument - of type code_helper with default ERROR_MARK. - (strict_memory_address_addr_space_p): Likewise. - * reload.cc (strict_memory_address_addr_space_p): Add one unnamed - argument of type code_helper. - * tree-ssa-address.cc (valid_mem_ref_p): Add one more argument ch of - type code_helper and pass it to memory_address_addr_space_p. - * tree-ssa-address.h (valid_mem_ref_p): Adjust the declaration with - one more unnamed argument of type code_helper with default value - ERROR_MARK. - * tree-ssa-loop-ivopts.cc (get_address_cost): Use ERROR_MARK as code - by default, change it with ifn code for USE_PTR_ADDRESS type use, and - pass it to all valid_mem_ref_p calls. - -2023-08-09 Kewen Lin <linkw@linux.ibm.com> - - PR tree-optimization/110248 - * coretypes.h (class code_helper): Add forward declaration. - * doc/tm.texi: Regenerate. - * lra-constraints.cc (valid_address_p): Call target hook - targetm.addr_space.legitimate_address_p with an extra parameter - ERROR_MARK as its prototype changes. - * recog.cc (memory_address_addr_space_p): Likewise. - * reload.cc (strict_memory_address_addr_space_p): Likewise. - * target.def (legitimate_address_p, addr_space.legitimate_address_p): - Extend with one more argument of type code_helper, update the - documentation accordingly. - * targhooks.cc (default_legitimate_address_p): Adjust for the - new code_helper argument. - (default_addr_space_legitimate_address_p): Likewise. - * targhooks.h (default_legitimate_address_p): Likewise. - (default_addr_space_legitimate_address_p): Likewise. - * config/aarch64/aarch64.cc (aarch64_legitimate_address_hook_p): Adjust - with extra unnamed code_helper argument with default ERROR_MARK. - * config/alpha/alpha.cc (alpha_legitimate_address_p): Likewise. - * config/arc/arc.cc (arc_legitimate_address_p): Likewise. - * config/arm/arm-protos.h (arm_legitimate_address_p): Likewise. - (tree.h): New include for tree_code ERROR_MARK. - * config/arm/arm.cc (arm_legitimate_address_p): Adjust with extra - unnamed code_helper argument with default ERROR_MARK. - * config/avr/avr.cc (avr_addr_space_legitimate_address_p): Likewise. - * config/bfin/bfin.cc (bfin_legitimate_address_p): Likewise. - * config/bpf/bpf.cc (bpf_legitimate_address_p): Likewise. - * config/c6x/c6x.cc (c6x_legitimate_address_p): Likewise. - * config/cris/cris-protos.h (cris_legitimate_address_p): Likewise. - (tree.h): New include for tree_code ERROR_MARK. - * config/cris/cris.cc (cris_legitimate_address_p): Adjust with extra - unnamed code_helper argument with default ERROR_MARK. - * config/csky/csky.cc (csky_legitimate_address_p): Likewise. - * config/epiphany/epiphany.cc (epiphany_legitimate_address_p): - Likewise. - * config/frv/frv.cc (frv_legitimate_address_p): Likewise. - * config/ft32/ft32.cc (ft32_addr_space_legitimate_address_p): Likewise. - * config/gcn/gcn.cc (gcn_addr_space_legitimate_address_p): Likewise. - * config/h8300/h8300.cc (h8300_legitimate_address_p): Likewise. - * config/i386/i386.cc (ix86_legitimate_address_p): Likewise. - * config/ia64/ia64.cc (ia64_legitimate_address_p): Likewise. - * config/iq2000/iq2000.cc (iq2000_legitimate_address_p): Likewise. - * config/lm32/lm32.cc (lm32_legitimate_address_p): Likewise. - * config/loongarch/loongarch.cc (loongarch_legitimate_address_p): - Likewise. - * config/m32c/m32c.cc (m32c_legitimate_address_p): Likewise. - (m32c_addr_space_legitimate_address_p): Likewise. - * config/m32r/m32r.cc (m32r_legitimate_address_p): Likewise. - * config/m68k/m68k.cc (m68k_legitimate_address_p): Likewise. - * config/mcore/mcore.cc (mcore_legitimate_address_p): Likewise. - * config/microblaze/microblaze-protos.h (tree.h): New include for - tree_code ERROR_MARK. - (microblaze_legitimate_address_p): Adjust with extra unnamed - code_helper argument with default ERROR_MARK. - * config/microblaze/microblaze.cc (microblaze_legitimate_address_p): - Likewise. - * config/mips/mips.cc (mips_legitimate_address_p): Likewise. - * config/mmix/mmix.cc (mmix_legitimate_address_p): Likewise. - * config/mn10300/mn10300.cc (mn10300_legitimate_address_p): Likewise. - * config/moxie/moxie.cc (moxie_legitimate_address_p): Likewise. - * config/msp430/msp430.cc (msp430_legitimate_address_p): Likewise. - (msp430_addr_space_legitimate_address_p): Adjust with extra code_helper - argument with default ERROR_MARK and adjust the call to function - msp430_legitimate_address_p. - * config/nds32/nds32.cc (nds32_legitimate_address_p): Adjust with extra - unnamed code_helper argument with default ERROR_MARK. - * config/nios2/nios2.cc (nios2_legitimate_address_p): Likewise. - * config/nvptx/nvptx.cc (nvptx_legitimate_address_p): Likewise. - * config/or1k/or1k.cc (or1k_legitimate_address_p): Likewise. - * config/pa/pa.cc (pa_legitimate_address_p): Likewise. - * config/pdp11/pdp11.cc (pdp11_legitimate_address_p): Likewise. - * config/pru/pru.cc (pru_addr_space_legitimate_address_p): Likewise. - * config/riscv/riscv.cc (riscv_legitimate_address_p): Likewise. - * config/rl78/rl78-protos.h (rl78_as_legitimate_address): Likewise. - (tree.h): New include for tree_code ERROR_MARK. - * config/rl78/rl78.cc (rl78_as_legitimate_address): Adjust with - extra unnamed code_helper argument with default ERROR_MARK. - * config/rs6000/rs6000.cc (rs6000_legitimate_address_p): Likewise. - (rs6000_debug_legitimate_address_p): Adjust with extra code_helper - argument and adjust the call to function rs6000_legitimate_address_p. - * config/rx/rx.cc (rx_is_legitimate_address): Adjust with extra - unnamed code_helper argument with default ERROR_MARK. - * config/s390/s390.cc (s390_legitimate_address_p): Likewise. - * config/sh/sh.cc (sh_legitimate_address_p): Likewise. - * config/sparc/sparc.cc (sparc_legitimate_address_p): Likewise. - * config/v850/v850.cc (v850_legitimate_address_p): Likewise. - * config/vax/vax.cc (vax_legitimate_address_p): Likewise. - * config/visium/visium.cc (visium_legitimate_address_p): Likewise. - * config/xtensa/xtensa.cc (xtensa_legitimate_address_p): Likewise. - * config/stormy16/stormy16-protos.h (xstormy16_legitimate_address_p): - Likewise. - (tree.h): New include for tree_code ERROR_MARK. - * config/stormy16/stormy16.cc (xstormy16_legitimate_address_p): - Adjust with extra unnamed code_helper argument with default - ERROR_MARK. - -2023-08-09 liuhongt <hongtao.liu@intel.com> - - * common/config/i386/cpuinfo.h (get_available_features): Check - EAX for valid subleaf before use CPUID. - -2023-08-08 Jeff Law <jlaw@ventanamicro.com> - - * config/riscv/riscv.cc (riscv_expand_conditional_move): Use word_mode - for the temporary when canonicalizing the condition. - -2023-08-08 Cupertino Miranda <cupertino.miranda@oracle.com> - - * config/bpf/core-builtins.cc: Cleaned include headers. - (struct cr_builtins): Added GTY. - (cr_builtins_ref): Created. - (builtins_data) Changed to GC root. - (allocate_builtin_data): Changed. - Included gt-core-builtins.h. - * config/bpf/coreout.cc: (bpf_core_extra) Added GTY. - (bpf_core_extra_ref): Created. - (bpf_comment_info): Changed to GC root. - (bpf_core_reloc_add, output_btfext_header, btf_ext_init): Changed. - -2023-08-08 Uros Bizjak <ubizjak@gmail.com> - - PR target/110832 - * config/i386/i386.opt (mpartial-vector-fp-math): New option. - * config/i386/mmx.md (movq_<mode>_to_sse): Do not sanitize - upper part of V2SFmode register with -fno-trapping-math. - (<plusminusmult:insn>v2sf3): Enable for ix86_partial_vec_fp_math. - (divv2sf3): Ditto. - (<smaxmin:code>v2sf3): Ditto. - (sqrtv2sf2): Ditto. - (*mmx_haddv2sf3_low): Ditto. - (*mmx_hsubv2sf3_low): Ditto. - (vec_addsubv2sf3): Ditto. - (vec_cmpv2sfv2si): Ditto. - (vcond<V2FI:mode>v2sf): Ditto. - (fmav2sf4): Ditto. - (fmsv2sf4): Ditto. - (fnmav2sf4): Ditto. - (fnmsv2sf4): Ditto. - (fix_truncv2sfv2si2): Ditto. - (fixuns_truncv2sfv2si2): Ditto. - (floatv2siv2sf2): Ditto. - (floatunsv2siv2sf2): Ditto. - (nearbyintv2sf2): Ditto. - (rintv2sf2): Ditto. - (lrintv2sfv2si2): Ditto. - (ceilv2sf2): Ditto. - (lceilv2sfv2si2): Ditto. - (floorv2sf2): Ditto. - (lfloorv2sfv2si2): Ditto. - (btruncv2sf2): Ditto. - (roundv2sf2): Ditto. - (lroundv2sfv2si2): Ditto. - * doc/invoke.texi (x86 Options): Document - -mpartial-vector-fp-math option. - -2023-08-08 Andrew Pinski <apinski@marvell.com> - - PR tree-optimization/103281 - PR tree-optimization/28794 - * vr-values.cc (simplify_using_ranges::simplify_cond_using_ranges_1): Split out - majority to ... - (simplify_using_ranges::simplify_compare_using_ranges_1): Here. - (simplify_using_ranges::simplify_casted_cond): Rename to ... - (simplify_using_ranges::simplify_casted_compare): This - and change arguments to take op0 and op1. - (simplify_using_ranges::simplify_compare_assign_using_ranges_1): New method. - (simplify_using_ranges::simplify): For tcc_comparison assignments call - simplify_compare_assign_using_ranges_1. - * vr-values.h (simplify_using_ranges): Add - new methods, simplify_compare_using_ranges_1 and simplify_compare_assign_using_ranges_1. - Rename simplify_casted_cond and simplify_casted_compare and - update argument types. - -2023-08-08 Andrzej Turko <andrzej.turko@gmail.com> - - * genmatch.cc: Log line numbers indirectly. - -2023-08-08 Andrzej Turko <andrzej.turko@gmail.com> - - * genmatch.cc: Make sinfo map ordered. - * Makefile.in: Require the ordered map header for genmatch.o. - -2023-08-08 Andrzej Turko <andrzej.turko@gmail.com> - - * ordered-hash-map.h: Add get_or_insert. - * ordered-hash-map-tests.cc: Use get_or_insert in tests. - -2023-08-08 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/autovec.md (cond_<optab><mode>): New pattern. - (cond_len_<optab><mode>): Ditto. - (cond_fma<mode>): Ditto. - (cond_len_fma<mode>): Ditto. - (cond_fnma<mode>): Ditto. - (cond_len_fnma<mode>): Ditto. - (cond_fms<mode>): Ditto. - (cond_len_fms<mode>): Ditto. - (cond_fnms<mode>): Ditto. - (cond_len_fnms<mode>): Ditto. - * config/riscv/riscv-protos.h (riscv_get_v_regno_alignment): Export - global. - (enum insn_type): Add new enum type. - (prepare_ternary_operands): New function. - * config/riscv/riscv-v.cc (emit_vlmax_masked_fp_mu_insn): Ditto. - (emit_nonvlmax_tumu_insn): Ditto. - (emit_nonvlmax_fp_tumu_insn): Ditto. - (expand_cond_len_binop): Add condtional operations. - (expand_cond_len_ternop): Ditto. - (prepare_ternary_operands): New function. - * config/riscv/riscv.cc (riscv_memmodel_needs_amo_release): Export - riscv_get_v_regno_alignment as global scope. - * config/riscv/vector.md: Fix ternary bugs. - -2023-08-08 Richard Biener <rguenther@suse.de> - - PR tree-optimization/49955 - * tree-vectorizer.h (_slp_instance::remain_stmts): New. - (SLP_INSTANCE_REMAIN_STMTS): Likewise. - * tree-vect-slp.cc (vect_free_slp_instance): Release - SLP_INSTANCE_REMAIN_STMTS. - (vect_build_slp_instance): Make the number of lanes of - a BB reduction even. - (vectorize_slp_instance_root_stmt): Handle unvectorized - defs of a BB reduction. - -2023-08-08 Ju-Zhe Zhong <juzhe.zhong@rivai.ai> - - * internal-fn.cc (get_len_internal_fn): New function. - (DEF_INTERNAL_COND_FN): Ditto. - (DEF_INTERNAL_SIGNED_COND_FN): Ditto. - * internal-fn.h (get_len_internal_fn): Ditto. - * tree-vect-stmts.cc (vectorizable_call): Add CALL auto-vectorization. - -2023-08-08 Richard Biener <rguenther@suse.de> - - PR tree-optimization/110924 - * tree-ssa-live.h (virtual_operand_live): Update comment. - * tree-ssa-live.cc (virtual_operand_live::get_live_in): Remove - optimization, look at each predecessor. - * tree-ssa-sink.cc (pass_sink_code::execute): Mark backedges. - -2023-08-08 yulong <shiyulong@iscas.ac.cn> - - * config/riscv/riscv-v.cc (slide1_sew64_helper): Modify. - -2023-08-08 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/autovec-vls.md (<optab><mode>2): Add VLS neg. - * config/riscv/vector.md: Ditto. - -2023-08-08 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/autovec.md: Add VLS shift. - -2023-08-07 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/autovec-vls.md (<optab><mode>3): Add VLS modes. - * config/riscv/vector-iterators.md: Ditto. - * config/riscv/vector.md: Ditto. - -2023-08-07 Jonathan Wakely <jwakely@redhat.com> - - * config/i386/i386.cc (ix86_invalid_conversion): Fix grammar. - -2023-08-07 Nick Alcock <nick.alcock@oracle.com> - - * configure: Regenerate. - -2023-08-07 John Ericson <git@JohnEricson.me> - - * configure: Regenerate. - -2023-08-07 Alan Modra <amodra@gmail.com> - - * configure: Regenerate. - -2023-08-07 Alexander von Gluck IV <kallisti5@unixzen.com> - - * configure: Regenerate. - -2023-08-07 Nick Alcock <nick.alcock@oracle.com> - - * configure: Regenerate. - -2023-08-07 Nick Alcock <nick.alcock@oracle.com> - - * configure: Regenerate. - -2023-08-07 H.J. Lu <hjl.tools@gmail.com> - - * configure: Regenerate. - -2023-08-07 H.J. Lu <hjl.tools@gmail.com> - - * configure: Regenerate. - -2023-08-07 Jeff Law <jlaw@ventanamicro.com> - - * config/riscv/riscv.cc (riscv_expand_conditional_move): Allow - VOIDmode operands to conditional before canonicalization. - -2023-08-07 Manolis Tsamis <manolis.tsamis@vrull.eu> - - * regcprop.cc (maybe_copy_reg_attrs): Remove unnecessary function. - (find_oldest_value_reg): Inline stack_pointer_rtx check. - (copyprop_hardreg_forward_1): Inline stack_pointer_rtx check. - -2023-08-07 Martin Jambor <mjambor@suse.cz> - - PR ipa/110378 - * ipa-param-manipulation.h (class ipa_param_body_adjustments): New - members get_ddef_if_exists_and_is_used and mark_clobbers_dead. - * ipa-sra.cc (isra_track_scalar_value_uses): Ignore clobbers. - (ptr_parm_has_nonarg_uses): Likewise. - * ipa-param-manipulation.cc - (ipa_param_body_adjustments::get_ddef_if_exists_and_is_used): New. - (ipa_param_body_adjustments::mark_dead_statements): Move initial - checks to get_ddef_if_exists_and_is_used. - (ipa_param_body_adjustments::mark_clobbers_dead): New. - (ipa_param_body_adjustments::common_initialization): Call - mark_clobbers_dead when splitting. - -2023-08-07 Raphael Zinsly <rzinsly@ventanamicro.com> - - * config/riscv/riscv.cc (riscv_expand_int_scc): Add invert_ptr - as an argument and pass it to riscv_emit_int_order_test. - (riscv_expand_conditional_move): Handle cases where the condition - is not EQ/NE or the second argument to the conditional is not - (const_int 0). - * config/riscv/riscv-protos.h (riscv_expand_int_scc): Update prototype. - Co-authored-by: Jeff Law <jlaw@ventanamicro.com> - -2023-08-07 Andrew Pinski <apinski@marvell.com> - - PR tree-optimization/109959 - * match.pd (`(a > 1) ? 0 : (cast)a`, `(a <= 1) & (cast)a`): - New patterns. - -2023-08-07 Richard Biener <rguenther@suse.de> - - * tree-ssa-sink.cc (pass_sink_code::execute): Do not - calculate post-dominators. Calculate RPO on the inverted - graph and process blocks in that order. - -2023-08-07 liuhongt <hongtao.liu@intel.com> - - PR target/110926 - * config/i386/i386-protos.h - (vpternlog_redundant_operand_mask): Adjust parameter type. - * config/i386/i386.cc (vpternlog_redundant_operand_mask): Use - INTVAL instead of XINT, also adjust parameter type from rtx* - to rtx since the function only needs operands[4] in vpternlog - pattern. - (substitute_vpternlog_operands): Pass operands[4] instead of - operands to vpternlog_redundant_operand_mask. - * config/i386/sse.md: Ditto. - -2023-08-07 Richard Biener <rguenther@suse.de> - - * tree-vect-slp.cc (vect_slp_region): Save/restore vect_location - around dumping code. - -2023-08-07 liuhongt <hongtao.liu@intel.com> - - PR target/110762 - * config/i386/mmx.md (<insn><mode>3): Changed from define_insn - to define_expand and break into .. - (<insn>v4hf3): .. this. - (divv4hf3): .. this. - (<insn>v2hf3): .. this. - (divv2hf3): .. this. - (movd_v2hf_to_sse): New define_expand. - (movq_<mode>_to_sse): Extend to V4HFmode. - (mmxdoublevecmode): Ditto. - (V2FI_V4HF): New mode iterator. - * config/i386/sse.md (*vec_concatv4sf): Extend to hanlde V8HF - by using mode iterator V4SF_V8HF, renamed to .. - (*vec_concat<mode>): .. this. - (*vec_concatv4sf_0): Extend to handle V8HF by using mode - iterator V4SF_V8HF, renamed to .. - (*vec_concat<mode>_0): .. this. - (*vec_concatv8hf_movss): New define_insn. - (V4SF_V8HF): New mode iterator. - -2023-08-07 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * tree-vect-patterns.cc (vect_recog_over_widening_pattern): Add op vectype. - -2023-08-07 Jan Beulich <jbeulich@suse.com> - - * config/i386/mmx.md (*mmx_pinsrd): Drop "prefix_data16". - (*mmx_pinsrb): Likewise. - (*mmx_pextrb): Likewise. - (*mmx_pextrb_zext): Likewise. - (mmx_pshufbv8qi3): Likewise. - (mmx_pshufbv4qi3): Likewise. - (mmx_pswapdv2si2): Likewise. - (*pinsrb): Likewise. - (*pextrb): Likewise. - (*pextrb_zext): Likewise. - * config/i386/sse.md (*sse4_1_mulv2siv2di3<mask_name>): Likewise. - (*sse2_eq<mode>3): Likewise. - (*sse2_gt<mode>3): Likewise. - (<sse2p4_1>_pinsr<ssemodesuffix>): Likewise. - (*vec_extract<mode>): Likewise. - (*vec_extract<PEXTR_MODE12:mode>_zext): Likewise. - (*vec_extractv16qi_zext): Likewise. - (ssse3_ph<plusminus_mnemonic>wv8hi3): Likewise. - (ssse3_pmaddubsw128): Likewise. - (*<ssse3_avx2>_pmulhrsw<mode>3<mask_name>): Likewise. - (<ssse3_avx2>_pshufb<mode>3<mask_name>): Likewise. - (<ssse3_avx2>_psign<mode>3): Likewise. - (<ssse3_avx2>_palignr<mode>): Likewise. - (*abs<mode>2): Likewise. - (sse4_2_pcmpestr): Likewise. - (sse4_2_pcmpestri): Likewise. - (sse4_2_pcmpestrm): Likewise. - (sse4_2_pcmpestr_cconly): Likewise. - (sse4_2_pcmpistr): Likewise. - (sse4_2_pcmpistri): Likewise. - (sse4_2_pcmpistrm): Likewise. - (sse4_2_pcmpistr_cconly): Likewise. - (vgf2p8affineinvqb_<mode><mask_name>): Likewise. - (vgf2p8affineqb_<mode><mask_name>): Likewise. - (vgf2p8mulb_<mode><mask_name>): Likewise. - (*<code>v8hi3 [smaxmin]): Drop "prefix_data16" and - "prefix_extra". - (*<code>v16qi3 [umaxmin]): Likewise. - -2023-08-07 Jan Beulich <jbeulich@suse.com> - - * config/i386/i386.md (sse4_1_round<mode>2): Make - "length_immediate" uniformly 1. - * config/i386/mmx.md (mmx_pblendvb_v8qi): Likewise. - (mmx_pblendvb_<mode>): Likewise. - -2023-08-07 Jan Beulich <jbeulich@suse.com> - - * config/i386/sse.md - (<avx512>_<complexopname>_<mode><maskc_name><round_name>): Add - "prefix" attribute. - (avx512fp16_<complexopname>sh_v8hf<mask_scalarc_name><round_scalarcz_name>): - Likewise. - -2023-08-07 Jan Beulich <jbeulich@suse.com> - - * config/i386/sse.md (xop_phadd<u>bw): Add "prefix", - "prefix_extra", and "mode" attributes. - (xop_phadd<u>bd): Likewise. - (xop_phadd<u>bq): Likewise. - (xop_phadd<u>wd): Likewise. - (xop_phadd<u>wq): Likewise. - (xop_phadd<u>dq): Likewise. - (xop_phsubbw): Likewise. - (xop_phsubwd): Likewise. - (xop_phsubdq): Likewise. - (xop_rotl<mode>3): Add "prefix" and "prefix_extra" attributes. - (xop_rotr<mode>3): Likewise. - (xop_frcz<mode>2): Likewise. - (*xop_vmfrcz<mode>2): Likewise. - (xop_vrotl<mode>3): Add "prefix" attribute. Change - "prefix_extra" to 1. - (xop_sha<mode>3): Likewise. - (xop_shl<mode>3): Likewise. - -2023-08-07 Jan Beulich <jbeulich@suse.com> - - * config/i386/sse.md - (*<avx512>_eq<mode>3<mask_scalar_merge_name>_1): Drop - "prefix_extra". - (avx512dq_vextract<shuffletype>64x2_1_mask): Likewise. - (*avx512dq_vextract<shuffletype>64x2_1): Likewise. - (avx512f_vextract<shuffletype>32x4_1_mask): Likewise. - (*avx512f_vextract<shuffletype>32x4_1): Likewise. - (vec_extract_lo_<mode>_mask [AVX512 forms]): Likewise. - (vec_extract_lo_<mode> [AVX512 forms]): Likewise. - (vec_extract_hi_<mode>_mask [AVX512 forms]): Likewise. - (vec_extract_hi_<mode> [AVX512 forms]): Likewise. - (@vec_extract_lo_<mode> [AVX512 forms]): Likewise. - (@vec_extract_hi_<mode> [AVX512 forms]): Likewise. - (vec_extract_lo_v64qi): Likewise. - (vec_extract_hi_v64qi): Likewise. - (*vec_widen_umult_even_v16si<mask_name>): Likewise. - (*vec_widen_smult_even_v16si<mask_name>): Likewise. - (*avx512f_<code><mode>3<mask_name>): Likewise. - (*vec_extractv4ti): Likewise. - (avx512bw_<code>v32qiv32hi2<mask_name>): Likewise. - (<mask_codefor>avx512dq_broadcast<mode><mask_name>_1): Likewise. - Add "length_immediate". - -2023-08-07 Jan Beulich <jbeulich@suse.com> - - * config/i386/i386.md (@rdrand<mode>): Add "prefix_0f". Drop - "prefix_extra". - (@rdseed<mode>): Likewise. - * config/i386/mmx.md (<code><mode>3 [smaxmin and umaxmin cases]): - Adjust "prefix_extra". - * config/i386/sse.md (@vec_set<mode>_0): Likewise. - (*sse4_1_<code><mode>3<mask_name>): Likewise. - (*avx2_eq<mode>3): Likewise. - (avx2_gt<mode>3): Likewise. - (<sse2p4_1>_pinsr<ssemodesuffix>): Likewise. - (*vec_extract<mode>): Likewise. - (<vi8_sse4_1_avx2_avx512>_movntdqa): Likewise. - -2023-08-07 Jan Beulich <jbeulich@suse.com> - - * config/i386/i386.md (rd<fsgs>base<mode>): Add "prefix_0f" and - "prefix_rep". Drop "prefix_extra". - (wr<fsgs>base<mode>): Likewise. - (ptwrite<mode>): Likewise. - -2023-08-07 Jan Beulich <jbeulich@suse.com> - - * config/i386/i386.md (isa): Move up. - (length_immediate): Handle "fma4". - (prefix): Handle "ssemuladd". - * config/i386/sse.md (*fma_fmadd_<mode>): Add "prefix" attribute. - (<sd_mask_codefor>fma_fmadd_<mode><sd_maskz_name><round_name>): - Likewise. - (<avx512>_fmadd_<mode>_mask<round_name>): Likewise. - (<avx512>_fmadd_<mode>_mask3<round_name>): Likewise. - (<sd_mask_codefor>fma_fmsub_<mode><sd_maskz_name><round_name>): - Likewise. - (<avx512>_fmsub_<mode>_mask<round_name>): Likewise. - (<avx512>_fmsub_<mode>_mask3<round_name>): Likewise. - (*fma_fnmadd_<mode>): Likewise. - (<sd_mask_codefor>fma_fnmadd_<mode><sd_maskz_name><round_name>): - Likewise. - (<avx512>_fnmadd_<mode>_mask<round_name>): Likewise. - (<avx512>_fnmadd_<mode>_mask3<round_name>): Likewise. - (<sd_mask_codefor>fma_fnmsub_<mode><sd_maskz_name><round_name>): - Likewise. - (<avx512>_fnmsub_<mode>_mask<round_name>): Likewise. - (<avx512>_fnmsub_<mode>_mask3<round_name>): Likewise. - (<sd_mask_codefor>fma_fmaddsub_<mode><sd_maskz_name><round_name>): - Likewise. - (<avx512>_fmaddsub_<mode>_mask<round_name>): Likewise. - (<avx512>_fmaddsub_<mode>_mask3<round_name>): Likewise. - (<sd_mask_codefor>fma_fmsubadd_<mode><sd_maskz_name><round_name>): - Likewise. - (<avx512>_fmsubadd_<mode>_mask<round_name>): Likewise. - (<avx512>_fmsubadd_<mode>_mask3<round_name>): Likewise. - (*fmai_fmadd_<mode>): Likewise. - (*fmai_fmsub_<mode>): Likewise. - (*fmai_fnmadd_<mode><round_name>): Likewise. - (*fmai_fnmsub_<mode><round_name>): Likewise. - (avx512f_vmfmadd_<mode>_mask<round_name>): Likewise. - (avx512f_vmfmadd_<mode>_mask3<round_name>): Likewise. - (avx512f_vmfmadd_<mode>_maskz_1<round_name>): Likewise. - (*avx512f_vmfmsub_<mode>_mask<round_name>): Likewise. - (avx512f_vmfmsub_<mode>_mask3<round_name>): Likewise. - (*avx512f_vmfmsub_<mode>_maskz_1<round_name>): Likewise. - (avx512f_vmfnmadd_<mode>_mask<round_name>): Likewise. - (avx512f_vmfnmadd_<mode>_mask3<round_name>): Likewise. - (avx512f_vmfnmadd_<mode>_maskz_1<round_name>): Likewise. - (*avx512f_vmfnmsub_<mode>_mask<round_name>): Likewise. - (*avx512f_vmfnmsub_<mode>_mask3<round_name>): Likewise. - (*avx512f_vmfnmsub_<mode>_maskz_1<round_name>): Likewise. - (*fma4i_vmfmadd_<mode>): Likewise. - (*fma4i_vmfmsub_<mode>): Likewise. - (*fma4i_vmfnmadd_<mode>): Likewise. - (*fma4i_vmfnmsub_<mode>): Likewise. - (fma_<complexopname>_<mode><sdc_maskz_name><round_name>): Likewise. - (<avx512>_<complexopname>_<mode>_mask<round_name>): Likewise. - (avx512fp16_fma_<complexopname>sh_v8hf<mask_scalarcz_name><round_scalarcz_name>): - Likewise. - (avx512fp16_<complexopname>sh_v8hf_mask<round_name>): Likewise. - (xop_p<macs><ssemodesuffix><ssemodesuffix>): Likewise. - (xop_p<macs>dql): Likewise. - (xop_p<macs>dqh): Likewise. - (xop_p<macs>wd): Likewise. - (xop_p<madcs>wd): Likewise. - (fma_<complexpairopname>_<mode>_pair): Likewise. Add "mode" attribute. - -2023-08-07 Jan Beulich <jbeulich@suse.com> - - * config/i386/i386.md (length_immediate): Handle "sse4arg". - (prefix): Likewise. - (*xop_pcmov_<mode>): Add "mode" attribute. - * config/i386/mmx.md (*xop_maskcmp<mode>3): Drop "prefix_data16", - "prefix_rep", "prefix_extra", and "length_immediate" attributes. - (*xop_maskcmp_uns<mode>3): Likewise. Switch "type" to "sse4arg". - (*xop_pcmov_<mode>): Add "mode" attribute. - * config/i386/sse.md (xop_pcmov_<mode><avxsizesuffix>): Add "mode" - attribute. - (xop_maskcmp<mode>3): Drop "prefix_data16", "prefix_rep", - "prefix_extra", and "length_immediate" attributes. - (xop_maskcmp_uns<mode>3): Likewise. Switch "type" to "sse4arg". - (xop_maskcmp_uns2<mode>3): Drop "prefix_data16", "prefix_extra", - and "length_immediate" attributes. Switch "type" to "sse4arg". - (xop_pcom_tf<mode>3): Likewise. - (xop_vpermil2<mode>3): Drop "length_immediate" attribute. - -2023-08-07 Jan Beulich <jbeulich@suse.com> - - * config/i386/i386.md (prefix_extra): Correct comment. Fold - cases yielding 2 into ones yielding 1. - -2023-08-07 Jan Hubicka <jh@suse.cz> - - PR tree-optimization/106293 - * tree-vect-loop-manip.cc (vect_loop_versioning): Fix profile update. - * tree-vect-loop.cc (vect_transform_loop): Likewise. - -2023-08-07 Andrew Pinski <apinski@marvell.com> - - PR tree-optimization/96695 - * match.pd (min_value, max_value): Extend to - pointer types too. - -2023-08-06 Jan Hubicka <jh@suse.cz> - - * config/i386/cpuid.h (__get_cpuid_count, __get_cpuid_max): Add - __builtin_expect that CPU likely supports cpuid. - -2023-08-06 Jan Hubicka <jh@suse.cz> - - * tree-loop-distribution.cc (loop_distribution::execute): Disable - distribution for loops with estimated iterations 0. - -2023-08-06 Jan Hubicka <jh@suse.cz> - - * tree-vect-loop-manip.cc (vect_do_peeling): Fix profile update of peeled epilogues. - -2023-08-04 Xiao Zeng <zengxiao@eswincomputing.com> - - * config/riscv/riscv.cc (riscv_expand_conditional_move): Recognize - more Zicond patterns. Fix whitespace typo. - (riscv_rtx_costs): Remove accidental code duplication. - Co-authored-by: Jeff Law <jlaw@ventanamicro.com> - -2023-08-04 Yan Simonaytes <simonaytes.yan@ispras.ru> - - PR target/110202 - * config/i386/i386-protos.h - (vpternlog_redundant_operand_mask): Declare. - (substitute_vpternlog_operands): Declare. - * config/i386/i386.cc - (vpternlog_redundant_operand_mask): New helper. - (substitute_vpternlog_operands): New function. Use them... - * config/i386/sse.md: ... here in new VPTERNLOG define_splits. - -2023-08-04 Roger Sayle <roger@nextmovesoftware.com> - - * expmed.cc (extract_bit_field_1): Document that an UNSIGNEDP - value of -1 is equivalent to don't care. - (extract_integral_bit_field): Indicate that we don't require - the most significant word to be zero extended, if we're about - to sign extend it. - (extract_fixed_bit_field_1): Document that an UNSIGNEDP value - of -1 is equivalent to don't care. Don't clear the most - significant bits with AND mask when UNSIGNEDP is -1. - -2023-08-04 Roger Sayle <roger@nextmovesoftware.com> - - * config/i386/sse.md (define_split): Convert highpart:DF extract - from V2DFmode register into a sse2_storehpd instruction. - (define_split): Likewise, convert lowpart:DF extract from V2DF - register into a sse2_storelpd instruction. - -2023-08-04 Qing Zhao <qing.zhao@oracle.com> - - * doc/invoke.texi (-Wflex-array-member-not-at-end): Document - new option. - -2023-08-04 Vladimir N. Makarov <vmakarov@redhat.com> - - * lra-lives.cc (process_bb_lives): Check input insn pattern hard regs - against early clobber hard regs. - -2023-08-04 Tamar Christina <tamar.christina@arm.com> - - * doc/extend.texi: Document it. - -2023-08-04 Tamar Christina <tamar.christina@arm.com> - - PR target/106346 - * config/aarch64/aarch64-simd.md (vec_widen_<sur>shiftl_lo_<mode>, - vec_widen_<sur>shiftl_hi_<mode>): Remove. - (aarch64_<sur>shll<mode>_internal): Renamed to... - (aarch64_<su>shll<mode>): .. This. - (aarch64_<sur>shll2<mode>_internal): Renamed to... - (aarch64_<su>shll2<mode>): .. This. - (aarch64_<sur>shll_n<mode>, aarch64_<sur>shll2_n<mode>): Re-use new - optabs. - * config/aarch64/constraints.md (D2, DL): New. - * config/aarch64/predicates.md (aarch64_simd_shll_imm_vec): New. - -2023-08-04 Tamar Christina <tamar.christina@arm.com> - - * gensupport.cc (conlist): Support length 0 attribute. - -2023-08-04 Tamar Christina <tamar.christina@arm.com> - - * config/aarch64/aarch64.cc (aarch64_bool_compound_p): New. - (aarch64_adjust_stmt_cost, aarch64_vector_costs::count_ops): Use it. - -2023-08-04 Tamar Christina <tamar.christina@arm.com> - - * config/aarch64/aarch64.cc (aarch64_multiply_add_p): Update handling - of constants. - (aarch64_adjust_stmt_cost): Use it. - (aarch64_vector_costs::count_ops): Likewise. - (aarch64_vector_costs::add_stmt_cost): Pass vinfo to - aarch64_adjust_stmt_cost. - -2023-08-04 Richard Biener <rguenther@suse.de> - - PR tree-optimization/110838 - * tree-vect-patterns.cc (vect_recog_over_widening_pattern): - Fix right-shift value sanitizing. Properly emit external - def mangling in the preheader rather than in the pattern - def sequence where it will fail vectorizing. - -2023-08-04 Matthew Malcomson <matthew.malcomson@arm.com> - - PR middle-end/110316 - PR middle-end/9903 - * timevar.cc (NANOSEC_PER_SEC, TICKS_TO_NANOSEC, - CLOCKS_TO_NANOSEC, nanosec_to_floating_sec, percent_of): New. - (TICKS_TO_MSEC, CLOCKS_TO_MSEC): Remove these macros. - (timer::validate_phases): Use integral arithmetic to check - validity. - (timer::print_row, timer::print): Convert from integral - nanoseconds to floating point seconds before printing. - (timer::all_zero): Change limit to nanosec count instead of - fractional count of seconds. - (make_json_for_timevar_time_def): Convert from integral - nanoseconds to floating point seconds before recording. - * timevar.h (struct timevar_time_def): Update all measurements - to use uint64_t nanoseconds rather than seconds stored in a - double. - -2023-08-04 Richard Biener <rguenther@suse.de> - - PR tree-optimization/110838 - * match.pd (([rl]shift @0 out-of-bounds) -> zero): Restrict - the arithmetic right-shift case to non-negative operands. - -2023-08-04 Pan Li <pan2.li@intel.com> - - Revert: - 2023-08-04 Pan Li <pan2.li@intel.com> - - * config/riscv/riscv-vector-builtins-bases.cc - (class vfmacc_frm): New class for vfmacc frm. - (vfmacc_frm_obj): New declaration. - (BASE): Ditto. - * config/riscv/riscv-vector-builtins-bases.h: Ditto. - * config/riscv/riscv-vector-builtins-functions.def - (vfmacc_frm): New function definition. - * config/riscv/riscv-vector-builtins.cc - (function_expander::use_ternop_insn): Add frm operand support. - * config/riscv/vector.md: Add vfmuladd to frm_mode. - -2023-08-04 Pan Li <pan2.li@intel.com> - - Revert: - 2023-08-04 Pan Li <pan2.li@intel.com> - - * config/riscv/riscv-vector-builtins-bases.cc - (class vfnmacc_frm): New class for vfnmacc. - (vfnmacc_frm_obj): New declaration. - (BASE): Ditto. - * config/riscv/riscv-vector-builtins-bases.h: Ditto. - * config/riscv/riscv-vector-builtins-functions.def - (vfnmacc_frm): New function definition. - -2023-08-04 Pan Li <pan2.li@intel.com> - - Revert: - 2023-08-04 Pan Li <pan2.li@intel.com> - - * config/riscv/riscv-vector-builtins-bases.cc - (class vfmsac_frm): New class for vfmsac frm. - (vfmsac_frm_obj): New declaration. - (BASE): Ditto. - * config/riscv/riscv-vector-builtins-bases.h: Ditto. - * config/riscv/riscv-vector-builtins-functions.def - (vfmsac_frm): New function definition. - -2023-08-04 Pan Li <pan2.li@intel.com> - - Revert: - 2023-08-04 Pan Li <pan2.li@intel.com> - - * config/riscv/riscv-vector-builtins-bases.cc - (class vfnmsac_frm): New class for vfnmsac frm. - (vfnmsac_frm_obj): New declaration. - (BASE): Ditto. - * config/riscv/riscv-vector-builtins-bases.h: Ditto. - * config/riscv/riscv-vector-builtins-functions.def - (vfnmsac_frm): New function definition. - -2023-08-04 Georg-Johann Lay <avr@gjlay.de> - - * config/avr/avr-mcus.def (avr64dd14, avr64dd20, avr64dd28, avr64dd32) - (avr64ea28, avr64ea32, avr64ea48, attiny424, attiny426, attiny427) - (attiny824, attiny826, attiny827, attiny1624, attiny1626, attiny1627) - (attiny3224, attiny3226, attiny3227, avr16dd14, avr16dd20, avr16dd28) - (avr16dd32, avr32dd14, avr32dd20, avr32dd28, avr32dd32) - (attiny102, attiny104): New devices. - * doc/avr-mmcu.texi: Regenerate. - -2023-08-04 Georg-Johann Lay <avr@gjlay.de> - - * config/avr/avr-mcus.def (avr128d*, avr64d*): Fix their FLASH_SIZE - and PM_OFFSET entries. - -2023-08-04 Andrew Pinski <apinski@marvell.com> - - PR tree-optimization/110874 - * gimple-match-head.cc (gimple_bit_not_with_nop): New declaration. - (gimple_maybe_cmp): Likewise. - (gimple_bitwise_inverted_equal_p): Rewrite to use gimple_bit_not_with_nop - and gimple_maybe_cmp instead of being recursive. - * match.pd (bit_not_with_nop): New match pattern. - (maybe_cmp): Likewise. - -2023-08-04 Drew Ross <drross@redhat.com> - - PR middle-end/101955 - * match.pd ((signed x << c) >> c): New canonicalization. - -2023-08-04 Pan Li <pan2.li@intel.com> - - * config/riscv/riscv-vector-builtins-bases.cc - (class vfnmsac_frm): New class for vfnmsac frm. - (vfnmsac_frm_obj): New declaration. - (BASE): Ditto. - * config/riscv/riscv-vector-builtins-bases.h: Ditto. - * config/riscv/riscv-vector-builtins-functions.def - (vfnmsac_frm): New function definition. - -2023-08-04 Pan Li <pan2.li@intel.com> - - * config/riscv/riscv-vector-builtins-bases.cc - (class vfmsac_frm): New class for vfmsac frm. - (vfmsac_frm_obj): New declaration. - (BASE): Ditto. - * config/riscv/riscv-vector-builtins-bases.h: Ditto. - * config/riscv/riscv-vector-builtins-functions.def - (vfmsac_frm): New function definition. - -2023-08-04 Pan Li <pan2.li@intel.com> - - * config/riscv/riscv-vector-builtins-bases.cc - (class vfnmacc_frm): New class for vfnmacc. - (vfnmacc_frm_obj): New declaration. - (BASE): Ditto. - * config/riscv/riscv-vector-builtins-bases.h: Ditto. - * config/riscv/riscv-vector-builtins-functions.def - (vfnmacc_frm): New function definition. - -2023-08-04 Hao Liu <hliu@os.amperecomputing.com> - - PR target/110625 - * config/aarch64/aarch64.cc (aarch64_force_single_cycle): check - STMT_VINFO_REDUC_DEF to avoid failures in info_for_reduction. - -2023-08-04 Pan Li <pan2.li@intel.com> - - * config/riscv/riscv-vector-builtins-bases.cc - (class vfmacc_frm): New class for vfmacc frm. - (vfmacc_frm_obj): New declaration. - (BASE): Ditto. - * config/riscv/riscv-vector-builtins-bases.h: Ditto. - * config/riscv/riscv-vector-builtins-functions.def - (vfmacc_frm): New function definition. - * config/riscv/riscv-vector-builtins.cc - (function_expander::use_ternop_insn): Add frm operand support. - * config/riscv/vector.md: Add vfmuladd to frm_mode. - -2023-08-04 Pan Li <pan2.li@intel.com> - - * config/riscv/riscv-vector-builtins-bases.cc - (vfwmul_frm_obj): New declaration. - (vfwmul_frm): Ditto. - * config/riscv/riscv-vector-builtins-bases.h: - (vfwmul_frm): Ditto. - * config/riscv/riscv-vector-builtins-functions.def - (vfwmul_frm): New function definition. - * config/riscv/vector.md: (frm_mode) Add vfwmul to frm_mode. - -2023-08-04 Pan Li <pan2.li@intel.com> - - * config/riscv/riscv-vector-builtins-bases.cc - (binop_frm): New declaration. - (reverse_binop_frm): Likewise. - (BASE): Likewise. - * config/riscv/riscv-vector-builtins-bases.h: - (vfdiv_frm): New extern declaration. - (vfrdiv_frm): Likewise. - * config/riscv/riscv-vector-builtins-functions.def - (vfdiv_frm): New function definition. - (vfrdiv_frm): Likewise. - * config/riscv/vector.md: Add vfdiv to frm_mode. - -2023-08-03 Jan Hubicka <jh@suse.cz> - - * tree-cfg.cc (print_loop_info): Print entry count. - -2023-08-03 Jan Hubicka <jh@suse.cz> - - * tree-ssa-loop-split.cc (split_loop): Update estimated iteration counts. - -2023-08-03 Jan Hubicka <jh@suse.cz> - - PR bootstrap/110857 - * cfgloopmanip.cc (scale_loop_profile): (Un)initialize - unadjusted_exit_count. - -2023-08-03 Aldy Hernandez <aldyh@redhat.com> - - * ipa-prop.cc (ipa_compute_jump_functions_for_edge): Read global - value/mask. - -2023-08-03 Xiao Zeng <zengxiao@eswincomputing.com> - - * config/riscv/riscv.cc (riscv_expand_conditional_move): Recognize - various Zicond patterns. - * config/riscv/riscv.md (mov<mode>cc): Allow TARGET_ZICOND. Use - sfb_alu_operand for both arms of the conditional move. - Co-authored-by: Jeff Law <jlaw@ventanamicro.com> - -2023-08-03 Cupertino Miranda <cupertino.miranda@oracle.com> - - PR target/107844 - PR target/107479 - PR target/107480 - PR target/107481 - * config.gcc: Added core-builtins.cc and .o files. - * config/bpf/bpf-passes.def: Removed file. - * config/bpf/bpf-protos.h (bpf_add_core_reloc, - bpf_replace_core_move_operands): New prototypes. - * config/bpf/bpf.cc (enum bpf_builtins, is_attr_preserve_access, - maybe_make_core_relo, bpf_core_field_info, bpf_core_compute, - bpf_core_get_index, bpf_core_new_decl, bpf_core_walk, - bpf_is_valid_preserve_field_info_arg, is_attr_preserve_access, - handle_attr_preserve, pass_data_bpf_core_attr, pass_bpf_core_attr): - Removed. - (def_builtin, bpf_expand_builtin, bpf_resolve_overloaded_builtin): Changed. - * config/bpf/bpf.md (define_expand mov<MM:mode>): Changed. - (mov_reloc_core<mode>): Added. - * config/bpf/core-builtins.cc (struct cr_builtin, enum - cr_decision struct cr_local, struct cr_final, struct - core_builtin_helpers, enum bpf_plugin_states): Added types. - (builtins_data, core_builtin_helpers, core_builtin_type_defs): - Added variables. - (allocate_builtin_data, get_builtin-data, search_builtin_data, - remove_parser_plugin, compare_same_kind, compare_same_ptr_expr, - compare_same_ptr_type, is_attr_preserve_access, core_field_info, - bpf_core_get_index, compute_field_expr, - pack_field_expr_for_access_index, pack_field_expr_for_preserve_field, - process_field_expr, pack_enum_value, process_enum_value, pack_type, - process_type, bpf_require_core_support, make_core_relo, read_kind, - kind_access_index, kind_preserve_field_info, kind_enum_value, - kind_type_id, kind_preserve_type_info, get_core_builtin_fndecl_for_type, - bpf_handle_plugin_finish_type, bpf_init_core_builtins, - construct_builtin_core_reloc, bpf_resolve_overloaded_core_builtin, - bpf_expand_core_builtin, bpf_add_core_reloc, - bpf_replace_core_move_operands): Added functions. - * config/bpf/core-builtins.h (enum bpf_builtins): Added. - (bpf_init_core_builtins, bpf_expand_core_builtin, - bpf_resolve_overloaded_core_builtin): Added functions. - * config/bpf/coreout.cc (struct bpf_core_extra): Added. - (bpf_core_reloc_add, output_asm_btfext_core_reloc): Changed. - * config/bpf/coreout.h (bpf_core_reloc_add) Changed prototype. - * config/bpf/t-bpf: Added core-builtins.o. - * doc/extend.texi: Added documentation for new BPF builtins. - -2023-08-03 Andrew MacLeod <amacleod@redhat.com> - - * gimple-range-fold.cc (fold_using_range::range_of_range_op): Add - ranges to the call to relation_fold_and_or. - (fold_using_range::relation_fold_and_or): Add op1 and op2 ranges. - (fur_source::register_outgoing_edges): Add op1 and op2 ranges. - * gimple-range-fold.h (relation_fold_and_or): Adjust params. - * gimple-range-gori.cc (gori_compute::compute_operand_range): Add - a varying op1 and op2 to call. - * range-op-float.cc (range_operator::op1_op2_relation): New dafaults. - (operator_equal::op1_op2_relation): New float version. - (operator_not_equal::op1_op2_relation): Ditto. - (operator_lt::op1_op2_relation): Ditto. - (operator_le::op1_op2_relation): Ditto. - (operator_gt::op1_op2_relation): Ditto. - (operator_ge::op1_op2_relation) Ditto. - * range-op-mixed.h (operator_equal::op1_op2_relation): New float - prototype. - (operator_not_equal::op1_op2_relation): Ditto. - (operator_lt::op1_op2_relation): Ditto. - (operator_le::op1_op2_relation): Ditto. - (operator_gt::op1_op2_relation): Ditto. - (operator_ge::op1_op2_relation): Ditto. - * range-op.cc (range_op_handler::op1_op2_relation): Dispatch new - variations. - (range_operator::op1_op2_relation): Add extra params. - (operator_equal::op1_op2_relation): Ditto. - (operator_not_equal::op1_op2_relation): Ditto. - (operator_lt::op1_op2_relation): Ditto. - (operator_le::op1_op2_relation): Ditto. - (operator_gt::op1_op2_relation): Ditto. - (operator_ge::op1_op2_relation): Ditto. - * range-op.h (range_operator): New prototypes. - (range_op_handler): Ditto. - -2023-08-03 Andrew MacLeod <amacleod@redhat.com> - - * gimple-range-gori.cc (gori_compute::compute_operand1_range): - Use identity relation. - (gori_compute::compute_operand2_range): Ditto. - * value-relation.cc (get_identity_relation): New. - * value-relation.h (get_identity_relation): New prototype. - -2023-08-03 Andrew MacLeod <amacleod@redhat.com> - - * value-range.h (Value_Range::set_varying): Set the type. - (Value_Range::set_zero): Ditto. - (Value_Range::set_nonzero): Ditto. - -2023-08-03 Jeff Law <jeffreyalaw@gmail.com> - - * config/riscv/riscv.cc (riscv_rtx_costs): Remove errant hunk from - recent commit. - -2023-08-03 Pan Li <pan2.li@intel.com> - - * config/riscv/riscv-vector-builtins-bases.cc: Add vfsub. - -2023-08-03 Richard Sandiford <richard.sandiford@arm.com> - - * poly-int.h (can_div_trunc_p): Succeed for more boundary conditions. - -2023-08-03 Richard Biener <rguenther@suse.de> - - PR tree-optimization/110838 - * tree-vect-patterns.cc (vect_recog_over_widening_pattern): - Adjust the shift operand of RSHIFT_EXPRs. - -2023-08-03 Richard Biener <rguenther@suse.de> - - PR tree-optimization/110702 - * tree-ssa-loop-ivopts.cc (rewrite_use_address): When - we created a NULL pointer based access rewrite that to - a LEA. - -2023-08-03 Richard Biener <rguenther@suse.de> - - * tree-ssa-sink.cc: Include tree-ssa-live.h. - (pass_sink_code::execute): Instantiate virtual_operand_live - and pass it down. - (sink_code_in_bb): Pass down virtual_operand_live. - (statement_sink_location): Get virtual_operand_live and - verify we are not sinking loads across stores by looking up - the live virtual operand at the sink location. - -2023-08-03 Richard Biener <rguenther@suse.de> - - * tree-ssa-live.h (class virtual_operand_live): New. - * tree-ssa-live.cc (virtual_operand_live::init): New. - (virtual_operand_live::get_live_in): Likewise. - (virtual_operand_live::get_live_out): Likewise. - -2023-08-03 Richard Biener <rguenther@suse.de> - - * passes.def: Exchange loop splitting and final value - replacement passes. - -2023-08-03 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com> - - * config/s390/s390.cc (expand_perm_as_a_vlbr_vstbr_candidate): - New function which handles bswap patterns for vec_perm_const. - (vectorize_vec_perm_const_1): Call new function. - * config/s390/vector.md (*bswap<mode>): Fix operands in output - template. - (*vstbr<mode>): New insn. - -2023-08-03 Alexandre Oliva <oliva@adacore.com> - - * config/vxworks-smp.opt: New. Introduce -msmp. - * config.gcc: Enable it on powerpc* vxworks prior to 7r*. - * config/rs6000/vxworks.h (STARTFILE_PREFIX_SPEC): Choose - lib_smp when -msmp is present in the command line. - * doc/invoke.texi: Document it. - -2023-08-03 Yanzhang Wang <yanzhang.wang@intel.com> - - * config/riscv/riscv.cc (riscv_save_reg_p): Save ra for leaf - when enabling -mno-omit-leaf-frame-pointer - (riscv_option_override): Override omit-frame-pointer. - (riscv_frame_pointer_required): Save s0 for non-leaf function - (TARGET_FRAME_POINTER_REQUIRED): Override defination - * config/riscv/riscv.opt: Add option support. - -2023-08-03 Roger Sayle <roger@nextmovesoftware.com> - - PR target/110792 - * config/i386/i386.md (<any_rotate>ti3): For rotations by 64 bits - place operand in a register before gen_<insn>64ti2_doubleword. - (<any_rotate>di3): Likewise, for rotations by 32 bits, place - operand in a register before gen_<insn>32di2_doubleword. - (<any_rotate>32di2_doubleword): Constrain operand to be in register. - (<any_rotate>64ti2_doubleword): Likewise. - -2023-08-03 Pan Li <pan2.li@intel.com> - - * config/riscv/riscv-vector-builtins-bases.cc - (vfmul_frm_obj): New declaration. - (Base): Likewise. - * config/riscv/riscv-vector-builtins-bases.h: Likewise. - * config/riscv/riscv-vector-builtins-functions.def - (vfmul_frm): New function definition. - * config/riscv/vector.md: Add vfmul to frm_mode. - -2023-08-03 Andrew Pinski <apinski@marvell.com> - - * match.pd (`~X & X`): Check that the types match. - (`~x | x`, `~x ^ x`): Likewise. - -2023-08-03 Pan Li <pan2.li@intel.com> - - * config/riscv/riscv-vector-builtins-bases.h: Remove - redudant declaration. - -2023-08-03 Pan Li <pan2.li@intel.com> - - * config/riscv/riscv-vector-builtins-bases.cc (BASE): Add - vfwsub frm. - * config/riscv/riscv-vector-builtins-bases.h: Add declaration. - * config/riscv/riscv-vector-builtins-functions.def (vfwsub_frm): - Add vfwsub function definitions. - -2023-08-02 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com> - - PR rtl-optimization/110867 - * combine.cc (simplify_compare_const): Try the optimization only - in case the constant fits into the comparison mode. - -2023-08-02 Jeff Law <jlaw@ventanamicro.com> - - * config/riscv/zicond.md: Remove incorrect zicond patterns and - renumber/rename them. - (zero.nez.<GPR:MODE><X:mode>.opt2): Fix output string. - -2023-08-02 Richard Biener <rguenther@suse.de> - - * tree-phinodes.h (add_phi_node_to_bb): Remove. - * tree-phinodes.cc (add_phi_node_to_bb): Make static. - -2023-08-02 Jan Beulich <jbeulich@suse.com> - - * config/i386/sse.md (vec_dupv2df<mask_name>): Fold the middle - two of the alternatives. - -2023-08-02 Richard Biener <rguenther@suse.de> - - PR tree-optimization/92335 - * tree-ssa-sink.cc (select_best_block): Before loop - optimizations avoid sinking unconditional loads/stores - in innermost loops to conditional executed places. - -2023-08-02 Andrew Pinski <apinski@marvell.com> - - * gimple-match-head.cc (gimple_bitwise_inverted_equal_p): Valueize - the comparison operands before comparing them. - -2023-08-02 Andrew Pinski <apinski@marvell.com> - - * match.pd (`~X & X`, `~X | X`): Move over to - use bitwise_inverted_equal_p, removing :c as bitwise_inverted_equal_p - handles that already. - Remove range test simplifications to true/false as they - are now handled by these patterns. - -2023-08-02 Andrew Pinski <apinski@marvell.com> - - * tree-ssa-phiopt.cc (match_simplify_replacement): Mark's cond - statement's lhs and rhs to check if trivial dead. - Rename inserted_exprs to exprs_maybe_dce; also move it so - bitmap is not allocated if not needed. - -2023-08-02 Pan Li <pan2.li@intel.com> - - * config/riscv/riscv-vector-builtins-bases.cc - (class widen_binop_frm): New class for binop frm. - (BASE): Add vfwadd_frm. - * config/riscv/riscv-vector-builtins-bases.h: New declaration. - * config/riscv/riscv-vector-builtins-functions.def - (vfwadd_frm): New function definition. - * config/riscv/riscv-vector-builtins-shapes.cc - (BASE_NAME_MAX_LEN): New macro. - (struct alu_frm_def): Leverage new base class. - (struct build_frm_base): New build base for frm. - (struct widen_alu_frm_def): New struct for widen alu frm. - (SHAPE): Add widen_alu_frm shape. - * config/riscv/riscv-vector-builtins-shapes.h: New declaration. - * config/riscv/vector.md (frm_mode): Add vfwalu type. - -2023-08-02 Jan Hubicka <jh@suse.cz> - - * cfgloop.h (loop_count_in): Declare. - * cfgloopanal.cc (expected_loop_iterations_by_profile): Use count_in. - (loop_count_in): Move here from ... - * cfgloopmanip.cc (loop_count_in): ... here. - (scale_loop_profile): Improve dumping; cast iteration bound to sreal. - -2023-08-02 Jan Hubicka <jh@suse.cz> - - * cfg.cc (scale_strictly_dominated_blocks): New function. - * cfg.h (scale_strictly_dominated_blocks): Declare. - * tree-cfg.cc (fold_loop_internal_call): Fixup CFG profile. - -2023-08-02 Richard Biener <rguenther@suse.de> - - PR rtl-optimization/110587 - * lra-spills.cc (return_regno_p): Remove. - (regno_in_use_p): Likewise. - (lra_final_code_change): Do not remove noop moves - between hard registers. - -2023-08-02 liuhongt <hongtao.liu@intel.com> - - PR target/81904 - * config/i386/sse.md (vec_fmaddsub<mode>4): Extend to vector - HFmode, use mode iterator VFH instead. - (vec_fmsubadd<mode>4): Ditto. - (<sd_mask_codefor>fma_fmaddsub_<mode><sd_maskz_name><round_name>): - Remove scalar mode from iterator, use VFH_AVX512VL instead. - (<sd_mask_codefor>fma_fmsubadd_<mode><sd_maskz_name><round_name>): - Ditto. - -2023-08-02 liuhongt <hongtao.liu@intel.com> - - * config/i386/sse.md (*avx2_lddqu_inserti_to_bcasti): New - pre_reload define_insn_and_split. - -2023-08-02 Xiao Zeng <zengxiao@eswincomputing.com> - - * config/riscv/riscv.cc (riscv_rtx_costs): Add costing for - using Zicond to implement some conditional moves. - -2023-08-02 Jeff Law <jlaw@ventanamicro.com> - - * config/riscv/zicond.md: Use the X iterator instead of ANYI - on the comparison input operands. - -2023-08-02 Xiao Zeng <zengxiao@eswincomputing.com> - - * config/riscv/riscv.cc (riscv_rtx_costs, case IF_THEN_ELSE): Add - Zicond costing. - (case SET): For INSNs that just set a REG, take the cost from the - SET_SRC. - Co-authored-by: Jeff Law <jlaw@ventanamicro.com> - -2023-08-02 Hu, Lin1 <lin1.hu@intel.com> - - * common/config/i386/i386-common.cc (OPTION_MASK_ISA2_AMX_INT8_SET): - Change OPTION_MASK_ISA2_AMX_TILE to OPTION_MASK_ISA2_AMX_TILE_SET. - (OPTION_MASK_ISA2_AMX_BF16_SET): Ditto - (OPTION_MASK_ISA2_AMX_FP16_SET): Ditto - (OPTION_MASK_ISA2_AMX_COMPLEX_SET): Ditto - (OPTION_MASK_ISA_ABM_SET): - Change OPTION_MASK_ISA_POPCNT to OPTION_MASK_ISA_POPCNT_SET. - -2023-08-01 Andreas Krebbel <krebbel@linux.ibm.com> - - * config/s390/s390.cc (s390_encode_section_info): Assume external - symbols without explicit alignment to be unaligned if - -munaligned-symbols has been specified. - * config/s390/s390.opt (-munaligned-symbols): New option. - -2023-08-01 Richard Ball <richard.ball@arm.com> - - * gimple-fold.cc (fold_ctor_reference): - Add support for poly_int. - -2023-08-01 Georg-Johann Lay <avr@gjlay.de> - - PR target/110220 - * config/avr/avr.cc (avr_optimize_casesi): Set JUMP_LABEL and - LABEL_NUSES of new conditional branch instruction. - -2023-08-01 Jan Hubicka <jh@suse.cz> - - * tree-vect-loop-manip.cc (vect_do_peeling): Fix profile update after - constant prologue peeling. - -2023-08-01 Christophe Lyon <christophe.lyon@linaro.org> - - * doc/sourcebuild.texi (arm_v8_1m_main_cde_mve_fp): Fix spelling. - -2023-08-01 Pan Li <pan2.li@intel.com> - Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv.cc (DYNAMIC_FRM_RTL): New macro. - (STATIC_FRM_P): Ditto. - (struct mode_switching_info): New struct for mode switching. - (struct machine_function): Add new field mode switching. - (riscv_emit_frm_mode_set): Add DYN_CALL emit. - (riscv_frm_adjust_mode_after_call): New function for call mode. - (riscv_frm_emit_after_call_in_bb_end): New function for emit - insn when call as the end of bb. - (riscv_frm_mode_needed): New function for frm mode needed. - (frm_unknown_dynamic_p): Remove call check. - (riscv_mode_needed): Extrac function for frm. - (riscv_frm_mode_after): Add DYN_CALL after. - (riscv_mode_entry): Remove backup rtl initialization. - * config/riscv/vector.md (frm_mode): Add dyn_call. - (fsrmsi_restore_exit): Rename to _volatile. - (fsrmsi_restore_volatile): Likewise. - -2023-08-01 Pan Li <pan2.li@intel.com> - - * config/riscv/riscv-vector-builtins-bases.cc - (class reverse_binop_frm): Add new template for reversed frm. - (vfsub_frm_obj): New obj. - (vfrsub_frm_obj): Likewise. - * config/riscv/riscv-vector-builtins-bases.h: - (vfsub_frm): New declaration. - (vfrsub_frm): Likewise. - * config/riscv/riscv-vector-builtins-functions.def - (vfsub_frm): New function define. - (vfrsub_frm): Likewise. - -2023-08-01 Andrew Pinski <apinski@marvell.com> - - PR tree-optimization/93044 - * match.pd (nested int casts): A truncation (to the same size or smaller) - can always remove the inner cast. - -2023-07-31 Hamza Mahfooz <someguy@effective-light.com> - - PR c/65213 - * doc/invoke.texi (-Wmissing-variable-declarations): Document - new option. - -2023-07-31 Andrew Pinski <apinski@marvell.com> - - PR tree-optimization/106164 - * match.pd (`a != b & a <= b`, `a != b & a >= b`, - `a == b | a < b`, `a == b | a > b`): Handle these cases - too. - -2023-07-31 Andrew Pinski <apinski@marvell.com> - - PR tree-optimization/106164 - * match.pd: Extend the `(X CMP1 CST1) AND/IOR (X CMP2 CST2)` - patterns to support `(X CMP1 Y) AND/IOR (X CMP2 Y)`. - -2023-07-31 Andrew Pinski <apinski@marvell.com> - - PR tree-optimization/100864 - * generic-match-head.cc (bitwise_inverted_equal_p): New function. - * gimple-match-head.cc (bitwise_inverted_equal_p): New macro. - (gimple_bitwise_inverted_equal_p): New function. - * match.pd ((~x | y) & x): Use bitwise_inverted_equal_p - instead of direct matching bit_not. - -2023-07-31 Costas Argyris <costas.argyris@gmail.com> - - PR driver/77576 - * gcc-ar.cc (main): Expand argv and use - temporary response file to call ar if any - expansions were made. - -2023-07-31 Andrew MacLeod <amacleod@redhat.com> - - PR tree-optimization/110582 - * gimple-range-fold.cc (fur_list::get_operand): Do not use the - range vector for non-ssa names. - -2023-07-31 David Malcolm <dmalcolm@redhat.com> - - PR analyzer/109361 - * diagnostic-client-data-hooks.h (class sarif_object): New forward - decl. - (diagnostic_client_data_hooks::add_sarif_invocation_properties): - New vfunc. - * diagnostic-format-sarif.cc: Include "diagnostic-format-sarif.h". - (class sarif_invocation): Inherit from sarif_object rather than - json::object. - (class sarif_result): Likewise. - (class sarif_ice_notification): Likewise. - (sarif_object::get_or_create_properties): New. - (sarif_invocation::prepare_to_flush): Add "context" param. Use it - to call the context's add_sarif_invocation_properties hook. - (sarif_builder::flush_to_file): Pass m_context to - sarif_invocation::prepare_to_flush. - * diagnostic-format-sarif.h: New header. - * doc/invoke.texi (Developer Options): Clarify that -ftime-report - writes to stderr. Document that if SARIF diagnostic output is - requested then any timing information is written in JSON form as - part of the SARIF output, rather than to stderr. - * timevar.cc: Include "json.h". - (timer::named_items::m_hash_map): Split out type into... - (timer::named_items::hash_map_t): ...this new typedef. - (timer::named_items::make_json): New function. - (timevar_diff): New function. - (make_json_for_timevar_time_def): New function. - (timer::timevar_def::make_json): New function. - (timer::make_json): New function. - * timevar.h (class json::value): New forward decl. - (timer::make_json): New decl. - (timer::timevar_def::make_json): New decl. - * tree-diagnostic-client-data-hooks.cc: Include - "diagnostic-format-sarif.h" and "timevar.h". - (compiler_data_hooks::add_sarif_invocation_properties): New vfunc - implementation. - -2023-07-31 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com> - - * combine.cc (simplify_compare_const): Narrow comparison of - memory and constant. - (try_combine): Adapt new function signature. - (simplify_comparison): Adapt new function signature. - -2023-07-31 Kito Cheng <kito.cheng@sifive.com> - - * config/riscv/riscv-v.cc (expand_vec_series): Drop unused - variable. - (expand_vector_init_insert_elems): Ditto. - -2023-07-31 Hao Liu <hliu@os.amperecomputing.com> - - PR target/110625 - * config/aarch64/aarch64.cc (count_ops): Only '* count' for - single_defuse_cycle while counting reduction_latency. - -2023-07-31 Ju-Zhe Zhong <juzhe.zhong@rivai.ai> - - * internal-fn.def (DEF_INTERNAL_COND_FN): New macro. - (DEF_INTERNAL_SIGNED_COND_FN): Ditto. - (COND_ADD): Remove. - (COND_SUB): Ditto. - (COND_MUL): Ditto. - (COND_DIV): Ditto. - (COND_MOD): Ditto. - (COND_RDIV): Ditto. - (COND_MIN): Ditto. - (COND_MAX): Ditto. - (COND_FMIN): Ditto. - (COND_FMAX): Ditto. - (COND_AND): Ditto. - (COND_IOR): Ditto. - (COND_XOR): Ditto. - (COND_SHL): Ditto. - (COND_SHR): Ditto. - (COND_FMA): Ditto. - (COND_FMS): Ditto. - (COND_FNMA): Ditto. - (COND_FNMS): Ditto. - (COND_NEG): Ditto. - (COND_LEN_ADD): Ditto. - (COND_LEN_SUB): Ditto. - (COND_LEN_MUL): Ditto. - (COND_LEN_DIV): Ditto. - (COND_LEN_MOD): Ditto. - (COND_LEN_RDIV): Ditto. - (COND_LEN_MIN): Ditto. - (COND_LEN_MAX): Ditto. - (COND_LEN_FMIN): Ditto. - (COND_LEN_FMAX): Ditto. - (COND_LEN_AND): Ditto. - (COND_LEN_IOR): Ditto. - (COND_LEN_XOR): Ditto. - (COND_LEN_SHL): Ditto. - (COND_LEN_SHR): Ditto. - (COND_LEN_FMA): Ditto. - (COND_LEN_FMS): Ditto. - (COND_LEN_FNMA): Ditto. - (COND_LEN_FNMS): Ditto. - (COND_LEN_NEG): Ditto. - (ADD): New macro define. - (SUB): Ditto. - (MUL): Ditto. - (DIV): Ditto. - (MOD): Ditto. - (RDIV): Ditto. - (MIN): Ditto. - (MAX): Ditto. - (FMIN): Ditto. - (FMAX): Ditto. - (AND): Ditto. - (IOR): Ditto. - (XOR): Ditto. - (SHL): Ditto. - (SHR): Ditto. - (FMA): Ditto. - (FMS): Ditto. - (FNMA): Ditto. - (FNMS): Ditto. - (NEG): Ditto. - -2023-07-31 Roger Sayle <roger@nextmovesoftware.com> - - PR target/110843 - * config/i386/i386-features.cc (compute_convert_gain): Check - TARGET_AVX512VL (not TARGET_AVX512F) when considering V2DImode - and V4SImode rotates in STV. - (general_scalar_chain::convert_rotate): Likewise. - -2023-07-31 Kito Cheng <kito.cheng@sifive.com> - - * config/riscv/autovec.md (abs<mode>2): Remove `.require ()`. - * config/riscv/riscv-protos.h (get_mask_mode): Update return - type. - * config/riscv/riscv-v.cc (rvv_builder::rvv_builder): Remove - `.require ()`. - (emit_vlmax_insn): Ditto. - (emit_vlmax_fp_insn): Ditto. - (emit_vlmax_ternary_insn): Ditto. - (emit_vlmax_fp_ternary_insn): Ditto. - (emit_nonvlmax_fp_ternary_tu_insn): Ditto. - (emit_nonvlmax_insn): Ditto. - (emit_vlmax_slide_insn): Ditto. - (emit_nonvlmax_slide_tu_insn): Ditto. - (emit_vlmax_merge_insn): Ditto. - (emit_vlmax_masked_insn): Ditto. - (emit_nonvlmax_masked_insn): Ditto. - (emit_vlmax_masked_store_insn): Ditto. - (emit_nonvlmax_masked_store_insn): Ditto. - (emit_vlmax_masked_mu_insn): Ditto. - (emit_nonvlmax_tu_insn): Ditto. - (emit_nonvlmax_fp_tu_insn): Ditto. - (emit_scalar_move_insn): Ditto. - (emit_vlmax_compress_insn): Ditto. - (emit_vlmax_reduction_insn): Ditto. - (emit_vlmax_fp_reduction_insn): Ditto. - (emit_nonvlmax_fp_reduction_insn): Ditto. - (expand_vec_series): Ditto. - (expand_vector_init_merge_repeating_sequence): Ditto. - (expand_vec_perm): Ditto. - (shuffle_merge_patterns): Ditto. - (shuffle_compress_patterns): Ditto. - (shuffle_decompress_patterns): Ditto. - (expand_reduction): Ditto. - (get_mask_mode): Update return type. - * config/riscv/riscv.cc (riscv_get_mask_mode): Check vector type - is valid, and use new get_mask_mode interface. - -2023-07-31 Pan Li <pan2.li@intel.com> - - * config/riscv/riscv-vector-builtins-shapes.cc (struct alu_frm_def): - Move rm suffix before mask. - -2023-07-31 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/autovec-vls.md (@vec_duplicate<mode>): New pattern. - * config/riscv/riscv-v.cc (autovectorize_vector_modes): Add VLS autovec - support. - -2023-07-29 Roger Sayle <roger@nextmovesoftware.com> - - PR target/110790 - * config/i386/i386.md (extv<mode>): Use QImode for offsets. - (extzv<mode>): Likewise. - (insv<mode>): Likewise. - (*testqi_ext_3): Likewise. - (*btr<mode>_2): Likewise. - (define_split): Likewise. - (*btsq_imm): Likewise. - (*btrq_imm): Likewise. - (*btcq_imm): Likewise. - (define_peephole2 x3): Likewise. - (*bt<mode>): Likewise - (*bt<mode>_mask): New define_insn_and_split. - (*jcc_bt<mode>): Use QImode for offsets. - (*jcc_bt<mode>_1): Delete obsolete pattern. - (*jcc_bt<mode>_mask): Use QImode offsets. - (*jcc_bt<mode>_mask_1): Likewise. - (define_split): Likewise. - (*bt<mode>_setcqi): Likewise. - (*bt<mode>_setncqi): Likewise. - (*bt<mode>_setnc<mode>): Likewise. - (*bt<mode>_setncqi_2): Likewise. - (*bt<mode>_setc<mode>_mask): New define_insn_and_split. - (bmi2_bzhi_<mode>3): Use QImode offsets. - (*bmi2_bzhi_<mode>3): Likewise. - (*bmi2_bzhi_<mode>3_1): Likewise. - (*bmi2_bzhi_<mode>3_1_ccz): Likewise. - (@tbm_bextri_<mode>): Likewise. - -2023-07-29 Jan Hubicka <jh@suse.cz> - - * profile-count.cc (profile_probability::sqrt): New member function. - (profile_probability::pow): Likewise. - * profile-count.h: (profile_probability::sqrt): Declare - (profile_probability::pow): Likewise. - * tree-vect-loop-manip.cc (vect_loop_versioning): Fix profile update. - -2023-07-28 Andrew MacLeod <amacleod@redhat.com> - - * gimple-range-cache.cc (ssa_cache::merge_range): New. - (ssa_lazy_cache::merge_range): New. - * gimple-range-cache.h (class ssa_cache): Adjust protoypes. - (class ssa_lazy_cache): Ditto. - * gimple-range.cc (assume_query::calculate_op): Use merge_range. - -2023-07-28 Andrew MacLeod <amacleod@redhat.com> - - * tree-ssa-propagate.cc (substitute_and_fold_engine::value_on_edge): - Move from value-query.cc. - (substitute_and_fold_engine::value_of_stmt): Ditto. - (substitute_and_fold_engine::range_of_expr): New. - * tree-ssa-propagate.h (substitute_and_fold_engine): Inherit from - range_query. New prototypes. - * value-query.cc (value_query::value_on_edge): Relocate. - (value_query::value_of_stmt): Ditto. - * value-query.h (class value_query): Remove. - (class range_query): Remove base class. Adjust prototypes. - -2023-07-28 Andrew MacLeod <amacleod@redhat.com> - - PR tree-optimization/110205 - * gimple-range-cache.h (ranger_cache::m_estimate): Delete. - * range-op-mixed.h (operator_bitwise_xor::op1_op2_relation_effect): - Add final override. - * range-op.cc (operator_lshift): Add missing final overrides. - (operator_rshift): Ditto. - -2023-07-28 Jose E. Marchesi <jose.marchesi@oracle.com> - - * config/bpf/bpf.cc (bpf_option_override): Disable tail-call - optimizations in BPF target. - -2023-07-28 Honza <jh@ryzen4.suse.cz> - - * cfgloopmanip.cc (loop_count_in): Break out from ... - (loop_exit_for_scaling): Break out from ... - (update_loop_exit_probability_scale_dom_bbs): Break out from ...; - add more sanity check and debug info. - (scale_loop_profile): ... here. - (create_empty_loop_on_edge): Fix whitespac. - * cfgloopmanip.h (update_loop_exit_probability_scale_dom_bbs): Declare. - * loop-unroll.cc (unroll_loop_constant_iterations): Use - update_loop_exit_probability_scale_dom_bbs. - * tree-ssa-loop-manip.cc (update_exit_probability_after_unrolling): Remove. - (tree_transform_and_unroll_loop): Use - update_loop_exit_probability_scale_dom_bbs. - * tree-ssa-loop-split.cc (split_loop): Use - update_loop_exit_probability_scale_dom_bbs. - -2023-07-28 Jan Hubicka <jh@suse.cz> - - PR middle-end/77689 - * tree-ssa-loop-split.cc: Include value-query.h. - (split_at_bb_p): Analyze cases where EQ/NE can be turned - into LT/LE/GT/GE; return updated guard code. - (split_loop): Use guard code. - -2023-07-28 Roger Sayle <roger@nextmovesoftware.com> - Richard Biener <rguenther@suse.de> - - PR middle-end/28071 - PR rtl-optimization/110587 - * expr.cc (emit_group_load_1): Simplify logic for calling - force_reg on ORIG_SRC, to avoid making a copy if the source - is already in a pseudo register. - -2023-07-28 Jan Hubicka <jh@suse.cz> - - PR middle-end/106923 - * tree-ssa-loop-split.cc (connect_loops): Change probability - of the test preconditioning second loop to very_likely. - (fix_loop_bb_probability): Handle correctly case where - on of the arms of the conditional is empty. - (split_loop): Fold the test guarding first condition to - see if it is constant true; Set correct entry block - probabilities of the split loops; determine correct loop - eixt probabilities. - -2023-07-28 xuli <xuli1@eswincomputing.com> - - * config/riscv/riscv-vector-builtins-bases.cc: remove rounding mode of - vsadd[u] and vssub[u]. - * config/riscv/vector.md: Ditto. - -2023-07-28 Jan Hubicka <jh@suse.cz> - - * tree-ssa-loop-split.cc (split_loop): Also support NE driven - loops when IV test is not overflowing. - -2023-07-28 liuhongt <hongtao.liu@intel.com> - - PR target/110788 - * config/i386/sse.md (avx512cd_maskb_vec_dup<mode>): Add - UNSPEC_MASKOP. - (avx512cd_maskw_vec_dup<mode>): Ditto. - -2023-07-27 David Faust <david.faust@oracle.com> - - PR target/110782 - PR target/110784 - * config/bpf/bpf.opt (msmov): New option. - * config/bpf/bpf.cc (bpf_option_override): Handle it here. - * config/bpf/bpf.md (*extendsidi2): New. - (extendhidi2): New. - (extendqidi2): New. - (extendsisi2): New. - (extendhisi2): New. - (extendqisi2): New. - * doc/invoke.texi (Option Summary): Add -msmov eBPF option. - (eBPF Options): Add -m[no-]smov. Document that -mcpu=v4 - also enables -msmov. - -2023-07-27 David Faust <david.faust@oracle.com> - - * doc/invoke.texi (Option Summary): Remove -mkernel eBPF option. - Add -mbswap and -msdiv eBPF options. - (eBPF Options): Remove -mkernel. Add -mno-{jmpext, jmp32, - alu32, v3-atomics, bswap, sdiv}. Document that -mcpu=v4 also - enables -msdiv. - -2023-07-27 David Faust <david.faust@oracle.com> - - * config/bpf/bpf.md (add<AM:mode>3): Use %w2 instead of %w1 - in pseudo-C dialect output template. - (sub<AM:mode>3): Likewise. - -2023-07-27 Jan Hubicka <jh@suse.cz> - - * tree-vect-loop.cc (optimize_mask_stores): Make store - likely. - -2023-07-27 Jan Hubicka <jh@suse.cz> - - * cfgloop.h (single_dom_exit): Declare. - * cfgloopmanip.h (update_exit_probability_after_unrolling): Declare. - * cfgrtl.cc (struct cfg_hooks): Fix comment. - * loop-unroll.cc (unroll_loop_constant_iterations): Update exit edge. - * tree-ssa-loop-ivopts.h (single_dom_exit): Do not declare it here. - * tree-ssa-loop-manip.cc (update_exit_probability_after_unrolling): - Break out from ... - (tree_transform_and_unroll_loop): ... here; - -2023-07-27 Jan Hubicka <jh@suse.cz> - - * cfgloopmanip.cc (scale_dominated_blocks_in_loop): Move here from - tree-ssa-loop-manip.cc and avoid recursion. - (scale_loop_profile): Use scale_dominated_blocks_in_loop. - (duplicate_loop_body_to_header_edge): Add DLTHE_FLAG_FLAT_PROFILE - flag. - * cfgloopmanip.h (DLTHE_FLAG_FLAT_PROFILE): Define. - (scale_dominated_blocks_in_loop): Declare. - * predict.cc (dump_prediction): Do not ICE on uninitialized probability. - (change_edge_frequency): Remove. - * predict.h (change_edge_frequency): Remove. - * tree-ssa-loop-manip.cc (scale_dominated_blocks_in_loop): Move to - cfgloopmanip.cc. - (niter_for_unrolled_loop): Remove. - (tree_transform_and_unroll_loop): Fix profile update. - -2023-07-27 Jan Hubicka <jh@suse.cz> - - * tree-ssa-loop-im.cc (execute_sm_if_changed): Turn cap probability - to guessed; fix count of new_bb. - -2023-07-27 Jan Hubicka <jh@suse.cz> - - * profile-count.h (profile_count::apply_probability): Fix - handling of uninitialized probabilities, optimize scaling - by probability 1. - -2023-07-27 Richard Biener <rguenther@suse.de> - - PR tree-optimization/91838 - * gimple-match-head.cc: Include attribs.h and asan.h. - * generic-match-head.cc: Likewise. - * match.pd (([rl]shift @0 out-of-bounds) -> zero): New pattern. - -2023-07-27 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv-modes.def (VECTOR_BOOL_MODE): Add VLS modes. - (ADJUST_ALIGNMENT): Ditto. - (ADJUST_PRECISION): Ditto. - (VLS_MODES): Ditto. - (VECTOR_MODE_WITH_PREFIX): Ditto. - * config/riscv/riscv-opts.h (TARGET_VECTOR_VLS): New macro. - * config/riscv/riscv-protos.h (riscv_v_ext_vls_mode_p): New function. - * config/riscv/riscv-v.cc (INCLUDE_ALGORITHM): Add include. - (legitimize_move): Enable basic VLS modes support. - (get_vlmul): Ditto. - (get_ratio): Ditto. - (get_vector_mode): Ditto. - * config/riscv/riscv-vector-switch.def (VLS_ENTRY): Add vls modes. - * config/riscv/riscv.cc (riscv_v_ext_vls_mode_p): New function. - (VLS_ENTRY): New macro. - (riscv_v_ext_mode_p): Add vls modes. - (riscv_get_v_regno_alignment): New function. - (riscv_print_operand): Add vls modes. - (riscv_hard_regno_nregs): Ditto. - (riscv_hard_regno_mode_ok): Ditto. - (riscv_regmode_natural_size): Ditto. - (riscv_vectorize_preferred_vector_alignment): Ditto. - * config/riscv/riscv.md: Ditto. - * config/riscv/vector-iterators.md: Ditto. - * config/riscv/vector.md: Ditto. - * config/riscv/autovec-vls.md: New file. - -2023-07-27 Pan Li <pan2.li@intel.com> - - * config/riscv/riscv_vector.h (enum RVV_CSR): Removed. - (vread_csr): Ditto. - (vwrite_csr): Ditto. - -2023-07-27 demin.han <demin.han@starfivetech.com> - - * config/riscv/autovec.md: Delete which_alternative use in split - -2023-07-27 Richard Biener <rguenther@suse.de> - - * tree-ssa-sink.cc (sink_code_in_bb): Remove recursion, instead - use a worklist ... - (pass_sink_code::execute): ... in the caller. - -2023-07-27 Kewen Lin <linkw@linux.ibm.com> - Richard Biener <rguenther@suse.de> - - PR tree-optimization/110776 - * tree-vect-stmts.cc (vectorizable_load): Always cost VMAT_ELEMENTWISE - as scalar load. - -2023-07-26 Xiao Zeng <zengxiao@eswincomputing.com> - - * config/riscv/riscv.md: Include zicond.md - * config/riscv/zicond.md: New file. - -2023-07-26 Xiao Zeng <zengxiao@eswincomputing.com> - - * common/config/riscv/riscv-common.cc: New extension. - * config/riscv/riscv-opts.h (MASK_ZICOND): New mask. - (TARGET_ZICOND): New target. - -2023-07-26 Carl Love <cel@us.ibm.com> - - * config/rs6000/rs6000-c.cc (find_instance): Add new parameter that - specifies the number of built-in arguments to check. - (altivec_resolve_overloaded_builtin): Update calls to find_instance - to pass the number of built-in arguments to be checked. - -2023-07-26 David Faust <david.faust@oracle.com> - - * config/bpf/bpf.opt (mv3-atomics): New option. - * config/bpf/bpf.cc (bpf_option_override): Handle it here. - * config/bpf/bpf.h (enum_reg_class): Add R0 class. - (REG_CLASS_NAMES): Likewise. - (REG_CLASS_CONTENTS): Likewise. - (REGNO_REG_CLASS): Handle R0. - * config/bpf/bpf.md (UNSPEC_XADD): Rename to UNSPEC_AADD. - (UNSPEC_AAND): New unspec. - (UNSPEC_AOR): Likewise. - (UNSPEC_AXOR): Likewise. - (UNSPEC_AFADD): Likewise. - (UNSPEC_AFAND): Likewise. - (UNSPEC_AFOR): Likewise. - (UNSPEC_AFXOR): Likewise. - (UNSPEC_AXCHG): Likewise. - (UNSPEC_ACMPX): Likewise. - (atomic_add<mode>): Use UNSPEC_AADD and atomic type attribute. - Move to... - * config/bpf/atomic.md: ...Here. New file. - * config/bpf/constraints.md (t): New constraint for R0. - * doc/invoke.texi (eBPF Options): Document -mv3-atomics. - -2023-07-26 Matthew Malcomson <matthew.malcomson@arm.com> - - * tree-vect-stmts.cc (get_group_load_store_type): Reformat - comment. - -2023-07-26 Carl Love <cel@us.ibm.com> - - * config/rs6000/rs6000-builtins.def: Rename - __builtin_altivec_vreplace_un_uv2di as __builtin_altivec_vreplace_un_udi - __builtin_altivec_vreplace_un_uv4si as __builtin_altivec_vreplace_un_usi - __builtin_altivec_vreplace_un_v2df as __builtin_altivec_vreplace_un_df - __builtin_altivec_vreplace_un_v2di as __builtin_altivec_vreplace_un_di - __builtin_altivec_vreplace_un_v4sf as __builtin_altivec_vreplace_un_sf - __builtin_altivec_vreplace_un_v4si as __builtin_altivec_vreplace_un_si. - Rename VREPLACE_UN_UV2DI as VREPLACE_UN_UDI, VREPLACE_UN_UV4SI as - VREPLACE_UN_USI, VREPLACE_UN_V2DF as VREPLACE_UN_DF, - VREPLACE_UN_V2DI as VREPLACE_UN_DI, VREPLACE_UN_V4SF as - VREPLACE_UN_SF, VREPLACE_UN_V4SI as VREPLACE_UN_SI. - Rename vreplace_un_v2di as vreplace_un_di, vreplace_un_v4si as - vreplace_un_si, vreplace_un_v2df as vreplace_un_df, - vreplace_un_v2di as vreplace_un_di, vreplace_un_v4sf as - vreplace_un_sf, vreplace_un_v4si as vreplace_un_si. - * config/rs6000/rs6000-c.cc (find_instance): Add case - RS6000_OVLD_VEC_REPLACE_UN. - * config/rs6000/rs6000-overload.def (__builtin_vec_replace_un): - Fix first argument type. Rename VREPLACE_UN_UV4SI as - VREPLACE_UN_USI, VREPLACE_UN_V4SI as VREPLACE_UN_SI, - VREPLACE_UN_UV2DI as VREPLACE_UN_UDI, VREPLACE_UN_V2DI as - VREPLACE_UN_DI, VREPLACE_UN_V4SF as VREPLACE_UN_SF, - VREPLACE_UN_V2DF as VREPLACE_UN_DF. - * config/rs6000/vsx.md (REPLACE_ELT): Rename the mode_iterator - REPLACE_ELT_V for vector modes. - (REPLACE_ELT): New scalar mode iterator. - (REPLACE_ELT_char): Add scalar attributes. - (vreplace_un_<mode>): Change iterator and mode attribute. - -2023-07-26 David Malcolm <dmalcolm@redhat.com> - - PR analyzer/104940 - * Makefile.in (ANALYZER_OBJS): Add analyzer/symbol.o. - -2023-07-26 Richard Biener <rguenther@suse.de> - - PR tree-optimization/106081 - * tree-vect-slp.cc (vect_optimize_slp_pass::start_choosing_layouts): - Assign layout -1 to splats. - -2023-07-26 Aldy Hernandez <aldyh@redhat.com> - - * range-op-mixed.h (class operator_cast): Add update_bitmask. - * range-op.cc (operator_cast::update_bitmask): New. - (operator_cast::fold_range): Call update_bitmask. - -2023-07-26 Li Xu <xuli1@eswincomputing.com> - - * config/riscv/riscv-vector-builtins.def (vfloat16mf4x2_t): Change - scalar type to float16, eliminate warning. - (vfloat16mf4x3_t): Ditto. - (vfloat16mf4x4_t): Ditto. - (vfloat16mf4x5_t): Ditto. - (vfloat16mf4x6_t): Ditto. - (vfloat16mf4x7_t): Ditto. - (vfloat16mf4x8_t): Ditto. - (vfloat16mf2x2_t): Ditto. - (vfloat16mf2x3_t): Ditto. - (vfloat16mf2x4_t): Ditto. - (vfloat16mf2x5_t): Ditto. - (vfloat16mf2x6_t): Ditto. - (vfloat16mf2x7_t): Ditto. - (vfloat16mf2x8_t): Ditto. - (vfloat16m1x2_t): Ditto. - (vfloat16m1x3_t): Ditto. - (vfloat16m1x4_t): Ditto. - (vfloat16m1x5_t): Ditto. - (vfloat16m1x6_t): Ditto. - (vfloat16m1x7_t): Ditto. - (vfloat16m1x8_t): Ditto. - (vfloat16m2x2_t): Ditto. - (vfloat16m2x3_t): Ditto. - (vfloat16m2x4_t): Ditto. - (vfloat16m4x2_t): Ditto. - * config/riscv/vector-iterators.md: add RVVM4x2DF in iterator V4T. - * config/riscv/vector.md: add tuple mode in attr sew. - -2023-07-26 Uros Bizjak <ubizjak@gmail.com> - - PR target/110762 - * config/i386/i386.md (plusminusmult): New code iterator. - * config/i386/mmx.md (mmxdoublevecmode): New mode attribute. - (movq_<mode>_to_sse): New expander. - (<plusminusmult:insn>v2sf3): Macroize expander from addv2sf3, - subv2sf3 and mulv2sf3 using plusminusmult code iterator. Rewrite - as a wrapper around V4SFmode operation. - (mmx_addv2sf3): Change operand 1 and operand 2 predicates to - nonimmediate_operand. - (*mmx_addv2sf3): Remove SSE alternatives. Change operand 1 and - operand 2 predicates to nonimmediate_operand. - (mmx_subv2sf3): Change operand 2 predicate to nonimmediate_operand. - (mmx_subrv2sf3): Change operand 1 predicate to nonimmediate_operand. - (*mmx_subv2sf3): Remove SSE alternatives. Change operand 1 and - operand 2 predicates to nonimmediate_operand. - (mmx_mulv2sf3): Change operand 1 and operand 2 predicates to - nonimmediate_operand. - (*mmx_mulv2sf3): Remove SSE alternatives. Change operand 1 and - operand 2 predicates to nonimmediate_operand. - (divv2sf3): Rewrite as a wrapper around V4SFmode operation. - (<smaxmin:code>v2sf3): Ditto. - (mmx_<smaxmin:code>v2sf3): Change operand 1 and operand 2 - predicates to nonimmediate_operand. - (*mmx_<smaxmin:code>v2sf3): Remove SSE alternatives. Change - operand 1 and operand 2 predicates to nonimmediate_operand. - (mmx_ieee_<ieee_maxmin>v2sf3): Ditto. - (sqrtv2sf2): Rewrite as a wrapper around V4SFmode operation. - (*mmx_haddv2sf3_low): Ditto. - (*mmx_hsubv2sf3_low): Ditto. - (vec_addsubv2sf3): Ditto. - (*mmx_maskcmpv2sf3_comm): Remove. - (*mmx_maskcmpv2sf3): Remove. - (vec_cmpv2sfv2si): Rewrite as a wrapper around V4SFmode operation. - (vcond<V2FI:mode>v2sf): Ditto. - (fmav2sf4): Ditto. - (fmsv2sf4): Ditto. - (fnmav2sf4): Ditto. - (fnmsv2sf4): Ditto. - (fix_truncv2sfv2si2): Ditto. - (fixuns_truncv2sfv2si2): Ditto. - (mmx_fix_truncv2sfv2si2): Remove SSE alternatives. - Change operand 1 predicate to nonimmediate_operand. - (floatv2siv2sf2): Rewrite as a wrapper around V4SFmode operation. - (floatunsv2siv2sf2): Ditto. - (mmx_floatv2siv2sf2): Remove SSE alternatives. - Change operand 1 predicate to nonimmediate_operand. - (nearbyintv2sf2): Rewrite as a wrapper around V4SFmode operation. - (rintv2sf2): Ditto. - (lrintv2sfv2si2): Ditto. - (ceilv2sf2): Ditto. - (lceilv2sfv2si2): Ditto. - (floorv2sf2): Ditto. - (lfloorv2sfv2si2): Ditto. - (btruncv2sf2): Ditto. - (roundv2sf2): Ditto. - (lroundv2sfv2si2): Ditto. - (*mmx_roundv2sf2): Remove. - -2023-07-26 Jose E. Marchesi <jose.marchesi@oracle.com> - - * config/bpf/bpf.md: Fix neg{SI,DI}2 insn. - -2023-07-26 Richard Biener <rguenther@suse.de> - - PR tree-optimization/110799 - * tree-ssa-pre.cc (compute_avail): More thoroughly match - up TBAA behavior of redundant loads. - -2023-07-26 Jakub Jelinek <jakub@redhat.com> - - PR tree-optimization/110755 - * range-op-float.cc (frange_arithmetic): Change +0 result to -0 - for PLUS_EXPR or MINUS_EXPR if -frounding-math, inf is negative and - it is exact op1 + (-op1) or op1 - op1. - -2023-07-26 Kewen Lin <linkw@linux.ibm.com> - - PR target/110741 - * config/rs6000/vsx.md (define_insn xxeval): Correct vsx - operands output with "x". - -2023-07-26 Aldy Hernandez <aldyh@redhat.com> - - * range-op.cc (class operator_absu): Add update_bitmask. - (operator_absu::update_bitmask): New. - -2023-07-26 Aldy Hernandez <aldyh@redhat.com> - - * range-op-mixed.h (class operator_abs): Add update_bitmask. - * range-op.cc (operator_abs::update_bitmask): New. - -2023-07-26 Aldy Hernandez <aldyh@redhat.com> - - * range-op-mixed.h (class operator_bitwise_not): Add update_bitmask. - * range-op.cc (operator_bitwise_not::update_bitmask): New. - -2023-07-26 Aldy Hernandez <aldyh@redhat.com> - - * range-op.cc (update_known_bitmask): Handle unary operators. - -2023-07-26 Aldy Hernandez <aldyh@redhat.com> - - * tree-ssa-ccp.cc (bit_value_unop): Initialize val when appropriate. - -2023-07-26 Jin Ma <jinma@linux.alibaba.com> - - * config/riscv/riscv.md: Likewise. - -2023-07-26 Jan Hubicka <jh@suse.cz> - - * profile-count.cc (profile_count::to_sreal_scale): Value is not know - if we divide by zero. - -2023-07-25 David Faust <david.faust@oracle.com> - - * config/bpf/bpf.cc (bpf_print_operand_address): Don't print - enclosing parentheses for pseudo-C dialect. - * config/bpf/bpf.md (zero_exdendhidi2): Add parentheses around - operands of pseudo-C dialect output templates where needed. - (zero_extendqidi2): Likewise. - (zero_extendsidi2): Likewise. - (*mov<MM:mode>): Likewise. - -2023-07-25 Aldy Hernandez <aldyh@redhat.com> - - * tree-ssa-ccp.cc (value_mask_to_min_max): Make static. - (bit_value_mult_const): Same. - (get_individual_bits): Same. - -2023-07-25 Haochen Gui <guihaoc@gcc.gnu.org> - - PR target/103605 - * config/rs6000/rs6000-builtin.cc (rs6000_gimple_fold_builtin): Gimple - fold RS6000_BIF_XSMINDP and RS6000_BIF_XSMAXDP when fast-math is set. - * config/rs6000/rs6000.md (FMINMAX): New int iterator. - (minmax_op): New int attribute. - (UNSPEC_FMAX, UNSPEC_FMIN): New unspecs. - (f<minmax_op><mode>3): New pattern by UNSPEC_FMAX and UNSPEC_FMIN. - * config/rs6000/rs6000-builtins.def (__builtin_vsx_xsmaxdp): Set - pattern to fmaxdf3. - (__builtin_vsx_xsmindp): Set pattern to fmindf3. - -2023-07-24 David Faust <david.faust@oracle.com> - - * config/bpf/bpf.md (nop): Add pseudo-c asm dialect template. - -2023-07-24 Drew Ross <drross@redhat.com> - Jakub Jelinek <jakub@redhat.com> - - PR middle-end/109986 - * generic-match-head.cc (bitwise_equal_p): New macro. - * gimple-match-head.cc (bitwise_equal_p): New macro. - (gimple_nop_convert): Declare. - (gimple_bitwise_equal_p): Helper for bitwise_equal_p. - * match.pd ((~X | Y) ^ X -> ~(X & Y)): New simplification. - -2023-07-24 Jeff Law <jlaw@ventanamicro.com> - - * common/config/riscv/riscv-common.cc (riscv_subset_list::add): Use - single quote rather than backquote in diagnostic. - -2023-07-24 Jose E. Marchesi <jose.marchesi@oracle.com> - - PR target/110783 - * config/bpf/bpf.opt: New command-line option -msdiv. - * config/bpf/bpf.md: Conditionalize sdiv/smod on bpf_has_sdiv. - * config/bpf/bpf.cc (bpf_option_override): Initialize - bpf_has_sdiv. - * doc/invoke.texi (eBPF Options): Document -msdiv. - -2023-07-24 Jeff Law <jlaw@ventanamicro.com> - - * config/riscv/riscv.cc (riscv_option_override): Spell out - greater than and use cannot in diagnostic string. - -2023-07-24 Richard Biener <rguenther@suse.de> - - * tree-vectorizer.h (_slp_tree::push_vec_def): Add. - (_slp_tree::vec_stmts): Remove. - (SLP_TREE_VEC_STMTS): Remove. - * tree-vect-slp.cc (_slp_tree::push_vec_def): Define. - (_slp_tree::_slp_tree): Adjust. - (_slp_tree::~_slp_tree): Likewise. - (vect_get_slp_vect_def): Simplify. - (vect_get_slp_defs): Likewise. - (vect_transform_slp_perm_load_1): Adjust. - (vect_add_slp_permutation): Likewise. - (vect_schedule_slp_node): Likewise. - (vectorize_slp_instance_root_stmt): Likewise. - (vect_schedule_scc): Likewise. - * tree-vect-stmts.cc (vectorizable_bswap): Use push_vec_def. - (vectorizable_call): Likewise. - (vectorizable_call): Likewise. - (vect_create_vectorized_demotion_stmts): Likewise. - (vectorizable_conversion): Likewise. - (vectorizable_assignment): Likewise. - (vectorizable_shift): Likewise. - (vectorizable_operation): Likewise. - (vectorizable_load): Likewise. - (vectorizable_condition): Likewise. - (vectorizable_comparison): Likewise. - * tree-vect-loop.cc (vect_create_epilog_for_reduction): Adjust. - (vectorize_fold_left_reduction): Use push_vec_def. - (vect_transform_reduction): Likewise. - (vect_transform_cycle_phi): Likewise. - (vectorizable_lc_phi): Likewise. - (vectorizable_phi): Likewise. - (vectorizable_recurr): Likewise. - (vectorizable_induction): Likewise. - (vectorizable_live_operation): Likewise. - -2023-07-24 Richard Biener <rguenther@suse.de> - - * tree-ssa-loop.cc: Remove unused tree-vectorizer.h include. - -2023-07-24 Richard Biener <rguenther@suse.de> - - * config/i386/i386-builtins.cc: Remove tree-vectorizer.h include. - * config/i386/i386-expand.cc: Likewise. - * config/i386/i386-features.cc: Likewise. - * config/i386/i386-options.cc: Likewise. - -2023-07-24 Robin Dapp <rdapp@ventanamicro.com> - - * tree-vect-stmts.cc (vectorizable_conversion): Handle - more demotion/promotion for modifier == NONE. - -2023-07-24 Roger Sayle <roger@nextmovesoftware.com> - - PR target/110787 - PR target/110790 - Revert patch. - * config/i386/i386.md (extv<mode>): Use QImode for offsets. - (extzv<mode>): Likewise. - (insv<mode>): Likewise. - (*testqi_ext_3): Likewise. - (*btr<mode>_2): Likewise. - (define_split): Likewise. - (*btsq_imm): Likewise. - (*btrq_imm): Likewise. - (*btcq_imm): Likewise. - (define_peephole2 x3): Likewise. - (*bt<mode>): Likewise - (*bt<mode>_mask): New define_insn_and_split. - (*jcc_bt<mode>): Use QImode for offsets. - (*jcc_bt<mode>_1): Delete obsolete pattern. - (*jcc_bt<mode>_mask): Use QImode offsets. - (*jcc_bt<mode>_mask_1): Likewise. - (define_split): Likewise. - (*bt<mode>_setcqi): Likewise. - (*bt<mode>_setncqi): Likewise. - (*bt<mode>_setnc<mode>): Likewise. - (*bt<mode>_setncqi_2): Likewise. - (*bt<mode>_setc<mode>_mask): New define_insn_and_split. - (bmi2_bzhi_<mode>3): Use QImode offsets. - (*bmi2_bzhi_<mode>3): Likewise. - (*bmi2_bzhi_<mode>3_1): Likewise. - (*bmi2_bzhi_<mode>3_1_ccz): Likewise. - (@tbm_bextri_<mode>): Likewise. - -2023-07-24 Jose E. Marchesi <jose.marchesi@oracle.com> - - * config/bpf/bpf-opts.h (enum bpf_kernel_version): Remove enum. - * config/bpf/bpf.opt (mkernel): Remove option. - * config/bpf/bpf.cc (bpf_target_macros): Do not define - BPF_KERNEL_VERSION_CODE. - -2023-07-24 Jose E. Marchesi <jose.marchesi@oracle.com> - - PR target/110786 - * config/bpf/bpf.opt (mcpu): Add ISA_V4 and make it the default. - (mbswap): New option. - * config/bpf/bpf-opts.h (enum bpf_isa_version): New value ISA_V4. - * config/bpf/bpf.cc (bpf_option_override): Set bpf_has_bswap. - * config/bpf/bpf.md: Use bswap instructions if available for - bswap* insn, and fix constraint. - * doc/invoke.texi (eBPF Options): Document -mcpu=v4 and -mbswap. - -2023-07-24 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/autovec.md (fold_left_plus_<mode>): New pattern. - (mask_len_fold_left_plus_<mode>): Ditto. - * config/riscv/riscv-protos.h (enum insn_type): New enum. - (enum reduction_type): Ditto. - (expand_reduction): Add in-order reduction. - * config/riscv/riscv-v.cc (emit_nonvlmax_fp_reduction_insn): New function. - (expand_reduction): Add in-order reduction. - -2023-07-24 Ju-Zhe Zhong <juzhe.zhong@rivai.ai> - - * tree-vect-loop.cc (get_masked_reduction_fn): Add mask_len_fold_left_plus. - (vectorize_fold_left_reduction): Ditto. - (vectorizable_reduction): Ditto. - (vect_transform_reduction): Ditto. - -2023-07-24 Richard Biener <rguenther@suse.de> - - PR tree-optimization/110777 - * tree-ssa-sccvn.cc (eliminate_dom_walker::eliminate_avail): - Avoid propagating abnormals. - -2023-07-24 Richard Biener <rguenther@suse.de> - - PR tree-optimization/110766 - * tree-scalar-evolution.cc - (analyze_and_compute_bitwise_induction_effect): Check the PHI - is defined in the loop header. - -2023-07-24 Kewen Lin <linkw@linux.ibm.com> - - PR tree-optimization/110740 - * tree-vect-loop.cc (vect_analyze_loop_costing): Do not vectorize a - loop with a single scalar iteration. - -2023-07-24 Pan Li <pan2.li@intel.com> - - * config/riscv/riscv-vector-builtins-shapes.cc - (struct alu_frm_def): Take range check. - -2023-07-22 Vineet Gupta <vineetg@rivosinc.com> - - PR target/110748 - * config/riscv/predicates.md (const_0_operand): Add back - const_double. - -2023-07-22 Roger Sayle <roger@nextmovesoftware.com> - - * config/i386/i386-expand.cc (ix86_expand_move): Disable the - 64-bit insertions into TImode optimizations with -O0, unless - the function has the "naked" attribute (for PR target/110533). - -2023-07-22 Andrew Pinski <apinski@marvell.com> - - PR target/110778 - * rtl.h (extended_count): Change last argument type - to bool. - -2023-07-22 Roger Sayle <roger@nextmovesoftware.com> - - * config/i386/i386.md (extv<mode>): Use QImode for offsets. - (extzv<mode>): Likewise. - (insv<mode>): Likewise. - (*testqi_ext_3): Likewise. - (*btr<mode>_2): Likewise. - (define_split): Likewise. - (*btsq_imm): Likewise. - (*btrq_imm): Likewise. - (*btcq_imm): Likewise. - (define_peephole2 x3): Likewise. - (*bt<mode>): Likewise - (*bt<mode>_mask): New define_insn_and_split. - (*jcc_bt<mode>): Use QImode for offsets. - (*jcc_bt<mode>_1): Delete obsolete pattern. - (*jcc_bt<mode>_mask): Use QImode offsets. - (*jcc_bt<mode>_mask_1): Likewise. - (define_split): Likewise. - (*bt<mode>_setcqi): Likewise. - (*bt<mode>_setncqi): Likewise. - (*bt<mode>_setnc<mode>): Likewise. - (*bt<mode>_setncqi_2): Likewise. - (*bt<mode>_setc<mode>_mask): New define_insn_and_split. - (bmi2_bzhi_<mode>3): Use QImode offsets. - (*bmi2_bzhi_<mode>3): Likewise. - (*bmi2_bzhi_<mode>3_1): Likewise. - (*bmi2_bzhi_<mode>3_1_ccz): Likewise. - (@tbm_bextri_<mode>): Likewise. - -2023-07-22 Jeff Law <jlaw@ventanamicro.com> - - * config/bfin/bfin.md (ones): Fix length computation. - -2023-07-22 Vladimir N. Makarov <vmakarov@redhat.com> - - * lra-eliminations.cc (update_reg_eliminate): Fix the assert. - (lra_update_fp2sp_elimination): Use HARD_FRAME_POINTER_REGNUM - instead of FRAME_POINTER_REGNUM to spill pseudos. - -2023-07-21 Roger Sayle <roger@nextmovesoftware.com> - Richard Biener <rguenther@suse.de> - - PR c/110699 - * gimplify.cc (gimplify_compound_lval): If the array's type - is error_mark_node then return GS_ERROR. - -2023-07-21 Cupertino Miranda <cupertino.miranda@oracle.com> - - PR target/110770 - * config/bpf/bpf.opt: Added option -masm=<dialect>. - * config/bpf/bpf-opts.h (enum bpf_asm_dialect): New type. - * config/bpf/bpf.cc (bpf_print_register): New function. - (bpf_print_register): Support pseudo-c syntax for registers. - (bpf_print_operand_address): Likewise. - * config/bpf/bpf.h (ASM_SPEC): handle -msasm. - (ASSEMBLER_DIALECT): Define. - * config/bpf/bpf.md: Added pseudo-c templates. - * doc/invoke.texi (-masm=): New eBPF option item. - -2023-07-21 Cupertino Miranda <cupertino.miranda@oracle.com> - - * config/bpf/bpf.md: fixed template for neg instruction. - -2023-07-21 Jan Hubicka <jh@suse.cz> - - PR target/110727 - * tree-vect-loop.cc (scale_profile_for_vect_loop): Avoid scaling flat - profiles by vectorization factor. - (vect_transform_loop): Check for flat profiles. - -2023-07-21 Jan Hubicka <jh@suse.cz> - - * cfgloop.h (maybe_flat_loop_profile): Declare - * cfgloopanal.cc (maybe_flat_loop_profile): New function. - * tree-cfg.cc (print_loop_info): Print info about flat profiles. - -2023-07-21 Jan Hubicka <jh@suse.cz> - - * cfgloop.cc (get_estimated_loop_iterations): Use sreal::to_nearest_int - * cfgloopanal.cc (expected_loop_iterations_unbounded): Likewise. - * predict.cc (estimate_bb_frequencies): Likewise. - * profile.cc (branch_prob): Likewise. - * tree-ssa-loop-niter.cc (estimate_numbers_of_iterations): Likewise - -2023-07-21 Iain Sandoe <iain@sandoe.co.uk> - - * config.in: Regenerate. - * config/darwin.h (DARWIN_LD_DEMANGLE): New. - (LINK_COMMAND_SPEC_A): Add demangle handling. - * configure: Regenerate. - * configure.ac: Detect linker support for '-demangle'. - -2023-07-21 Jan Hubicka <jh@suse.cz> - - * sreal.cc (sreal::to_nearest_int): New. - (sreal_verify_basics): Verify also to_nearest_int. - (verify_aritmetics): Likewise. - (sreal_verify_conversions): New. - (sreal_cc_tests): Call sreal_verify_conversions. - * sreal.h: (sreal::to_nearest_int): Declare - -2023-07-21 Jan Hubicka <jh@suse.cz> - - * tree-ssa-loop-ch.cc (enum ch_decision): New enum. - (should_duplicate_loop_header_p): Return info on profitability. - (do_while_loop_p): Watch for constant conditionals. - (update_profile_after_ch): Do not sanity check that all - static exits are taken. - (ch_base::copy_headers): Run on all loops. - (pass_ch::process_loop_p): Improve heuristics by handling also - do_while loop and duplicating shortest sequence containing all - winning blocks. - -2023-07-21 Jan Hubicka <jh@suse.cz> - - * tree-ssa-loop-niter.cc (finite_loop_p): Reorder to do cheap - tests first; update finite_p flag. - -2023-07-21 Jan Hubicka <jh@suse.cz> - - * cfgloop.cc (flow_loop_dump): Use print_loop_info. - * cfgloop.h (print_loop_info): Declare. - * tree-cfg.cc (print_loop_info): Break out from ...; add - printing of missing fields and profile - (print_loop): ... here. - -2023-07-21 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv-v.cc (expand_gather_scatter): Remove redundant variables. - -2023-07-21 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * tree-vect-stmts.cc (check_load_store_for_partial_vectors): Change condition order. - (vectorizable_operation): Ditto. - -2023-07-21 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/autovec.md: Align order of mask and len. - * config/riscv/riscv-v.cc (expand_load_store): Ditto. - (expand_gather_scatter): Ditto. - * doc/md.texi: Ditto. - * internal-fn.cc (add_len_and_mask_args): Ditto. - (add_mask_and_len_args): Ditto. - (expand_partial_load_optab_fn): Ditto. - (expand_partial_store_optab_fn): Ditto. - (expand_scatter_store_optab_fn): Ditto. - (expand_gather_load_optab_fn): Ditto. - (internal_fn_len_index): Ditto. - (internal_fn_mask_index): Ditto. - (internal_len_load_store_bias): Ditto. - * tree-vect-stmts.cc (vectorizable_store): Ditto. - (vectorizable_load): Ditto. - -2023-07-21 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/autovec.md (len_maskload<mode><vm>): Change LEN_MASK into MASK_LEN. - (mask_len_load<mode><vm>): Ditto. - (len_maskstore<mode><vm>): Ditto. - (mask_len_store<mode><vm>): Ditto. - (len_mask_gather_load<RATIO64:mode><RATIO64I:mode>): Ditto. - (mask_len_gather_load<RATIO64:mode><RATIO64I:mode>): Ditto. - (len_mask_gather_load<RATIO32:mode><RATIO32I:mode>): Ditto. - (mask_len_gather_load<RATIO32:mode><RATIO32I:mode>): Ditto. - (len_mask_gather_load<RATIO16:mode><RATIO16I:mode>): Ditto. - (mask_len_gather_load<RATIO16:mode><RATIO16I:mode>): Ditto. - (len_mask_gather_load<RATIO8:mode><RATIO8I:mode>): Ditto. - (mask_len_gather_load<RATIO8:mode><RATIO8I:mode>): Ditto. - (len_mask_gather_load<RATIO4:mode><RATIO4I:mode>): Ditto. - (mask_len_gather_load<RATIO4:mode><RATIO4I:mode>): Ditto. - (len_mask_gather_load<RATIO2:mode><RATIO2I:mode>): Ditto. - (mask_len_gather_load<RATIO2:mode><RATIO2I:mode>): Ditto. - (len_mask_gather_load<RATIO1:mode><RATIO1:mode>): Ditto. - (mask_len_gather_load<RATIO1:mode><RATIO1:mode>): Ditto. - (len_mask_scatter_store<RATIO64:mode><RATIO64I:mode>): Ditto. - (mask_len_scatter_store<RATIO64:mode><RATIO64I:mode>): Ditto. - (len_mask_scatter_store<RATIO32:mode><RATIO32I:mode>): Ditto. - (mask_len_scatter_store<RATIO32:mode><RATIO32I:mode>): Ditto. - (len_mask_scatter_store<RATIO16:mode><RATIO16I:mode>): Ditto. - (mask_len_scatter_store<RATIO16:mode><RATIO16I:mode>): Ditto. - (len_mask_scatter_store<RATIO8:mode><RATIO8I:mode>): Ditto. - (mask_len_scatter_store<RATIO8:mode><RATIO8I:mode>): Ditto. - (len_mask_scatter_store<RATIO4:mode><RATIO4I:mode>): Ditto. - (mask_len_scatter_store<RATIO4:mode><RATIO4I:mode>): Ditto. - (len_mask_scatter_store<RATIO2:mode><RATIO2I:mode>): Ditto. - (mask_len_scatter_store<RATIO2:mode><RATIO2I:mode>): Ditto. - (len_mask_scatter_store<RATIO1:mode><RATIO1:mode>): Ditto. - (mask_len_scatter_store<RATIO1:mode><RATIO1:mode>): Ditto. - * doc/md.texi: Ditto. - * genopinit.cc (main): Ditto. - (CMP_NAME): Ditto. Ditto. - * gimple-fold.cc (arith_overflowed_p): Ditto. - (gimple_fold_partial_load_store_mem_ref): Ditto. - (gimple_fold_call): Ditto. - * internal-fn.cc (len_maskload_direct): Ditto. - (mask_len_load_direct): Ditto. - (len_maskstore_direct): Ditto. - (mask_len_store_direct): Ditto. - (expand_call_mem_ref): Ditto. - (expand_len_maskload_optab_fn): Ditto. - (expand_mask_len_load_optab_fn): Ditto. - (expand_len_maskstore_optab_fn): Ditto. - (expand_mask_len_store_optab_fn): Ditto. - (direct_len_maskload_optab_supported_p): Ditto. - (direct_mask_len_load_optab_supported_p): Ditto. - (direct_len_maskstore_optab_supported_p): Ditto. - (direct_mask_len_store_optab_supported_p): Ditto. - (internal_load_fn_p): Ditto. - (internal_store_fn_p): Ditto. - (internal_gather_scatter_fn_p): Ditto. - (internal_fn_len_index): Ditto. - (internal_fn_mask_index): Ditto. - (internal_fn_stored_value_index): Ditto. - (internal_len_load_store_bias): Ditto. - * internal-fn.def (LEN_MASK_GATHER_LOAD): Ditto. - (MASK_LEN_GATHER_LOAD): Ditto. - (LEN_MASK_LOAD): Ditto. - (MASK_LEN_LOAD): Ditto. - (LEN_MASK_SCATTER_STORE): Ditto. - (MASK_LEN_SCATTER_STORE): Ditto. - (LEN_MASK_STORE): Ditto. - (MASK_LEN_STORE): Ditto. - * optabs-query.cc (supports_vec_gather_load_p): Ditto. - (supports_vec_scatter_store_p): Ditto. - * optabs-tree.cc (target_supports_mask_load_store_p): Ditto. - (target_supports_len_load_store_p): Ditto. - * optabs.def (OPTAB_CD): Ditto. - * tree-ssa-alias.cc (ref_maybe_used_by_call_p_1): Ditto. - (call_may_clobber_ref_p_1): Ditto. - * tree-ssa-dse.cc (initialize_ao_ref_for_dse): Ditto. - (dse_optimize_stmt): Ditto. - * tree-ssa-loop-ivopts.cc (get_mem_type_for_internal_fn): Ditto. - (get_alias_ptr_type_for_ptr_address): Ditto. - * tree-vect-data-refs.cc (vect_gather_scatter_fn_p): Ditto. - * tree-vect-patterns.cc (vect_recog_gather_scatter_pattern): Ditto. - * tree-vect-stmts.cc (check_load_store_for_partial_vectors): Ditto. - (vect_get_strided_load_store_ops): Ditto. - (vectorizable_store): Ditto. - (vectorizable_load): Ditto. - -2023-07-21 Haochen Jiang <haochen.jiang@intel.com> - - * config/i386/i386.opt: Fix a typo. - -2023-07-21 Richard Biener <rguenther@suse.de> - - PR tree-optimization/88540 - * tree-ssa-phiopt.cc (minmax_replacement): Do not give up - with NaNs but handle the simple case by if-converting to a - COND_EXPR. - -2023-07-21 Andrew Pinski <apinski@marvell.com> - - * match.pd (minmax<minmax<a,b>,a>->minmax<a,b>): New - transformation. - -2023-07-21 Richard Biener <rguenther@suse.de> - - PR tree-optimization/110742 - * tree-vect-slp.cc (vect_optimize_slp_pass::get_result_with_layout): - Do not materialize an edge permutation in an external node with - vector defs. - (vect_slp_analyze_node_operations_1): Guard purely internal - nodes better. - -2023-07-21 Jan Hubicka <jh@suse.cz> - - * cfgloop.cc: Include sreal.h. - (flow_loop_dump): Dump sreal iteration exsitmate. - (get_estimated_loop_iterations): Update. - * cfgloop.h (expected_loop_iterations_by_profile): Declare. - * cfgloopanal.cc (expected_loop_iterations_by_profile): New function. - (expected_loop_iterations_unbounded): Use new API. - * cfgloopmanip.cc (scale_loop_profile): Use - expected_loop_iterations_by_profile - * predict.cc (pass_profile::execute): Likewise. - * profile.cc (branch_prob): Likewise. - * tree-ssa-loop-niter.cc: Include sreal.h. - (estimate_numbers_of_iterations): Likewise - -2023-07-21 Kewen Lin <linkw@linux.ibm.com> - - PR tree-optimization/110744 - * tree-ssa-sccvn.cc (vn_reference_lookup_3): Correct the index of bias - operand for ifn IFN_LEN_STORE. - -2023-07-21 liuhongt <hongtao.liu@intel.com> - - PR target/89701 - * common.opt: (fcf-protection=): Add EnumSet attribute to - support combination of params. - -2023-07-21 David Malcolm <dmalcolm@redhat.com> - - PR middle-end/110612 - * text-art/table.cc (table_geometry::table_geometry): Drop m_table - field. - (table_geometry::table_x_to_canvas_x): Add cast to comparison. - (table_geometry::table_y_to_canvas_y): Likewise. - * text-art/table.h (table_geometry::m_table): Drop unused field. - * text-art/widget.h (wrapper_widget::update_child_alloc_rects): - Add "override". - -2023-07-20 Uros Bizjak <ubizjak@gmail.com> - - PR target/110717 - * config/i386/i386-features.cc - (general_scalar_chain::compute_convert_gain): Calculate gain - for extend higpart case. - (general_scalar_chain::convert_op): Handle - ASHIFTRT/ASHIFT combined RTX. - (general_scalar_to_vector_candidate_p): Enable ASHIFTRT for - SImode for SSE2 targets. Handle ASHIFTRT/ASHIFT combined RTX. - * config/i386/i386.md (*extend<dwi>2_doubleword_highpart): - New define_insn_and_split pattern. - (*extendv2di2_highpart_stv): Ditto. - -2023-07-20 Vladimir N. Makarov <vmakarov@redhat.com> - - * lra-constraints.cc (simplify_operand_subreg): Check frame pointer - simplification. - -2023-07-20 Andrew Pinski <apinski@marvell.com> - - * combine.cc (dump_combine_stats): Remove. - (dump_combine_total_stats): Remove. - (total_attempts, total_merges, total_extras, - total_successes): Remove. - (combine_instructions): Don't increment total stats - instead use statistics_counter_event. - * dumpfile.cc (print_combine_total_stats): Remove. - * dumpfile.h (print_combine_total_stats): Remove. - (dump_combine_total_stats): Remove. - * passes.cc (finish_optimization_passes): - Don't call print_combine_total_stats. - * rtl.h (dump_combine_total_stats): Remove. - (dump_combine_stats): Remove. - -2023-07-20 Jan Hubicka <jh@suse.cz> - - * tree-ssa-loop-ch.cc (should_duplicate_loop_header_p): Use BIT instead of TRUTH - logical ops. - -2023-07-20 Martin Jambor <mjambor@suse.cz> - - * doc/invoke.texi (analyzer-text-art-string-ellipsis-threshold): New. - (analyzer-text-art-ideal-canvas-width): Likewise. - (analyzer-text-art-string-ellipsis-head-len): Likewise. - (analyzer-text-art-string-ellipsis-tail-len): Likewise. - -2023-07-20 Ju-Zhe Zhong <juzhe.zhong@rivai.ai> - - * tree-vect-stmts.cc (check_load_store_for_partial_vectors): - Refine code structure. - -2023-07-20 Jan Hubicka <jh@suse.cz> - - * tree-ssa-loop-ch.cc (edge_range_query): Rename to ... - (get_range_query): ... this one; do - (static_loop_exit): Add query parametr, turn ranger to reference. - (loop_static_stmt_p): New function. - (loop_static_op_p): New function. - (loop_iv_derived_p): Remove. - (loop_combined_static_and_iv_p): New function. - (should_duplicate_loop_header_p): Discover combined onditionals; - do not track iv derived; improve dumps. - (pass_ch::execute): Fix whitespace. - -2023-07-20 Richard Biener <rguenther@suse.de> - - PR tree-optimization/110204 - * tree-ssa-sccvn.cc (eliminate_dom_walker::eliminate_avail): - Look through copies generated by PRE. - -2023-07-20 Matthew Malcomson <matthew.malcomson@arm.com> - - * tree-vect-stmts.cc (get_group_load_store_type): Account for - `gap` when checking if need to peel twice. - -2023-07-20 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org> - - PR middle-end/77928 - * doc/extend.texi: Document iseqsig builtin. - * builtins.cc (fold_builtin_iseqsig): New function. - (fold_builtin_2): Handle BUILT_IN_ISEQSIG. - (is_inexpensive_builtin): Handle BUILT_IN_ISEQSIG. - * builtins.def (BUILT_IN_ISEQSIG): New built-in. - -2023-07-20 Pan Li <pan2.li@intel.com> - - * config/riscv/vector.md: Fix incorrect match_operand. - -2023-07-20 Roger Sayle <roger@nextmovesoftware.com> - - * config/i386/i386-expand.cc (ix86_expand_move): Don't call - force_reg, to use SUBREG rather than create a new pseudo when - inserting DFmode fields into TImode with insvti_{high,low}part. - * config/i386/i386.md (*concat<mode><dwi>3_3): Split into two - define_insn_and_split... - (*concatditi3_3): 64-bit implementation. Provide alternative - that allows register allocation to use SSE registers that is - split into vec_concatv2di after reload. - (*concatsidi3_3): 32-bit implementation. - -2023-07-20 Richard Biener <rguenther@suse.de> - - PR middle-end/61747 - * internal-fn.cc (expand_vec_cond_optab_fn): When the - value operands are equal to the original comparison operands - preserve that equality by re-using the comparison expansion. - * optabs.cc (emit_conditional_move): When the value operands - are equal to the comparison operands and would be forced to - a register by prepare_cmp_insn do so earlier, preserving the - equality. - -2023-07-20 Pan Li <pan2.li@intel.com> - - * config/riscv/vector.md: Align pattern format. - -2023-07-20 Haochen Jiang <haochen.jiang@intel.com> - - * doc/invoke.texi: Remove AVX512VP2INTERSECT in - Granite Rapids{, D} from documentation. - -2023-07-20 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/autovec.md - (len_mask_gather_load<VNX16_QHSD:mode><VNX16_QHSDI:mode>): - Refactor RVV machine modes. - (len_mask_gather_load<VNX16_QHS:mode><VNX16_QHSI:mode>): Ditto. - (len_mask_gather_load<VNX32_QHS:mode><VNX32_QHSI:mode>): Ditto. - (len_mask_gather_load<VNX32_QH:mode><VNX32_QHI:mode>): Ditto. - (len_mask_gather_load<VNX64_QH:mode><VNX64_QHI:mode>): Ditto. - (len_mask_gather_load<mode><mode>): Ditto. - (len_mask_gather_load<VNX64_Q:mode><VNX64_Q:mode>): Ditto. - (len_mask_scatter_store<VNX16_QHSD:mode><VNX16_QHSDI:mode>): Ditto. - (len_mask_scatter_store<VNX32_QHS:mode><VNX32_QHSI:mode>): Ditto. - (len_mask_scatter_store<VNX16_QHS:mode><VNX16_QHSI:mode>): Ditto. - (len_mask_scatter_store<VNX64_QH:mode><VNX64_QHI:mode>): Ditto. - (len_mask_scatter_store<VNX32_QH:mode><VNX32_QHI:mode>): Ditto. - (len_mask_scatter_store<mode><mode>): Ditto. - (len_mask_scatter_store<VNX64_Q:mode><VNX64_Q:mode>): Ditto. - * config/riscv/riscv-modes.def (VECTOR_BOOL_MODE): Ditto. - (ADJUST_NUNITS): Ditto. - (ADJUST_ALIGNMENT): Ditto. - (ADJUST_BYTESIZE): Ditto. - (ADJUST_PRECISION): Ditto. - (RVV_MODES): Ditto. - (RVV_WHOLE_MODES): Ditto. - (RVV_FRACT_MODE): Ditto. - (RVV_NF8_MODES): Ditto. - (RVV_NF4_MODES): Ditto. - (VECTOR_MODES_WITH_PREFIX): Ditto. - (VECTOR_MODE_WITH_PREFIX): Ditto. - (RVV_TUPLE_MODES): Ditto. - (RVV_NF2_MODES): Ditto. - (RVV_TUPLE_PARTIAL_MODES): Ditto. - * config/riscv/riscv-v.cc (struct mode_vtype_group): Ditto. - (ENTRY): Ditto. - (TUPLE_ENTRY): Ditto. - (get_vlmul): Ditto. - (get_nf): Ditto. - (get_ratio): Ditto. - (preferred_simd_mode): Ditto. - (autovectorize_vector_modes): Ditto. - * config/riscv/riscv-vector-builtins.cc (DEF_RVV_TYPE): Ditto. - * config/riscv/riscv-vector-builtins.def (DEF_RVV_TYPE): Ditto. - (vbool64_t): Ditto. - (vbool32_t): Ditto. - (vbool16_t): Ditto. - (vbool8_t): Ditto. - (vbool4_t): Ditto. - (vbool2_t): Ditto. - (vbool1_t): Ditto. - (vint8mf8_t): Ditto. - (vuint8mf8_t): Ditto. - (vint8mf4_t): Ditto. - (vuint8mf4_t): Ditto. - (vint8mf2_t): Ditto. - (vuint8mf2_t): Ditto. - (vint8m1_t): Ditto. - (vuint8m1_t): Ditto. - (vint8m2_t): Ditto. - (vuint8m2_t): Ditto. - (vint8m4_t): Ditto. - (vuint8m4_t): Ditto. - (vint8m8_t): Ditto. - (vuint8m8_t): Ditto. - (vint16mf4_t): Ditto. - (vuint16mf4_t): Ditto. - (vint16mf2_t): Ditto. - (vuint16mf2_t): Ditto. - (vint16m1_t): Ditto. - (vuint16m1_t): Ditto. - (vint16m2_t): Ditto. - (vuint16m2_t): Ditto. - (vint16m4_t): Ditto. - (vuint16m4_t): Ditto. - (vint16m8_t): Ditto. - (vuint16m8_t): Ditto. - (vint32mf2_t): Ditto. - (vuint32mf2_t): Ditto. - (vint32m1_t): Ditto. - (vuint32m1_t): Ditto. - (vint32m2_t): Ditto. - (vuint32m2_t): Ditto. - (vint32m4_t): Ditto. - (vuint32m4_t): Ditto. - (vint32m8_t): Ditto. - (vuint32m8_t): Ditto. - (vint64m1_t): Ditto. - (vuint64m1_t): Ditto. - (vint64m2_t): Ditto. - (vuint64m2_t): Ditto. - (vint64m4_t): Ditto. - (vuint64m4_t): Ditto. - (vint64m8_t): Ditto. - (vuint64m8_t): Ditto. - (vfloat16mf4_t): Ditto. - (vfloat16mf2_t): Ditto. - (vfloat16m1_t): Ditto. - (vfloat16m2_t): Ditto. - (vfloat16m4_t): Ditto. - (vfloat16m8_t): Ditto. - (vfloat32mf2_t): Ditto. - (vfloat32m1_t): Ditto. - (vfloat32m2_t): Ditto. - (vfloat32m4_t): Ditto. - (vfloat32m8_t): Ditto. - (vfloat64m1_t): Ditto. - (vfloat64m2_t): Ditto. - (vfloat64m4_t): Ditto. - (vfloat64m8_t): Ditto. - * config/riscv/riscv-vector-switch.def (ENTRY): Ditto. - (TUPLE_ENTRY): Ditto. - * config/riscv/riscv-vsetvl.cc (change_insn): Ditto. - * config/riscv/riscv.cc (riscv_valid_lo_sum_p): Ditto. - (riscv_v_adjust_nunits): Ditto. - (riscv_v_adjust_bytesize): Ditto. - (riscv_v_adjust_precision): Ditto. - (riscv_convert_vector_bits): Ditto. - * config/riscv/riscv.h (riscv_v_adjust_nunits): Ditto. - * config/riscv/riscv.md: Ditto. - * config/riscv/vector-iterators.md: Ditto. - * config/riscv/vector.md - (@pred_indexed_<order>store<VNX16_QHSD:mode><VNX16_QHSDI:mode>): Ditto. - (@pred_indexed_<order>store<VNX16_QHS:mode><VNX16_QHSI:mode>): Ditto. - (@pred_indexed_<order>store<VNX32_QHS:mode><VNX32_QHSI:mode>): Ditto. - (@pred_indexed_<order>store<VNX32_QH:mode><VNX32_QHI:mode>): Ditto. - (@pred_indexed_<order>store<VNX64_QH:mode><VNX64_QHI:mode>): Ditto. - (@pred_indexed_<order>store<VNX64_Q:mode><VNX64_Q:mode>): Ditto. - (@pred_indexed_<order>store<VNX128_Q:mode><VNX128_Q:mode>): Ditto. - (@pred_indexed_<order>load<V1T:mode><V1I:mode>): Ditto. - (@pred_indexed_<order>load<V1T:mode><VNX1_QHSDI:mode>): Ditto. - (@pred_indexed_<order>load<V2T:mode><V2I:mode>): Ditto. - (@pred_indexed_<order>load<V2T:mode><VNX2_QHSDI:mode>): Ditto. - (@pred_indexed_<order>load<V4T:mode><V4I:mode>): Ditto. - (@pred_indexed_<order>load<V4T:mode><VNX4_QHSDI:mode>): Ditto. - (@pred_indexed_<order>load<V8T:mode><V8I:mode>): Ditto. - (@pred_indexed_<order>load<V8T:mode><VNX8_QHSDI:mode>): Ditto. - (@pred_indexed_<order>load<V16T:mode><V16I:mode>): Ditto. - (@pred_indexed_<order>load<V16T:mode><VNX16_QHSI:mode>): Ditto. - (@pred_indexed_<order>load<V32T:mode><V32I:mode>): Ditto. - (@pred_indexed_<order>load<V32T:mode><VNX32_QHI:mode>): Ditto. - (@pred_indexed_<order>load<V64T:mode><V64I:mode>): Ditto. - (@pred_indexed_<order>store<V1T:mode><V1I:mode>): Ditto. - (@pred_indexed_<order>store<V1T:mode><VNX1_QHSDI:mode>): Ditto. - (@pred_indexed_<order>store<V2T:mode><V2I:mode>): Ditto. - (@pred_indexed_<order>store<V2T:mode><VNX2_QHSDI:mode>): Ditto. - (@pred_indexed_<order>store<V4T:mode><V4I:mode>): Ditto. - (@pred_indexed_<order>store<V4T:mode><VNX4_QHSDI:mode>): Ditto. - (@pred_indexed_<order>store<V8T:mode><V8I:mode>): Ditto. - (@pred_indexed_<order>store<V8T:mode><VNX8_QHSDI:mode>): Ditto. - (@pred_indexed_<order>store<V16T:mode><V16I:mode>): Ditto. - (@pred_indexed_<order>store<V16T:mode><VNX16_QHSI:mode>): Ditto. - (@pred_indexed_<order>store<V32T:mode><V32I:mode>): Ditto. - (@pred_indexed_<order>store<V32T:mode><VNX32_QHI:mode>): Ditto. - (@pred_indexed_<order>store<V64T:mode><V64I:mode>): Ditto. - -2023-07-19 Vladimir N. Makarov <vmakarov@redhat.com> - - * lra-int.h (lra_update_fp2sp_elimination): New prototype. - (lra_asm_insn_error): New prototype. - * lra-spills.cc (remove_pseudos): Add check for pseudo slot memory - existence. - (lra_spill): Call lra_update_fp2sp_elimination. - * lra-eliminations.cc: Remove trailing spaces. - (elimination_fp2sp_occured_p): New static flag. - (lra_eliminate_regs_1): Set the flag up. - (update_reg_eliminate): Modify the assert for stack to frame - pointer elimination. - (lra_update_fp2sp_elimination): New function. - (lra_eliminate): Clear flag elimination_fp2sp_occured_p. - -2023-07-19 Andrew Carlotti <andrew.carlotti@arm.com> - - * config/aarch64/aarch64.h (TARGET_MEMTAG): Remove armv8.5 - dependency. - * config/aarch64/arm_acle.h: Remove unnecessary armv8.x - dependencies from target pragmas. - * config/aarch64/arm_fp16.h (target): Likewise. - * config/aarch64/arm_neon.h (target): Likewise. - -2023-07-19 Andrew Pinski <apinski@marvell.com> - - PR tree-optimization/110252 - * tree-ssa-phiopt.cc (class auto_flow_sensitive): New class. - (auto_flow_sensitive::auto_flow_sensitive): New constructor. - (auto_flow_sensitive::~auto_flow_sensitive): New deconstructor. - (match_simplify_replacement): Temporarily - remove the flow sensitive info on the two statements that might - be moved. - -2023-07-19 Andrew Pinski <apinski@marvell.com> - - * gimple-fold.cc (fosa_unwind): Replace `vrange_storage *` - with flow_sensitive_info_storage. - (follow_outer_ssa_edges): Update how to save off the flow - sensitive info. - (maybe_fold_comparisons_from_match_pd): Update restoring - of flow sensitive info. - * tree-ssanames.cc (flow_sensitive_info_storage::save): New method. - (flow_sensitive_info_storage::restore): New method. - (flow_sensitive_info_storage::save_and_clear): New method. - (flow_sensitive_info_storage::clear_storage): New method. - * tree-ssanames.h (class flow_sensitive_info_storage): New class. - -2023-07-19 Andrew Pinski <apinski@marvell.com> - - PR tree-optimization/110726 - * match.pd ((a|b)&(a==b),a|(a==b),(a&b)|(a==b)): - Add checks to make sure the type was one bit precision - intergal type. - -2023-07-19 Ju-Zhe Zhong <juzhe.zhong@rivai.ai> - - * doc/md.texi: Add mask_len_fold_left_plus. - * internal-fn.cc (mask_len_fold_left_direct): Ditto. - (expand_mask_len_fold_left_optab_fn): Ditto. - (direct_mask_len_fold_left_optab_supported_p): Ditto. - * internal-fn.def (MASK_LEN_FOLD_LEFT_PLUS): Ditto. - * optabs.def (OPTAB_D): Ditto. - -2023-07-19 Jakub Jelinek <jakub@redhat.com> - - * tree-switch-conversion.h (class bit_test_cluster): Fix comment typo. - -2023-07-19 Jakub Jelinek <jakub@redhat.com> - - PR tree-optimization/110731 - * wide-int.cc (wi::divmod_internal): Always unpack dividend and - divisor as UNSIGNED regardless of sgn. - -2023-07-19 Lehua Ding <lehua.ding@rivai.ai> - - * common/config/riscv/riscv-common.cc (riscv_supported_std_ext): Init. - (standard_extensions_p): Add check. - (riscv_subset_list::add): Just return NULL if it failed before. - (riscv_subset_list::parse_std_ext): Continue parse when find a error - (riscv_subset_list::parse): Just return NULL if it failed before. - * config/riscv/riscv-subset.h (class riscv_subset_list): Add field. - -2023-07-19 Jan Beulich <jbeulich@suse.com> - - * config/i386/i386-expand.cc (ix86_expand_vector_init_duplicate): - Use gen_vec_set_0. - (ix86_expand_vector_extract): Use gen_vec_extract_lo / - gen_vec_extract_hi. - (expand_vec_perm_broadcast_1): Use gen_vec_interleave_high / - gen_vec_interleave_low. Rename local variable. - -2023-07-19 Jan Beulich <jbeulich@suse.com> - - * config/i386/sse.md (vec_dupv2df<mask_name>): Add new AVX512F - alternative. Move AVX512VL part of condition to new "enabled" - attribute. - -2023-07-19 liuhongt <hongtao.liu@intel.com> - - PR target/109504 - * config/i386/i386-builtins.cc - (ix86_register_float16_builtin_type): Remove TARGET_SSE2. - (ix86_register_bf16_builtin_type): Ditto. - * config/i386/i386-c.cc (ix86_target_macros): When TARGET_SSE2 - isn't available, undef the macros which are used to check the - backend support of the _Float16/__bf16 types when building - libstdc++ and libgcc. - * config/i386/i386.cc (construct_container): Issue errors for - HFmode/BFmode when TARGET_SSE2 is not available. - (function_value_32): Ditto. - (ix86_scalar_mode_supported_p): Remove TARGET_SSE2 for HFmode/BFmode. - (ix86_libgcc_floating_mode_supported_p): Ditto. - (ix86_emit_support_tinfos): Adjust codes. - (ix86_invalid_conversion): Return diagnostic message string - when there's conversion from/to BF/HFmode w/o TARGET_SSE2. - (ix86_invalid_unary_op): New function. - (ix86_invalid_binary_op): Ditto. - (TARGET_INVALID_UNARY_OP): Define. - (TARGET_INVALID_BINARY_OP): Define. - * config/i386/immintrin.h [__SSE2__]: Remove for fp16/bf16 - related instrinsics header files. - * config/i386/i386.h (VALID_SSE2_TYPE_MODE): New macro. - -2023-07-18 Uros Bizjak <ubizjak@gmail.com> - - * dwarf2asm.cc: Change FALSE to false. - * dwarf2cfi.cc (execute_dwarf2_frame): Change return type to void. - * dwarf2out.cc (matches_main_base): Change return type from - int to bool. Change "last_match" variable to bool. - (dump_struct_debug): Change return type from int to bool. - Change "matches" and "result" function arguments to bool. - (is_pseudo_reg): Change return type from int to bool. - (is_tagged_type): Ditto. - (same_loc_p): Ditto. - (same_dw_val_p): Change return type from int to bool and adjust - function body accordingly. - (same_attr_p): Ditto. - (same_die_p): Ditto. - (is_type_die): Ditto. - (is_declaration_die): Ditto. - (should_move_die_to_comdat): Ditto. - (is_base_type): Ditto. - (is_based_loc): Ditto. - (local_scope_p): Ditto. - (class_scope_p): Ditto. - (class_or_namespace_scope_p): Ditto. - (is_tagged_type): Ditto. - (is_rust): Use void argument. - (is_nested_in_subprogram): Change return type from int to bool. - (contains_subprogram_definition): Ditto. - (gen_struct_or_union_type_die): Change "nested", "complete" - and "ns_decl" variables to bool. - (is_naming_typedef_decl): Change FALSE to false. - -2023-07-18 Jan Hubicka <jh@suse.cz> - - * tree-ssa-loop-ch.cc (edge_range_query): Take loop argument; be ready - for queries not in headers. - (static_loop_exit): Add basic blck parameter; update use of - edge_range_query - (should_duplicate_loop_header_p): Add ranger and static_exits - parameter. Do not account statements that will be optimized - out after duplicaiton in overall size. Add ranger query to - find static exits. - (update_profile_after_ch): Take static_exits has set instead of - single eliminated_edge. - (ch_base::copy_headers): Do all analysis in the first pass; - remember invariant_exits and static_exits. - -2023-07-18 Jason Merrill <jason@redhat.com> - - * fold-const.cc (native_interpret_aggregate): Skip empty fields. - -2023-07-18 Gaius Mulley <gaiusmod2@gmail.com> - - * doc/gm2.texi (Semantic checking): Change example testwithptr - to testnew6. - -2023-07-18 Richard Biener <rguenther@suse.de> - - PR middle-end/105715 - * gimple-isel.cc (gimple_expand_vec_exprs): Merge into... - (pass_gimple_isel::execute): ... this. Duplicate - comparison defs of COND_EXPRs. - -2023-07-18 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv-selftests.cc (run_poly_int_selftests): Add more selftests. - * config/riscv/riscv.cc (riscv_legitimize_poly_move): Dynamic adjust size of VLA vectors. - (riscv_convert_vector_bits): Ditto. - -2023-07-18 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/autovec.md (vec_shl_insert_<mode>): New patterns. - * config/riscv/riscv-v.cc (shuffle_compress_patterns): Fix bugs. - -2023-07-18 Juergen Christ <jchrist@linux.ibm.com> - - * config/s390/vx-builtins.md: New vsel pattern. - -2023-07-18 liuhongt <hongtao.liu@intel.com> - - PR target/110438 - * config/i386/sse.md (<mask_codefor>one_cmpl<mode>2<mask_name>): - Remove # from assemble output. - -2023-07-18 liuhongt <hongtao.liu@intel.com> - - PR target/110591 - * config/i386/sync.md (cmpccxadd_<mode>): Adjust the pattern - to explicitly set FLAGS_REG like *cmp<mode>_1, also add extra - 3 define_peephole2 after the pattern. - -2023-07-18 Ju-Zhe Zhong <juzhe.zhong@rivai.ai> - - * rtl-ssa/internals.inl: Fix when mode1 and mode2 are not ordred. - -2023-07-18 Pan Li <pan2.li@intel.com> - Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv.cc (struct machine_function): Add new field. - (riscv_static_frm_mode_p): New function. - (riscv_emit_frm_mode_set): New function for emit FRM. - (riscv_emit_mode_set): Extract function for FRM. - (riscv_mode_needed): Fix the TODO. - (riscv_mode_entry): Initial dynamic frm RTL. - (riscv_mode_exit): Return DYN_EXIT. - * config/riscv/riscv.md: Add rdfrm. - * config/riscv/vector-iterators.md (unspecv): Add DYN_EXIT unspecv. - * config/riscv/vector.md (frm_modee): Add new mode dyn_exit. - (fsrm): Removed. - (fsrmsi_backup): New pattern for swap. - (fsrmsi_restore): New pattern for restore. - (fsrmsi_restore_exit): New pattern for restore exit. - (frrmsi): New pattern for backup. - -2023-07-17 Arsen Arsenović <arsen@aarsen.me> - - * doc/extend.texi: Add @cindex on __auto_type. - -2023-07-17 Uros Bizjak <ubizjak@gmail.com> - - * combine-stack-adj.cc (stack_memref_p): Change return type from - int to bool and adjust function body accordingly. - (rest_of_handle_stack_adjustments): Change return type to void. - -2023-07-17 Uros Bizjak <ubizjak@gmail.com> - - * combine.cc (struct reg_stat_type): Change last_set_invalid to bool. - (cant_combine_insn_p): Change return type from int to bool and adjust - function body accordingly. - (can_combine_p): Ditto. - (combinable_i3pat): Ditto. Change "i1_not_in_src" and "i0_not_in_src" - function arguments from int to bool. - (contains_muldiv): Change return type from int to bool and adjust - function body accordingly. - (try_combine): Ditto. Change "new_direct_jump" pointer function - argument from int to bool. Change "substed_i2", "substed_i1", - "substed_i0", "added_sets_0", "added_sets_1", "added_sets_2", - "i2dest_in_i2src", "i1dest_in_i1src", "i2dest_in_i1src", - "i0dest_in_i0src", "i1dest_in_i0src", "i2dest_in_i0src", - "i2dest_killed", "i1dest_killed", "i0dest_killed", "i1_feeds_i2_n", - "i0_feeds_i2_n", "i0_feeds_i1_n", "i3_subst_into_i2", "have_mult", - "swap_i2i3", "split_i2i3" and "changed_i3_dest" variables - from int to bool. - (subst): Change "in_dest", "in_cond" and "unique_copy" function - arguments from int to bool. - (combine_simplify_rtx): Change "in_dest" and "in_cond" function - arguments from int to bool. - (make_extraction): Change "unsignedp", "in_dest" and "in_compare" - function argument from int to bool. - (force_int_to_mode): Change "just_select" function argument - from int to bool. Change "next_select" variable to bool. - (rtx_equal_for_field_assignment_p): Change return type from - int to bool and adjust function body accordingly. - (merge_outer_ops): Ditto. Change "pcomp_p" pointer function - argument from int to bool. - (get_last_value_validate): Change return type from int to bool - and adjust function body accordingly. - (reg_dead_at_p): Ditto. - (reg_bitfield_target_p): Ditto. - (combine_instructions): Ditto. Change "new_direct_jump" - variable to bool. - (can_combine_p): Change return type from int to bool - and adjust function body accordingly. - (likely_spilled_retval_p): Ditto. - (can_change_dest_mode): Change "added_sets" function argument - from int to bool. - (find_split_point): Change "unsignedp" variable to bool. - (simplify_if_then_else): Change "comparison_p" and "swapped" - variables to bool. - (simplify_set): Change "other_changed" variable to bool. - (expand_compound_operation): Change "unsignedp" variable to bool. - (force_to_mode): Change "just_select" function argument - from int to bool. Change "next_select" variable to bool. - (extended_count): Change "unsignedp" function argument to bool. - (simplify_shift_const_1): Change "complement_p" variable to bool. - (simplify_comparison): Change "changed" variable to bool. - (rest_of_handle_combine): Change return type to void. - -2023-07-17 Andre Vieira <andre.simoesdiasvieira@arm.com> - - PR plugins/110610 - * Makefile.in (INTERNAL_FN_H): Add insn-opinit.h. - -2023-07-17 Senthil Kumar Selvaraj <saaadhu@gcc.gnu.org> - - * ira.cc (setup_reg_class_relations): Continue - if regclass cl3 is hard_reg_set_empty_p. - -2023-07-17 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv.cc (riscv_option_override): Add sorry check. - -2023-07-17 Martin Jambor <mjambor@suse.cz> - - * tree-ssa-loop-ivcanon.cc (try_peel_loop): Remove unused variable - entry_count. - -2023-07-17 Aldy Hernandez <aldyh@redhat.com> - - * tree-ssa-ccp.cc (ccp_finalize): Export value/mask known bits. - -2023-07-17 Lehua Ding <lehua.ding@rivai.ai> - - PR target/110696 - * common/config/riscv/riscv-common.cc (riscv_subset_list::handle_implied_ext): - recur add all implied extensions. - (riscv_subset_list::check_implied_ext): Add new method. - (riscv_subset_list::parse): Call checker check_implied_ext. - * config/riscv/riscv-subset.h: Add new method. - -2023-07-17 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/autovec.md (reduc_plus_scal_<mode>): New pattern. - (reduc_smax_scal_<mode>): Ditto. - (reduc_umax_scal_<mode>): Ditto. - (reduc_smin_scal_<mode>): Ditto. - (reduc_umin_scal_<mode>): Ditto. - (reduc_and_scal_<mode>): Ditto. - (reduc_ior_scal_<mode>): Ditto. - (reduc_xor_scal_<mode>): Ditto. - * config/riscv/riscv-protos.h (enum insn_type): Add reduction. - (expand_reduction): New function. - * config/riscv/riscv-v.cc (emit_vlmax_reduction_insn): Ditto. - (emit_vlmax_fp_reduction_insn): Ditto. - (get_m1_mode): Ditto. - (expand_cond_len_binop): Fix name. - (expand_reduction): New function - * config/riscv/riscv-vsetvl.cc (gen_vsetvl_pat): Fix VSETVL BUG. - (validate_change_or_fail): New function. - (change_insn): Fix VSETVL BUG. - (change_vsetvl_insn): Ditto. - (pass_vsetvl::backward_demand_fusion): Ditto. - (pass_vsetvl::df_post_optimization): Ditto. - -2023-07-17 Aldy Hernandez <aldyh@redhat.com> - - * ipa-prop.cc (ipcp_update_bits): Export value/mask known bits. - -2023-07-17 Christoph Müllner <christoph.muellner@vrull.eu> - - * config/riscv/riscv.cc (riscv_regno_ok_for_index_p): - Remove parameter name from declaration of unused parameter. - -2023-07-17 Kewen Lin <linkw@linux.ibm.com> - - PR tree-optimization/110652 - * tree-vect-stmts.cc (vectorizable_load): Initialize new_temp as - NULL_TREE. - -2023-07-17 Richard Biener <rguenther@suse.de> - - PR tree-optimization/110669 - * tree-scalar-evolution.cc (analyze_and_compute_bitop_with_inv_effect): - Check we matched a header PHI. - -2023-07-17 Aldy Hernandez <aldyh@redhat.com> - - * tree-ssanames.cc (set_bitmask): New. - * tree-ssanames.h (set_bitmask): New. - -2023-07-17 Aldy Hernandez <aldyh@redhat.com> - - * value-range.cc (irange_bitmask::verify_mask): Mask need not be - normalized. - * value-range.h (irange_bitmask::union_): Normalize beforehand. - (irange_bitmask::intersect): Same. - -2023-07-17 Andrew Pinski <apinski@marvell.com> - - PR tree-optimization/95923 - * match.pd ((a|b)&(a==b),a|(a==b),(a&b)|(a==b)): New transformation. - -2023-07-17 Roger Sayle <roger@nextmovesoftware.com> - - * tree-if-conv.cc (predicate_scalar_phi): Make the arguments - to the std::sort comparison lambda function const. - -2023-07-17 Andrew Pinski <apinski@marvell.com> - - PR tree-optimization/110666 - * match.pd (A NEEQ (A NEEQ CST)): Fix Outer EQ case. - -2023-07-17 Mo, Zewei <zewei.mo@intel.com> - - * common/config/i386/cpuinfo.h (get_intel_cpu): Handle Lunar Lake, - Arrow Lake and Arrow Lake S. - * common/config/i386/i386-common.cc: - (processor_name): Add arrowlake. - (processor_alias_table): Add arrow lake, arrow lake s and lunar - lake. - * common/config/i386/i386-cpuinfo.h (enum processor_subtypes): - Add INTEL_COREI7_ARROWLAKE and INTEL_COREI7_ARROWLAKE_S. - * config.gcc: Add -march=arrowlake and -march=arrowlake-s. - * config/i386/driver-i386.cc (host_detect_local_cpu): Handle - arrowlake-s. - * config/i386/i386-c.cc (ix86_target_macros_internal): Add - arrowlake. - * config/i386/i386-options.cc (m_ARROWLAKE): New. - (processor_cost_table): Add arrowlake. - * config/i386/i386.h (enum processor_type): - Add PROCESSOR_ARROWLAKE. - * config/i386/x86-tune.def: Add m_ARROWLAKE. - * doc/extend.texi: Add arrowlake and arrowlake-s. - * doc/invoke.texi: Ditto. - -2023-07-17 Haochen Jiang <haochen.jiang@intel.com> - - * config/i386/sse.md (VI2_AVX2): Delete V32HI since we actually - have the same iterator. Also renaming all the occurence to - VI2_AVX2_AVX512BW. - (usdot_prod<mode>): New define_expand. - (udot_prod<mode>): Ditto. - -2023-07-17 Haochen Jiang <haochen.jiang@intel.com> - - * common/config/i386/cpuinfo.h (get_available_features): - Detech SM4. - * common/config/i386/i386-common.cc (OPTION_MASK_ISA2_SM4_SET, - OPTION_MASK_ISA2_SM4_UNSET): New. - (OPTION_MASK_ISA2_AVX_UNSET): Add SM4. - (ix86_handle_option): Handle -msm4. - * common/config/i386/i386-cpuinfo.h (enum processor_features): - Add FEATURE_SM4. - * common/config/i386/i386-isas.h: Add ISA_NAME_TABLE_ENTRY for - sm4. - * config.gcc: Add sm4intrin.h. - * config/i386/cpuid.h (bit_SM4): New. - * config/i386/i386-builtin.def (BDESC): Add new builtins. - * config/i386/i386-c.cc (ix86_target_macros_internal): Define - __SM4__. - * config/i386/i386-isa.def (SM4): Add DEF_PTA(SM4). - * config/i386/i386-options.cc (isa2_opts): Add -msm4. - (ix86_valid_target_attribute_inner_p): Handle sm4. - * config/i386/i386.opt: Add option -msm4. - * config/i386/immintrin.h: Include sm4intrin.h - * config/i386/sse.md (vsm4key4_<mode>): New define insn. - (vsm4rnds4_<mode>): Ditto. - * doc/extend.texi: Document sm4. - * doc/invoke.texi: Document -msm4. - * doc/sourcebuild.texi: Document target sm4. - * config/i386/sm4intrin.h: New file. - -2023-07-17 Haochen Jiang <haochen.jiang@intel.com> - - * common/config/i386/cpuinfo.h (get_available_features): - Detect SHA512. - * common/config/i386/i386-common.cc (OPTION_MASK_ISA2_SHA512_SET, - OPTION_MASK_ISA2_SHA512_UNSET): New. - (OPTION_MASK_ISA2_AVX_UNSET): Add SHA512. - (ix86_handle_option): Handle -msha512. - * common/config/i386/i386-cpuinfo.h (enum processor_features): - Add FEATURE_SHA512. - * common/config/i386/i386-isas.h: Add ISA_NAME_TABLE_ENTRY for - sha512. - * config.gcc: Add sha512intrin.h. - * config/i386/cpuid.h (bit_SHA512): New. - * config/i386/i386-builtin-types.def: - Add DEF_FUNCTION_TYPE (V4DI, V4DI, V4DI, V2DI). - * config/i386/i386-builtin.def (BDESC): Add new builtins. - * config/i386/i386-c.cc (ix86_target_macros_internal): Define - __SHA512__. - * config/i386/i386-expand.cc (ix86_expand_args_builtin): Handle - V4DI_FTYPE_V4DI_V4DI_V2DI and V4DI_FTYPE_V4DI_V2DI. - * config/i386/i386-isa.def (SHA512): Add DEF_PTA(SHA512). - * config/i386/i386-options.cc (isa2_opts): Add -msha512. - (ix86_valid_target_attribute_inner_p): Handle sha512. - * config/i386/i386.opt: Add option -msha512. - * config/i386/immintrin.h: Include sha512intrin.h. - * config/i386/sse.md (vsha512msg1): New define insn. - (vsha512msg2): Ditto. - (vsha512rnds2): Ditto. - * doc/extend.texi: Document sha512. - * doc/invoke.texi: Document -msha512. - * doc/sourcebuild.texi: Document target sha512. - * config/i386/sha512intrin.h: New file. - -2023-07-17 Haochen Jiang <haochen.jiang@intel.com> - - * common/config/i386/cpuinfo.h (get_available_features): - Detect SM3. - * common/config/i386/i386-common.cc (OPTION_MASK_ISA2_SM3_SET, - OPTION_MASK_ISA2_SM3_UNSET): New. - (OPTION_MASK_ISA2_AVX_UNSET): Add SM3. - (ix86_handle_option): Handle -msm3. - * common/config/i386/i386-cpuinfo.h (enum processor_features): - Add FEATURE_SM3. - * common/config/i386/i386-isas.h: Add ISA_NAME_TABLE_ENTRY for - SM3. - * config.gcc: Add sm3intrin.h - * config/i386/cpuid.h (bit_SM3): New. - * config/i386/i386-builtin-types.def: - Add DEF_FUNCTION_TYPE (V4SI, V4SI, V4SI, V4SI, INT). - * config/i386/i386-builtin.def (BDESC): Add new builtins. - * config/i386/i386-c.cc (ix86_target_macros_internal): Define - __SM3__. - * config/i386/i386-expand.cc (ix86_expand_args_builtin): Handle - V4SI_FTYPE_V4SI_V4SI_V4SI_INT. - * config/i386/i386-isa.def (SM3): Add DEF_PTA(SM3). - * config/i386/i386-options.cc (isa2_opts): Add -msm3. - (ix86_valid_target_attribute_inner_p): Handle sm3. - * config/i386/i386.opt: Add option -msm3. - * config/i386/immintrin.h: Include sm3intrin.h. - * config/i386/sse.md (vsm3msg1): New define insn. - (vsm3msg2): Ditto. - (vsm3rnds2): Ditto. - * doc/extend.texi: Document sm3. - * doc/invoke.texi: Document -msm3. - * doc/sourcebuild.texi: Document target sm3. - * config/i386/sm3intrin.h: New file. - -2023-07-17 Kong Lingling <lingling.kong@intel.com> - Haochen Jiang <haochen.jiang@intel.com> - - * common/config/i386/cpuinfo.h (get_available_features): Detect - avxvnniint16. - * common/config/i386/i386-common.cc - (OPTION_MASK_ISA2_AVXVNNIINT16_SET): New. - (OPTION_MASK_ISA2_AVXVNNIINT16_UNSET): Ditto. - (ix86_handle_option): Handle -mavxvnniint16. - * common/config/i386/i386-cpuinfo.h (enum processor_features): - Add FEATURE_AVXVNNIINT16. - * common/config/i386/i386-isas.h: Add ISA_NAME_TABLE_ENTRY for - avxvnniint16. - * config.gcc: Add avxvnniint16.h. - * config/i386/avxvnniint16intrin.h: New file. - * config/i386/cpuid.h (bit_AVXVNNIINT16): New. - * config/i386/i386-builtin.def: Add new builtins. - * config/i386/i386-c.cc (ix86_target_macros_internal): Define - __AVXVNNIINT16__. - * config/i386/i386-options.cc (isa2_opts): Add -mavxvnniint16. - (ix86_valid_target_attribute_inner_p): Handle avxvnniint16intrin.h. - * config/i386/i386-isa.def: Add DEF_PTA(AVXVNNIINT16). - * config/i386/i386.opt: Add option -mavxvnniint16. - * config/i386/immintrin.h: Include avxvnniint16.h. - * config/i386/sse.md - (vpdp<vpdpwprodtype>_<mode>): New define_insn. - * doc/extend.texi: Document avxvnniint16. - * doc/invoke.texi: Document -mavxvnniint16. - * doc/sourcebuild.texi: Document target avxvnniint16. - -2023-07-16 Jan Hubicka <jh@suse.cz> - - PR middle-end/110649 - * tree-vect-loop.cc (scale_profile_for_vect_loop): Rewrite. - (vect_transform_loop): Move scale_profile_for_vect_loop after - upper bound updates. - -2023-07-16 Jan Hubicka <jh@suse.cz> - - PR tree-optimization/110649 - * tree-vect-loop.cc (optimize_mask_stores): Set correctly - probability of the if-then-else construct. - -2023-07-16 Jan Hubicka <jh@suse.cz> - - PR middle-end/110649 - * tree-ssa-loop-ivcanon.cc (try_peel_loop): Avoid double profile update. - -2023-07-15 Andrew Pinski <apinski@marvell.com> - - * doc/contrib.texi: Update my entry. - -2023-07-15 John David Anglin <danglin@gcc.gnu.org> - - * config/pa/pa.md: Define constants R1_REGNUM, R19_REGNUM and - R27_REGNUM. - (tgd_load): Restrict to !TARGET_64BIT. Use register constants. - (tld_load): Likewise. - (tgd_load_pic): Change to expander. - (tld_load_pic, tld_offset_load, tp_load): Likewise. - (tie_load_pic, tle_load): Likewise. - (tgd_load_picsi, tgd_load_picdi): New. - (tld_load_picsi, tld_load_picdi): New. - (tld_offset_load<P:mode>): New. - (tp_load<P:mode>): New. - (tie_load_picsi, tie_load_picdi): New. - (tle_load<P:mode>): New. - -2023-07-14 Christophe Lyon <christophe.lyon@linaro.org> - - * config/arm/arm-mve-builtins-base.cc (vcmlaq, vcmlaq_rot90) - (vcmlaq_rot180, vcmlaq_rot270): New. - * config/arm/arm-mve-builtins-base.def (vcmlaq, vcmlaq_rot90) - (vcmlaq_rot180, vcmlaq_rot270): New. - * config/arm/arm-mve-builtins-base.h: (vcmlaq, vcmlaq_rot90) - (vcmlaq_rot180, vcmlaq_rot270): New. - * config/arm/arm-mve-builtins.cc - (function_instance::has_inactive_argument): Handle vcmlaq, - vcmlaq_rot90, vcmlaq_rot180, vcmlaq_rot270. - * config/arm/arm_mve.h (vcmlaq): Delete. - (vcmlaq_rot180): Delete. - (vcmlaq_rot270): Delete. - (vcmlaq_rot90): Delete. - (vcmlaq_m): Delete. - (vcmlaq_rot180_m): Delete. - (vcmlaq_rot270_m): Delete. - (vcmlaq_rot90_m): Delete. - (vcmlaq_f16): Delete. - (vcmlaq_rot180_f16): Delete. - (vcmlaq_rot270_f16): Delete. - (vcmlaq_rot90_f16): Delete. - (vcmlaq_f32): Delete. - (vcmlaq_rot180_f32): Delete. - (vcmlaq_rot270_f32): Delete. - (vcmlaq_rot90_f32): Delete. - (vcmlaq_m_f32): Delete. - (vcmlaq_m_f16): Delete. - (vcmlaq_rot180_m_f32): Delete. - (vcmlaq_rot180_m_f16): Delete. - (vcmlaq_rot270_m_f32): Delete. - (vcmlaq_rot270_m_f16): Delete. - (vcmlaq_rot90_m_f32): Delete. - (vcmlaq_rot90_m_f16): Delete. - (__arm_vcmlaq_f16): Delete. - (__arm_vcmlaq_rot180_f16): Delete. - (__arm_vcmlaq_rot270_f16): Delete. - (__arm_vcmlaq_rot90_f16): Delete. - (__arm_vcmlaq_f32): Delete. - (__arm_vcmlaq_rot180_f32): Delete. - (__arm_vcmlaq_rot270_f32): Delete. - (__arm_vcmlaq_rot90_f32): Delete. - (__arm_vcmlaq_m_f32): Delete. - (__arm_vcmlaq_m_f16): Delete. - (__arm_vcmlaq_rot180_m_f32): Delete. - (__arm_vcmlaq_rot180_m_f16): Delete. - (__arm_vcmlaq_rot270_m_f32): Delete. - (__arm_vcmlaq_rot270_m_f16): Delete. - (__arm_vcmlaq_rot90_m_f32): Delete. - (__arm_vcmlaq_rot90_m_f16): Delete. - (__arm_vcmlaq): Delete. - (__arm_vcmlaq_rot180): Delete. - (__arm_vcmlaq_rot270): Delete. - (__arm_vcmlaq_rot90): Delete. - (__arm_vcmlaq_m): Delete. - (__arm_vcmlaq_rot180_m): Delete. - (__arm_vcmlaq_rot270_m): Delete. - (__arm_vcmlaq_rot90_m): Delete. - -2023-07-14 Christophe Lyon <christophe.lyon@linaro.org> - - * config/arm/arm_mve_builtins.def (vcmlaq_rot90_f) - (vcmlaq_rot270_f, vcmlaq_rot180_f, vcmlaq_f): Add "_f" suffix. - * config/arm/iterators.md (MVE_VCMLAQ_M): New. - (mve_insn): Add vcmla. - (rot): Add VCMLAQ_M_F, VCMLAQ_ROT90_M_F, VCMLAQ_ROT180_M_F, - VCMLAQ_ROT270_M_F. - (mve_rot): Add VCMLAQ_M_F, VCMLAQ_ROT90_M_F, VCMLAQ_ROT180_M_F, - VCMLAQ_ROT270_M_F. - * config/arm/mve.md (mve_vcmlaq<mve_rot><mode>): Rename into ... - (@mve_<mve_insn>q<mve_rot>_f<mode>): ... this. - (mve_vcmlaq_m_f<mode>, mve_vcmlaq_rot180_m_f<mode>) - (mve_vcmlaq_rot270_m_f<mode>, mve_vcmlaq_rot90_m_f<mode>): Merge - into ... - (@mve_<mve_insn>q<mve_rot>_m_f<mode>): ... this. - -2023-07-14 Christophe Lyon <christophe.lyon@linaro.org> - - * config/arm/arm-mve-builtins-base.cc (vcmulq, vcmulq_rot90) - (vcmulq_rot180, vcmulq_rot270): New. - * config/arm/arm-mve-builtins-base.def (vcmulq, vcmulq_rot90) - (vcmulq_rot180, vcmulq_rot270): New. - * config/arm/arm-mve-builtins-base.h: (vcmulq, vcmulq_rot90) - (vcmulq_rot180, vcmulq_rot270): New. - * config/arm/arm_mve.h (vcmulq_rot90): Delete. - (vcmulq_rot270): Delete. - (vcmulq_rot180): Delete. - (vcmulq): Delete. - (vcmulq_m): Delete. - (vcmulq_rot180_m): Delete. - (vcmulq_rot270_m): Delete. - (vcmulq_rot90_m): Delete. - (vcmulq_x): Delete. - (vcmulq_rot90_x): Delete. - (vcmulq_rot180_x): Delete. - (vcmulq_rot270_x): Delete. - (vcmulq_rot90_f16): Delete. - (vcmulq_rot270_f16): Delete. - (vcmulq_rot180_f16): Delete. - (vcmulq_f16): Delete. - (vcmulq_rot90_f32): Delete. - (vcmulq_rot270_f32): Delete. - (vcmulq_rot180_f32): Delete. - (vcmulq_f32): Delete. - (vcmulq_m_f32): Delete. - (vcmulq_m_f16): Delete. - (vcmulq_rot180_m_f32): Delete. - (vcmulq_rot180_m_f16): Delete. - (vcmulq_rot270_m_f32): Delete. - (vcmulq_rot270_m_f16): Delete. - (vcmulq_rot90_m_f32): Delete. - (vcmulq_rot90_m_f16): Delete. - (vcmulq_x_f16): Delete. - (vcmulq_x_f32): Delete. - (vcmulq_rot90_x_f16): Delete. - (vcmulq_rot90_x_f32): Delete. - (vcmulq_rot180_x_f16): Delete. - (vcmulq_rot180_x_f32): Delete. - (vcmulq_rot270_x_f16): Delete. - (vcmulq_rot270_x_f32): Delete. - (__arm_vcmulq_rot90_f16): Delete. - (__arm_vcmulq_rot270_f16): Delete. - (__arm_vcmulq_rot180_f16): Delete. - (__arm_vcmulq_f16): Delete. - (__arm_vcmulq_rot90_f32): Delete. - (__arm_vcmulq_rot270_f32): Delete. - (__arm_vcmulq_rot180_f32): Delete. - (__arm_vcmulq_f32): Delete. - (__arm_vcmulq_m_f32): Delete. - (__arm_vcmulq_m_f16): Delete. - (__arm_vcmulq_rot180_m_f32): Delete. - (__arm_vcmulq_rot180_m_f16): Delete. - (__arm_vcmulq_rot270_m_f32): Delete. - (__arm_vcmulq_rot270_m_f16): Delete. - (__arm_vcmulq_rot90_m_f32): Delete. - (__arm_vcmulq_rot90_m_f16): Delete. - (__arm_vcmulq_x_f16): Delete. - (__arm_vcmulq_x_f32): Delete. - (__arm_vcmulq_rot90_x_f16): Delete. - (__arm_vcmulq_rot90_x_f32): Delete. - (__arm_vcmulq_rot180_x_f16): Delete. - (__arm_vcmulq_rot180_x_f32): Delete. - (__arm_vcmulq_rot270_x_f16): Delete. - (__arm_vcmulq_rot270_x_f32): Delete. - (__arm_vcmulq_rot90): Delete. - (__arm_vcmulq_rot270): Delete. - (__arm_vcmulq_rot180): Delete. - (__arm_vcmulq): Delete. - (__arm_vcmulq_m): Delete. - (__arm_vcmulq_rot180_m): Delete. - (__arm_vcmulq_rot270_m): Delete. - (__arm_vcmulq_rot90_m): Delete. - (__arm_vcmulq_x): Delete. - (__arm_vcmulq_rot90_x): Delete. - (__arm_vcmulq_rot180_x): Delete. - (__arm_vcmulq_rot270_x): Delete. - -2023-07-14 Christophe Lyon <christophe.lyon@linaro.org> - - * config/arm/arm_mve_builtins.def (vcmulq_rot90_f) - (vcmulq_rot270_f, vcmulq_rot180_f, vcmulq_f): Add "_f" suffix. - * config/arm/iterators.md (MVE_VCADDQ_VCMULQ) - (MVE_VCADDQ_VCMULQ_M): New. - (mve_insn): Add vcmul. - (rot): Add VCMULQ_M_F, VCMULQ_ROT90_M_F, VCMULQ_ROT180_M_F, - VCMULQ_ROT270_M_F. - (VCMUL): Delete. - (mve_rot): Add VCMULQ_M_F, VCMULQ_ROT90_M_F, VCMULQ_ROT180_M_F, - VCMULQ_ROT270_M_F. - * config/arm/mve.md (mve_vcmulq<mve_rot><mode>): Merge into - @mve_<mve_insn>q<mve_rot>_f<mode>. - (mve_vcmulq_m_f<mode>, mve_vcmulq_rot180_m_f<mode>) - (mve_vcmulq_rot270_m_f<mode>, mve_vcmulq_rot90_m_f<mode>): Merge - into @mve_<mve_insn>q<mve_rot>_m_f<mode>. - -2023-07-14 Christophe Lyon <christophe.lyon@linaro.org> - - * config/arm/arm-mve-builtins-base.cc (vcaddq_rot90) - (vcaddq_rot270, vhcaddq_rot90, vhcaddq_rot270): New. - * config/arm/arm-mve-builtins-base.def (vcaddq_rot90) - (vcaddq_rot270, vhcaddq_rot90, vhcaddq_rot270): New. - * config/arm/arm-mve-builtins-base.h: (vcaddq_rot90) - (vcaddq_rot270, vhcaddq_rot90, vhcaddq_rot270): New. - * config/arm/arm-mve-builtins-functions.h (class - unspec_mve_function_exact_insn_rot): New. - * config/arm/arm_mve.h (vcaddq_rot90): Delete. - (vcaddq_rot270): Delete. - (vhcaddq_rot90): Delete. - (vhcaddq_rot270): Delete. - (vcaddq_rot270_m): Delete. - (vcaddq_rot90_m): Delete. - (vhcaddq_rot270_m): Delete. - (vhcaddq_rot90_m): Delete. - (vcaddq_rot90_x): Delete. - (vcaddq_rot270_x): Delete. - (vhcaddq_rot90_x): Delete. - (vhcaddq_rot270_x): Delete. - (vcaddq_rot90_u8): Delete. - (vcaddq_rot270_u8): Delete. - (vhcaddq_rot90_s8): Delete. - (vhcaddq_rot270_s8): Delete. - (vcaddq_rot90_s8): Delete. - (vcaddq_rot270_s8): Delete. - (vcaddq_rot90_u16): Delete. - (vcaddq_rot270_u16): Delete. - (vhcaddq_rot90_s16): Delete. - (vhcaddq_rot270_s16): Delete. - (vcaddq_rot90_s16): Delete. - (vcaddq_rot270_s16): Delete. - (vcaddq_rot90_u32): Delete. - (vcaddq_rot270_u32): Delete. - (vhcaddq_rot90_s32): Delete. - (vhcaddq_rot270_s32): Delete. - (vcaddq_rot90_s32): Delete. - (vcaddq_rot270_s32): Delete. - (vcaddq_rot90_f16): Delete. - (vcaddq_rot270_f16): Delete. - (vcaddq_rot90_f32): Delete. - (vcaddq_rot270_f32): Delete. - (vcaddq_rot270_m_s8): Delete. - (vcaddq_rot270_m_s32): Delete. - (vcaddq_rot270_m_s16): Delete. - (vcaddq_rot270_m_u8): Delete. - (vcaddq_rot270_m_u32): Delete. - (vcaddq_rot270_m_u16): Delete. - (vcaddq_rot90_m_s8): Delete. - (vcaddq_rot90_m_s32): Delete. - (vcaddq_rot90_m_s16): Delete. - (vcaddq_rot90_m_u8): Delete. - (vcaddq_rot90_m_u32): Delete. - (vcaddq_rot90_m_u16): Delete. - (vhcaddq_rot270_m_s8): Delete. - (vhcaddq_rot270_m_s32): Delete. - (vhcaddq_rot270_m_s16): Delete. - (vhcaddq_rot90_m_s8): Delete. - (vhcaddq_rot90_m_s32): Delete. - (vhcaddq_rot90_m_s16): Delete. - (vcaddq_rot270_m_f32): Delete. - (vcaddq_rot270_m_f16): Delete. - (vcaddq_rot90_m_f32): Delete. - (vcaddq_rot90_m_f16): Delete. - (vcaddq_rot90_x_s8): Delete. - (vcaddq_rot90_x_s16): Delete. - (vcaddq_rot90_x_s32): Delete. - (vcaddq_rot90_x_u8): Delete. - (vcaddq_rot90_x_u16): Delete. - (vcaddq_rot90_x_u32): Delete. - (vcaddq_rot270_x_s8): Delete. - (vcaddq_rot270_x_s16): Delete. - (vcaddq_rot270_x_s32): Delete. - (vcaddq_rot270_x_u8): Delete. - (vcaddq_rot270_x_u16): Delete. - (vcaddq_rot270_x_u32): Delete. - (vhcaddq_rot90_x_s8): Delete. - (vhcaddq_rot90_x_s16): Delete. - (vhcaddq_rot90_x_s32): Delete. - (vhcaddq_rot270_x_s8): Delete. - (vhcaddq_rot270_x_s16): Delete. - (vhcaddq_rot270_x_s32): Delete. - (vcaddq_rot90_x_f16): Delete. - (vcaddq_rot90_x_f32): Delete. - (vcaddq_rot270_x_f16): Delete. - (vcaddq_rot270_x_f32): Delete. - (__arm_vcaddq_rot90_u8): Delete. - (__arm_vcaddq_rot270_u8): Delete. - (__arm_vhcaddq_rot90_s8): Delete. - (__arm_vhcaddq_rot270_s8): Delete. - (__arm_vcaddq_rot90_s8): Delete. - (__arm_vcaddq_rot270_s8): Delete. - (__arm_vcaddq_rot90_u16): Delete. - (__arm_vcaddq_rot270_u16): Delete. - (__arm_vhcaddq_rot90_s16): Delete. - (__arm_vhcaddq_rot270_s16): Delete. - (__arm_vcaddq_rot90_s16): Delete. - (__arm_vcaddq_rot270_s16): Delete. - (__arm_vcaddq_rot90_u32): Delete. - (__arm_vcaddq_rot270_u32): Delete. - (__arm_vhcaddq_rot90_s32): Delete. - (__arm_vhcaddq_rot270_s32): Delete. - (__arm_vcaddq_rot90_s32): Delete. - (__arm_vcaddq_rot270_s32): Delete. - (__arm_vcaddq_rot270_m_s8): Delete. - (__arm_vcaddq_rot270_m_s32): Delete. - (__arm_vcaddq_rot270_m_s16): Delete. - (__arm_vcaddq_rot270_m_u8): Delete. - (__arm_vcaddq_rot270_m_u32): Delete. - (__arm_vcaddq_rot270_m_u16): Delete. - (__arm_vcaddq_rot90_m_s8): Delete. - (__arm_vcaddq_rot90_m_s32): Delete. - (__arm_vcaddq_rot90_m_s16): Delete. - (__arm_vcaddq_rot90_m_u8): Delete. - (__arm_vcaddq_rot90_m_u32): Delete. - (__arm_vcaddq_rot90_m_u16): Delete. - (__arm_vhcaddq_rot270_m_s8): Delete. - (__arm_vhcaddq_rot270_m_s32): Delete. - (__arm_vhcaddq_rot270_m_s16): Delete. - (__arm_vhcaddq_rot90_m_s8): Delete. - (__arm_vhcaddq_rot90_m_s32): Delete. - (__arm_vhcaddq_rot90_m_s16): Delete. - (__arm_vcaddq_rot90_x_s8): Delete. - (__arm_vcaddq_rot90_x_s16): Delete. - (__arm_vcaddq_rot90_x_s32): Delete. - (__arm_vcaddq_rot90_x_u8): Delete. - (__arm_vcaddq_rot90_x_u16): Delete. - (__arm_vcaddq_rot90_x_u32): Delete. - (__arm_vcaddq_rot270_x_s8): Delete. - (__arm_vcaddq_rot270_x_s16): Delete. - (__arm_vcaddq_rot270_x_s32): Delete. - (__arm_vcaddq_rot270_x_u8): Delete. - (__arm_vcaddq_rot270_x_u16): Delete. - (__arm_vcaddq_rot270_x_u32): Delete. - (__arm_vhcaddq_rot90_x_s8): Delete. - (__arm_vhcaddq_rot90_x_s16): Delete. - (__arm_vhcaddq_rot90_x_s32): Delete. - (__arm_vhcaddq_rot270_x_s8): Delete. - (__arm_vhcaddq_rot270_x_s16): Delete. - (__arm_vhcaddq_rot270_x_s32): Delete. - (__arm_vcaddq_rot90_f16): Delete. - (__arm_vcaddq_rot270_f16): Delete. - (__arm_vcaddq_rot90_f32): Delete. - (__arm_vcaddq_rot270_f32): Delete. - (__arm_vcaddq_rot270_m_f32): Delete. - (__arm_vcaddq_rot270_m_f16): Delete. - (__arm_vcaddq_rot90_m_f32): Delete. - (__arm_vcaddq_rot90_m_f16): Delete. - (__arm_vcaddq_rot90_x_f16): Delete. - (__arm_vcaddq_rot90_x_f32): Delete. - (__arm_vcaddq_rot270_x_f16): Delete. - (__arm_vcaddq_rot270_x_f32): Delete. - (__arm_vcaddq_rot90): Delete. - (__arm_vcaddq_rot270): Delete. - (__arm_vhcaddq_rot90): Delete. - (__arm_vhcaddq_rot270): Delete. - (__arm_vcaddq_rot270_m): Delete. - (__arm_vcaddq_rot90_m): Delete. - (__arm_vhcaddq_rot270_m): Delete. - (__arm_vhcaddq_rot90_m): Delete. - (__arm_vcaddq_rot90_x): Delete. - (__arm_vcaddq_rot270_x): Delete. - (__arm_vhcaddq_rot90_x): Delete. - (__arm_vhcaddq_rot270_x): Delete. - -2023-07-14 Christophe Lyon <christophe.lyon@linaro.org> - - * config/arm/arm_mve_builtins.def (vcaddq_rot90_, vcaddq_rot270_) - (vcaddq_rot90_f, vcaddq_rot90_f): Add "_" or "_f" suffix. - * config/arm/iterators.md (mve_insn): Add vcadd, vhcadd. - (isu): Add UNSPEC_VCADD90, UNSPEC_VCADD270, VCADDQ_ROT270_M_U, - VCADDQ_ROT270_M_S, VCADDQ_ROT90_M_U, VCADDQ_ROT90_M_S, - VHCADDQ_ROT90_M_S, VHCADDQ_ROT270_M_S, VHCADDQ_ROT90_S, - VHCADDQ_ROT270_S. - (rot): Add VCADDQ_ROT90_M_F, VCADDQ_ROT90_M_S, VCADDQ_ROT90_M_U, - VCADDQ_ROT270_M_F, VCADDQ_ROT270_M_S, VCADDQ_ROT270_M_U, - VHCADDQ_ROT90_S, VHCADDQ_ROT270_S, VHCADDQ_ROT90_M_S, - VHCADDQ_ROT270_M_S. - (mve_rot): Add VCADDQ_ROT90_M_F, VCADDQ_ROT90_M_S, - VCADDQ_ROT90_M_U, VCADDQ_ROT270_M_F, VCADDQ_ROT270_M_S, - VCADDQ_ROT270_M_U, VHCADDQ_ROT90_S, VHCADDQ_ROT270_S, - VHCADDQ_ROT90_M_S, VHCADDQ_ROT270_M_S. - (supf): Add VHCADDQ_ROT90_M_S, VHCADDQ_ROT270_M_S, - VHCADDQ_ROT90_S, VHCADDQ_ROT270_S, UNSPEC_VCADD90, - UNSPEC_VCADD270. - (VCADDQ_ROT270_M): Delete. - (VCADDQ_M_F VxCADDQ VxCADDQ_M): New. - (VCADDQ_ROT90_M): Delete. - * config/arm/mve.md (mve_vcaddq<mve_rot><mode>) - (mve_vhcaddq_rot270_s<mode>, mve_vhcaddq_rot90_s<mode>): Merge - into ... - (@mve_<mve_insn>q<mve_rot>_<supf><mode>): ... this. - (mve_vcaddq<mve_rot><mode>): Rename into ... - (@mve_<mve_insn>q<mve_rot>_f<mode>): ... this - (mve_vcaddq_rot270_m_<supf><mode>) - (mve_vcaddq_rot90_m_<supf><mode>, mve_vhcaddq_rot270_m_s<mode>) - (mve_vhcaddq_rot90_m_s<mode>): Merge into ... - (@mve_<mve_insn>q<mve_rot>_m_<supf><mode>): ... this. - (mve_vcaddq_rot270_m_f<mode>, mve_vcaddq_rot90_m_f<mode>): Merge - into ... - (@mve_<mve_insn>q<mve_rot>_m_f<mode>): ... this. - -2023-07-14 Roger Sayle <roger@nextmovesoftware.com> - - PR target/110588 - * config/i386/i386.md (*bt<mode>_setcqi): Prefer string form - preparation statement over braces for a single statement. - (*bt<mode>_setncqi): Likewise. - (*bt<mode>_setncqi_2): New define_insn_and_split. - -2023-07-14 Roger Sayle <roger@nextmovesoftware.com> - - * config/i386/i386-expand.cc (ix86_expand_move): Generalize special - case inserting of 64-bit values into a TImode register, to handle - both DImode and DFmode using either *insvti_lowpart_1 - or *isnvti_highpart_1. - -2023-07-14 Uros Bizjak <ubizjak@gmail.com> - - PR target/110206 - * fwprop.cc (contains_paradoxical_subreg_p): Move to ... - * rtlanal.cc (contains_paradoxical_subreg_p): ... here. - * rtlanal.h (contains_paradoxical_subreg_p): Add prototype. - * cprop.cc (try_replace_reg): Do not set REG_EQUAL note - when the original source contains a paradoxical subreg. - -2023-07-14 Jan Hubicka <jh@suse.cz> - - * passes.cc (execute_function_todo): Remove - TODO_rebuild_frequencies - * passes.def: Add rebuild_frequencies pass. - * predict.cc (estimate_bb_frequencies): Drop - force parameter. - (tree_estimate_probability): Update call of - estimate_bb_frequencies. - (rebuild_frequencies): Turn into a pass; verify CFG profile consistency - first and do not rebuild if not necessary. - (class pass_rebuild_frequencies): New. - (make_pass_rebuild_frequencies): New. - * profile-count.h: Add profile_count::very_large_p. - * tree-inline.cc (optimize_inline_calls): Do not return - TODO_rebuild_frequencies - * tree-pass.h (TODO_rebuild_frequencies): Remove. - (make_pass_rebuild_frequencies): Declare. - -2023-07-14 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/autovec.md (cond_len_fma<mode>): New pattern. - * config/riscv/riscv-protos.h (enum insn_type): New enum. - (expand_cond_len_ternop): New function. - * config/riscv/riscv-v.cc (emit_nonvlmax_fp_ternary_tu_insn): Ditto. - (expand_cond_len_ternop): Ditto. - -2023-07-14 Jose E. Marchesi <jose.marchesi@oracle.com> - - PR target/110657 - * config/bpf/bpf.md: Enable instruction scheduling. - -2023-07-14 Tamar Christina <tamar.christina@arm.com> - - PR tree-optimization/109154 - * tree-if-conv.cc (INCLUDE_ALGORITHM): Include. - (struct bb_predicate): Add no_predicate_stmts. - (set_bb_predicate): Increase predicate count. - (set_bb_predicate_gimplified_stmts): Conditionally initialize - no_predicate_stmts. - (get_bb_num_predicate_stmts): New. - (init_bb_predicate): Initialzie no_predicate_stmts. - (release_bb_predicate): Cleanup no_predicate_stmts. - (insert_gimplified_predicates): Preserve no_predicate_stmts. - -2023-07-14 Tamar Christina <tamar.christina@arm.com> - - PR tree-optimization/109154 - * tree-if-conv.cc (gen_simplified_condition, - gen_phi_nest_statement): New. - (gen_phi_arg_condition, predicate_scalar_phi): Use it. - -2023-07-14 Richard Biener <rguenther@suse.de> - - * gimple.h (gimple_phi_arg): New const overload. - (gimple_phi_arg_def): Make gimple arg const. - (gimple_phi_arg_def_from_edge): New inline function. - * tree-phinodes.h (gimple_phi_arg_imm_use_ptr_from_edge): - Likewise. - * tree-ssa-operands.h (PHI_ARG_DEF_FROM_EDGE): Direct to - new inline function. - (PHI_ARG_DEF_PTR_FROM_EDGE): Likewise. - -2023-07-14 Monk Chiang <monk.chiang@sifive.com> - - * common/config/riscv/riscv-common.cc: - (riscv_implied_info): Add zihintntl item. - (riscv_ext_version_table): Ditto. - (riscv_ext_flag_table): Ditto. - * config/riscv/riscv-opts.h (MASK_ZIHINTNTL): New macro. - (TARGET_ZIHINTNTL): Ditto. - -2023-07-14 Die Li <lidie@eswincomputing.com> - - * config/riscv/riscv.md: Remove redundant portion in and<mode>3. - -2023-07-14 Oleg Endo <olegendo@gcc.gnu.org> - - PR target/101469 - * config/sh/sh.md (peephole2): Handle case where eliminated reg is also - used by the address of the following memory operand. - -2023-07-13 Mikael Pettersson <mikpelinux@gmail.com> - - PR target/107841 - * config/pdp11/pdp11.cc (pdp11_expand_epilogue): Also - deallocate alloca-only frame. - -2023-07-13 Iain Sandoe <iain@sandoe.co.uk> - - PR target/110624 - * config/darwin.h (DARWIN_PLATFORM_ID): New. - (LINK_COMMAND_A): Use DARWIN_PLATFORM_ID to pass OS, OS version - and SDK data to the static linker. - -2023-07-13 Carl Love <cel@us.ibm.com> - - * config/rs6000/rs6000-builtins.def (__builtin_set_fpscr_rn): Update - built-in definition return type. - * config/rs6000/rs6000-c.cc (rs6000_target_modify_macros): Add check, - define __SET_FPSCR_RN_RETURNS_FPSCR__ macro. - * config/rs6000/rs6000.md (rs6000_set_fpscr_rn): Add return - argument to return FPSCR fields. - * doc/extend.texi (__builtin_set_fpscr_rn): Update description for - the return value. Add description for - __SET_FPSCR_RN_RETURNS_FPSCR__ macro. - -2023-07-13 Uros Bizjak <ubizjak@gmail.com> - - PR target/106966 - * config/alpha/alpha.cc (alpha_emit_set_long_const): - Always use DImode when constructing long const. - -2023-07-13 Uros Bizjak <ubizjak@gmail.com> - - * haifa-sched.cc: Change TRUE/FALSE to true/false. - * ira.cc: Ditto. - * lra-assigns.cc: Ditto. - * lra-constraints.cc: Ditto. - * sel-sched.cc: Ditto. - -2023-07-13 Andrew Pinski <apinski@marvell.com> - - PR tree-optimization/110293 - PR tree-optimization/110539 - * match.pd: Expand the `x != (typeof x)(x == 0)` - pattern to handle where the inner and outer comparsions - are either `!=` or `==` and handle other constants - than 0. - -2023-07-13 Vladimir N. Makarov <vmakarov@redhat.com> - - PR middle-end/109520 - * lra-int.h (lra_insn_recog_data): Add member asm_reloads_num. - (lra_asm_insn_error): New prototype. - * lra.cc: Include rtl_error.h. - (lra_set_insn_recog_data): Initialize asm_reloads_num. - (lra_asm_insn_error): New func whose code is taken from ... - * lra-assigns.cc (lra_split_hard_reg_for): ... here. Use lra_asm_insn_error. - * lra-constraints.cc (curr_insn_transform): Check reloads nummber for asm. - -2023-07-13 Ju-Zhe Zhong <juzhe.zhong@rivai.ai> - - * genmatch.cc (commutative_op): Add COND_LEN_* - * internal-fn.cc (first_commutative_argument): Ditto. - (CASE): Ditto. - (get_unconditional_internal_fn): Ditto. - (can_interpret_as_conditional_op_p): Ditto. - (internal_fn_len_index): Ditto. - * internal-fn.h (can_interpret_as_conditional_op_p): Ditt. - * tree-ssa-math-opts.cc (convert_mult_to_fma_1): Ditto. - (convert_mult_to_fma): Ditto. - (math_opts_dom_walker::after_dom_children): Ditto. - -2023-07-13 Pan Li <pan2.li@intel.com> - - * config/riscv/riscv.cc (vxrm_rtx): New static var. - (frm_rtx): Ditto. - (global_state_unknown_p): Removed. - (riscv_entity_mode_after): Removed. - (asm_insn_p): New function. - (vxrm_unknown_p): New function for fixed-point. - (riscv_vxrm_mode_after): Ditto. - (frm_unknown_dynamic_p): New function for floating-point. - (riscv_frm_mode_after): Ditto. - (riscv_mode_after): Leverage new functions. - -2023-07-13 Kewen Lin <linkw@linux.ibm.com> - - * tree-vect-stmts.cc (vect_model_load_cost): Remove. - (vectorizable_load): Adjust the cost handling on VMAT_CONTIGUOUS without - calling vect_model_load_cost. - -2023-07-13 Kewen Lin <linkw@linux.ibm.com> - - * tree-vect-stmts.cc (vect_model_load_cost): Assert this function only - handle memory_access_type VMAT_CONTIGUOUS, remove some - VMAT_CONTIGUOUS_PERMUTE related handlings. - (vectorizable_load): Adjust the cost handling on VMAT_CONTIGUOUS_PERMUTE - without calling vect_model_load_cost. - -2023-07-13 Kewen Lin <linkw@linux.ibm.com> - - * tree-vect-stmts.cc (vect_model_load_cost): Assert it won't get - VMAT_CONTIGUOUS_REVERSE any more. - (vectorizable_load): Adjust the costing handling on - VMAT_CONTIGUOUS_REVERSE without calling vect_model_load_cost. - -2023-07-13 Kewen Lin <linkw@linux.ibm.com> - - * tree-vect-stmts.cc (vectorizable_load): Adjust the cost handling on - VMAT_LOAD_STORE_LANES without calling vect_model_load_cost. - (vectorizable_load): Remove VMAT_LOAD_STORE_LANES related handling and - assert it will never get VMAT_LOAD_STORE_LANES. - -2023-07-13 Kewen Lin <linkw@linux.ibm.com> - - * tree-vect-stmts.cc (vectorizable_load): Adjust the cost handling on - VMAT_GATHER_SCATTER without calling vect_model_load_cost. - (vect_model_load_cost): Adjut the assertion on VMAT_GATHER_SCATTER, - remove VMAT_GATHER_SCATTER related handlings and the related parameter - gs_info. - -2023-07-13 Kewen Lin <linkw@linux.ibm.com> - - * tree-vect-stmts.cc (vectorizable_load): Adjust the cost handling - on VMAT_ELEMENTWISE and VMAT_STRIDED_SLP without calling - vect_model_load_cost. - (vect_model_load_cost): Assert it won't get VMAT_ELEMENTWISE and - VMAT_STRIDED_SLP any more, and remove their related handlings. - -2023-07-13 Kewen Lin <linkw@linux.ibm.com> - - * tree-vect-stmts.cc (hoist_defs_of_uses): Add one argument HOIST_P. - (vectorizable_load): Adjust the handling on VMAT_INVARIANT to respect - hoisting decision and without calling vect_model_load_cost. - (vect_model_load_cost): Assert it won't get VMAT_INVARIANT any more - and remove VMAT_INVARIANT related handlings. - -2023-07-13 Kewen Lin <linkw@linux.ibm.com> - - * tree-vect-stmts.cc (vect_build_gather_load_calls): Add the handlings - on costing with one extra argument cost_vec. - (vectorizable_load): Adjust the call to vect_build_gather_load_calls. - (vect_model_load_cost): Assert it won't get VMAT_GATHER_SCATTER with - gs_info.decl set any more. - -2023-07-13 Kewen Lin <linkw@linux.ibm.com> - - * tree-vect-stmts.cc (vectorizable_load): Move and duplicate the call - to vect_model_load_cost down to some different transform paths - according to the handlings of different vect_memory_access_types. - -2023-07-13 Kewen Lin <linkw@linux.ibm.com> - - * tree.h (wi::from_mpz): Hide from GENERATOR_FILE. - -2023-07-13 Ju-Zhe Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/autovec.md - (len_mask_gather_load<VNX1_QHSD:mode><VNX1_QHSDI:mode>): New pattern. - (len_mask_gather_load<VNX2_QHSD:mode><VNX2_QHSDI:mode>): Ditto. - (len_mask_gather_load<VNX4_QHSD:mode><VNX4_QHSDI:mode>): Ditto. - (len_mask_gather_load<VNX8_QHSD:mode><VNX8_QHSDI:mode>): Ditto. - (len_mask_gather_load<VNX16_QHSD:mode><VNX16_QHSDI:mode>): Ditto. - (len_mask_gather_load<VNX32_QHS:mode><VNX32_QHSI:mode>): Ditto. - (len_mask_gather_load<VNX64_QH:mode><VNX64_QHI:mode>): Ditto. - (len_mask_gather_load<mode><mode>): Ditto. - (len_mask_scatter_store<VNX1_QHSD:mode><VNX1_QHSDI:mode>): Ditto. - (len_mask_scatter_store<VNX2_QHSD:mode><VNX2_QHSDI:mode>): Ditto. - (len_mask_scatter_store<VNX4_QHSD:mode><VNX4_QHSDI:mode>): Ditto. - (len_mask_scatter_store<VNX8_QHSD:mode><VNX8_QHSDI:mode>): Ditto. - (len_mask_scatter_store<VNX16_QHSD:mode><VNX16_QHSDI:mode>): Ditto. - (len_mask_scatter_store<VNX32_QHS:mode><VNX32_QHSI:mode>): Ditto. - (len_mask_scatter_store<VNX64_QH:mode><VNX64_QHI:mode>): Ditto. - (len_mask_scatter_store<mode><mode>): Ditto. - * config/riscv/predicates.md (const_1_operand): New predicate. - (vector_gs_scale_operand_16): Ditto. - (vector_gs_scale_operand_32): Ditto. - (vector_gs_scale_operand_64): Ditto. - (vector_gs_extension_operand): Ditto. - (vector_gs_scale_operand_16_rv32): Ditto. - (vector_gs_scale_operand_32_rv32): Ditto. - * config/riscv/riscv-protos.h (enum insn_type): Add gather/scatter. - (expand_gather_scatter): New function. - * config/riscv/riscv-v.cc (gen_const_vector_dup): Add gather/scatter. - (emit_vlmax_masked_store_insn): New function. - (emit_nonvlmax_masked_store_insn): Ditto. - (modulo_sel_indices): Ditto. - (expand_vec_perm): Fix SLP for gather/scatter. - (prepare_gather_scatter): New function. - (expand_gather_scatter): Ditto. - * config/riscv/riscv.cc (riscv_legitimize_move): Fix bug of - (subreg:SI (DI CONST_POLY_INT)). - * config/riscv/vector-iterators.md: Add gather/scatter. - * config/riscv/vector.md (vec_duplicate<mode>): Use "@" instead. - (@vec_duplicate<mode>): Ditto. - (@pred_indexed_<order>store<VNX16_QHS:mode><VNX16_QHSDI:mode>): - Fix name. - (@pred_indexed_<order>store<VNX16_QHSD:mode><VNX16_QHSDI:mode>): Ditto. - -2023-07-12 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/autovec.md (cond_len_<optab><mode>): New pattern. - * config/riscv/riscv-protos.h (enum insn_type): New enum. - (expand_cond_len_binop): New function. - * config/riscv/riscv-v.cc (emit_nonvlmax_tu_insn): Ditto. - (emit_nonvlmax_fp_tu_insn): Ditto. - (need_fp_rounding_p): Ditto. - (expand_cond_len_binop): Ditto. - * config/riscv/riscv.cc (riscv_preferred_else_value): Ditto. - (TARGET_PREFERRED_ELSE_VALUE): New target hook. - -2023-07-12 Jan Hubicka <jh@suse.cz> - - * tree-cfg.cc (gimple_duplicate_sese_region): Rename to ... - (gimple_duplicate_seme_region): ... this; break out profile updating - code to ... - * tree-ssa-loop-ch.cc (update_profile_after_ch): ... here. - (ch_base::copy_headers): Update. - * tree-cfg.h (gimple_duplicate_sese_region): Rename to ... - (gimple_duplicate_seme_region): ... this. - -2023-07-12 Aldy Hernandez <aldyh@redhat.com> - - PR tree-optimization/107043 - * range-op.cc (operator_bitwise_and::op1_range): Update bitmask. - -2023-07-12 Aldy Hernandez <aldyh@redhat.com> - - PR tree-optimization/107053 - * gimple-range-op.cc (cfn_popcount): Use known set bits. - -2023-07-12 Uros Bizjak <ubizjak@gmail.com> - - * ira.cc (equiv_init_varies_p): Change return type from int to bool - and adjust function body accordingly. - (equiv_init_movable_p): Ditto. - (memref_used_between_p): Ditto. - * lra-constraints.cc (valid_address_p): Ditto. - -2023-07-12 Aldy Hernandez <aldyh@redhat.com> - - * range-op.cc (irange_to_masked_value): Remove. - (update_known_bitmask): Update irange value/mask pair instead of - only updating nonzero bits. - -2023-07-12 Jan Hubicka <jh@suse.cz> - - * tree-cfg.cc (gimple_duplicate_sese_region): Add ORIG_ELIMINATED_EDGES - parameter and rewrite profile updating code to handle edges elimination. - * tree-cfg.h (gimple_duplicate_sese_region): Update prototpe. - * tree-ssa-loop-ch.cc (loop_invariant_op_p): New function. - (loop_iv_derived_p): New function. - (should_duplicate_loop_header_p): Track invariant exit edges; fix handling - of PHIs and propagation of IV derived variables. - (ch_base::copy_headers): Pass around the invariant edges hash set. - -2023-07-12 Uros Bizjak <ubizjak@gmail.com> - - * ifcvt.cc (cond_exec_changed_p): Change variable to bool. - (last_active_insn): Change "skip_use_p" function argument to bool. - (noce_operand_ok): Change return type from int to bool. - (find_cond_trap): Ditto. - (block_jumps_and_fallthru_p): Change "fallthru_p" and - "jump_p" variables to bool. - (noce_find_if_block): Change return type from int to bool. - (cond_exec_find_if_block): Ditto. - (find_if_case_1): Ditto. - (find_if_case_2): Ditto. - (dead_or_predicable): Ditto. Change "reversep" function arg to bool. - (block_jumps_and_fallthru): Rename from block_jumps_and_fallthru_p. - (cond_exec_process_insns): Change return type from int to bool. - Change "mod_ok" function arg to bool. - (cond_exec_process_if_block): Change return type from int to bool. - Change "do_multiple_p" function arg to bool. Change "then_mod_ok" - variable to bool. - (noce_emit_store_flag): Change return type from int to bool. - Change "reversep" function arg to bool. Change "cond_complex" - variable to bool. - (noce_try_move): Change return type from int to bool. - (noce_try_ifelse_collapse): Ditto. - (noce_try_store_flag): Ditto. Change "reversep" variable to bool. - (noce_try_addcc): Change return type from int to bool. Change - "subtract" variable to bool. - (noce_try_store_flag_constants): Change return type from int to bool. - (noce_try_store_flag_mask): Ditto. Change "reversep" variable to bool. - (noce_try_cmove): Change return type from int to bool. - (noce_try_cmove_arith): Ditto. Change "is_mem" variable to bool. - (noce_try_minmax): Change return type from int to bool. Change - "unsignedp" variable to bool. - (noce_try_abs): Change return type from int to bool. Change - "negate" variable to bool. - (noce_try_sign_mask): Change return type from int to bool. - (noce_try_move): Ditto. - (noce_try_store_flag_constants): Ditto. - (noce_try_cmove): Ditto. - (noce_try_cmove_arith): Ditto. - (noce_try_minmax): Ditto. Change "unsignedp" variable to bool. - (noce_try_bitop): Change return type from int to bool. - (noce_operand_ok): Ditto. - (noce_convert_multiple_sets): Ditto. - (noce_convert_multiple_sets_1): Ditto. - (noce_process_if_block): Ditto. - (check_cond_move_block): Ditto. - (cond_move_process_if_block): Ditto. Change "success_p" - variable to bool. - (rest_of_handle_if_conversion): Change return type to void. - -2023-07-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai> - - * internal-fn.cc (FOR_EACH_CODE_MAPPING): Adapt for COND_LEN_* support. - (CASE): Ditto. - (get_conditional_len_internal_fn): New function. - * internal-fn.h (get_conditional_len_internal_fn): Ditto. - * tree-vect-stmts.cc (vectorizable_operation): Adapt for COND_LEN_* - support. - -2023-07-12 Roger Sayle <roger@nextmovesoftware.com> - - PR target/91681 - * config/i386/i386.md (*add<dwi>3_doubleword_concat_zext): Typo. - -2023-07-12 Roger Sayle <roger@nextmovesoftware.com> - - PR target/91681 - * config/i386/i386.md (*add<dwi>3_doubleword_concat_zext): New - define_insn_and_split derived from *add<dwi>3_doubleword_concat - and *add<dwi>3_doubleword_zext. - -2023-07-12 Roger Sayle <roger@nextmovesoftware.com> - - PR target/110598 - * config/i386/i386.md (peephole2): Check !reg_mentioned_p when - optimizing rega = 0; rega op= regb for op in [XOR,IOR,PLUS]. - (peephole2): Simplify rega = 0; rega op= rega cases. - -2023-07-12 Roger Sayle <roger@nextmovesoftware.com> - - * config/i386/i386-expand.cc (ix86_expand_int_compare): If - testing a TImode SUBREG of a 128-bit vector register against - zero, use a PTEST instruction instead of first moving it to - a pair of scalar registers. - -2023-07-12 Robin Dapp <rdapp@ventanamicro.com> - - * genopinit.cc (main): Adjust maximal number of optabs and - machine modes. - * gensupport.cc (find_optab): Shift optab by 20 and mode by - 10 bits. - * optabs-query.h (optab_handler): Ditto. - (convert_optab_handler): Ditto. - -2023-07-12 Richard Biener <rguenther@suse.de> - - PR tree-optimization/110630 - * tree-vect-slp.cc (vect_add_slp_permutation): New - offset parameter, honor that for the extract code generation. - (vectorizable_slp_permutation_1): Handle offsetted identities. - -2023-07-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/autovec.md (smul<mode>3_highpart): New pattern. - (umul<mode>3_highpart): Ditto. - -2023-07-12 Jan Beulich <jbeulich@suse.com> - - * config/i386/i386.md (extendbfsf2_1): Add new AVX512F - alternative. Adjust original last alternative's "prefix" - attribute to maybe_evex. - -2023-07-12 Jan Beulich <jbeulich@suse.com> - - * config/i386/sse.md (vec_dupv4sf): Make first alternative use - vbroadcastss for AVX2. New AVX512F alternative. - (*vec_dupv4si): New AVX2 and AVX512F alternatives using - vpbroadcastd. Replace sselog1 by sseshuf1 in "type" attribute. - -2023-07-12 Christoph Müllner <christoph.muellner@vrull.eu> - - * config/riscv/peephole.md: Remove XThead* peephole passes. - * config/riscv/thead.md: Include thead-peephole.md. - * config/riscv/thead-peephole.md: New file. - -2023-07-12 Christoph Müllner <christoph.muellner@vrull.eu> - - * config/riscv/riscv-protos.h (riscv_regno_ok_for_index_p): - New prototype. - (riscv_index_reg_class): Likewise. - * config/riscv/riscv.cc (riscv_regno_ok_for_index_p): New function. - (riscv_index_reg_class): New function. - * config/riscv/riscv.h (INDEX_REG_CLASS): Call new function - riscv_index_reg_class(). - (REGNO_OK_FOR_INDEX_P): Call new function - riscv_regno_ok_for_index_p(). - -2023-07-12 Christoph Müllner <christoph.muellner@vrull.eu> - - * config/riscv/riscv-protos.h (enum riscv_address_type): - New location of type definition. - (struct riscv_address_info): Likewise. - * config/riscv/riscv.cc (enum riscv_address_type): - Old location of type definition. - (struct riscv_address_info): Likewise. - -2023-07-12 Christoph Müllner <christoph.muellner@vrull.eu> - - * config/riscv/riscv.h (Xmode): New macro. - -2023-07-12 Christoph Müllner <christoph.muellner@vrull.eu> - - * config/riscv/riscv.cc (riscv_print_operand_address): Use - output_addr_const rather than riscv_print_operand. - -2023-07-12 Christoph Müllner <christoph.muellner@vrull.eu> - - * config/riscv/thead.md: Adjust constraints of th_addsl. - -2023-07-12 Christoph Müllner <christoph.muellner@vrull.eu> - - * config/riscv/thead.cc (th_mempair_operands_p): - Fix documentation of th_mempair_order_operands(). - -2023-07-12 Christoph Müllner <christoph.muellner@vrull.eu> - - * config/riscv/thead.cc (th_mempair_save_regs): - Emit REG_FRAME_RELATED_EXPR notes in prologue. - -2023-07-12 Christoph Müllner <christoph.muellner@vrull.eu> - - * config/riscv/riscv.md: No base-ISA extension splitter for XThead*. - * config/riscv/thead.md (*extend<SHORT:mode><SUPERQI:mode>2_th_ext): - New XThead extension INSN. - (*zero_extendsidi2_th_extu): New XThead extension INSN. - (*zero_extendhi<GPR:mode>2_th_extu): New XThead extension INSN. - -2023-07-12 liuhongt <hongtao.liu@intel.com> - - PR target/110438 - PR target/110202 - * config/i386/predicates.md - (int_float_vector_all_ones_operand): New predicate. - * config/i386/sse.md (*vmov<mode>_constm1_pternlog_false_dep): New - define_insn. - (*<avx512>_cvtmask2<ssemodesuffix><mode>_pternlog_false_dep): - Ditto. - (*<avx512>_cvtmask2<ssemodesuffix><mode>_pternlog_false_dep): - Ditto. - (*<avx512>_cvtmask2<ssemodesuffix><mode>): Adjust to - define_insn_and_split to avoid false dependence. - (*<avx512>_cvtmask2<ssemodesuffix><mode>): Ditto. - (<mask_codefor>one_cmpl<mode>2<mask_name>): Adjust constraint - of operands 1 to '0' to avoid false dependence. - (*andnot<mode>3): Ditto. - (iornot<mode>3): Ditto. - (*<nlogic><mode>3): Ditto. - -2023-07-12 Mo, Zewei <zewei.mo@intel.com> - - * common/config/i386/cpuinfo.h - (get_intel_cpu): Handle Granite Rapids D. - * common/config/i386/i386-common.cc: - (processor_alias_table): Add graniterapids-d. - * common/config/i386/i386-cpuinfo.h - (enum processor_subtypes): Add INTEL_COREI7_GRANITERAPIDS_D. - * config.gcc: Add -march=graniterapids-d. - * config/i386/driver-i386.cc (host_detect_local_cpu): - Handle graniterapids-d. - * config/i386/i386.h: (PTA_GRANITERAPIDS_D): New. - * doc/extend.texi: Add graniterapids-d. - * doc/invoke.texi: Ditto. - -2023-07-12 Haochen Jiang <haochen.jiang@intel.com> - - * config/i386/i386-builtins.cc (ix86_init_mmx_sse_builtins): - Add OPTION_MASK_ISA_AVX512VL. - * config/i386/i386-expand.cc (ix86_check_builtin_isa_match): - Ditto. - -2023-07-11 Ju-Zhe Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv-protos.h (enum insn_type): Add vcompress optimization. - * config/riscv/riscv-v.cc (emit_vlmax_compress_insn): Ditto. - (shuffle_compress_patterns): Ditto. - (expand_vec_perm_const_1): Ditto. - -2023-07-11 Uros Bizjak <ubizjak@gmail.com> - - * cfghooks.cc (verify_flow_info): Change "err" variable to bool. - * cfghooks.h (struct cfg_hooks): Change return type of - verify_flow_info from integer to bool. - * cfgrtl.cc (can_delete_note_p): Change return type from int to bool. - (can_delete_label_p): Ditto. - (rtl_verify_flow_info): Change return type from int to bool - and adjust function body accordingly. Change "err" variable to bool. - (rtl_verify_flow_info_1): Ditto. - (free_bb_for_insn): Change return type to void. - (rtl_merge_blocks): Change "b_empty" variable to bool. - (try_redirect_by_replacing_jump): Change "fallthru" variable to bool. - (verify_hot_cold_block_grouping): Change return type from int to bool. - Change "err" variable to bool. - (rtl_verify_edges): Ditto. - (rtl_verify_bb_insns): Ditto. - (rtl_verify_bb_pointers): Ditto. - (rtl_verify_bb_insn_chain): Ditto. - (rtl_verify_fallthru): Ditto. - (rtl_verify_bb_layout): Ditto. - (purge_all_dead_edges): Change "purged" variable to bool. - * cfgrtl.h (free_bb_for_insn): Change return type from int to void. - * postreload-gcse.cc (expr_hasher::equal): Change "equiv_p" to bool. - (load_killed_in_block_p): Change return type from int to bool - and adjust function body accordingly. - (oprs_unchanged_p): Return true/false. - (rest_of_handle_gcse2): Change return type to void. - * tree-cfg.cc (gimple_verify_flow_info): Change return type from - int to bool. Change "err" variable to bool. - -2023-07-11 Gaius Mulley <gaiusmod2@gmail.com> - - * doc/gm2.texi (-Wuninit-variable-checking=) New item. - -2023-07-11 Ju-Zhe Zhong <juzhe.zhong@rivai.ai> - - * doc/md.texi: Add COND_LEN_* operations for loop control with length. - * internal-fn.cc (cond_len_unary_direct): Ditto. - (cond_len_binary_direct): Ditto. - (cond_len_ternary_direct): Ditto. - (expand_cond_len_unary_optab_fn): Ditto. - (expand_cond_len_binary_optab_fn): Ditto. - (expand_cond_len_ternary_optab_fn): Ditto. - (direct_cond_len_unary_optab_supported_p): Ditto. - (direct_cond_len_binary_optab_supported_p): Ditto. - (direct_cond_len_ternary_optab_supported_p): Ditto. - * internal-fn.def (COND_LEN_ADD): Ditto. - (COND_LEN_SUB): Ditto. - (COND_LEN_MUL): Ditto. - (COND_LEN_DIV): Ditto. - (COND_LEN_MOD): Ditto. - (COND_LEN_RDIV): Ditto. - (COND_LEN_MIN): Ditto. - (COND_LEN_MAX): Ditto. - (COND_LEN_FMIN): Ditto. - (COND_LEN_FMAX): Ditto. - (COND_LEN_AND): Ditto. - (COND_LEN_IOR): Ditto. - (COND_LEN_XOR): Ditto. - (COND_LEN_SHL): Ditto. - (COND_LEN_SHR): Ditto. - (COND_LEN_FMA): Ditto. - (COND_LEN_FMS): Ditto. - (COND_LEN_FNMA): Ditto. - (COND_LEN_FNMS): Ditto. - (COND_LEN_NEG): Ditto. - * optabs.def (OPTAB_D): Ditto. - -2023-07-11 Richard Biener <rguenther@suse.de> - - PR tree-optimization/110614 - * tree-vect-data-refs.cc (vect_supportable_dr_alignment): - SLP splats are not suitable for re-align ops. - -2023-07-10 Peter Bergner <bergner@linux.ibm.com> - - * config/rs6000/predicates.md (quad_memory_operand): Remove redundant - MEM_P usage. - (vsx_quad_dform_memory_operand): Likewise. - -2023-07-10 Uros Bizjak <ubizjak@gmail.com> - - * reorg.cc (stop_search_p): Change return type from int to bool - and adjust function body accordingly. - (resource_conflicts_p): Ditto. - (insn_references_resource_p): Change return type from int to bool. - (insn_sets_resource_p): Ditto. - (redirect_with_delay_slots_safe_p): Ditto. - (condition_dominates_p): Change return type from int to bool - and adjust function body accordingly. - (redirect_with_delay_list_safe_p): Ditto. - (check_annul_list_true_false): Ditto. Change "annul_true_p" - function argument to bool. - (steal_delay_list_from_target): Change "pannul_p" function - argument to bool pointer. Change "must_annul" and "used_annul" - variables from int to bool. - (steal_delay_list_from_fallthrough): Ditto. - (own_thread_p): Change return type from int to bool and adjust - function body accordingly. Change "allow_fallthrough" function - argument to bool. - (reorg_redirect_jump): Change return type from int to bool. - (fill_simple_delay_slots): Change "non_jumps_p" function - argument from int to bool. Change "maybe_never" varible to bool. - (fill_slots_from_thread): Change "likely", "thread_if_true" and - "own_thread" function arguments to bool. Change "lose" and - "must_annul" variables to bool. - (delete_from_delay_slot): Change "had_barrier" variable to bool. - (try_merge_delay_insns): Change "annul_p" variable to bool. - (fill_eager_delay_slots): Change "own_target" and "own_fallthrouhg" - variables to bool. - (rest_of_handle_delay_slots): Change return type from int to void - and adjust function body accordingly. - -2023-07-10 Kito Cheng <kito.cheng@sifive.com> - - * doc/extend.texi (RISC-V Operand Modifiers): New. - -2023-07-10 Ju-Zhe Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv-vsetvl.cc (add_label_notes): Remove it. - (insert_insn_end_basic_block): Ditto. - (pass_vsetvl::commit_vsetvls): Adapt for new helper function. - * gcse.cc (insert_insn_end_basic_block): Export as global function. - * gcse.h (insert_insn_end_basic_block): Ditto. - -2023-07-10 Christophe Lyon <christophe.lyon@linaro.org> - - PR target/110268 - * config/arm/arm-builtins.cc (arm_init_mve_builtins): Handle LTO. - (arm_builtin_decl): Hahndle MVE builtins. - * config/arm/arm-mve-builtins.cc (builtin_decl): New function. - (add_unique_function): Fix handling of - __ARM_MVE_PRESERVE_USER_NAMESPACE. - (add_overloaded_function): Likewise. - * config/arm/arm-protos.h (builtin_decl): New declaration. - -2023-07-10 Christophe Lyon <christophe.lyon@linaro.org> - - * doc/sourcebuild.texi (arm_v8_1m_main_cde_mve_fp): Document. - -2023-07-10 Xi Ruoyao <xry111@xry111.site> - - PR tree-optimization/110557 - * tree-vect-patterns.cc (vect_recog_bitfield_ref_pattern): - Ensure the output sign-extended if necessary. - -2023-07-10 Roger Sayle <roger@nextmovesoftware.com> - - * config/i386/i386.md (peephole2): Transform xchg insn with a - REG_UNUSED note to a (simple) move. - (*insvti_lowpart_1): New define_insn_and_split. - (*insvdi_lowpart_1): Likewise. - -2023-07-10 Roger Sayle <roger@nextmovesoftware.com> - - * config/i386/i386-features.cc (compute_convert_gain): Tweak - gains/costs for ROTATE/ROTATERT by integer constant on AVX512VL. - (general_scalar_chain::convert_rotate): On TARGET_AVX512F generate - avx512vl_rolv2di or avx412vl_rolv4si when appropriate. - -2023-07-10 liuhongt <hongtao.liu@intel.com> - - PR target/110170 - * config/i386/i386.md (*ieee_max<mode>3_1): New pre_reload - splitter to detect fp max pattern. - (*ieee_min<mode>3_1): Ditto, but for fp min pattern. - -2023-07-09 Jan Hubicka <jh@suse.cz> - - * cfg.cc (check_bb_profile): Dump counts with relative frequency. - (dump_edge_info): Likewise. - (dump_bb_info): Likewise. - * profile-count.cc (profile_count::dump): Add comma between quality and - freq. - -2023-07-08 Jan Hubicka <jh@suse.cz> - - PR tree-optimization/110600 - * cfgloopmanip.cc (scale_loop_profile): Add mising profile_dump check. - -2023-07-08 Jan Hubicka <jh@suse.cz> - - PR middle-end/110590 - * cfgloopmanip.cc (scale_loop_profile): Avoid scaling exits within - inner loops and be more careful about inconsistent profiles. - (duplicate_loop_body_to_header_edge): Fix profile update when eliminated - exit is followed by other exit. - -2023-07-08 Uros Bizjak <ubizjak@gmail.com> - - * cprop.cc (reg_available_p): Change return type from int to bool. - (reg_not_set_p): Ditto. - (try_replace_reg): Ditto. Change "success" variable to bool. - (cprop_jump): Change return type from int to void - and adjust function body accordingly. - (constprop_register): Ditto. - (cprop_insn): Ditto. Change "changed" variable to bool. - (local_cprop_pass): Change return type from int to void - and adjust function body accordingly. - (bypass_block): Ditto. Change "change", "may_be_loop_header" - and "removed_p" variables to bool. - (bypass_conditional_jumps): Change return type from int to void - and adjust function body accordingly. Change "changed" - variable to bool. - (one_cprop_pass): Ditto. - -2023-07-08 Uros Bizjak <ubizjak@gmail.com> - - * gcse.cc (expr_equiv_p): Change return type from int to bool. - (oprs_unchanged_p): Change return type from int to void - and adjust function body accordingly. - (oprs_anticipatable_p): Ditto. - (oprs_available_p): Ditto. - (insert_expr_in_table): Ditto. Change "antic_p" and "avail_p" - arguments to bool. Change "found" variable to bool. - (load_killed_in_block_p): Change return type from int to void and - adjust function body accordingly. Change "avail_p" argument to bool. - (pre_expr_reaches_here_p): Change return type from int to void - and adjust function body accordingly. - (pre_delete): Ditto. Change "changed" variable to bool. - (pre_gcse): Change return type from int to void - and adjust function body accordingly. Change "did_insert" and - "changed" variables to bool. - (one_pre_gcse_pass): Change return type from int to void - and adjust function body accordingly. Change "changed" variable - to bool. - (should_hoist_expr_to_dom): Change return type from int to void - and adjust function body accordingly. Change - "visited_allocated_locally" variable to bool. - (hoist_code): Change return type from int to void and adjust - function body accordingly. Change "changed" variable to bool. - (one_code_hoisting_pass): Ditto. - (pre_edge_insert): Change return type from int to void and adjust - function body accordingly. Change "did_insert" variable to bool. - (pre_expr_reaches_here_p_work): Change return type from int to void - and adjust function body accordingly. - (simple_mem): Ditto. - (want_to_gcse_p): Change return type from int to void - and adjust function body accordingly. - (can_assign_to_reg_without_clobbers_p): Update function body - for bool return type. - (hash_scan_set): Change "antic_p" and "avail_p" variables to bool. - (pre_insert_copies): Change "added_copy" variable to bool. - -2023-07-08 Jonathan Wakely <jwakely@redhat.com> - - PR c++/110595 - PR c++/110596 - * doc/invoke.texi (Warning Options): Fix typos. - -2023-07-07 Jan Hubicka <jh@suse.cz> - - * profile-count.cc (profile_count::dump): Add FUN - parameter; print relative frequency. - (profile_count::debug): Update. - * profile-count.h (profile_count::dump): Update - prototype. - -2023-07-07 Roger Sayle <roger@nextmovesoftware.com> - - PR target/43644 - PR target/110533 - * config/i386/i386-expand.cc (ix86_expand_move): Convert SETs of - TImode destinations from paradoxical SUBREGs (setting the lowpart) - into explicit zero extensions. Use *insvti_highpart_1 instruction - to set the highpart of a TImode destination. - -2023-07-07 Jan Hubicka <jh@suse.cz> - - * predict.cc (force_edge_cold): Use - set_edge_probability_and_rescale_others; improve dumps. - -2023-07-07 Jan Hubicka <jh@suse.cz> - - * cfgloopmanip.cc (scale_loop_profile): Fix computation of count_in and scaling blocks - after exit. - * tree-vect-loop-manip.cc (vect_do_peeling): Scale loop profile of the epilogue if bound - is known. - -2023-07-07 Juergen Christ <jchrist@linux.ibm.com> - - * config/s390/s390.cc (vec_init): Fix default case - -2023-07-07 Vladimir N. Makarov <vmakarov@redhat.com> - - * lra-assigns.cc (assign_by_spills): Add reload insns involving - reload pseudos with non-refined class to be processed on the next - sub-pass. - * lra-constraints.cc (enough_allocatable_hard_regs_p): New func. - (in_class_p): Use it. - (print_curr_insn_alt): New func. - (process_alt_operands): Use it. Improve debug info. - (curr_insn_transform): Use print_curr_insn_alt. Refine reload - pseudo class if it is not refined yet. - -2023-07-07 Aldy Hernandez <aldyh@redhat.com> - - * value-range.cc (irange::get_bitmask_from_range): Return all the - known bits for a singleton. - (irange::set_range_from_bitmask): Set a range of a singleton when - all bits are known. - -2023-07-07 Aldy Hernandez <aldyh@redhat.com> - - * value-range.cc (irange::intersect): Leave normalization to - caller. - -2023-07-07 Aldy Hernandez <aldyh@redhat.com> - - * data-streamer-in.cc (streamer_read_value_range): Adjust for - value/mask. - * data-streamer-out.cc (streamer_write_vrange): Same. - * range-op.cc (operator_cast::fold_range): Same. - * value-range-pretty-print.cc - (vrange_printer::print_irange_bitmasks): Same. - * value-range-storage.cc (irange_storage::write_lengths_address): - Same. - (irange_storage::set_irange): Same. - (irange_storage::get_irange): Same. - (irange_storage::size): Same. - (irange_storage::dump): Same. - * value-range-storage.h: Same. - * value-range.cc (debug): New. - (irange_bitmask::dump): New. - (add_vrange): Adjust for value/mask. - (irange::operator=): Same. - (irange::set): Same. - (irange::verify_range): Same. - (irange::operator==): Same. - (irange::contains_p): Same. - (irange::irange_single_pair_union): Same. - (irange::union_): Same. - (irange::intersect): Same. - (irange::invert): Same. - (irange::get_nonzero_bits_from_range): Rename to... - (irange::get_bitmask_from_range): ...this. - (irange::set_range_from_nonzero_bits): Rename to... - (irange::set_range_from_bitmask): ...this. - (irange::set_nonzero_bits): Rename to... - (irange::update_bitmask): ...this. - (irange::get_nonzero_bits): Rename to... - (irange::get_bitmask): ...this. - (irange::intersect_nonzero_bits): Rename to... - (irange::intersect_bitmask): ...this. - (irange::union_nonzero_bits): Rename to... - (irange::union_bitmask): ...this. - (irange_bitmask::verify_mask): New. - * value-range.h (class irange_bitmask): New. - (irange_bitmask::set_unknown): New. - (irange_bitmask::unknown_p): New. - (irange_bitmask::irange_bitmask): New. - (irange_bitmask::get_precision): New. - (irange_bitmask::get_nonzero_bits): New. - (irange_bitmask::set_nonzero_bits): New. - (irange_bitmask::operator==): New. - (irange_bitmask::union_): New. - (irange_bitmask::intersect): New. - (class irange): Friend vrange_printer. - (irange::varying_compatible_p): Adjust for bitmask. - (irange::set_varying): Same. - (irange::set_nonzero): Same. - -2023-07-07 Jan Beulich <jbeulich@suse.com> - - * config/i386/sse.md (*vec_extractv2ti): Drop g modifiers. - -2023-07-07 Jan Beulich <jbeulich@suse.com> - - * config/i386/sse.md (@vec_extract_hi_<mode>): Drop last - alternative. Switch new last alternative's "isa" attribute to - "avx512vl". - (vec_extract_hi_v32qi): Likewise. - -2023-07-07 Pan Li <pan2.li@intel.com> - Robin Dapp <rdapp@ventanamicro.com> - - * config/riscv/riscv.cc (riscv_emit_mode_set): Avoid emit insn - when FRM_MODE_DYN. - (riscv_mode_entry): Take FRM_MODE_DYN as entry mode. - (riscv_mode_exit): Likewise for exit mode. - (riscv_mode_needed): Likewise for needed mode. - (riscv_mode_after): Likewise for after mode. - -2023-07-07 Pan Li <pan2.li@intel.com> - - * config/riscv/vector.md: Fix typo. - -2023-07-06 Jan Hubicka <jh@suse.cz> - - PR middle-end/25623 - * tree-ssa-loop-ch.cc (ch_base::copy_headers): Scale loop frequency to maximal number - of iterations determined. - * tree-ssa-loop-ivcanon.cc (try_unroll_loop_completely): Likewise. - -2023-07-06 Jan Hubicka <jh@suse.cz> - - * cfgloopmanip.cc (scale_loop_profile): Rewrite exit edge - probability update to be safe on loops with subloops. - Make bound parameter to be iteration bound. - * tree-ssa-loop-ivcanon.cc (try_peel_loop): Update call - of scale_loop_profile. - * tree-vect-loop-manip.cc (vect_do_peeling): Likewise. - -2023-07-06 Hao Liu OS <hliu@os.amperecomputing.com> - - PR tree-optimization/110449 - * tree-vect-loop.cc (vectorizable_induction): use vec_n to replace - vec_loop for the unrolled loop. - -2023-07-06 Jan Hubicka <jh@suse.cz> - - * cfg.cc (set_edge_probability_and_rescale_others): New function. - (update_bb_profile_for_threading): Use it; simplify the rest. - * cfg.h (set_edge_probability_and_rescale_others): Declare. - * profile-count.h (profile_probability::apply_scale): New. - -2023-07-06 Claudiu Zissulescu <claziss@gmail.com> - - * doc/extend.texi (ARC Built-in Functions): Update documentation - with missing builtins. - -2023-07-06 Richard Biener <rguenther@suse.de> - - PR tree-optimization/110556 - * tree-ssa-tail-merge.cc (gimple_equal_p): Check - assign code and all operands of non-stores. - -2023-07-06 Richard Biener <rguenther@suse.de> - - PR tree-optimization/110563 - * tree-vectorizer.h (vect_determine_partial_vectors_and_peeling): - Remove second argument. - * tree-vect-loop.cc (vect_determine_partial_vectors_and_peeling): - Remove for_epilogue_p argument. Merge assert ... - (vect_analyze_loop_2): ... with check done before determining - partial vectors by moving it after. - * tree-vect-loop-manip.cc (vect_do_peeling): Adjust. - -2023-07-06 Thomas Schwinge <thomas@codesourcery.com> - - * ggc-common.cc (gt_pch_note_reorder, gt_pch_save): Tighten up a - few things re 'reorder' option and strings. - * stringpool.cc (gt_pch_p_S): This is now 'gcc_unreachable'. - -2023-07-06 Thomas Schwinge <thomas@codesourcery.com> - - * gengtype-parse.cc: Clean up obsolete parametrized structs - remnants. - * gengtype.cc: Likewise. - * gengtype.h: Likewise. - -2023-07-06 Thomas Schwinge <thomas@codesourcery.com> - - * gengtype.cc (struct walk_type_data): Remove 'needs_cast_p'. - Adjust all users. - -2023-07-06 Thomas Schwinge <thomas@codesourcery.com> - - * gengtype-parse.cc (token_names): Add '"user"'. - * gengtype.h (gty_token): Add 'UNUSED_PARAM_IS' for use with - 'FIRST_TOKEN_WITH_VALUE'. - -2023-07-06 Thomas Schwinge <thomas@codesourcery.com> - - * doc/gty.texi (GTY Options) <string_length>: Enhance. - -2023-07-06 Thomas Schwinge <thomas@codesourcery.com> - - * gengtype.cc (write_root, write_roots): Explicitly reject - 'string_length' option. - * doc/gty.texi (GTY Options) <string_length>: Document. - -2023-07-06 Thomas Schwinge <thomas@codesourcery.com> - - * ggc-internal.h (ggc_pch_count_object, ggc_pch_alloc_object) - (ggc_pch_write_object): Remove 'bool is_string' argument. - * ggc-common.cc: Adjust. - * ggc-page.cc: Likewise. - -2023-07-06 Roger Sayle <roger@nextmovesoftware.com> - - * dwarf2out.cc (mem_loc_descriptor): Handle COPYSIGN. - -2023-07-06 Hongyu Wang <hongyu.wang@intel.com> - - * doc/extend.texi: Move x86 inlining rule to a new subsubsection - and add description for inling of function with arch and tune - attributes. - -2023-07-06 Richard Biener <rguenther@suse.de> - - PR tree-optimization/110515 - * tree-ssa-pre.cc (compute_avail): Make code dealing - with hoisting loads with different alias-sets more - robust. - -2023-07-06 Ju-Zhe Zhong <juzhe.zhong@rivai.ai> - - * tree-vect-stmts.cc (vect_get_strided_load_store_ops): Fix ICE. - -2023-07-06 Hongyu Wang <hongyu.wang@intel.com> - - * config/i386/i386.cc (ix86_can_inline_p): If callee has - default arch=x86-64 and tune=generic, do not block the - inlining to its caller. Also allow callee with different - arch= to be inlined if it has always_inline attribute and - it's ISA is subset of caller's. - -2023-07-06 liuhongt <hongtao.liu@intel.com> - - * config/i386/i386.cc (ix86_rtx_costs): Adjust rtx_cost for - DF/SFmode AND/IOR/XOR/ANDN operations. - -2023-07-06 Andrew Pinski <apinski@marvell.com> - - PR middle-end/110554 - * tree-vect-generic.cc (expand_vector_condition): For comparisons, - just build using boolean_type_node instead of the cond_type. - For non-comparisons/non-scalar-bitmask, build a ` != 0` gimple - that will feed into the COND_EXPR. - -2023-07-06 liuhongt <hongtao.liu@intel.com> - - PR target/110170 - * config/i386/i386.md (movdf_internal): Disparage slightly for - 2 alternatives (r,v) and (v,r) by adding constraint modifier - '?'. - -2023-07-06 Jeevitha Palanisamy <jeevitha@linux.ibm.com> - - PR target/106907 - * config/rs6000/rs6000.cc (rs6000_expand_vector_extract): Remove redundant - initialization of new_addr. - -2023-07-06 Hao Liu <hliu@os.amperecomputing.com> - - PR tree-optimization/110474 - * tree-vect-loop.cc (vect_analyze_loop_2): unscale the VF by suggested - unroll factor while selecting the epilog vect loop VF. - -2023-07-05 Andrew MacLeod <amacleod@redhat.com> - - * gimple-range-gori.cc (compute_operand_range): Convert to a tail - call. - -2023-07-05 Andrew MacLeod <amacleod@redhat.com> - - * gimple-range-gori.cc (compute_operand_range): After calling - compute_operand2_range, recursively call self if needed. - (compute_operand2_range): Turn into a leaf function. - (gori_compute::compute_operand1_and_operand2_range): Finish - operand2 calculation. - * gimple-range-gori.h (compute_operand2_range): Remove name param. - -2023-07-05 Andrew MacLeod <amacleod@redhat.com> - - * gimple-range-gori.cc (compute_operand_range): After calling - compute_operand1_range, recursively call self if needed. - (compute_operand1_range): Turn into a leaf function. - (gori_compute::compute_operand1_and_operand2_range): Finish - operand1 calculation. - * gimple-range-gori.h (compute_operand1_range): Remove name param. - -2023-07-05 Andrew MacLeod <amacleod@redhat.com> - - * gimple-range-gori.cc (compute_operand_range): Check for - operand interdependence when both op1 and op2 are computed. - (compute_operand1_and_operand2_range): No checks required now. - -2023-07-05 Andrew MacLeod <amacleod@redhat.com> - - * gimple-range-gori.cc (compute_operand_range): Check for - a relation between op1 and op2 and use that instead. - (compute_operand1_range): Don't look for a relation override. - (compute_operand2_range): Ditto. - -2023-07-05 Jonathan Wakely <jwakely@redhat.com> - - * doc/contrib.texi (Contributors): Update my entry. - -2023-07-05 Filip Kastl <filip.kastl@gmail.com> - - * value-prof.cc (gimple_mod_subtract_transform): Correct edge - prob calculation. - -2023-07-05 Uros Bizjak <ubizjak@gmail.com> - - * sched-int.h (struct haifa_sched_info): Change can_schedule_ready_p, - scehdule_more_p and contributes_to_priority indirect frunction - type from int to bool. - (no_real_insns_p): Change return type from int to bool. - (contributes_to_priority): Ditto. - * haifa-sched.cc (no_real_insns_p): Change return type from - int to bool and adjust function body accordingly. - * modulo-sched.cc (try_scheduling_node_in_cycle): Change "success" - variable type from int to bool. - (ps_insn_advance_column): Change return type from int to bool. - (ps_has_conflicts): Ditto. Change "has_conflicts" - variable type from int to bool. - * sched-deps.cc (deps_may_trap_p): Change return type from int to bool. - (conditions_mutex_p): Ditto. - * sched-ebb.cc (schedule_more_p): Ditto. - (ebb_contributes_to_priority): Change return type from - int to bool and adjust function body accordingly. - * sched-rgn.cc (is_cfg_nonregular): Ditto. - (check_live_1): Ditto. - (is_pfree): Ditto. - (find_conditional_protection): Ditto. - (is_conditionally_protected): Ditto. - (is_prisky): Ditto. - (is_exception_free): Ditto. - (haifa_find_rgns): Change "unreachable" and "too_large_failure" - variables from int to bool. - (extend_rgns): Change "rescan" variable from int to bool. - (check_live): Change return type from - int to bool and adjust function body accordingly. - (can_schedule_ready_p): Ditto. - (schedule_more_p): Ditto. - (contributes_to_priority): Ditto. - -2023-07-05 Robin Dapp <rdapp@ventanamicro.com> - - * doc/md.texi: Document that vec_set and vec_extract must not - fail. - * gimple-isel.cc (gimple_expand_vec_set_expr): Rename this... - (gimple_expand_vec_set_extract_expr): ...to this. - (gimple_expand_vec_exprs): Call renamed function. - * internal-fn.cc (vec_extract_direct): Add. - (expand_vec_extract_optab_fn): New function to expand - vec_extract optab. - (direct_vec_extract_optab_supported_p): Add. - * internal-fn.def (VEC_EXTRACT): Add. - * optabs.cc (can_vec_extract_var_idx_p): New function. - * optabs.h (can_vec_extract_var_idx_p): Declare. - -2023-07-05 Robin Dapp <rdapp@ventanamicro.com> - - * config/riscv/autovec.md: Add gen_lowpart. - -2023-07-05 Robin Dapp <rdapp@ventanamicro.com> - - * config/riscv/autovec.md: Allow register index operand. - -2023-07-05 Pan Li <pan2.li@intel.com> - - * config/riscv/riscv-vector-builtins.cc - (function_expander::use_exact_insn): Use FRM_DYN instead of const0. - -2023-07-05 Robin Dapp <rdapp@ventanamicro.com> - - * config/riscv/autovec.md: Use float_truncate. - -2023-07-05 Ju-Zhe Zhong <juzhe.zhong@rivai.ai> - - * internal-fn.cc (internal_fn_len_index): Apply - LEN_MASK_GATHER_LOAD/SCATTER_STORE into vectorizer. - (internal_fn_mask_index): Ditto. - * optabs-query.cc (supports_vec_gather_load_p): Ditto. - (supports_vec_scatter_store_p): Ditto. - * tree-vect-data-refs.cc (vect_gather_scatter_fn_p): Ditto. - * tree-vect-patterns.cc (vect_recog_gather_scatter_pattern): Ditto. - * tree-vect-stmts.cc (check_load_store_for_partial_vectors): Ditto. - (vect_get_strided_load_store_ops): Ditto. - (vectorizable_store): Ditto. - (vectorizable_load): Ditto. - -2023-07-05 Robin Dapp <rdapp@ventanamicro.com> - Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * simplify-rtx.cc (native_encode_rtx): Ditto. - (native_decode_vector_rtx): Ditto. - (simplify_const_vector_byte_offset): Ditto. - (simplify_const_vector_subreg): Ditto. - * tree.cc (build_truth_vector_type_for_mode): Ditto. - * varasm.cc (output_constant_pool_2): Ditto. - -2023-07-05 YunQiang Su <yunqiang.su@cipunited.com> - - * config/mips/mips.cc (mips_expand_block_move): don't expand for - r6 with -mno-unaligned-access option if one or both of src and - dest are unaligned. restruct: return directly if length is not const. - (mips_block_move_straight): emit_move if ISA_HAS_UNALIGNED_ACCESS. - -2023-07-05 Jan Beulich <jbeulich@suse.com> - - PR target/100711 - * config/i386/sse.md: New splitters to simplify - not;vec_duplicate as a singular vpternlog. - (one_cmpl<mode>2): Allow broadcast for operand 1. - (<mask_codefor>one_cmpl<mode>2<mask_name>): Likewise. - -2023-07-05 Jan Beulich <jbeulich@suse.com> - - PR target/100711 - * config/i386/sse.md: New splitters to simplify - not;vec_duplicate;{ior,xor} as vec_duplicate;{iornot,xnor}. - -2023-07-05 Jan Beulich <jbeulich@suse.com> - - PR target/100711 - * config/i386/sse.md: Permit non-immediate operand 1 in AVX2 - form of splitter for PR target/100711. - -2023-07-05 Richard Biener <rguenther@suse.de> - - PR middle-end/110541 - * tree.def (VEC_PERM_EXPR): Adjust documentation to reflect - reality. - -2023-07-05 Jan Beulich <jbeulich@suse.com> - - PR target/93768 - * config/i386/sse.md (*andnot<mode>3): Add new alternatives - for memory form operand 1. - -2023-07-05 Jan Beulich <jbeulich@suse.com> - - PR target/93768 - * config/i386/i386.cc (ix86_rtx_costs): Further special-case - bitwise vector operations. - * config/i386/sse.md (*iornot<mode>3): New insn. - (*xnor<mode>3): Likewise. - (*<nlogic><mode>3): Likewise. - (andor): New code iterator. - (nlogic): New code attribute. - (ternlog_nlogic): Likewise. - -2023-07-05 Richard Biener <rguenther@suse.de> - - * tree-vect-stmts.cc (vect_mark_relevant): Fix typo. - -2023-07-05 yulong <shiyulong@iscas.ac.cn> - - * config/riscv/vector.md: Add float16 attr at sew、vlmul and ratio. - -2023-07-05 yulong <shiyulong@iscas.ac.cn> - - * config/riscv/genrvv-type-indexer.cc (valid_type): Enable FP16 tuple. - * config/riscv/riscv-modes.def (RVV_TUPLE_MODES): New macro. - (ADJUST_ALIGNMENT): Ditto. - (RVV_TUPLE_PARTIAL_MODES): Ditto. - (ADJUST_NUNITS): Ditto. - * config/riscv/riscv-vector-builtins-types.def (vfloat16mf4x2_t): - New types. - (vfloat16mf4x3_t): Ditto. - (vfloat16mf4x4_t): Ditto. - (vfloat16mf4x5_t): Ditto. - (vfloat16mf4x6_t): Ditto. - (vfloat16mf4x7_t): Ditto. - (vfloat16mf4x8_t): Ditto. - (vfloat16mf2x2_t): Ditto. - (vfloat16mf2x3_t): Ditto. - (vfloat16mf2x4_t): Ditto. - (vfloat16mf2x5_t): Ditto. - (vfloat16mf2x6_t): Ditto. - (vfloat16mf2x7_t): Ditto. - (vfloat16mf2x8_t): Ditto. - (vfloat16m1x2_t): Ditto. - (vfloat16m1x3_t): Ditto. - (vfloat16m1x4_t): Ditto. - (vfloat16m1x5_t): Ditto. - (vfloat16m1x6_t): Ditto. - (vfloat16m1x7_t): Ditto. - (vfloat16m1x8_t): Ditto. - (vfloat16m2x2_t): Ditto. - (vfloat16m2x3_t): Ditto. - (vfloat16m2x4_t): Ditto. - (vfloat16m4x2_t): Ditto. - * config/riscv/riscv-vector-builtins.def (vfloat16mf4x2_t): New macro. - (vfloat16mf4x3_t): Ditto. - (vfloat16mf4x4_t): Ditto. - (vfloat16mf4x5_t): Ditto. - (vfloat16mf4x6_t): Ditto. - (vfloat16mf4x7_t): Ditto. - (vfloat16mf4x8_t): Ditto. - (vfloat16mf2x2_t): Ditto. - (vfloat16mf2x3_t): Ditto. - (vfloat16mf2x4_t): Ditto. - (vfloat16mf2x5_t): Ditto. - (vfloat16mf2x6_t): Ditto. - (vfloat16mf2x7_t): Ditto. - (vfloat16mf2x8_t): Ditto. - (vfloat16m1x2_t): Ditto. - (vfloat16m1x3_t): Ditto. - (vfloat16m1x4_t): Ditto. - (vfloat16m1x5_t): Ditto. - (vfloat16m1x6_t): Ditto. - (vfloat16m1x7_t): Ditto. - (vfloat16m1x8_t): Ditto. - (vfloat16m2x2_t): Ditto. - (vfloat16m2x3_t): Ditto. - (vfloat16m2x4_t): Ditto. - (vfloat16m4x2_t): Ditto. - * config/riscv/riscv-vector-switch.def (TUPLE_ENTRY): New. - * config/riscv/riscv.md: New. - * config/riscv/vector-iterators.md: New. - -2023-07-04 Andrew Pinski <apinski@marvell.com> - - PR tree-optimization/110487 - * match.pd (a !=/== CST1 ? CST2 : CST3): Always - build a nonstandard integer and use that. - -2023-07-04 Andrew Pinski <apinski@marvell.com> - - * match.pd (a?-1:0): Cast type an integer type - rather the type before the negative. - (a?0:-1): Likewise. - -2023-07-04 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp> - - * config/xtensa/xtensa.cc (machine_function, xtensa_expand_prologue): - Change to use HARD_REG_BIT and its macros. - * config/xtensa/xtensa.md - (peephole2: regmove elimination during DFmode input reload): - Likewise. - -2023-07-04 Richard Biener <rguenther@suse.de> - - PR tree-optimization/110491 - * tree-ssa-phiopt.cc (match_simplify_replacement): Check - whether the PHI args are possibly undefined before folding - the COND_EXPR. - -2023-07-04 Pan Li <pan2.li@intel.com> - Thomas Schwinge <thomas@codesourcery.com> - - * lto-streamer-in.cc (lto_input_mode_table): Stream in the mode - bits for machine mode table. - * lto-streamer-out.cc (lto_write_mode_table): Stream out the - HOST machine mode bits. - * lto-streamer.h (struct lto_file_decl_data): New fields mode_bits. - * tree-streamer.cc (streamer_mode_table): Take MAX_MACHINE_MODE - as the table size. - * tree-streamer.h (streamer_mode_table): Ditto. - (bp_pack_machine_mode): Take 1 << ceil_log2 (MAX_MACHINE_MODE) - as the packing limit. - (bp_unpack_machine_mode): Ditto with 'file_data->mode_bits'. - -2023-07-04 Thomas Schwinge <thomas@codesourcery.com> - - * lto-streamer.h (class lto_input_block): Capture - 'lto_file_decl_data *file_data' instead of just - 'unsigned char *mode_table'. - * ipa-devirt.cc (ipa_odr_read_section): Adjust. - * ipa-fnsummary.cc (inline_read_section): Likewise. - * ipa-icf.cc (sem_item_optimizer::read_section): Likewise. - * ipa-modref.cc (read_section): Likewise. - * ipa-prop.cc (ipa_prop_read_section, read_replacements_section): - Likewise. - * ipa-sra.cc (isra_read_summary_section): Likewise. - * lto-cgraph.cc (input_cgraph_opt_section): Likewise. - * lto-section-in.cc (lto_create_simple_input_block): Likewise. - * lto-streamer-in.cc (lto_read_body_or_constructor) - (lto_input_toplevel_asms): Likewise. - * tree-streamer.h (bp_unpack_machine_mode): Likewise. - -2023-07-04 Richard Biener <rguenther@suse.de> - - * tree-ssa-phiopt.cc (pass_phiopt::execute): Mark SSA undefs. - (empty_bb_or_one_feeding_into_p): Check for them. - * tree-ssa.h (gimple_uses_undefined_value_p): Remove. - * tree-ssa.cc (gimple_uses_undefined_value_p): Likewise. - -2023-07-04 Richard Biener <rguenther@suse.de> - - * tree-vect-loop.cc (vect_analyze_loop_costing): Remove - check guarding scalar_niter underflow. - -2023-07-04 Hao Liu <hliu@os.amperecomputing.com> - - PR tree-optimization/110531 - * tree-vect-loop.cc (vect_analyze_loop_1): initialize - slp_done_for_suggested_uf to false. - -2023-07-04 Richard Biener <rguenther@suse.de> - - PR tree-optimization/110228 - * tree-ssa-ifcombine.cc (pass_tree_ifcombine::execute): - Mark SSA may-undefs. - (bb_no_side_effects_p): Check stmt uses for undefs. - -2023-07-04 Richard Biener <rguenther@suse.de> - - PR tree-optimization/110436 - * tree-vect-stmts.cc (vect_mark_relevant): Expand dumping, - force live but not relevant pattern stmts relevant. - -2023-07-04 Lili Cui <lili.cui@intel.com> - - * config/i386/i386.h: Add PTA_ENQCMD and PTA_UINTR to PTA_SIERRAFOREST. - * doc/invoke.texi: Update new isa to march=sierraforest and grandridge. - -2023-07-04 Richard Biener <rguenther@suse.de> - - PR middle-end/110495 - * tree.h (TREE_OVERFLOW): Do not mention VECTOR_CSTs - since we do not set TREE_OVERFLOW on those since the - introduction of VL vectors. - * match.pd (x +- CST +- CST): For VECTOR_CST do not look - at TREE_OVERFLOW to determine validity of association. - -2023-07-04 Richard Biener <rguenther@suse.de> - - PR tree-optimization/110310 - * tree-vect-loop.cc (vect_determine_partial_vectors_and_peeling): - Move costing part ... - (vect_analyze_loop_costing): ... here. Integrate better - estimate for epilogues from ... - (vect_analyze_loop_2): Call vect_determine_partial_vectors_and_peeling - with actual epilogue status. - * tree-vect-loop-manip.cc (vect_do_peeling): ... here and - avoid cancelling epilogue vectorization. - (vect_update_epilogue_niters): Remove. No longer update - epilogue LOOP_VINFO_NITERS. - -2023-07-04 Pan Li <pan2.li@intel.com> - - Revert: - 2023-07-03 Pan Li <pan2.li@intel.com> - - * config/riscv/vector.md: Fix typo. - -2023-07-04 Ju-Zhe Zhong <juzhe.zhong@rivai.ai> - - * doc/md.texi: Add len_mask_gather_load/len_mask_scatter_store. - * internal-fn.cc (expand_scatter_store_optab_fn): Ditto. - (expand_gather_load_optab_fn): Ditto. - (internal_load_fn_p): Ditto. - (internal_store_fn_p): Ditto. - (internal_gather_scatter_fn_p): Ditto. - (internal_fn_len_index): Ditto. - (internal_fn_mask_index): Ditto. - (internal_fn_stored_value_index): Ditto. - * internal-fn.def (LEN_MASK_GATHER_LOAD): Ditto. - (LEN_MASK_SCATTER_STORE): Ditto. - * optabs.def (OPTAB_CD): Ditto. - -2023-07-04 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv-vsetvl.cc - (vector_insn_info::parse_insn): Add early break. - -2023-07-04 Hans-Peter Nilsson <hp@axis.com> - - * config/cris/cris.md (CRIS_UNSPEC_SWAP_BITS): Remove. - ("cris_swap_bits", "ctzsi2"): Use bitreverse instead. - -2023-07-04 Hans-Peter Nilsson <hp@axis.com> - - * dwarf2out.cc (mem_loc_descriptor): Handle BITREVERSE. - -2023-07-03 Christoph Müllner <christoph.muellner@vrull.eu> - - * common/config/riscv/riscv-common.cc: Add support for zvbb, - zvbc, zvkg, zvkned, zvknha, zvknhb, zvksed, zvksh, zvkn, - zvknc, zvkng, zvks, zvksc, zvksg, zvkt and the implied subsets. - * config/riscv/arch-canonicalize: Add canonicalization info for - zvkn, zvknc, zvkng, zvks, zvksc, zvksg. - * config/riscv/riscv-opts.h (MASK_ZVBB): New macro. - (MASK_ZVBC): Likewise. - (TARGET_ZVBB): Likewise. - (TARGET_ZVBC): Likewise. - (MASK_ZVKG): Likewise. - (MASK_ZVKNED): Likewise. - (MASK_ZVKNHA): Likewise. - (MASK_ZVKNHB): Likewise. - (MASK_ZVKSED): Likewise. - (MASK_ZVKSH): Likewise. - (MASK_ZVKN): Likewise. - (MASK_ZVKNC): Likewise. - (MASK_ZVKNG): Likewise. - (MASK_ZVKS): Likewise. - (MASK_ZVKSC): Likewise. - (MASK_ZVKSG): Likewise. - (MASK_ZVKT): Likewise. - (TARGET_ZVKG): Likewise. - (TARGET_ZVKNED): Likewise. - (TARGET_ZVKNHA): Likewise. - (TARGET_ZVKNHB): Likewise. - (TARGET_ZVKSED): Likewise. - (TARGET_ZVKSH): Likewise. - (TARGET_ZVKN): Likewise. - (TARGET_ZVKNC): Likewise. - (TARGET_ZVKNG): Likewise. - (TARGET_ZVKS): Likewise. - (TARGET_ZVKSC): Likewise. - (TARGET_ZVKSG): Likewise. - (TARGET_ZVKT): Likewise. - * config/riscv/riscv.opt: Introduction of riscv_zv{b,k}_subext. - -2023-07-03 Andrew Pinski <apinski@marvell.com> - - PR middle-end/110510 - * except.h (struct eh_landing_pad_d): Add chain_next GTY. - -2023-07-03 Iain Sandoe <iain@sandoe.co.uk> - - * config/darwin.h: Avoid duplicate multiply_defined specs on - earlier Darwin versions with shared libgcc. - -2023-07-03 Uros Bizjak <ubizjak@gmail.com> - - * tree.h (tree_int_cst_equal): Change return type from int to bool. - (operand_equal_for_phi_arg_p): Ditto. - (tree_map_base_marked_p): Ditto. - * tree.cc (contains_placeholder_p): Update function body - for bool return type. - (type_cache_hasher::equal): Ditto. - (tree_map_base_hash): Change return type - from int to void and adjust function body accordingly. - (tree_int_cst_equal): Ditto. - (operand_equal_for_phi_arg_p): Ditto. - (get_narrower): Change "first" variable to bool. - (cl_option_hasher::equal): Update function body for bool return type. - * ggc.h (ggc_set_mark): Change return type from int to bool. - (ggc_marked_p): Ditto. - * ggc-page.cc (gt_ggc_mx): Change return type - from int to void and adjust function body accordingly. - (ggc_set_mark): Ditto. - -2023-07-03 Ju-Zhe Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/autovec.md: Change order of - LEN_MASK_LOAD/LEN_MASK_STORE/LEN_LOAD/LEN_STORE arguments. - * config/riscv/riscv-v.cc (expand_load_store): Ditto. - * doc/md.texi: Ditto. - * gimple-fold.cc (gimple_fold_partial_load_store_mem_ref): Ditto. - * internal-fn.cc (len_maskload_direct): Ditto. - (len_maskstore_direct): Ditto. - (add_len_and_mask_args): New function. - (expand_partial_load_optab_fn): Change order of - LEN_MASK_LOAD/LEN_MASK_STORE/LEN_LOAD/LEN_STORE arguments. - (expand_partial_store_optab_fn): Ditto. - (internal_fn_len_index): New function. - (internal_fn_mask_index): Change order of - LEN_MASK_LOAD/LEN_MASK_STORE/LEN_LOAD/LEN_STORE arguments. - (internal_fn_stored_value_index): Ditto. - (internal_len_load_store_bias): Ditto. - * internal-fn.h (internal_fn_len_index): New function. - * tree-ssa-dse.cc (initialize_ao_ref_for_dse): Change order of - LEN_MASK_LOAD/LEN_MASK_STORE/LEN_LOAD/LEN_STORE arguments. - * tree-vect-stmts.cc (vectorizable_store): Ditto. - (vectorizable_load): Ditto. - -2023-07-03 Gaius Mulley <gaiusmod2@gmail.com> - - PR modula2/110125 - * doc/gm2.texi (Semantic checking): Include examples using - -Wuninit-variable-checking. - -2023-07-03 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/autovec-opt.md (*double_widen_fnma<mode>): New pattern. - (*single_widen_fnma<mode>): Ditto. - (*double_widen_fms<mode>): Ditto. - (*single_widen_fms<mode>): Ditto. - (*double_widen_fnms<mode>): Ditto. - (*single_widen_fnms<mode>): Ditto. - -2023-07-03 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/autovec-opt.md (@pred_single_widen_mul<any_extend:su><mode>): Change "@" - into "*" in pattern name which simplifies build files. - (*pred_single_widen_mul<any_extend:su><mode>): Ditto. - (*pred_single_widen_mul<mode>): New pattern. - -2023-07-03 Richard Sandiford <richard.sandiford@arm.com> - - * config/aarch64/aarch64-simd.md (vec_extract<mode><Vhalf>): Expect - the index to be 0 or 1. - -2023-07-03 Lehua Ding <lehua.ding@rivai.ai> - - Revert: - 2023-07-03 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/autovec-opt.md (*double_widen_fnma<mode>): New pattern. - (*single_widen_fnma<mode>): Ditto. - (*double_widen_fms<mode>): Ditto. - (*single_widen_fms<mode>): Ditto. - (*double_widen_fnms<mode>): Ditto. - (*single_widen_fnms<mode>): Ditto. - -2023-07-03 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/autovec-opt.md (*double_widen_fnma<mode>): New pattern. - (*single_widen_fnma<mode>): Ditto. - (*double_widen_fms<mode>): Ditto. - (*single_widen_fms<mode>): Ditto. - (*double_widen_fnms<mode>): Ditto. - (*single_widen_fnms<mode>): Ditto. - -2023-07-03 Pan Li <pan2.li@intel.com> - - * config/riscv/vector.md: Fix typo. - -2023-07-03 Richard Biener <rguenther@suse.de> - - PR tree-optimization/110506 - * tree-vect-patterns.cc (vect_recog_rotate_pattern): Re-order - TYPE_PRECISION access with INTEGRAL_TYPE_P check. - -2023-07-03 Richard Biener <rguenther@suse.de> - - PR tree-optimization/110506 - * tree-ssa-ccp.cc (get_value_for_expr): Check for integral - type before relying on TYPE_PRECISION to produce a nonzero mask. - -2023-07-03 Jie Mei <jie.mei@oss.cipunited.com> - - * config/mips/mips.md(*and<mode>3_mips16): Generates - ZEB/ZEH instructions. - -2023-07-03 Jie Mei <jie.mei@oss.cipunited.com> - - * config/mips/mips.cc(mips_9bit_offset_address_p): Restrict the - address register to M16_REGS for MIPS16. - (BUILTIN_AVAIL_MIPS16E2): Defined a new macro. - (AVAIL_MIPS16E2_OR_NON_MIPS16): Same as above. - (AVAIL_NON_MIPS16 (cache..)): Update to - AVAIL_MIPS16E2_OR_NON_MIPS16. - * config/mips/mips.h (ISA_HAS_CACHE): Add clause for ISA_HAS_MIPS16E2. - * config/mips/mips.md (mips_cache): Mark as extended MIPS16. - -2023-07-03 Jie Mei <jie.mei@oss.cipunited.com> - - * config/mips/mips.h(ISA_HAS_9BIT_DISPLACEMENT): Add clause - for ISA_HAS_MIPS16E2. - (ISA_HAS_SYNC): Same as above. - (ISA_HAS_LL_SC): Same as above. - -2023-07-03 Jie Mei <jie.mei@oss.cipunited.com> - - * config/mips/mips.cc(mips_expand_ins_as_unaligned_store): - Add logics for generating instruction. - * config/mips/mips.h(ISA_HAS_LWL_LWR): Add clause for ISA_HAS_MIPS16E2. - * config/mips/mips.md(mov_<load>l): Generates instructions. - (mov_<load>r): Same as above. - (mov_<store>l): Adjusted for the conditions above. - (mov_<store>r): Same as above. - (mov_<store>l_mips16e2): Add machine description for `define_insn mov_<store>l_mips16e2`. - (mov_<store>r_mips16e2): Add machine description for `define_insn mov_<store>r_mips16e2`. - -2023-07-03 Jie Mei <jie.mei@oss.cipunited.com> - - * config/mips/mips.cc(mips_symbol_insns_1): Generates LUI instruction. - (mips_const_insns): Same as above. - (mips_output_move): Same as above. - (mips_output_function_prologue): Same as above. - * config/mips/mips.md: Same as above - -2023-07-03 Jie Mei <jie.mei@oss.cipunited.com> - - * config/mips/constraints.md(Yz): New constraints for mips16e2. - * config/mips/mips-protos.h(mips_bit_clear_p): Declared new function. - (mips_bit_clear_info): Same as above. - * config/mips/mips.cc(mips_bit_clear_info): New function for - generating instructions. - (mips_bit_clear_p): Same as above. - * config/mips/mips.h(ISA_HAS_EXT_INS): Add clause for ISA_HAS_MIPS16E2. - * config/mips/mips.md(extended_mips16): Generates EXT and INS instructions. - (*and<mode>3): Generates INS instruction. - (*and<mode>3_mips16): Generates EXT, INS and ANDI instructions. - (ior<mode>3): Add logics for ORI instruction. - (*ior<mode>3_mips16_asmacro): Generates ORI instrucion. - (*ior<mode>3_mips16): Add logics for XORI instruction. - (*xor<mode>3_mips16): Generates XORI instrucion. - (*extzv<mode>): Add logics for EXT instruction. - (*insv<mode>): Add logics for INS instruction. - * config/mips/predicates.md(bit_clear_operand): New predicate for - generating bitwise instructions. - (and_reg_operand): Add logics for generating bitwise instructions. - -2023-07-03 Jie Mei <jie.mei@oss.cipunited.com> - - * config/mips/mips.cc(mips_regno_mode_ok_for_base_p): Generate instructions - that uses global pointer register. - (mips16_unextended_reference_p): Same as above. - (mips_pic_base_register): Same as above. - (mips_init_relocs): Same as above. - * config/mips/mips.h(MIPS16_GP_LOADS): Defined a new macro. - (GLOBAL_POINTER_REGNUM): Moved to machine description `mips.md`. - * config/mips/mips.md(GLOBAL_POINTER_REGNUM): Moved to here from above. - (*lowsi_mips16_gp):New `define_insn *low<mode>_mips16`. - -2023-07-03 Jie Mei <jie.mei@oss.cipunited.com> - - * config/mips/mips.h(ISA_HAS_CONDMOVE): Add condition for ISA_HAS_MIPS16E2. - * config/mips/mips.md(*mov<GPR:mode>_on_<MOVECC:mode>): Add logics for MOVx insts. - (*mov<GPR:mode>_on_<MOVECC:mode>_mips16e2): Generate MOVx instruction. - (*mov<GPR:mode>_on_<GPR2:mode>_ne): Add logics for MOVx insts. - (*mov<GPR:mode>_on_<GPR2:mode>_ne_mips16e2): Generate MOVx instruction. - * config/mips/predicates.md(reg_or_0_operand_mips16e2): New predicate for MOVx insts. - -2023-07-03 Jie Mei <jie.mei@oss.cipunited.com> - - * config/mips/mips.cc(mips_file_start): Add mips16e2 info - for output file. - * config/mips/mips.h(__mips_mips16e2): Defined a new - predefine macro. - (ISA_HAS_MIPS16E2): Defined a new macro. - (ASM_SPEC): Pass mmips16e2 to the assembler. - * config/mips/mips.opt: Add -m(no-)mips16e2 option. - * config/mips/predicates.md: Add clause for TARGET_MIPS16E2. - * doc/invoke.texi: Add -m(no-)mips16e2 option.. - -2023-07-02 Jakub Jelinek <jakub@redhat.com> - - PR tree-optimization/110508 - * tree-ssa-math-opts.cc (match_uaddc_usubc): Only replace re2 with - REALPART_EXPR opf nlhs if re2 is non-NULL. - -2023-07-02 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp> - - * config/xtensa/xtensa.cc (xtensa_match_CLAMPS_imms_p): - Simplify. - * config/xtensa/xtensa.md (*xtensa_clamps): - Add TARGET_MINMAX to the condition. - -2023-07-02 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp> - - * config/xtensa/xtensa.md (*eqne_INT_MIN): - Add missing ":SI" to the match_operator. - -2023-07-02 Iain Sandoe <iain@sandoe.co.uk> - - PR target/108743 - * config/darwin.opt: Add fconstant-cfstrings alias to - mconstant-cfstrings. - * doc/invoke.texi: Amend invocation descriptions to reflect - that the fconstant-cfstrings is a target-option alias and to - add the missing mconstant-cfstrings option description to the - Darwin section. - -2023-07-01 Jan Hubicka <jh@suse.cz> - - * tree-cfg.cc (gimple_duplicate_sese_region): Add elliminated_edge - parmaeter; update profile. - * tree-cfg.h (gimple_duplicate_sese_region): Update prototype. - * tree-ssa-loop-ch.cc (entry_loop_condition_is_static): Rename to ... - (static_loop_exit): ... this; return the edge to be elliminated. - (ch_base::copy_headers): Handle profile updating for eliminated exits. - -2023-07-01 Roger Sayle <roger@nextmovesoftware.com> - - * config/i386/i386-features.cc (compute_convert_gain): Provide - gains/costs for ROTATE and ROTATERT (by an integer constant). - (general_scalar_chain::convert_rotate): New helper function to - convert a DImode or SImode rotation by an integer constant into - SSE vector form. - (general_scalar_chain::convert_insn): Call the new convert_rotate - for ROTATE and ROTATERT. - (general_scalar_to_vector_candidate_p): Consider ROTATE and - ROTATERT to be candidates if the second operand is an integer - constant, valid for a rotation (or shift) in the given mode. - * config/i386/i386-features.h (general_scalar_chain): Add new - helper method convert_rotate. - -2023-07-01 Jan Hubicka <jh@suse.cz> - - PR tree-optimization/103680 - * cfg.cc (update_bb_profile_for_threading): Fix profile update; - make message clearer. - -2023-06-30 Qing Zhao <qing.zhao@oracle.com> - - PR tree-optimization/101832 - * tree-object-size.cc (addr_object_size): Handle structure/union type - when it has flexible size. - -2023-06-30 Eric Botcazou <ebotcazou@adacore.com> - - * gimple-fold.cc (fold_array_ctor_reference): Fix head comment. - (fold_nonarray_ctor_reference): Likewise. Specifically deal - with integral bit-fields. - (fold_ctor_reference): Make sure that the constructor uses the - native storage order. - -2023-06-30 Jan Hubicka <jh@suse.cz> - - PR middle-end/109849 - * predict.cc (estimate_bb_frequencies): Turn to static function. - (expr_expected_value_1): Fix handling of binary expressions with - predicted values. - * predict.def (PRED_MALLOC_NONNULL): Move later in the priority queue. - (PRED_BUILTIN_EXPECT_WITH_PROBABILITY): Move to almost top of the priority - queue. - * predict.h (estimate_bb_frequencies): No longer declare it. - -2023-06-30 Uros Bizjak <ubizjak@gmail.com> - - * fold-const.h (multiple_of_p): Change return type from int to bool. - * fold-const.cc (split_tree): Change negl_p, neg_litp_p, - neg_conp_p and neg_var_p variables to bool. - (const_binop): Change sat_p variable to bool. - (merge_ranges): Change no_overlap variable to bool. - (extract_muldiv_1): Change same_p variable to bool. - (tree_swap_operands_p): Update function body for bool return type. - (fold_truth_andor): Change commutative variable to bool. - (multiple_of_p): Change return type - from int to void and adjust function body accordingly. - * optabs.h (expand_twoval_unop): Change return type from int to bool. - (expand_twoval_binop): Ditto. - (can_compare_p): Ditto. - (have_add2_insn): Ditto. - (have_addptr3_insn): Ditto. - (have_sub2_insn): Ditto. - (have_insn_for): Ditto. - * optabs.cc (add_equal_note): Ditto. - (widen_operand): Change no_extend argument from int to bool. - (expand_binop): Ditto. - (expand_twoval_unop): Change return type - from int to void and adjust function body accordingly. - (expand_twoval_binop): Ditto. - (can_compare_p): Ditto. - (have_add2_insn): Ditto. - (have_addptr3_insn): Ditto. - (have_sub2_insn): Ditto. - (have_insn_for): Ditto. - -2023-06-30 Oluwatamilore Adebayo <oluwatamilore.adebayo@arm.com> - - * config/aarch64/aarch64-simd.md - (vec_widen_<su>abdl_lo_<mode>, vec_widen_<su>abdl_hi_<mode>): - Expansions for abd vec widen optabs. - (aarch64_<su>abdl<mode>_insn): VQW based abdl RTL. - * config/aarch64/iterators.md (USMAX_EXT): Code attributes - that give the appropriate extend RTL for the max RTL. - -2023-06-30 Oluwatamilore Adebayo <oluwatamilore.adebayo@arm.com> - - * internal-fn.def (VEC_WIDEN_ABD): New internal hilo optab. - * optabs.def (vec_widen_sabd_optab, - vec_widen_sabd_hi_optab, vec_widen_sabd_lo_optab, - vec_widen_sabd_odd_even, vec_widen_sabd_even_optab, - vec_widen_uabd_optab, - vec_widen_uabd_hi_optab, vec_widen_uabd_lo_optab, - vec_widen_uabd_odd_even, vec_widen_uabd_even_optab): - New optabs. - * doc/md.texi: Document them. - * tree-vect-patterns.cc (vect_recog_abd_pattern): Update to - to build a VEC_WIDEN_ABD call if the input precision is smaller - than the precision of the output. - (vect_recog_widen_abd_pattern): Should an ABD expression be - found preceeding an extension, replace the two with a - VEC_WIDEN_ABD. - -2023-06-30 Pan Li <pan2.li@intel.com> - - * config/riscv/vector.md: Refactor the common condition. - -2023-06-30 Richard Biener <rguenther@suse.de> - - PR tree-optimization/110496 - * gimple-ssa-store-merging.cc (find_bswap_or_nop_1): Re-order - verifying and TYPE_PRECISION query for the BIT_FIELD_REF case. - -2023-06-30 Richard Biener <rguenther@suse.de> - - PR middle-end/110489 - * statistics.cc (curr_statistics_hash): Add argument - indicating whether we should allocate the hash. - (statistics_fini_pass): If the hash isn't allocated - only print the summary header. - -2023-06-30 Segher Boessenkool <segher@kernel.crashing.org> - Thomas Schwinge <thomas@codesourcery.com> - - * config/nvptx/nvptx.cc (TARGET_LRA_P): Remove. - -2023-06-30 Jovan Dmitrović <jovan.dmitrovic@syrmia.com> - - PR target/109435 - * config/mips/mips.cc (mips_function_arg_alignment): Returns - the alignment of function argument. In case of typedef type, - it returns the aligment of the aliased type. - (mips_function_arg_boundary): Relocated calculation of the - aligment of function arguments. - -2023-06-29 Jan Hubicka <jh@suse.cz> - - PR tree-optimization/109849 - * ipa-fnsummary.cc (decompose_param_expr): Skip - functions returning its parameter. - (set_cond_stmt_execution_predicate): Return early - if predicate was constructed. - -2023-06-29 Qing Zhao <qing.zhao@oracle.com> - - PR c/77650 - * doc/extend.texi: Document GCC extension on a structure containing - a flexible array member to be a member of another structure. - -2023-06-29 Qing Zhao <qing.zhao@oracle.com> - - * print-tree.cc (print_node): Print new bit type_include_flexarray. - * tree-core.h (struct tree_type_common): Use bit no_named_args_stdarg_p - as type_include_flexarray for RECORD_TYPE or UNION_TYPE. - * tree-streamer-in.cc (unpack_ts_type_common_value_fields): Stream - in bit no_named_args_stdarg_p properly for its corresponding type. - * tree-streamer-out.cc (pack_ts_type_common_value_fields): Stream - out bit no_named_args_stdarg_p properly for its corresponding type. - * tree.h (TYPE_INCLUDES_FLEXARRAY): New macro TYPE_INCLUDES_FLEXARRAY. - -2023-06-29 Aldy Hernandez <aldyh@redhat.com> - - * tree-vrp.cc (maybe_set_nonzero_bits): Move from here... - * tree-ssa-dom.cc (maybe_set_nonzero_bits): ...to here. - * tree-vrp.h (maybe_set_nonzero_bits): Remove. - -2023-06-29 Aldy Hernandez <aldyh@redhat.com> - - * value-range.cc (frange::set): Do not call verify_range. - (frange::normalize_kind): Verify range. - (frange::union_nans): Do not call verify_range. - (frange::union_): Same. - (frange::intersect): Same. - (irange::irange_single_pair_union): Call normalize_kind if - necessary. - (irange::union_): Same. - (irange::intersect): Same. - (irange::set_range_from_nonzero_bits): Verify range. - (irange::set_nonzero_bits): Call normalize_kind if necessary. - (irange::get_nonzero_bits): Tweak comment. - (irange::intersect_nonzero_bits): Call normalize_kind if - necessary. - (irange::union_nonzero_bits): Same. - * value-range.h (irange::normalize_kind): Verify range. - -2023-06-29 Uros Bizjak <ubizjak@gmail.com> - - * cselib.h (rtx_equal_for_cselib_1): - Change return type from int to bool. - (references_value_p): Ditto. - (rtx_equal_for_cselib_p): Ditto. - * expr.h (can_store_by_pieces): Ditto. - (try_casesi): Ditto. - (try_tablejump): Ditto. - (safe_from_p): Ditto. - * sbitmap.h (bitmap_equal_p): Ditto. - * cselib.cc (references_value_p): Change return type - from int to void and adjust function body accordingly. - (rtx_equal_for_cselib_1): Ditto. - * expr.cc (is_aligning_offset): Ditto. - (can_store_by_pieces): Ditto. - (mostly_zeros_p): Ditto. - (all_zeros_p): Ditto. - (safe_from_p): Ditto. - (is_aligning_offset): Ditto. - (try_casesi): Ditto. - (try_tablejump): Ditto. - (store_constructor): Change "need_to_clear" and - "const_bounds_p" variables to bool. - * sbitmap.cc (bitmap_equal_p): Change return type from int to bool. - -2023-06-29 Robin Dapp <rdapp@ventanamicro.com> - - * tree-ssa-math-opts.cc (divmod_candidate_p): Use - element_precision. - -2023-06-29 Richard Biener <rguenther@suse.de> - - PR tree-optimization/110460 - * tree-vect-stmts.cc (get_related_vectype_for_scalar_type): - Only allow integral, pointer and scalar float type scalar_type. - -2023-06-29 Lili Cui <lili.cui@intel.com> - - PR tree-optimization/110148 - * tree-ssa-reassoc.cc (rewrite_expr_tree_parallel): Handle loop-carried - ops in this function. - -2023-06-29 Richard Biener <rguenther@suse.de> - - PR middle-end/110452 - * expr.cc (store_constructor): Handle uniform boolean - vectors with integer mode specially. - -2023-06-29 Richard Biener <rguenther@suse.de> - - PR middle-end/110461 - * match.pd (bitop (convert@2 @0) (convert?@3 @1)): Disable - for VECTOR_TYPE_P. - -2023-06-29 Richard Sandiford <richard.sandiford@arm.com> - - * vec.h (gt_pch_nx): Add overloads for va_gc_atomic. - (array_slice): Relax va_gc constructor to handle all vectors - with a vl_embed layout. - -2023-06-29 Pan Li <pan2.li@intel.com> - - * config/riscv/riscv.cc (riscv_emit_mode_set): Add emit for FRM. - (riscv_mode_needed): Likewise. - (riscv_entity_mode_after): Likewise. - (riscv_mode_after): Likewise. - (riscv_mode_entry): Likewise. - (riscv_mode_exit): Likewise. - * config/riscv/riscv.h (NUM_MODES_FOR_MODE_SWITCHING): Add number - for FRM. - * config/riscv/riscv.md: Add FRM register. - * config/riscv/vector-iterators.md: Add FRM type. - * config/riscv/vector.md (frm_mode): Define new attr for FRM mode. - (fsrm): Define new insn for fsrm instruction. - -2023-06-29 Pan Li <pan2.li@intel.com> - - * config/riscv/riscv-protos.h (enum floating_point_rounding_mode): - Add macro for static frm min and max. - * config/riscv/riscv-vector-builtins-bases.cc - (class binop_frm): New class for floating-point with frm. - (BASE): Add vfadd for frm. - * config/riscv/riscv-vector-builtins-bases.h: Likewise. - * config/riscv/riscv-vector-builtins-functions.def - (vfadd_frm): Likewise. - * config/riscv/riscv-vector-builtins-shapes.cc - (struct alu_frm_def): New struct for alu with frm. - (SHAPE): Add alu with frm. - * config/riscv/riscv-vector-builtins-shapes.h: Likewise. - * config/riscv/riscv-vector-builtins.cc - (function_checker::report_out_of_range_and_not): New function - for report out of range and not val. - (function_checker::require_immediate_range_or): New function - for checking in range or one val. - * config/riscv/riscv-vector-builtins.h: Add function decl. - -2023-06-29 Cui, Lili <lili.cui@intel.com> - - * common/config/i386/cpuinfo.h (get_intel_cpu): Remove model value 0xa8 - from Rocketlake, move model value 0xbf from Alderlake to Raptorlake. - -2023-06-28 Hans-Peter Nilsson <hp@axis.com> - - PR target/110144 - * config/cris/cris.cc (cris_postdbr_cmpelim): Don't apply PATTERN - to insn before validating it. - -2023-06-28 Jan Hubicka <jh@suse.cz> - - PR middle-end/110334 - * ipa-fnsummary.h (ipa_fn_summary): Add - safe_to_inline_to_always_inline. - * ipa-inline.cc (can_early_inline_edge_p): ICE - if SSA is not built; do cycle checking for - always_inline functions. - (inline_always_inline_functions): Be recrusive; - watch for cycles; do not updat overall summary. - (early_inliner): Do not give up on always_inlines. - * ipa-utils.cc (ipa_reverse_postorder): Do not skip - always inlines. - -2023-06-28 Uros Bizjak <ubizjak@gmail.com> - - * output.h (leaf_function_p): Change return type from int to bool. - (final_forward_branch_p): Ditto. - (only_leaf_regs_used): Ditto. - (maybe_assemble_visibility): Ditto. - * varasm.h (supports_one_only): Ditto. - * rtl.h (compute_alignments): Change return type from int to void. - * final.cc (app_on): Change return type from int to bool. - (compute_alignments): Change return type from int to void - and adjust function body accordingly. - (shorten_branches): Change "something_changed" variable - type from int to bool. - (leaf_function_p): Change return type from int to bool - and adjust function body accordingly. - (final_forward_branch_p): Ditto. - (only_leaf_regs_used): Ditto. - * varasm.cc (contains_pointers_p): Change return type from - int to bool and adjust function body accordingly. - (compare_constant): Ditto. - (maybe_assemble_visibility): Ditto. - (supports_one_only): Ditto. - -2023-06-28 Manolis Tsamis <manolis.tsamis@vrull.eu> - - PR debug/110308 - * regcprop.cc (maybe_mode_change): Check stack_pointer_rtx mode. - (maybe_copy_reg_attrs): New function. - (find_oldest_value_reg): Use maybe_copy_reg_attrs. - (copyprop_hardreg_forward_1): Ditto. - -2023-06-28 Richard Biener <rguenther@suse.de> - - PR tree-optimization/110434 - * tree-nrv.cc (pass_nrv::execute): Remove CLOBBERs of - VAR we replace with <retval>. - -2023-06-28 Richard Biener <rguenther@suse.de> - - PR tree-optimization/110451 - * tree-ssa-loop-im.cc (stmt_cost): [VEC_]COND_EXPR and - tcc_comparison are expensive. - -2023-06-28 Roger Sayle <roger@nextmovesoftware.com> - - * config/i386/i386-expand.cc (ix86_expand_branch): Also use ptest - for TImode comparisons on 32-bit architectures. - * config/i386/i386.md (cbranch<mode>4): Change from SDWIM to - SWIM1248x to exclude/avoid TImode being conditional on -m64. - (cbranchti4): New define_expand for TImode on both TARGET_64BIT - and/or with TARGET_SSE4_1. - * config/i386/predicates.md (ix86_timode_comparison_operator): - New predicate that depends upon TARGET_64BIT. - (ix86_timode_comparison_operand): Likewise. - -2023-06-28 Roger Sayle <roger@nextmovesoftware.com> - - PR target/78794 - * config/i386/i386-features.cc (compute_convert_gain): Provide - more accurate gains for conversion of scalar comparisons to - PTEST. - -2023-06-28 Richard Biener <rguenther@suse.de> - - PR tree-optimization/110443 - * tree-vect-slp.cc (vect_build_slp_tree_1): Reject non-grouped - gather loads. - -2023-06-28 Haochen Gui <guihaoc@gcc.gnu.org> - - * config/rs6000/rs6000.md (peephole2 for compare_and_move): New. - (peephole2 for move_and_compare): New. - (mode_iterator WORD): New. Set the mode to SI/DImode by - TARGET_POWERPC64. - (*mov<mode>_internal2): Change the mode iterator from P to WORD. - (split pattern for compare_and_move): Likewise. - -2023-06-28 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/autovec-opt.md (*double_widen_fma<mode>): New pattern. - (*single_widen_fma<mode>): Ditto. - -2023-06-28 Haochen Gui <guihaoc@gcc.gnu.org> - - PR target/104124 - * config/rs6000/altivec.md (*altivec_vupkhs<VU_char>_direct): Rename - to... - (altivec_vupkhs<VU_char>_direct): ...this. - * config/rs6000/predicates.md (vspltisw_vupkhsw_constant_split): New - predicate to test if a constant can be loaded with vspltisw and - vupkhsw. - (easy_vector_constant): Call vspltisw_vupkhsw_constant_p to Check if - a vector constant can be synthesized with a vspltisw and a vupkhsw. - * config/rs6000/rs6000-protos.h (vspltisw_vupkhsw_constant_p): - Declare. - * config/rs6000/rs6000.cc (vspltisw_vupkhsw_constant_p): New - function to return true if OP mode is V2DI and can be synthesized - with vupkhsw and vspltisw. - * config/rs6000/vsx.md (*vspltisw_v2di_split): New insn to load up - constants with vspltisw and vupkhsw. - -2023-06-28 Jan Hubicka <jh@suse.cz> - - PR tree-optimization/110377 - * ipa-prop.cc (ipa_compute_jump_functions_for_edge): Pass statement to - the ranger query. - (ipa_analyze_node): Enable ranger. - -2023-06-28 Richard Biener <rguenther@suse.de> - - * tree.h (TYPE_PRECISION): Check for non-VECTOR_TYPE. - (TYPE_PRECISION_RAW): Provide raw access to the precision - field. - * tree.cc (verify_type_variant): Compare TYPE_PRECISION_RAW. - (gimple_canonical_types_compatible_p): Likewise. - * tree-streamer-out.cc (pack_ts_type_common_value_fields): - Stream TYPE_PRECISION_RAW. - * tree-streamer-in.cc (unpack_ts_type_common_value_fields): - Likewise. - * lto-streamer-out.cc (hash_tree): Hash TYPE_PRECISION_RAW. - -2023-06-28 Alexandre Oliva <oliva@adacore.com> - - * doc/extend.texi (zero-call-used-regs): Document leafy and - variants thereof. - * flag-types.h (zero_regs_flags): Add LEAFY_MODE, as well as - LEAFY and variants. - * function.cc (gen_call_ued_regs_seq): Set only_used for leaf - functions in leafy mode. - * opts.cc (zero_call_used_regs_opts): Add leafy and variants. - -2023-06-28 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv-vector-builtins-bases.cc: Adapt expand. - * config/riscv/vector.md (@pred_single_widen_<plus_minus:optab><mode>): - Remove. - (@pred_single_widen_add<mode>): New pattern. - (@pred_single_widen_sub<mode>): New pattern. - -2023-06-28 liuhongt <hongtao.liu@intel.com> - - * config/i386/i386.cc (ix86_invalid_conversion): New function. - (TARGET_INVALID_CONVERSION): Define as - ix86_invalid_conversion. - -2023-06-27 Robin Dapp <rdapp@ventanamicro.com> - - * config/riscv/autovec.md (<optab><vnconvert><mode>2): New - expander. - (<float_cvt><vnconvert><mode>2): Ditto. - (<optab><mode><vnconvert>2): Ditto. - (<float_cvt><mode><vnconvert>2): Ditto. - * config/riscv/vector-iterators.md: Add vnconvert. - -2023-06-27 Robin Dapp <rdapp@ventanamicro.com> - - * config/riscv/autovec.md (extend<v_double_trunc><mode>2): New - expander. - (extend<v_quad_trunc><mode>2): Ditto. - (trunc<mode><v_double_trunc>2): Ditto. - (trunc<mode><v_quad_trunc>2): Ditto. - * config/riscv/vector-iterators.md: Add VQEXTF and HF to - V_QUAD_TRUNC and v_quad_trunc. - -2023-06-27 Robin Dapp <rdapp@ventanamicro.com> - - * config/riscv/autovec.md (<float_cvt><vconvert><mode>2): New - expander. - -2023-06-27 Robin Dapp <rdapp@ventanamicro.com> - - * config/riscv/autovec.md (copysign<mode>3): Add expander. - (xorsign<mode>3): Ditto. - * config/riscv/riscv-vector-builtins-bases.cc (class vfsgnjn): - New class. - * config/riscv/vector-iterators.md (copysign): Remove ncopysign. - (xorsign): Ditto. - (n): Ditto. - (x): Ditto. - * config/riscv/vector.md (@pred_ncopysign<mode>): Split off. - (@pred_ncopysign<mode>_scalar): Ditto. - -2023-06-27 Robin Dapp <rdapp@ventanamicro.com> - - * config/riscv/autovec.md: VF_AUTO -> VF. - * config/riscv/vector-iterators.md: Introduce VF_ZVFHMIN, - VWEXTF_ZVFHMIN and use TARGET_ZVFH in VWCONVERTI, VHF and - VHF_LMUL1. - * config/riscv/vector.md: Use new iterators. - -2023-06-27 Robin Dapp <rdapp@ventanamicro.com> - - * match.pd: Use element_mode and check if target supports - operation with new type. - -2023-06-27 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org> - - * config/aarch64/aarch64-sve-builtins-base.cc - (svdupq_impl::fold_nonconst_dupq): New method. - (svdupq_impl::fold): Call fold_nonconst_dupq. - -2023-06-27 Andrew Pinski <apinski@marvell.com> - - PR middle-end/110420 - PR middle-end/103979 - PR middle-end/98619 - * gimplify.cc (gimplify_asm_expr): Mark asm with labels as volatile. - -2023-06-27 Aldy Hernandez <aldyh@redhat.com> - - * ipa-cp.cc (decide_whether_version_node): Adjust comment. - * ipa-fnsummary.cc (evaluate_conditions_for_known_args): Adjust - for Value_Range. - (set_switch_stmt_execution_predicate): Same. - * ipa-prop.cc (ipa_compute_jump_functions_for_edge): Same. - -2023-06-27 Aldy Hernandez <aldyh@redhat.com> - - * ipa-prop.cc (struct ipa_vr_ggc_hash_traits): Adjust for use with - ipa_vr instead of value_range. - (gt_pch_nx): Same. - (gt_ggc_mx): Same. - (ipa_get_value_range): Same. - * value-range.cc (gt_pch_nx): Move to ipa-prop.cc and adjust for - ipa_vr. - (gt_ggc_mx): Same. - -2023-06-27 Aldy Hernandez <aldyh@redhat.com> - - * ipa-cp.cc (ipa_vr_operation_and_type_effects): New. - * ipa-prop.cc (ipa_get_value_range): Adjust for ipa_vr. - (ipa_set_jfunc_vr): Take a range. - (ipa_compute_jump_functions_for_edge): Pass range to - ipa_set_jfunc_vr. - (ipa_write_jump_function): Call streamer write helper. - (ipa_read_jump_function): Call streamer read helper. - * ipa-prop.h (class ipa_vr): Change m_vr to an ipa_vr. - -2023-06-27 Richard Sandiford <richard.sandiford@arm.com> - - * gengtype-parse.cc (consume_until_comma_or_eos): Parse "= { ... }" - as a probable initializer rather than a probable complete statement. - -2023-06-27 Richard Biener <rguenther@suse.de> - - PR tree-optimization/96208 - * tree-vect-slp.cc (vect_build_slp_tree_1): Allow - a non-grouped load if it is the same for all lanes. - (vect_build_slp_tree_2): Handle not grouped loads. - (vect_optimize_slp_pass::remove_redundant_permutations): - Likewise. - (vect_transform_slp_perm_load_1): Likewise. - * tree-vect-stmts.cc (vect_model_load_cost): Likewise. - (get_group_load_store_type): Likewise. Handle - invariant accesses. - (vectorizable_load): Likewise. - -2023-06-27 liuhongt <hongtao.liu@intel.com> - - PR rtl-optimization/110237 - * config/i386/sse.md (<avx512>_store<mode>_mask): Refine with - UNSPEC_MASKMOV. - (maskstore<mode><avx512fmaskmodelower): Ditto. - (*<avx512>_store<mode>_mask): New define_insn, it's renamed - from original <avx512>_store<mode>_mask. - -2023-06-27 liuhongt <hongtao.liu@intel.com> - - * config/i386/i386-features.cc (pass_insert_vzeroupper:gate): - Move flag_expensive_optimizations && !optimize_size to .. - * config/i386/i386-options.cc (ix86_option_override_internal): - .. this, it makes -mvzeroupper independent of optimization - level, but still keeps the behavior of architecture - tuning(emit_vzeroupper) unchanged. - -2023-06-27 liuhongt <hongtao.liu@intel.com> - - PR target/82735 - * config/i386/i386.cc (ix86_avx_u127_mode_needed): Don't emit - vzeroupper for vzeroupper call_insn. - -2023-06-27 Andrew Pinski <apinski@marvell.com> - - * doc/extend.texi (__builtin_alloca_with_align_and_max): Fix - defbuiltin usage. - -2023-06-27 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv-v.cc (expand_const_vector): Fix stepped vector - with base != 0. - -2023-06-26 Andrew Pinski <apinski@marvell.com> - - * doc/extend.texi (access attribute): Add - cindex for it. - (interrupt/interrupt_handler attribute): - Likewise. - -2023-06-26 Kyrylo Tkachov <kyrylo.tkachov@arm.com> - - * config/aarch64/aarch64-simd.md (aarch64_sqrshrun_n<mode>_insn): - Use <DWI> instead of <V2XWIDE>. - (aarch64_sqrshrun_n<mode>): Likewise. - -2023-06-26 Kyrylo Tkachov <kyrylo.tkachov@arm.com> - - * config/aarch64/aarch64-protos.h (aarch64_const_vec_rsra_rnd_imm_p): - Rename to... - (aarch64_rnd_imm_p): ... This. - * config/aarch64/predicates.md (aarch64_simd_rsra_rnd_imm_vec): - Rename to... - (aarch64_int_rnd_operand): ... This. - (aarch64_simd_rshrn_imm_vec): Delete. - * config/aarch64/aarch64-simd.md (aarch64_<sra_op>rsra_n<mode>_insn): - Adjust for the above. - (aarch64_<sra_op>rshr_n<mode><vczle><vczbe>_insn): Likewise. - (*aarch64_<shrn_op>rshrn_n<mode>_insn): Likewise. - (*aarch64_sqrshrun_n<mode>_insn<vczle><vczbe>): Likewise. - (aarch64_sqrshrun_n<mode>_insn): Likewise. - (aarch64_<shrn_op>rshrn2_n<mode>_insn_le): Likewise. - (aarch64_<shrn_op>rshrn2_n<mode>_insn_be): Likewise. - (aarch64_sqrshrun2_n<mode>_insn_le): Likewise. - (aarch64_sqrshrun2_n<mode>_insn_be): Likewise. - * config/aarch64/aarch64.cc (aarch64_const_vec_rsra_rnd_imm_p): - Rename to... - (aarch64_rnd_imm_p): ... This. - -2023-06-26 Andreas Krebbel <krebbel@linux.ibm.com> - - * config/s390/s390.cc (s390_encode_section_info): Set - SYMBOL_FLAG_SET_NOTALIGN2 only if the symbol has explicitely been - misaligned. - -2023-06-26 Jan Hubicka <jh@suse.cz> - - PR tree-optimization/109849 - * tree-ssa-dce.cc (make_forwarders_with_degenerate_phis): Fix profile - count of newly constructed forwarder block. - -2023-06-26 Andrew Carlotti <andrew.carlotti@arm.com> - - * doc/optinfo.texi: Fix "steam" -> "stream". - -2023-06-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai> - - * tree-ssa-dse.cc (initialize_ao_ref_for_dse): Add LEN_MASK_STORE and - fix LEN_STORE. - (dse_optimize_stmt): Add LEN_MASK_STORE. - -2023-06-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai> - - * gimple-fold.cc (gimple_fold_partial_load_store_mem_ref): Fix gimple - fold of LOAD/STORE with length. - -2023-06-26 Andrew MacLeod <amacleod@redhat.com> - - * gimple-range-gori.cc (compute_operand1_and_operand2_range): - Check for interdependence between operands 1 and 2. - -2023-06-26 Richard Sandiford <richard.sandiford@arm.com> - - * tree-vect-stmts.cc (vectorizable_conversion): Take multi_step_cvt - into account when costing non-widening/truncating conversions. - -2023-06-26 Richard Biener <rguenther@suse.de> - - PR tree-optimization/110381 - * tree-vect-slp.cc (vect_optimize_slp_pass::start_choosing_layouts): - Materialize permutes before fold-left reductions. - -2023-06-26 Pan Li <pan2.li@intel.com> - - * config/riscv/riscv-vector-builtins-bases.h: Remove duplicated decl. - -2023-06-26 Richard Biener <rguenther@suse.de> - - * varasm.cc (initializer_constant_valid_p_1): Also - constrain the type of value to be scalar integral - before dispatching to narrowing_initializer_constant_valid_p. - -2023-06-26 Richard Biener <rguenther@suse.de> - - * tree-ssa-scopedtables.cc (hashable_expr_equal_p): - Use element_precision. - -2023-06-26 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/autovec.md (vcond<V:mode><VI:mode>): Remove redundant - vcond patterns. - (vcondu<V:mode><VI:mode>): Ditto. - * config/riscv/riscv-protos.h (expand_vcond): Ditto. - * config/riscv/riscv-v.cc (expand_vcond): Ditto. - -2023-06-26 Richard Biener <rguenther@suse.de> - - PR tree-optimization/110392 - * gimple-predicate-analysis.cc (uninit_analysis::is_use_guarded): - Do early exits on true/false predicate only after normalization. - -2023-06-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai> - - * tree-ssa-sccvn.cc (vn_reference_lookup_3): Change name "len" into - "length". - -2023-06-26 Roger Sayle <roger@nextmovesoftware.com> - - * config/i386/i386.md (peephole2): Simplify zeroing a register - followed by an IOR, XOR or PLUS operation on it, into a move. - (*ashl<dwi>3_doubleword_highpart): New define_insn_and_split to - eliminate (and hide from reload) unnecessary word to doubleword - extensions that are followed by left shifts by sufficiently large, - but valid, bit counts. - -2023-06-26 liuhongt <hongtao.liu@intel.com> - - PR tree-optimization/110371 - PR tree-optimization/110018 - * tree-vect-stmts.cc (vectorizable_conversion): Use cvt_op to - save intermediate type operand instead of "subtle" vec_dest - for case NONE. - -2023-06-26 liuhongt <hongtao.liu@intel.com> - - PR tree-optimization/110371 - PR tree-optimization/110018 - * tree-vect-stmts.cc (vectorizable_conversion): Don't use - intermiediate type for FIX_TRUNC_EXPR when ftrapping-math. - -2023-06-26 Hongyu Wang <hongyu.wang@intel.com> - - * config/i386/i386-options.cc (ix86_valid_target_attribute_tree): - Override tune_string with arch_string if tune_string is not - explicitly specified. - -2023-06-25 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv-vsetvl.cc (vector_insn_info::parse_insn): Ehance - AVL propagation. - * config/riscv/riscv-vsetvl.h: New function. - -2023-06-25 Li Xu <xuli1@eswincomputing.com> - - * config/riscv/riscv-vector-builtins-bases.cc: change emit_insn to - emit_move_insn - -2023-06-25 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/autovec.md (len_load_<mode>): Remove. - (len_maskload<mode><vm>): Remove. - (len_store_<mode>): New pattern. - (len_maskstore<mode><vm>): New pattern. - * config/riscv/predicates.md (autovec_length_operand): New predicate. - * config/riscv/riscv-protos.h (enum insn_type): New enum. - (expand_load_store): New function. - * config/riscv/riscv-v.cc (emit_vlmax_masked_insn): Ditto. - (emit_nonvlmax_masked_insn): Ditto. - (expand_load_store): Ditto. - * config/riscv/riscv-vector-builtins.cc - (function_expander::use_contiguous_store_insn): Add avl_type operand - into pred_store. - * config/riscv/vector.md: Ditto. - -2023-06-25 Ju-Zhe Zhong <juzhe.zhong@rivai.ai> - - * internal-fn.cc (expand_partial_store_optab_fn): Fix bug of BIAS - argument index. - -2023-06-25 Pan Li <pan2.li@intel.com> - - * config/riscv/vector.md: Revert. - -2023-06-25 Pan Li <pan2.li@intel.com> - - * config/riscv/genrvv-type-indexer.cc (valid_type): Revert changes. - * config/riscv/riscv-modes.def (RVV_TUPLE_MODES): Ditto. - (ADJUST_ALIGNMENT): Ditto. - (RVV_TUPLE_PARTIAL_MODES): Ditto. - (ADJUST_NUNITS): Ditto. - * config/riscv/riscv-vector-builtins-types.def (vfloat16mf4x2_t): Ditto. - (vfloat16mf4x3_t): Ditto. - (vfloat16mf4x4_t): Ditto. - (vfloat16mf4x5_t): Ditto. - (vfloat16mf4x6_t): Ditto. - (vfloat16mf4x7_t): Ditto. - (vfloat16mf4x8_t): Ditto. - (vfloat16mf2x2_t): Ditto. - (vfloat16mf2x3_t): Ditto. - (vfloat16mf2x4_t): Ditto. - (vfloat16mf2x5_t): Ditto. - (vfloat16mf2x6_t): Ditto. - (vfloat16mf2x7_t): Ditto. - (vfloat16mf2x8_t): Ditto. - (vfloat16m1x2_t): Ditto. - (vfloat16m1x3_t): Ditto. - (vfloat16m1x4_t): Ditto. - (vfloat16m1x5_t): Ditto. - (vfloat16m1x6_t): Ditto. - (vfloat16m1x7_t): Ditto. - (vfloat16m1x8_t): Ditto. - (vfloat16m2x2_t): Ditto. - (vfloat16m2x3_t): Diito. - (vfloat16m2x4_t): Diito. - (vfloat16m4x2_t): Diito. - * config/riscv/riscv-vector-builtins.def (vfloat16mf4x2_t): Ditto. - (vfloat16mf4x3_t): Ditto. - (vfloat16mf4x4_t): Ditto. - (vfloat16mf4x5_t): Ditto. - (vfloat16mf4x6_t): Ditto. - (vfloat16mf4x7_t): Ditto. - (vfloat16mf4x8_t): Ditto. - (vfloat16mf2x2_t): Ditto. - (vfloat16mf2x3_t): Ditto. - (vfloat16mf2x4_t): Ditto. - (vfloat16mf2x5_t): Ditto. - (vfloat16mf2x6_t): Ditto. - (vfloat16mf2x7_t): Ditto. - (vfloat16mf2x8_t): Ditto. - (vfloat16m1x2_t): Ditto. - (vfloat16m1x3_t): Ditto. - (vfloat16m1x4_t): Ditto. - (vfloat16m1x5_t): Ditto. - (vfloat16m1x6_t): Ditto. - (vfloat16m1x7_t): Ditto. - (vfloat16m1x8_t): Ditto. - (vfloat16m2x2_t): Ditto. - (vfloat16m2x3_t): Ditto. - (vfloat16m2x4_t): Ditto. - (vfloat16m4x2_t): Ditto. - * config/riscv/riscv-vector-switch.def (TUPLE_ENTRY): Ditto. - * config/riscv/riscv.md: Ditto. - * config/riscv/vector-iterators.md: Ditto. - -2023-06-25 Ju-Zhe Zhong <juzhe.zhong@rivai.ai> - - * gimple-fold.cc (arith_overflowed_p): Apply LEN_MASK_{LOAD,STORE}. - (gimple_fold_partial_load_store_mem_ref): Ditto. - (gimple_fold_partial_store): Ditto. - (gimple_fold_call): Ditto. - -2023-06-25 liuhongt <hongtao.liu@intel.com> - - PR target/110309 - * config/i386/sse.md (maskload<mode><avx512fmaskmodelower>): - Refine pattern with UNSPEC_MASKLOAD. - (maskload<mode><avx512fmaskmodelower>): Ditto. - (*<avx512>_load<mode>_mask): Extend mode iterator to - VI12HFBF_AVX512VL. - (*<avx512>_load<mode>): Ditto. - -2023-06-25 Ju-Zhe Zhong <juzhe.zhong@rivai.ai> - - * tree-ssa-alias.cc (call_may_clobber_ref_p_1): Add LEN_MASK_STORE. - -2023-06-25 Ju-Zhe Zhong <juzhe.zhong@rivai.ai> - - * tree-ssa-alias.cc (ref_maybe_used_by_call_p_1): Apply - LEN_MASK_{LOAD,STORE} - -2023-06-25 yulong <shiyulong@iscas.ac.cn> - - * config/riscv/vector.md: Add float16 attr at sew、vlmul and ratio. - -2023-06-24 Roger Sayle <roger@nextmovesoftware.com> - - * config/i386/i386.md (*<code>qi_ext<mode>_3): New define_insn. - -2023-06-24 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/autovec.md (*fma<mode>): set clobber to Pmode in expand stage. - (*fma<VI:mode><P:mode>): Ditto. - (*fnma<mode>): Ditto. - (*fnma<VI:mode><P:mode>): Ditto. - -2023-06-24 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/autovec.md (fma<mode>4): New pattern. - (*fma<mode>): Ditto. - (fnma<mode>4): Ditto. - (*fnma<mode>): Ditto. - (fms<mode>4): Ditto. - (*fms<mode>): Ditto. - (fnms<mode>4): Ditto. - (*fnms<mode>): Ditto. - * config/riscv/riscv-protos.h (emit_vlmax_fp_ternary_insn): - New function. - * config/riscv/riscv-v.cc (emit_vlmax_fp_ternary_insn): Ditto. - * config/riscv/vector.md: Fix attribute bug. - -2023-06-24 Ju-Zhe Zhong <juzhe.zhong@rivai.ai> - - * tree-ssa-loop-ivopts.cc (get_mem_type_for_internal_fn): - Apply LEN_MASK_{LOAD,STORE}. - -2023-06-24 Ju-Zhe Zhong <juzhe.zhong@rivai.ai> - - * tree-ssa-loop-ivopts.cc (get_alias_ptr_type_for_ptr_address): - Add LEN_MASK_{LOAD,STORE}. - -2023-06-24 David Malcolm <dmalcolm@redhat.com> - - * diagnostic-format-sarif.cc: Add #define INCLUDE_VECTOR. - * diagnostic.cc: Likewise. - * text-art/box-drawing.cc: Likewise. - * text-art/canvas.cc: Likewise. - * text-art/ruler.cc: Likewise. - * text-art/selftests.cc: Likewise. - * text-art/selftests.h (text_art::canvas): New forward decl. - * text-art/style.cc: Add #define INCLUDE_VECTOR. - * text-art/styled-string.cc: Likewise. - * text-art/table.cc: Likewise. - * text-art/table.h: Remove #include <vector>. - * text-art/theme.cc: Add #define INCLUDE_VECTOR. - * text-art/types.h: Check that INCLUDE_VECTOR is defined. - Remove #include of <vector> and <string>. - * text-art/widget.cc: Add #define INCLUDE_VECTOR. - * text-art/widget.h: Remove #include <vector>. - -2023-06-24 Ju-Zhe Zhong <juzhe.zhong@rivai.ai> - - * internal-fn.cc (expand_partial_store_optab_fn): Adapt for LEN_MASK_STORE. - (internal_load_fn_p): Add LEN_MASK_LOAD. - (internal_store_fn_p): Add LEN_MASK_STORE. - (internal_fn_mask_index): Add LEN_MASK_{LOAD,STORE}. - (internal_fn_stored_value_index): Add LEN_MASK_STORE. - (internal_len_load_store_bias): Add LEN_MASK_{LOAD,STORE}. - * optabs-tree.cc (can_vec_mask_load_store_p): Adapt for LEN_MASK_{LOAD,STORE}. - (get_len_load_store_mode): Ditto. - * optabs-tree.h (can_vec_mask_load_store_p): Ditto. - (get_len_load_store_mode): Ditto. - * tree-vect-stmts.cc (check_load_store_for_partial_vectors): Ditto. - (get_all_ones_mask): New function. - (vectorizable_store): Apply LEN_MASK_{LOAD,STORE} into vectorizer. - (vectorizable_load): Ditto. - -2023-06-23 Marek Polacek <polacek@redhat.com> - - * doc/cpp.texi (__cplusplus): Document value for -std=c++26 and - -std=gnu++26. Document that for C++23, its value is 202302L. - * doc/invoke.texi: Document -std=c++26 and -std=gnu++26. - * dwarf2out.cc (highest_c_language): Handle GNU C++26. - (gen_compile_unit_die): Likewise. - -2023-06-23 Jan Hubicka <jh@suse.cz> - - * tree-ssa-phiprop.cc (propagate_with_phi): Compute post dominators on - demand. - (pass_phiprop::execute): Do not compute it here; return - update_ssa_only_virtuals if something changed. - (pass_data_phiprop): Remove TODO_update_ssa from todos. - -2023-06-23 Michael Meissner <meissner@linux.ibm.com> - Aaron Sawdey <acsawdey@linux.ibm.com> - - PR target/105325 - * config/rs6000/genfusion.pl (gen_ld_cmpi_p10_one): Fix problems that - allowed prefixed lwa to be generated. - * config/rs6000/fusion.md: Regenerate. - * config/rs6000/predicates.md (ds_form_mem_operand): Delete. - * config/rs6000/rs6000.md (prefixed attribute): Add support for load - plus compare immediate fused insns. - (maybe_prefixed): Likewise. - -2023-06-23 Roger Sayle <roger@nextmovesoftware.com> - - * simplify-rtx.cc (simplify_subreg): Optimize lowpart SUBREGs - of ASHIFT to const0_rtx with sufficiently large shift count. - Optimize highpart SUBREGs of ASHIFT as the shift operand when - the shift count is the correct offset. Optimize SUBREGs of - multi-word logic operations if the SUBREGs of both operands - can be simplified. - -2023-06-23 Richard Biener <rguenther@suse.de> - - * varasm.cc (initializer_constant_valid_p_1): Only - allow conversions between scalar floating point types. - -2023-06-23 Richard Biener <rguenther@suse.de> - - * tree-vect-stmts.cc (vectorizable_assignment): - Properly handle non-integral operands when analyzing - conversions. - -2023-06-23 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org> - - PR tree-optimization/110280 - * match.pd (vec_perm_expr(v, v, mask) -> v): Explicitly build vector - using build_vector_from_val with the element of input operand, and - mask's type if operand and mask's types don't match. - -2023-06-23 Richard Biener <rguenther@suse.de> - - * fold-const.cc (tree_simple_nonnegative_warnv_p): Guard - the truth_value_p case with !VECTOR_TYPE_P. - -2023-06-23 Richard Biener <rguenther@suse.de> - - * tree-vect-patterns.cc (vect_look_through_possible_promotion): - Exit early when the type isn't scalar integral. - -2023-06-23 Richard Biener <rguenther@suse.de> - - * match.pd ((outertype)((innertype0)a+(innertype1)b) - -> ((newtype)a+(newtype)b)): Use element_precision - where appropriate. - -2023-06-23 Richard Biener <rguenther@suse.de> - - * fold-const.cc (fold_binary_loc): Use element_precision - when trying (double)float1 CMP (double)float2 to - float1 CMP float2 simplification. - * match.pd: Likewise. - -2023-06-23 Richard Biener <rguenther@suse.de> - - * tree-vect-stmts.cc (vectorizable_load): Avoid useless - copies of VMAT_INVARIANT vectorized stmts, fix SLP support. - -2023-06-23 Richard Biener <rguenther@suse.de> - - * tree-vect-stmts.cc (vector_vector_composition_type): - Handle composition of a vector from a number of elements that - happens to match its number of lanes. - -2023-06-22 Marek Polacek <polacek@redhat.com> - - * configure.ac (--enable-host-bind-now): New check. Add - -Wl,-z,now to LD_PICFLAG if --enable-host-bind-now. - * configure: Regenerate. - * doc/install.texi: Document --enable-host-bind-now. - -2023-06-22 Di Zhao OS <dizhao@os.amperecomputing.com> - - * config/aarch64/aarch64.cc: Change fma_reassoc_width for ampere1. - -2023-06-22 Richard Biener <rguenther@suse.de> - - PR tree-optimization/110332 - * tree-ssa-phiprop.cc (propagate_with_phi): Always - check aliasing with edge inserted loads. - -2023-06-22 Roger Sayle <roger@nextmovesoftware.com> - Uros Bizjak <ubizjak@gmail.com> - - * config/i386/i386-expand.cc (ix86_expand_sse_ptest): Recognize - expansion of ptestc with equal operands as producing const1_rtx. - * config/i386/i386.cc (ix86_rtx_costs): Provide accurate cost - estimates of UNSPEC_PTEST, where the ptest performs the PAND - or PAND of its operands. - * config/i386/sse.md (define_split): Transform CCCmode UNSPEC_PTEST - of reg_equal_p operands into an x86_stc instruction. - (define_split): Split pandn/ptestz/set{n?}e into ptestc/set{n?}c. - (define_split): Similar to above for strict_low_part destinations. - (define_split): Split pandn/ptestz/j{n?}e into ptestc/j{n?}c. - -2023-06-22 David Malcolm <dmalcolm@redhat.com> - - PR analyzer/106626 - * Makefile.in (ANALYZER_OBJS): Add analyzer/access-diagram.o. - * doc/invoke.texi (Wanalyzer-out-of-bounds): Add description of - text art. - (fanalyzer-debug-text-art): New. - -2023-06-22 David Malcolm <dmalcolm@redhat.com> - - * Makefile.in (OBJS-libcommon): Add text-art/box-drawing.o, - text-art/canvas.o, text-art/ruler.o, text-art/selftests.o, - text-art/style.o, text-art/styled-string.o, text-art/table.o, - text-art/theme.o, and text-art/widget.o. - * color-macros.h (COLOR_FG_BRIGHT_BLACK): New. - (COLOR_FG_BRIGHT_RED): New. - (COLOR_FG_BRIGHT_GREEN): New. - (COLOR_FG_BRIGHT_YELLOW): New. - (COLOR_FG_BRIGHT_BLUE): New. - (COLOR_FG_BRIGHT_MAGENTA): New. - (COLOR_FG_BRIGHT_CYAN): New. - (COLOR_FG_BRIGHT_WHITE): New. - (COLOR_BG_BRIGHT_BLACK): New. - (COLOR_BG_BRIGHT_RED): New. - (COLOR_BG_BRIGHT_GREEN): New. - (COLOR_BG_BRIGHT_YELLOW): New. - (COLOR_BG_BRIGHT_BLUE): New. - (COLOR_BG_BRIGHT_MAGENTA): New. - (COLOR_BG_BRIGHT_CYAN): New. - (COLOR_BG_BRIGHT_WHITE): New. - * common.opt (fdiagnostics-text-art-charset=): New option. - (diagnostic-text-art.h): New SourceInclude. - (diagnostic_text_art_charset) New Enum and EnumValues. - * configure: Regenerate. - * configure.ac (gccdepdir): Add text-art to loop. - * diagnostic-diagram.h: New file. - * diagnostic-format-json.cc (json_emit_diagram): New. - (diagnostic_output_format_init_json): Wire it up to - context->m_diagrams.m_emission_cb. - * diagnostic-format-sarif.cc: Include "diagnostic-diagram.h" and - "text-art/canvas.h". - (sarif_result::on_nested_diagnostic): Move code to... - (sarif_result::add_related_location): ...this new function. - (sarif_result::on_diagram): New. - (sarif_builder::emit_diagram): New. - (sarif_builder::make_message_object_for_diagram): New. - (sarif_emit_diagram): New. - (diagnostic_output_format_init_sarif): Set - context->m_diagrams.m_emission_cb to sarif_emit_diagram. - * diagnostic-text-art.h: New file. - * diagnostic.cc: Include "diagnostic-text-art.h", - "diagnostic-diagram.h", and "text-art/theme.h". - (diagnostic_initialize): Initialize context->m_diagrams and - call diagnostics_text_art_charset_init. - (diagnostic_finish): Clean up context->m_diagrams.m_theme. - (diagnostic_emit_diagram): New. - (diagnostics_text_art_charset_init): New. - * diagnostic.h (text_art::theme): New forward decl. - (class diagnostic_diagram): Likewise. - (diagnostic_context::m_diagrams): New field. - (diagnostic_emit_diagram): New decl. - * doc/invoke.texi (Diagnostic Message Formatting Options): Add - -fdiagnostics-text-art-charset=. - (-fdiagnostics-plain-output): Add - -fdiagnostics-text-art-charset=none. - * gcc.cc: Include "diagnostic-text-art.h". - (driver_handle_option): Handle OPT_fdiagnostics_text_art_charset_. - * opts-common.cc (decode_cmdline_options_to_array): Add - "-fdiagnostics-text-art-charset=none" to expanded_args for - -fdiagnostics-plain-output. - * opts.cc: Include "diagnostic-text-art.h". - (common_handle_option): Handle OPT_fdiagnostics_text_art_charset_. - * pretty-print.cc (pp_unicode_character): New. - * pretty-print.h (pp_unicode_character): New decl. - * selftest-run-tests.cc: Include "text-art/selftests.h". - (selftest::run_tests): Call text_art_tests. - * text-art/box-drawing-chars.inc: New file, generated by - contrib/unicode/gen-box-drawing-chars.py. - * text-art/box-drawing.cc: New file. - * text-art/box-drawing.h: New file. - * text-art/canvas.cc: New file. - * text-art/canvas.h: New file. - * text-art/ruler.cc: New file. - * text-art/ruler.h: New file. - * text-art/selftests.cc: New file. - * text-art/selftests.h: New file. - * text-art/style.cc: New file. - * text-art/styled-string.cc: New file. - * text-art/table.cc: New file. - * text-art/table.h: New file. - * text-art/theme.cc: New file. - * text-art/theme.h: New file. - * text-art/types.h: New file. - * text-art/widget.cc: New file. - * text-art/widget.h: New file. - -2023-06-21 Uros Bizjak <ubizjak@gmail.com> - - * function.h (emit_initial_value_sets): - Change return type from int to void. - (aggregate_value_p): Change return type from int to bool. - (prologue_contains): Ditto. - (epilogue_contains): Ditto. - (prologue_epilogue_contains): Ditto. - * function.cc (temp_slot): Make "in_use" variable bool. - (make_slot_available): Update for changed "in_use" variable. - (assign_stack_temp_for_type): Ditto. - (emit_initial_value_sets): Change return type from int to void - and update function body accordingly. - (instantiate_virtual_regs): Ditto. - (rest_of_handle_thread_prologue_and_epilogue): Ditto. - (safe_insn_predicate): Change return type from int to bool. - (aggregate_value_p): Change return type from int to bool - and update function body accordingly. - (prologue_contains): Change return type from int to bool. - (prologue_epilogue_contains): Ditto. - -2023-06-21 Alexander Monakov <amonakov@ispras.ru> - - * common.opt (fp_contract_mode) [on]: Remove fallback. - * config/sh/sh.md (*fmasf4): Correct flag_fp_contract_mode test. - * doc/invoke.texi (-ffp-contract): Update. - * trans-mem.cc (diagnose_tm_1): Skip internal function calls. - -2023-06-21 Kyrylo Tkachov <kyrylo.tkachov@arm.com> - - * config/aarch64/aarch64-sve.md (mask_gather_load<mode><v_int_container>): - Add alternatives to prefer to avoid same input and output Z register. - (mask_gather_load<mode><v_int_container>): Likewise. - (*mask_gather_load<mode><v_int_container>_<su>xtw_unpacked): Likewise. - (*mask_gather_load<mode><v_int_container>_sxtw): Likewise. - (*mask_gather_load<mode><v_int_container>_uxtw): Likewise. - (@aarch64_gather_load_<ANY_EXTEND:optab><SVE_4HSI:mode><SVE_4BHI:mode>): - Likewise. - (@aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode><SVE_2BHSI:mode>): - Likewise. - (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode> - <SVE_2BHSI:mode>_<ANY_EXTEND2:su>xtw_unpacked): Likewise. - (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode> - <SVE_2BHSI:mode>_sxtw): Likewise. - (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode> - <SVE_2BHSI:mode>_uxtw): Likewise. - (@aarch64_ldff1_gather<mode>): Likewise. - (@aarch64_ldff1_gather<mode>): Likewise. - (*aarch64_ldff1_gather<mode>_sxtw): Likewise. - (*aarch64_ldff1_gather<mode>_uxtw): Likewise. - (@aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx4_WIDE:mode> - <VNx4_NARROW:mode>): Likewise. - (@aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode> - <VNx2_NARROW:mode>): Likewise. - (*aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode> - <VNx2_NARROW:mode>_sxtw): Likewise. - (*aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode> - <VNx2_NARROW:mode>_uxtw): Likewise. - * config/aarch64/aarch64-sve2.md (@aarch64_gather_ldnt<mode>): Likewise. - (@aarch64_gather_ldnt_<ANY_EXTEND:optab><SVE_FULL_SDI:mode> - <SVE_PARTIAL_I:mode>): Likewise. - -2023-06-21 Kyrylo Tkachov <kyrylo.tkachov@arm.com> - - * config/aarch64/aarch64-sve.md (mask_gather_load<mode><v_int_container>): - Convert to compact alternatives syntax. - (mask_gather_load<mode><v_int_container>): Likewise. - (*mask_gather_load<mode><v_int_container>_<su>xtw_unpacked): Likewise. - (*mask_gather_load<mode><v_int_container>_sxtw): Likewise. - (*mask_gather_load<mode><v_int_container>_uxtw): Likewise. - (@aarch64_gather_load_<ANY_EXTEND:optab><SVE_4HSI:mode><SVE_4BHI:mode>): - Likewise. - (@aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode><SVE_2BHSI:mode>): - Likewise. - (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode> - <SVE_2BHSI:mode>_<ANY_EXTEND2:su>xtw_unpacked): Likewise. - (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode> - <SVE_2BHSI:mode>_sxtw): Likewise. - (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode> - <SVE_2BHSI:mode>_uxtw): Likewise. - (@aarch64_ldff1_gather<mode>): Likewise. - (@aarch64_ldff1_gather<mode>): Likewise. - (*aarch64_ldff1_gather<mode>_sxtw): Likewise. - (*aarch64_ldff1_gather<mode>_uxtw): Likewise. - (@aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx4_WIDE:mode> - <VNx4_NARROW:mode>): Likewise. - (@aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode> - <VNx2_NARROW:mode>): Likewise. - (*aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode> - <VNx2_NARROW:mode>_sxtw): Likewise. - (*aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode> - <VNx2_NARROW:mode>_uxtw): Likewise. - * config/aarch64/aarch64-sve2.md (@aarch64_gather_ldnt<mode>): Likewise. - (@aarch64_gather_ldnt_<ANY_EXTEND:optab><SVE_FULL_SDI:mode> - <SVE_PARTIAL_I:mode>): Likewise. - -2023-06-21 Kyrylo Tkachov <kyrylo.tkachov@arm.com> - - Revert: - 2023-06-21 Kyrylo Tkachov <kyrylo.tkachov@arm.com> - - * config/aarch64/aarch64-sve.md (mask_gather_load<mode><v_int_container>): - Convert to compact alternatives syntax. - (mask_gather_load<mode><v_int_container>): Likewise. - (*mask_gather_load<mode><v_int_container>_<su>xtw_unpacked): Likewise. - (*mask_gather_load<mode><v_int_container>_sxtw): Likewise. - (*mask_gather_load<mode><v_int_container>_uxtw): Likewise. - (@aarch64_gather_load_<ANY_EXTEND:optab><SVE_4HSI:mode><SVE_4BHI:mode>): - Likewise. - (@aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode><SVE_2BHSI:mode>): - Likewise. - (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode> - <SVE_2BHSI:mode>_<ANY_EXTEND2:su>xtw_unpacked): Likewise. - (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode> - <SVE_2BHSI:mode>_sxtw): Likewise. - (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode> - <SVE_2BHSI:mode>_uxtw): Likewise. - (@aarch64_ldff1_gather<mode>): Likewise. - (@aarch64_ldff1_gather<mode>): Likewise. - (*aarch64_ldff1_gather<mode>_sxtw): Likewise. - (*aarch64_ldff1_gather<mode>_uxtw): Likewise. - (@aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx4_WIDE:mode> - <VNx4_NARROW:mode>): Likewise. - (@aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode> - <VNx2_NARROW:mode>): Likewise. - (*aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode> - <VNx2_NARROW:mode>_sxtw): Likewise. - (*aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode> - <VNx2_NARROW:mode>_uxtw): Likewise. - * config/aarch64/aarch64-sve2.md (@aarch64_gather_ldnt<mode>): Likewise. - (@aarch64_gather_ldnt_<ANY_EXTEND:optab><SVE_FULL_SDI:mode> - <SVE_PARTIAL_I:mode>): Likewise. - -2023-06-21 Ju-Zhe Zhong <juzhe.zhong@rivai.ai> - - * optabs-query.cc (can_vec_mask_load_store_p): Move to optabs-tree.cc. - (get_len_load_store_mode): Ditto. - * optabs-query.h (can_vec_mask_load_store_p): Move to optabs-tree.h. - (get_len_load_store_mode): Ditto. - * optabs-tree.cc (can_vec_mask_load_store_p): New function. - (get_len_load_store_mode): Ditto. - * optabs-tree.h (can_vec_mask_load_store_p): Ditto. - (get_len_load_store_mode): Ditto. - * tree-if-conv.cc: include optabs-tree instead of optabs-query - -2023-06-21 Richard Biener <rguenther@suse.de> - - * tree-ssa-loop-ivopts.cc (add_iv_candidate_for_use): Use - split_constant_offset for the POINTER_PLUS_EXPR case. - -2023-06-21 Richard Biener <rguenther@suse.de> - - * tree-ssa-loop-ivopts.cc (record_group_use): Use - split_constant_offset. - -2023-06-21 Richard Biener <rguenther@suse.de> - - * tree-loop-distribution.cc (classify_builtin_st): Use - split_constant_offset. - * tree-ssa-loop-ivopts.h (strip_offset): Remove. - * tree-ssa-loop-ivopts.cc (strip_offset): Make static. - -2023-06-21 Kyrylo Tkachov <kyrylo.tkachov@arm.com> - - * config/aarch64/aarch64-sve.md (mask_gather_load<mode><v_int_container>): - Convert to compact alternatives syntax. - (mask_gather_load<mode><v_int_container>): Likewise. - (*mask_gather_load<mode><v_int_container>_<su>xtw_unpacked): Likewise. - (*mask_gather_load<mode><v_int_container>_sxtw): Likewise. - (*mask_gather_load<mode><v_int_container>_uxtw): Likewise. - (@aarch64_gather_load_<ANY_EXTEND:optab><SVE_4HSI:mode><SVE_4BHI:mode>): - Likewise. - (@aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode><SVE_2BHSI:mode>): - Likewise. - (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode> - <SVE_2BHSI:mode>_<ANY_EXTEND2:su>xtw_unpacked): Likewise. - (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode> - <SVE_2BHSI:mode>_sxtw): Likewise. - (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode> - <SVE_2BHSI:mode>_uxtw): Likewise. - (@aarch64_ldff1_gather<mode>): Likewise. - (@aarch64_ldff1_gather<mode>): Likewise. - (*aarch64_ldff1_gather<mode>_sxtw): Likewise. - (*aarch64_ldff1_gather<mode>_uxtw): Likewise. - (@aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx4_WIDE:mode> - <VNx4_NARROW:mode>): Likewise. - (@aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode> - <VNx2_NARROW:mode>): Likewise. - (*aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode> - <VNx2_NARROW:mode>_sxtw): Likewise. - (*aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode> - <VNx2_NARROW:mode>_uxtw): Likewise. - * config/aarch64/aarch64-sve2.md (@aarch64_gather_ldnt<mode>): Likewise. - (@aarch64_gather_ldnt_<ANY_EXTEND:optab><SVE_FULL_SDI:mode> - <SVE_PARTIAL_I:mode>): Likewise. - -2023-06-21 Tamar Christina <tamar.christina@arm.com> - - PR other/110329 - * doc/md.texi: Replace backslashchar. - -2023-06-21 Richard Biener <rguenther@suse.de> - - * config/i386/i386.cc (ix86_vector_costs::finish_cost): - Overload. For masked main loops make sure the vectorization - factor isn't more than double the number of iterations. - -2023-06-21 Jan Beulich <jbeulich@suse.com> - - * config/i386/i386-expand.cc (ix86_expand_copysign): Request - value duplication by ix86_build_signbit_mask() when AVX512F and - not HFmode. - * config/i386/sse.md (*<avx512>_vternlog<mode>_all): Convert to - 2-alternative form. Adjust "mode" attribute. Add "enabled" - attribute. - (*<avx512>_vpternlog<mode>_1): Also permit when TARGET_AVX512F - && !TARGET_PREFER_AVX256. - (*<avx512>_vpternlog<mode>_2): Likewise. - (*<avx512>_vpternlog<mode>_3): Likewise. - -2023-06-21 liuhongt <hongtao.liu@intel.com> - - PR target/110018 - * tree-vect-stmts.cc (vectorizable_conversion): Use - intermiediate integer type for float_expr/fix_trunc_expr when - direct optab is not existed. - -2023-06-20 Tamar Christina <tamar.christina@arm.com> - - PR bootstrap/110324 - * gensupport.cc (convert_syntax): Explicitly check for RTX code. - -2023-06-20 Richard Sandiford <richard.sandiford@arm.com> - - * config/aarch64/aarch64.md (stack_tie): Hard-code the first - register operand to the stack pointer. Require the second register - operand to have the number specified in a separate const_int operand. - * config/aarch64/aarch64.cc (aarch64_emit_stack_tie): New function. - (aarch64_allocate_and_probe_stack_space): Use it. - (aarch64_expand_prologue, aarch64_expand_epilogue): Likewise. - (aarch64_expand_epilogue): Likewise. - -2023-06-20 Jakub Jelinek <jakub@redhat.com> - - PR middle-end/79173 - * tree-ssa-math-opts.cc (match_uaddc_usubc): Remember lhs of - IMAGPART_EXPR of arg2/arg3 and use that as arg3 if it has the right - type. - -2023-06-20 Uros Bizjak <ubizjak@gmail.com> - - * calls.h (setjmp_call_p): Change return type from int to bool. - * calls.cc (struct arg_data): Change "pass_on_stack" to bool. - (store_one_arg): Change return type from int to bool - and adjust function body accordingly. Change "sibcall_failure" - variable to bool. - (finalize_must_preallocate): Ditto. Change *must_preallocate pointer - argument to bool. Change "partial_seen" variable to bool. - (load_register_parameters): Change *sibcall_failure - pointer argument to bool. - (check_sibcall_argument_overlap_1): Change return type from int to bool - and adjust function body accordingly. - (check_sibcall_argument_overlap): Ditto. Change - "mark_stored_args_map" argument to bool. - (emit_call_1): Change "already_popped" variable to bool. - (setjmp_call_p): Change return type from int to bool - and adjust function body accordingly. - (initialize_argument_information): Change *must_preallocate - pointer argument to bool. - (expand_call): Change "pcc_struct_value", "must_preallocate" - and "sibcall_failure" variables to bool. - (emit_library_call_value_1): Change "pcc_struct_value" - variable to bool. - -2023-06-20 Martin Jambor <mjambor@suse.cz> - - PR ipa/110276 - * ipa-sra.cc (struct caller_issues): New field there_is_one. - (check_for_caller_issues): Set it. - (check_all_callers_for_issues): Check it. - -2023-06-20 Martin Jambor <mjambor@suse.cz> - - * ipa-prop.h (ipa_uid_to_idx_map_elt): New type. - (struct ipcp_transformation): Rearrange members according to - C++ class coding convention, add m_uid_to_idx, - get_param_index and maybe_create_parm_idx_map. - * ipa-cp.cc (ipcp_transformation::get_param_index): New function. - (compare_uids): Likewise. - (ipcp_transformation::maype_create_parm_idx_map): Likewise. - * ipa-prop.cc (ipcp_get_parm_bits): Use get_param_index. - (ipcp_update_bits): Accept TS as a parameter, assume it is not NULL. - (ipcp_update_vr): Likewise. - (ipcp_transform_function): Call, maybe_create_parm_idx_map of TS, bail - out quickly if empty, pass it to ipcp_update_bits and ipcp_update_vr. - -2023-06-20 Carl Love <cel@us.ibm.com> - - * config/rs6000/rs6000-builtin.cc (rs6000_expand_builtin): - Rename CODE_FOR_xsxsigqp_tf to CODE_FOR_xsxsigqp_tf_ti. - Rename CODE_FOR_xsxsigqp_kf to CODE_FOR_xsxsigqp_kf_ti. - Rename CCDE_FOR_xsxexpqp_tf to CODE_FOR_xsxexpqp_tf_di. - Rename CODE_FOR_xsxexpqp_kf to CODE_FOR_xsxexpqp_kf_di. - (CODE_FOR_xsxexpqp_kf_v2di, CODE_FOR_xsxsigqp_kf_v1ti, - CODE_FOR_xsiexpqp_kf_v2di): Add case statements. - * config/rs6000/rs6000-builtins.def - (__builtin_vsx_scalar_extract_exp_to_vec, - __builtin_vsx_scalar_extract_sig_to_vec, - __builtin_vsx_scalar_insert_exp_vqp): Add new builtin definitions. - Rename xsxexpqp_kf, xsxsigqp_kf, xsiexpqp_kf to xsexpqp_kf_di, - xsxsigqp_kf_ti, xsiexpqp_kf_di respectively. - * config/rs6000/rs6000-c.cc (altivec_resolve_overloaded_builtin): - Update case RS6000_OVLD_VEC_VSIE to handle MODE_VECTOR_INT for new - overloaded instance. Update comments. - * config/rs6000/rs6000-overload.def - (__builtin_vec_scalar_insert_exp): Add new overload definition with - vector arguments. - (scalar_extract_exp_to_vec, scalar_extract_sig_to_vec): New - overloaded definitions. - * config/rs6000/vsx.md (V2DI_DI): New mode iterator. - (DI_to_TI): New mode attribute. - Rename xsxexpqp_<mode> to sxexpqp_<IEEE128:mode>_<V2DI_DI:mode>. - Rename xsxsigqp_<mode> to xsxsigqp_<IEEE128:mode>_<VEC_TI:mode>. - Rename xsiexpqp_<mode> to xsiexpqp_<IEEE128:mode>_<V2DI_DI:mode>. - * doc/extend.texi (scalar_extract_exp_to_vec, - scalar_extract_sig_to_vec): Add documentation for new builtins. - (scalar_insert_exp): Add new overloaded builtin definition. - -2023-06-20 Li Xu <xuli1@eswincomputing.com> - - * config/riscv/riscv.cc (riscv_regmode_natural_size): set the natural - size of vector mask mode to one rvv register. - -2023-06-20 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv-v.cc (expand_const_vector): Optimize codegen. - -2023-06-20 Lehua Ding <lehua.ding@rivai.ai> - - * config/riscv/riscv.cc (riscv_arg_has_vector): Add default - switch handler. - -2023-06-20 Richard Biener <rguenther@suse.de> - - * tree-ssa-dse.cc (dse_classify_store): When we found - no defs and the basic-block with the original definition - ends in __builtin_unreachable[_trap] the store is dead. - -2023-06-20 Richard Biener <rguenther@suse.de> - - * tree-ssa-phiprop.cc (phiprop_insert_phi): For simple loads - keep the virtual SSA form up-to-date. - -2023-06-20 Kyrylo Tkachov <kyrylo.tkachov@arm.com> - - * config/aarch64/aarch64-simd.md (*aarch64_addp_same_reg<mode>): - New define_insn_and_split. - -2023-06-20 Tamar Christina <tamar.christina@arm.com> - - * config/aarch64/aarch64.md (*mov<mode>_aarch64): Drop test comment. - -2023-06-20 Jan Beulich <jbeulich@suse.com> - - * config/i386/sse.md (vec_dupv2di): Correct %vmovddup input - constraint. Add new AVX512F alternative. - -2023-06-20 Richard Biener <rguenther@suse.de> - - PR debug/110295 - * dwarf2out.cc (process_scope_var): Continue processing - the decl after setting a parent in case the existing DIE - was in limbo. - -2023-06-20 Lehua Ding <lehua.ding@rivai.ai> - - * config/riscv/riscv.cc (riscv_scalable_vector_type_p): Delete. - (riscv_arg_has_vector): Simplify. - (riscv_pass_in_vector_p): Adjust warning message. - -2023-06-19 Jin Ma <jinma@linux.alibaba.com> - - * config/riscv/riscv.cc (riscv_compute_frame_info): Allocate frame for FCSR. - (riscv_for_each_saved_reg): Save and restore FCSR in interrupt functions. - * config/riscv/riscv.md (riscv_frcsr): New patterns. - (riscv_fscsr): Likewise. - -2023-06-19 Toru Kisuki <tkisuki@tachyum.com> - - PR rtl-optimization/110305 - * simplify-rtx.cc (simplify_context::simplify_binary_operation_1): - Handle HONOR_SNANS for x + 0.0. - -2023-06-19 Jan Hubicka <jh@suse.cz> - - PR tree-optimization/109811 - PR tree-optimization/109849 - * passes.def: Add phiprop to early optimization passes. - * tree-ssa-phiprop.cc: Allow clonning. - -2023-06-19 Tamar Christina <tamar.christina@arm.com> - - * config/aarch64/aarch64.md (arches): Add nosimd. - (*mov<mode>_aarch64, *movsi_aarch64, *movdi_aarch64): Rewrite to - compact syntax. - -2023-06-19 Tamar Christina <tamar.christina@arm.com> - Omar Tahir <Omar.Tahir2@arm.com> - - * gensupport.cc (class conlist, add_constraints, add_attributes, - skip_spaces, expect_char, preprocess_compact_syntax, - parse_section_layout, parse_section, convert_syntax): New. - (process_rtx): Check for conversion. - * genoutput.cc (process_template): Check for unresolved iterators. - (class data): Add compact_syntax_p. - (gen_insn): Use it. - * gensupport.h (compact_syntax): New. - (hash-set.h): Include. - * doc/md.texi: Document it. - -2023-06-19 Uros Bizjak <ubizjak@gmail.com> - - * recog.h (check_asm_operands): Change return type from int to bool. - (insn_invalid_p): Ditto. - (verify_changes): Ditto. - (apply_change_group): Ditto. - (constrain_operands): Ditto. - (constrain_operands_cached): Ditto. - (validate_replace_rtx_subexp): Ditto. - (validate_replace_rtx): Ditto. - (validate_replace_rtx_part): Ditto. - (validate_replace_rtx_part_nosimplify): Ditto. - (added_clobbers_hard_reg_p): Ditto. - (peep2_regno_dead_p): Ditto. - (peep2_reg_dead_p): Ditto. - (store_data_bypass_p): Ditto. - (if_test_bypass_p): Ditto. - * rtl.h (split_all_insns_noflow): Change - return type from unsigned int to void. - * genemit.cc (output_added_clobbers_hard_reg_p): Change return type - of generated added_clobbers_hard_reg_p from int to bool and adjust - function body accordingly. Change "used" variable type from - int to bool. - * recog.cc (check_asm_operands): Change return type - from int to bool and adjust function body accordingly. - (insn_invalid_p): Ditto. Change "is_asm" variable to bool. - (verify_changes): Change return type from int to bool. - (apply_change_group): Change return type from int to bool - and adjust function body accordingly. - (validate_replace_rtx_subexp): Change return type from int to bool. - (validate_replace_rtx): Ditto. - (validate_replace_rtx_part): Ditto. - (validate_replace_rtx_part_nosimplify): Ditto. - (constrain_operands_cached): Ditto. - (constrain_operands): Ditto. Change "lose" and "win" - variables type from int to bool. - (split_all_insns_noflow): Change return type from unsigned int - to void and adjust function body accordingly. - (peep2_regno_dead_p): Change return type from int to bool. - (peep2_reg_dead_p): Ditto. - (peep2_find_free_register): Change "success" - variable type from int to bool - (store_data_bypass_p_1): Change return type from int to bool. - (store_data_bypass_p): Ditto. - -2023-06-19 Li Xu <xuli1@eswincomputing.com> - - * config/riscv/vector-iterators.md: zvfh/zvfhmin depends on the - Zve32f extension. - -2023-06-19 Pan Li <pan2.li@intel.com> - - PR target/110299 - * config/riscv/riscv-vector-builtins-bases.cc: Adjust expand for - modes. - * config/riscv/vector-iterators.md: Remove VWLMUL1, VWLMUL1_ZVE64, - VWLMUL1_ZVE32, VI_ZVE64, VI_ZVE32, VWI, VWI_ZVE64, VWI_ZVE32, - VF_ZVE63 and VF_ZVE32. - * config/riscv/vector.md - (@pred_widen_reduc_plus<v_su><mode><vwlmul1>): Removed. - (@pred_widen_reduc_plus<v_su><mode><vwlmul1_zve64>): Ditto. - (@pred_widen_reduc_plus<v_su><mode><vwlmul1_zve32>): Ditto. - (@pred_widen_reduc_plus<order><mode><vwlmul1>): Ditto. - (@pred_widen_reduc_plus<order><mode><vwlmul1_zve64>): Ditto. - (@pred_widen_reduc_plus<v_su><VQI:mode><VHI_LMUL1:mode>): New pattern. - (@pred_widen_reduc_plus<v_su><VHI:mode><VSI_LMUL1:mode>): Ditto. - (@pred_widen_reduc_plus<v_su><VSI:mode><VDI_LMUL1:mode>): Ditto. - (@pred_widen_reduc_plus<order><VHF:mode><VSF_LMUL1:mode>): Ditto. - (@pred_widen_reduc_plus<order><VSF:mode><VDF_LMUL1:mode>): Ditto. - -2023-06-19 Pan Li <pan2.li@intel.com> - - PR target/110277 - * config/riscv/riscv-vector-builtins-bases.cc: Adjust expand for - ret_mode. - * config/riscv/vector-iterators.md: Add VHF, VSF, VDF, - VHF_LMUL1, VSF_LMUL1, VDF_LMUL1, and remove unused attr. - * config/riscv/vector.md (@pred_reduc_<reduc><mode><vlmul1>): Removed. - (@pred_reduc_<reduc><mode><vlmul1_zve64>): Ditto. - (@pred_reduc_<reduc><mode><vlmul1_zve32>): Ditto. - (@pred_reduc_plus<order><mode><vlmul1>): Ditto. - (@pred_reduc_plus<order><mode><vlmul1_zve32>): Ditto. - (@pred_reduc_plus<order><mode><vlmul1_zve64>): Ditto. - (@pred_reduc_<reduc><VHF:mode><VHF_LMUL1:mode>): New pattern. - (@pred_reduc_<reduc><VSF:mode><VSF_LMUL1:mode>): Ditto. - (@pred_reduc_<reduc><VDF:mode><VDF_LMUL1:mode>): Ditto. - (@pred_reduc_plus<order><VHF:mode><VHF_LMUL1:mode>): Ditto. - (@pred_reduc_plus<order><VSF:mode><VSF_LMUL1:mode>): Ditto. - (@pred_reduc_plus<order><VDF:mode><VDF_LMUL1:mode>): Ditto. - -2023-06-19 Andrew Stubbs <ams@codesourcery.com> - - * config/gcn/gcn.cc (gcn_expand_divmod_libfunc): New function. - (gcn_init_libfuncs): Add div and mod functions for all modes. - Add placeholders for divmod functions. - (TARGET_EXPAND_DIVMOD_LIBFUNC): Define. - -2023-06-19 Andrew Stubbs <ams@codesourcery.com> - - * tree-vect-generic.cc: Include optabs-libfuncs.h. - (get_compute_type): Check optab_libfunc. - * tree-vect-stmts.cc: Include optabs-libfuncs.h. - (vectorizable_operation): Check optab_libfunc. - -2023-06-19 Andrew Stubbs <ams@codesourcery.com> - - * config/gcn/gcn-protos.h (vgpr_4reg_mode_p): New function. - * config/gcn/gcn-valu.md (V_4REG, V_4REG_ALT): New iterators. - (V_MOV, V_MOV_ALT): Likewise. - (scalar_mode, SCALAR_MODE): Add TImode. - (vnsi, VnSI, vndi, VnDI): Likewise. - (vec_merge, vec_merge_with_clobber, vec_merge_with_vcc): Use V_MOV. - (mov<mode>, mov<mode>_unspec): Use V_MOV. - (*mov<mode>_4reg): New insn. - (mov<mode>_exec): New 4reg variant. - (mov<mode>_sgprbase): Likewise. - (reload_in<mode>, reload_out<mode>): Use V_MOV. - (vec_set<mode>): Likewise. - (vec_duplicate<mode><exec>): New 4reg variant. - (vec_extract<mode><scalar_mode>): Likewise. - (vec_extract<V_ALL:mode><V_ALL_ALT:mode>): Rename to ... - (vec_extract<V_MOV:mode><V_MOV_ALT:mode>): ... this, and use V_MOV. - (vec_extract<V_4REG:mode><V_4REG_ALT:mode>_nop): New 4reg variant. - (fold_extract_last_<mode>): Use V_MOV. - (vec_init<V_ALL:mode><V_ALL_ALT:mode>): Rename to ... - (vec_init<V_MOV:mode><V_MOV_ALT:mode>): ... this, and use V_MOV. - (gather_load<mode><vnsi>, gather<mode>_expr<exec>, - gather<mode>_insn_1offset<exec>, gather<mode>_insn_1offset_ds<exec>, - gather<mode>_insn_2offsets<exec>): Use V_MOV. - (scatter_store<mode><vnsi>, scatter<mode>_expr<exec_scatter>, - scatter<mode>_insn_1offset<exec_scatter>, - scatter<mode>_insn_1offset_ds<exec_scatter>, - scatter<mode>_insn_2offsets<exec_scatter>): Likewise. - (maskload<mode>di, maskstore<mode>di, mask_gather_load<mode><vnsi>, - mask_scatter_store<mode><vnsi>): Likewise. - * config/gcn/gcn.cc (gcn_class_max_nregs): Use vgpr_4reg_mode_p. - (gcn_hard_regno_mode_ok): Likewise. - (GEN_VNM): Add TImode support. - (USE_TI): New macro. Separate TImode operations from non-TImode ones. - (gcn_vector_mode_supported_p): Add V64TImode, V32TImode, V16TImode, - V8TImode, and V2TImode. - (print_operand): Add 'J' and 'K' print codes. - -2023-06-19 Richard Biener <rguenther@suse.de> - - PR tree-optimization/110298 - * tree-ssa-loop-ivcanon.cc (tree_unroll_loops_completely): - Clear number of iterations info before cleaning up the CFG. - -2023-06-19 Kyrylo Tkachov <kyrylo.tkachov@arm.com> - - * simplify-rtx.cc (simplify_context::simplify_binary_operation_1): - Simplify vec_concat of lowpart subreg and high part vec_select. - -2023-06-19 Tobias Burnus <tobias@codesourcery.com> - - * doc/invoke.texi (-foffload-options): Remove '-O3' from the examples. - -2023-06-19 Richard Sandiford <richard.sandiford@arm.com> - - * tree-vect-loop-manip.cc (vect_set_loop_condition_partial_vectors): - Handle null niters_skip. - -2023-06-19 Richard Biener <rguenther@suse.de> - - * config/aarch64/aarch64.cc - (aarch64_vector_costs::analyze_loop_vinfo): Fix reference - to LOOP_VINFO_MASKS. - -2023-06-19 Senthil Kumar Selvaraj <saaadhu@gcc.gnu.org> - - PR target/105523 - * common/config/avr/avr-common.cc: Remove setting - of OPT_fdelete_null_pointer_checks. - * config/avr/avr.cc (avr_option_override): Clear - flag_delete_null_pointer_checks if zero_address_valid. - (avr_addr_space_zero_address_valid): New function. - (TARGET_ADDR_SPACE_ZERO_ADDRESS_VALID): Provide target - hook. - -2023-06-19 Ju-Zhe Zhong <juzhe.zhong@rivai.ai> - Robin Dapp <rdapp.gcc@gmail.com> - - * doc/md.texi: Add len_mask{load,store}. - * genopinit.cc (main): Ditto. - (CMP_NAME): Ditto. - * internal-fn.cc (len_maskload_direct): Ditto. - (len_maskstore_direct): Ditto. - (expand_call_mem_ref): Ditto. - (expand_partial_load_optab_fn): Ditto. - (expand_len_maskload_optab_fn): Ditto. - (expand_partial_store_optab_fn): Ditto. - (expand_len_maskstore_optab_fn): Ditto. - (direct_len_maskload_optab_supported_p): Ditto. - (direct_len_maskstore_optab_supported_p): Ditto. - * internal-fn.def (LEN_MASK_LOAD): Ditto. - (LEN_MASK_STORE): Ditto. - * optabs.def (OPTAB_CD): Ditto. - -2023-06-19 Robin Dapp <rdapp@ventanamicro.com> - - * config/riscv/autovec.md (<optab><mode>2): Add unop expanders. - -2023-06-19 Robin Dapp <rdapp@ventanamicro.com> - - * config/riscv/autovec.md (<optab><mode>3): Implement binop - expander. - * config/riscv/riscv-protos.h (emit_vlmax_fp_insn): Declare. - (enum vxrm_field_enum): Rename this... - (enum fixed_point_rounding_mode): ...to this. - (enum frm_field_enum): Rename this... - (enum floating_point_rounding_mode): ...to this. - * config/riscv/riscv-v.cc (emit_vlmax_fp_insn): New function - * config/riscv/riscv.cc (riscv_const_insns): Clarify const - vector handling. - (riscv_libgcc_floating_mode_supported_p): Adjust comment. - (riscv_excess_precision): Do not convert to float for ZVFH. - * config/riscv/vector-iterators.md: Add VF_AUTO iterator. - -2023-06-19 Robin Dapp <rdapp@ventanamicro.com> - - * config/riscv/vector-iterators.md: Add VI_QH iterator. - * config/riscv/autovec-opt.md - (@pred_extract_first_sextdi<mode>): New vmv.x.s pattern - that includes sign extension. - (@pred_extract_first_sextsi<mode>): Dito for SImode. - -2023-06-19 Robin Dapp <rdapp@ventanamicro.com> - - * config/riscv/autovec.md (vec_set<mode>): Implement. - (vec_extract<mode><vel>): Implement. - * config/riscv/riscv-protos.h (enum insn_type): Add slide insn. - (emit_vlmax_slide_insn): Declare. - (emit_nonvlmax_slide_tu_insn): Declare. - (emit_scalar_move_insn): Export. - (emit_nonvlmax_integer_move_insn): Export. - * config/riscv/riscv-v.cc (emit_vlmax_slide_insn): New function. - (emit_nonvlmax_slide_tu_insn): New function. - (emit_vlmax_masked_mu_insn): No change. - (emit_vlmax_integer_move_insn): Export. - -2023-06-19 Richard Biener <rguenther@suse.de> - - * tree-vectorizer.h (enum vect_partial_vector_style): New. - (_loop_vec_info::partial_vector_style): Likewise. - (LOOP_VINFO_PARTIAL_VECTORS_STYLE): Likewise. - (rgroup_controls::compare_type): Add. - (vec_loop_masks): Change from a typedef to auto_vec<> - to a structure. - * tree-vect-loop-manip.cc (vect_set_loop_condition_partial_vectors): - Adjust. Convert niters_skip to compare_type. - (vect_set_loop_condition_partial_vectors_avx512): New function - implementing the AVX512 partial vector codegen. - (vect_set_loop_condition): Dispatch to the correct - vect_set_loop_condition_partial_vectors_* function based on - LOOP_VINFO_PARTIAL_VECTORS_STYLE. - (vect_prepare_for_masked_peels): Compute LOOP_VINFO_MASK_SKIP_NITERS - in the original niter type. - * tree-vect-loop.cc (_loop_vec_info::_loop_vec_info): Initialize - partial_vector_style. - (can_produce_all_loop_masks_p): Adjust. - (vect_verify_full_masking): Produce the rgroup_controls vector - here. Set LOOP_VINFO_PARTIAL_VECTORS_STYLE on success. - (vect_verify_full_masking_avx512): New function implementing - verification of AVX512 style masking. - (vect_verify_loop_lens): Set LOOP_VINFO_PARTIAL_VECTORS_STYLE. - (vect_analyze_loop_2): Also try AVX512 style masking. - Adjust condition. - (vect_estimate_min_profitable_iters): Implement AVX512 style - mask producing cost. - (vect_record_loop_mask): Do not build the rgroup_controls - vector here but record masks in a hash-set. - (vect_get_loop_mask): Implement AVX512 style mask query, - complementing the existing while_ult style. - -2023-06-19 Richard Biener <rguenther@suse.de> - - * tree-vectorizer.h (vect_get_loop_mask): Add loop_vec_info - argument. - * tree-vect-loop.cc (vect_get_loop_mask): Likewise. - (vectorize_fold_left_reduction): Adjust. - (vect_transform_reduction): Likewise. - (vectorizable_live_operation): Likewise. - * tree-vect-stmts.cc (vectorizable_call): Likewise. - (vectorizable_operation): Likewise. - (vectorizable_store): Likewise. - (vectorizable_load): Likewise. - (vectorizable_condition): Likewise. - -2023-06-19 Senthil Kumar Selvaraj <saaadhu@gcc.gnu.org> - - PR target/110086 - * config/avr/avr.opt (mgas-isr-prologues, mmain-is-OS_task): - Add Optimization option property. - -2023-06-19 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp> - - * config/xtensa/xtensa.cc (xtensa_constantsynth_2insn): - Add new pattern for the abovementioned case. - -2023-06-19 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp> - - * config/xtensa/xtensa.cc - (TARGET_MEMORY_MOVE_COST, xtensa_memory_move_cost): Remove. - -2023-06-19 Jiufu Guo <guojiufu@linux.ibm.com> - - * config/rs6000/rs6000.cc (TARGET_CONST_ANCHOR): New define. - -2023-06-19 Jiufu Guo <guojiufu@linux.ibm.com> - - * cse.cc (try_const_anchors): Check SCALAR_INT_MODE. - -2023-06-19 liuhongt <hongtao.liu@intel.com> - - PR target/110235 - * config/i386/sse.md (<sse2_avx2>_packsswb<mask_name>): - Substitute with .. - (sse2_packsswb<mask_name>): .. this, .. - (avx2_packsswb<mask_name>): .. this and .. - (avx512bw_packsswb<mask_name>): .. this. - (<sse2_avx2>_packssdw<mask_name>): Substitute with .. - (sse2_packssdw<mask_name>): .. this, .. - (avx2_packssdw<mask_name>): .. this and .. - (avx512bw_packssdw<mask_name>): .. this. - -2023-06-19 liuhongt <hongtao.liu@intel.com> - - PR target/110235 - * config/i386/i386-expand.cc (ix86_split_mmx_pack): Use - UNSPEC_US_TRUNCATE instead of original us_truncate for - packusdw/packuswb. - * config/i386/mmx.md (mmx_pack<s_trunsuffix>swb): Substitute - with .. - (mmx_packsswb): .. this and .. - (mmx_packuswb): .. this. - (mmx_packusdw): Use UNSPEC_US_TRUNCATE instead of original - us_truncate. - (s_trunsuffix): Removed code iterator. - (any_s_truncate): Ditto. - * config/i386/sse.md (<sse2_avx2>_packuswb<mask_name>): Use - UNSPEC_US_TRUNCATE instead of original us_truncate. - (<sse4_1_avx2>_packusdw<mask_name>): Ditto. - * config/i386/i386.md (UNSPEC_US_TRUNCATE): New unspec_c_enum. - -2023-06-18 Pan Li <pan2.li@intel.com> - - * config/riscv/riscv-vector-builtins-bases.cc: Fix one typo. - -2023-06-18 Uros Bizjak <ubizjak@gmail.com> - - * rtl.h (*rtx_equal_p_callback_function): - Change return type from int to bool. - (rtx_equal_p): Ditto. - (*hash_rtx_callback_function): Ditto. - * rtl.cc (rtx_equal_p): Change return type from int to bool - and adjust function body accordingly. - * early-remat.cc (scratch_equal): Ditto. - * sel-sched-ir.cc (skip_unspecs_callback): Ditto. - (hash_with_unspec_callback): Ditto. - -2023-06-18 Jeff Law <jlaw@ventanamicro.com> - - * config/arc/arc.md (movqi_insn): Allow certain constants to - be stored into memory in the pattern's condition. - (movsf_insn): Similarly. - -2023-06-18 Honza <jh@ryzen3.suse.cz> - - PR tree-optimization/109849 - * ipa-fnsummary.cc (evaluate_conditions_for_known_args): Add new parameter - ES; handle ipa_predicate::not_sra_candidate. - (evaluate_properties_for_edge): Pass es to - evaluate_conditions_for_known_args. - (ipa_fn_summary_t::duplicate): Handle sra candidates. - (dump_ipa_call_summary): Dump points_to_possible_sra_candidate. - (load_or_store_of_ptr_parameter): New function. - (points_to_possible_sra_candidate_p): New function. - (analyze_function_body): Initialize points_to_possible_sra_candidate; - determine sra predicates. - (estimate_ipcp_clone_size_and_time): Update call of - evaluate_conditions_for_known_args. - (remap_edge_params): Update points_to_possible_sra_candidate. - (read_ipa_call_summary): Stream points_to_possible_sra_candidate - (write_ipa_call_summary): Likewise. - * ipa-predicate.cc (ipa_predicate::add_clause): Handle not_sra_candidate. - (dump_condition): Dump it. - * ipa-predicate.h (struct inline_param_summary): Add - points_to_possible_sra_candidate. - -2023-06-18 Roger Sayle <roger@nextmovesoftware.com> - - * config/i386/i386-expand.cc (ix86_expand_carry): New helper - function for setting the carry flag. - (ix86_expand_builtin) <handlecarry>: Use it here. - * config/i386/i386-protos.h (ix86_expand_carry): Prototype here. - * config/i386/i386.md (uaddc<mode>5): Use ix86_expand_carry. - (usubc<mode>5): Likewise. - -2023-06-18 Roger Sayle <roger@nextmovesoftware.com> - - * config/i386/i386.md (*concat<mode><dwi>3_1): Use QImode - for the immediate constant shift count. - (*concat<mode><dwi>3_2): Likewise. - (*concat<mode><dwi>3_3): Likewise. - (*concat<mode><dwi>3_4): Likewise. - (*concat<mode><dwi>3_5): Likewise. - (*concat<mode><dwi>3_6): Likewise. - -2023-06-18 Uros Bizjak <ubizjak@gmail.com> - - * cse.cc (hash_rtx_cb): Rename to hash_rtx. - (hash_rtx): Remove. - * early-remat.cc (remat_candidate_hasher::equal): Update - to call rtx_equal_p with rtx_equal_p_callback_function argument. - * rtl.cc (rtx_equal_p_cb): Rename to rtx_equal_p. - (rtx_equal_p): Remove. - * rtl.h (rtx_equal_p): Add rtx_equal_p_callback_function - argument with NULL default value. - (rtx_equal_p_cb): Remove function declaration. - (hash_rtx_cb): Ditto. - (hash_rtx): Add hash_rtx_callback_function argument - with NULL default value. - * sel-sched-ir.cc (free_nop_pool): Update function comment. - (skip_unspecs_callback): Ditto. - (vinsn_init): Update to call hash_rtx with - hash_rtx_callback_function argument. - (vinsn_equal_p): Ditto. - -2023-06-18 yulong <shiyulong@iscas.ac.cn> - - * config/riscv/genrvv-type-indexer.cc (valid_type): Enable FP16 tuple. - * config/riscv/riscv-modes.def (RVV_TUPLE_MODES): New macro. - (ADJUST_ALIGNMENT): Ditto. - (RVV_TUPLE_PARTIAL_MODES): Ditto. - (ADJUST_NUNITS): Ditto. - * config/riscv/riscv-vector-builtins-types.def (vfloat16mf4x2_t): - New types. - (vfloat16mf4x3_t): Ditto. - (vfloat16mf4x4_t): Ditto. - (vfloat16mf4x5_t): Ditto. - (vfloat16mf4x6_t): Ditto. - (vfloat16mf4x7_t): Ditto. - (vfloat16mf4x8_t): Ditto. - (vfloat16mf2x2_t): Ditto. - (vfloat16mf2x3_t): Ditto. - (vfloat16mf2x4_t): Ditto. - (vfloat16mf2x5_t): Ditto. - (vfloat16mf2x6_t): Ditto. - (vfloat16mf2x7_t): Ditto. - (vfloat16mf2x8_t): Ditto. - (vfloat16m1x2_t): Ditto. - (vfloat16m1x3_t): Ditto. - (vfloat16m1x4_t): Ditto. - (vfloat16m1x5_t): Ditto. - (vfloat16m1x6_t): Ditto. - (vfloat16m1x7_t): Ditto. - (vfloat16m1x8_t): Ditto. - (vfloat16m2x2_t): Ditto. - (vfloat16m2x3_t): Ditto. - (vfloat16m2x4_t): Ditto. - (vfloat16m4x2_t): Ditto. - * config/riscv/riscv-vector-builtins.def (vfloat16mf4x2_t): New macro. - (vfloat16mf4x3_t): Ditto. - (vfloat16mf4x4_t): Ditto. - (vfloat16mf4x5_t): Ditto. - (vfloat16mf4x6_t): Ditto. - (vfloat16mf4x7_t): Ditto. - (vfloat16mf4x8_t): Ditto. - (vfloat16mf2x2_t): Ditto. - (vfloat16mf2x3_t): Ditto. - (vfloat16mf2x4_t): Ditto. - (vfloat16mf2x5_t): Ditto. - (vfloat16mf2x6_t): Ditto. - (vfloat16mf2x7_t): Ditto. - (vfloat16mf2x8_t): Ditto. - (vfloat16m1x2_t): Ditto. - (vfloat16m1x3_t): Ditto. - (vfloat16m1x4_t): Ditto. - (vfloat16m1x5_t): Ditto. - (vfloat16m1x6_t): Ditto. - (vfloat16m1x7_t): Ditto. - (vfloat16m1x8_t): Ditto. - (vfloat16m2x2_t): Ditto. - (vfloat16m2x3_t): Ditto. - (vfloat16m2x4_t): Ditto. - (vfloat16m4x2_t): Ditto. - * config/riscv/riscv-vector-switch.def (TUPLE_ENTRY): New. - * config/riscv/riscv.md: New. - * config/riscv/vector-iterators.md: New. - -2023-06-17 Roger Sayle <roger@nextmovesoftware.com> - - * config/i386/i386-expand.cc (ix86_expand_move): Check that OP1 is - CONST_WIDE_INT_P before calling ix86_convert_wide_int_to_broadcast. - Generalize special case for converting TImode to V1TImode to handle - all 128-bit vector conversions. - -2023-06-17 Costas Argyris <costas.argyris@gmail.com> - - * gcc-ar.cc (main): Refactor to slightly reduce code - duplication. Avoid unnecessary elements in nargv. - -2023-06-16 Pan Li <pan2.li@intel.com> - - PR target/110265 - * config/riscv/riscv-vector-builtins-bases.cc: Add ret_mode for - integer reduction expand. - * config/riscv/vector-iterators.md: Add VQI, VHI, VSI and VDI, - and the LMUL1 attr respectively. - * config/riscv/vector.md - (@pred_reduc_<reduc><mode><vlmul1>): Removed. - (@pred_reduc_<reduc><mode><vlmul1_zve64>): Likewise. - (@pred_reduc_<reduc><mode><vlmul1_zve32>): Likewise. - (@pred_reduc_<reduc><VQI:mode><VQI_LMUL1:mode>): New pattern. - (@pred_reduc_<reduc><VHI:mode><VHI_LMUL1:mode>): Likewise. - (@pred_reduc_<reduc><VSI:mode><VSI_LMUL1:mode>): Likewise. - (@pred_reduc_<reduc><VDI:mode><VDI_LMUL1:mode>): Likewise. - -2023-06-16 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - PR target/110264 - * config/riscv/riscv-vsetvl.cc (insert_vsetvl): Fix bug. - -2023-06-16 Jakub Jelinek <jakub@redhat.com> - - PR middle-end/79173 - * builtin-types.def (BT_FN_UINT_UINT_UINT_UINT_UINTPTR, - BT_FN_ULONG_ULONG_ULONG_ULONG_ULONGPTR, - BT_FN_ULONGLONG_ULONGLONG_ULONGLONG_ULONGLONG_ULONGLONGPTR): New - types. - * builtins.def (BUILT_IN_ADDC, BUILT_IN_ADDCL, BUILT_IN_ADDCLL, - BUILT_IN_SUBC, BUILT_IN_SUBCL, BUILT_IN_SUBCLL): New builtins. - * builtins.cc (fold_builtin_addc_subc): New function. - (fold_builtin_varargs): Handle BUILT_IN_{ADD,SUB}C{,L,LL}. - * doc/extend.texi (__builtin_addc, __builtin_subc): Document. - -2023-06-16 Jakub Jelinek <jakub@redhat.com> - - PR tree-optimization/110271 - * tree-ssa-math-opts.cc (math_opts_dom_walker::after_dom_children) - <case PLUS_EXPR>: Ignore return value from match_arith_overflow, - instead call match_uaddc_usubc only if gsi_stmt (gsi) is still stmt. - -2023-06-16 Martin Jambor <mjambor@suse.cz> - - * configure: Regenerate. - -2023-06-16 Roger Sayle <roger@nextmovesoftware.com> - Uros Bizjak <ubizjak@gmail.com> - - PR target/31985 - * config/i386/i386.md (*add<dwi>3_doubleword_concat): New - define_insn_and_split combine *add<dwi>3_doubleword with - a *concat<mode><dwi>3 for more efficient lowering after reload. - -2023-06-16 Vladimir N. Makarov <vmakarov@redhat.com> - - * ira-lives.cc: Include except.h. - (process_bb_node_lives): Ignore conflicts from cleanup exceptions - when the pseudo does not live at the exception landing pad. - -2023-06-16 Alex Coplan <alex.coplan@arm.com> - - * doc/invoke.texi: Document -Welaborated-enum-base. - -2023-06-16 Kyrylo Tkachov <kyrylo.tkachov@arm.com> - - * config/aarch64/aarch64-simd-builtins.def (shrn2_n): Rename builtins to... - (ushrn2_n): ... This. - (sqshrn2_n): Rename builtins to... - (ssqshrn2_n): ... This. - (uqshrn2_n): Rename builtins to... - (uqushrn2_n): ... This. - * config/aarch64/arm_neon.h (vqshrn_high_n_s16): Adjust for the above. - (vqshrn_high_n_s32): Likewise. - (vqshrn_high_n_s64): Likewise. - (vqshrn_high_n_u16): Likewise. - (vqshrn_high_n_u32): Likewise. - (vqshrn_high_n_u64): Likewise. - (vshrn_high_n_s16): Likewise. - (vshrn_high_n_s32): Likewise. - (vshrn_high_n_s64): Likewise. - (vshrn_high_n_u16): Likewise. - (vshrn_high_n_u32): Likewise. - (vshrn_high_n_u64): Likewise. - * config/aarch64/aarch64-simd.md (aarch64_<shrn_op>shrn2_n<mode>_insn_le): - Rename to... - (aarch64_<shrn_op><sra_op>shrn2_n<mode>_insn_le): ... This. - Use SHIFTRT iterator and AARCH64_VALID_SHRN_OP check. - (aarch64_<shrn_op>shrn2_n<mode>_insn_be): Rename to... - (aarch64_<shrn_op><sra_op>shrn2_n<mode>_insn_be): ... This. - Use SHIFTRT iterator and AARCH64_VALID_SHRN_OP check. - (aarch64_<shrn_op>shrn2_n<mode>): Rename to... - (aarch64_<shrn_op><sra_op>shrn2_n<mode>): ... This. - Update expander for the above. - -2023-06-16 Kyrylo Tkachov <kyrylo.tkachov@arm.com> - - * config/aarch64/aarch64-simd-builtins.def (shrn2): Rename builtins to... - (shrn2_n): ... This. - (rshrn2): Rename builtins to... - (rshrn2_n): ... This. - * config/aarch64/arm_neon.h (vrshrn_high_n_s16): Adjust for the above. - (vrshrn_high_n_s32): Likewise. - (vrshrn_high_n_s64): Likewise. - (vrshrn_high_n_u16): Likewise. - (vrshrn_high_n_u32): Likewise. - (vrshrn_high_n_u64): Likewise. - (vshrn_high_n_s16): Likewise. - (vshrn_high_n_s32): Likewise. - (vshrn_high_n_s64): Likewise. - (vshrn_high_n_u16): Likewise. - (vshrn_high_n_u32): Likewise. - (vshrn_high_n_u64): Likewise. - * config/aarch64/aarch64-simd.md (*aarch64_<srn_op>shrn<mode>2_vect_le): - Delete. - (*aarch64_<srn_op>shrn<mode>2_vect_be): Likewise. - (aarch64_shrn2<mode>_insn_le): Likewise. - (aarch64_shrn2<mode>_insn_be): Likewise. - (aarch64_shrn2<mode>): Likewise. - (aarch64_rshrn2<mode>_insn_le): Likewise. - (aarch64_rshrn2<mode>_insn_be): Likewise. - (aarch64_rshrn2<mode>): Likewise. - (aarch64_<sur>q<r>shr<u>n2_n<mode>_insn_le): Likewise. - (aarch64_<shrn_op>shrn2_n<mode>_insn_le): New define_insn. - (aarch64_<sur>q<r>shr<u>n2_n<mode>_insn_be): Delete. - (aarch64_<shrn_op>shrn2_n<mode>_insn_be): New define_insn. - (aarch64_<sur>q<r>shr<u>n2_n<mode>): Delete. - (aarch64_<shrn_op>shrn2_n<mode>): New define_expand. - (aarch64_<shrn_op>rshrn2_n<mode>_insn_le): New define_insn. - (aarch64_<shrn_op>rshrn2_n<mode>_insn_be): New define_insn. - (aarch64_<shrn_op>rshrn2_n<mode>): New define_expand. - (aarch64_sqshrun2_n<mode>_insn_le): New define_insn. - (aarch64_sqshrun2_n<mode>_insn_be): New define_insn. - (aarch64_sqshrun2_n<mode>): New define_expand. - (aarch64_sqrshrun2_n<mode>_insn_le): New define_insn. - (aarch64_sqrshrun2_n<mode>_insn_be): New define_insn. - (aarch64_sqrshrun2_n<mode>): New define_expand. - * config/aarch64/iterators.md (UNSPEC_SQSHRUN, UNSPEC_SQRSHRUN, - UNSPEC_SQSHRN, UNSPEC_UQSHRN, UNSPEC_SQRSHRN, UNSPEC_UQRSHRN): - Delete unspec values. - (VQSHRN_N): Delete int iterator. - -2023-06-16 Kyrylo Tkachov <kyrylo.tkachov@arm.com> - - * config/aarch64/aarch64.h (AARCH64_VALID_SHRN_OP): Define. - * config/aarch64/aarch64-simd.md - (*aarch64_<shrn_op>shrn_n<mode>_insn<vczle><vczbe>): Rename to... - (*aarch64_<shrn_op><shrn_s>shrn_n<mode>_insn<vczle><vczbe>): ... This. - Use SHIFTRT iterator and add AARCH64_VALID_SHRN_OP to condition. - * config/aarch64/iterators.md (shrn_s): New code attribute. - -2023-06-16 Kyrylo Tkachov <kyrylo.tkachov@arm.com> - - * config/aarch64/aarch64-simd.md (aarch64_<sur>q<r>shr<u>n_n<mode>): - Rename to... - (aarch64_<shrn_op>shrn_n<mode>): ... This. Reimplement with RTL codes. - (*aarch64_<shrn_op>rshrn_n<mode>_insn): New define_insn. - (aarch64_sqrshrun_n<mode>_insn): Likewise. - (aarch64_sqshrun_n<mode>_insn): Likewise. - (aarch64_<shrn_op>rshrn_n<mode>): New define_expand. - (aarch64_sqshrun_n<mode>): Likewise. - (aarch64_sqrshrun_n<mode>): Likewise. - * config/aarch64/iterators.md (V2XWIDE): Add HI and SI modes. - -2023-06-16 Kyrylo Tkachov <kyrylo.tkachov@arm.com> - - * config/aarch64/aarch64-simd-builtins.def (shrn): Rename builtins to... - (shrn_n): ... This. - (rshrn): Rename builtins to... - (rshrn_n): ... This. - * config/aarch64/arm_neon.h (vshrn_n_s16): Adjust for the above. - (vshrn_n_s32): Likewise. - (vshrn_n_s64): Likewise. - (vshrn_n_u16): Likewise. - (vshrn_n_u32): Likewise. - (vshrn_n_u64): Likewise. - (vrshrn_n_s16): Likewise. - (vrshrn_n_s32): Likewise. - (vrshrn_n_s64): Likewise. - (vrshrn_n_u16): Likewise. - (vrshrn_n_u32): Likewise. - (vrshrn_n_u64): Likewise. - * config/aarch64/aarch64-simd.md - (*aarch64_<srn_op>shrn<mode><vczle><vczbe>): Delete. - (aarch64_shrn<mode>): Likewise. - (aarch64_rshrn<mode><vczle><vczbe>_insn): Likewise. - (aarch64_rshrn<mode>): Likewise. - (aarch64_<sur>q<r>shr<u>n_n<mode>_insn<vczle><vczbe>): Likewise. - (aarch64_<sur>q<r>shr<u>n_n<mode>): Likewise. - (*aarch64_<shrn_op>shrn_n<mode>_insn<vczle><vczbe>): New define_insn. - (*aarch64_<shrn_op>rshrn_n<mode>_insn<vczle><vczbe>): Likewise. - (*aarch64_sqshrun_n<mode>_insn<vczle><vczbe>): Likewise. - (*aarch64_sqrshrun_n<mode>_insn<vczle><vczbe>): Likewise. - (aarch64_<shrn_op>shrn_n<mode>): New define_expand. - (aarch64_<shrn_op>rshrn_n<mode>): Likewise. - (aarch64_sqshrun_n<mode>): Likewise. - (aarch64_sqrshrun_n<mode>): Likewise. - * config/aarch64/iterators.md (ALL_TRUNC): New code iterator. - (TRUNCEXTEND): New code attribute. - (TRUNC_SHIFT): Likewise. - (shrn_op): Likewise. - * config/aarch64/predicates.md (aarch64_simd_umax_quarter_mode): - New predicate. - -2023-06-16 Pan Li <pan2.li@intel.com> - - * config/riscv/riscv-vsetvl.cc - (pass_vsetvl::global_eliminate_vsetvl_insn): Initialize var by NULL. - -2023-06-16 Richard Biener <rguenther@suse.de> - - PR tree-optimization/110278 - * match.pd (uns < (typeof uns)(uns != 0) -> false): New. - (x != (typeof x)(x == 0) -> true): Likewise. - -2023-06-16 Pali Rohár <pali@kernel.org> - - * config/i386/mingw-w64.h (CPP_SPEC): Adjust for -mcrtdll=. - (REAL_LIBGCC_SPEC): New define. - * config/i386/mingw.opt: Add mcrtdll= - * config/i386/mingw32.h (CPP_SPEC): Adjust for -mcrtdll=. - (REAL_LIBGCC_SPEC): Adjust for -mcrtdll=. - (STARTFILE_SPEC): Adjust for -mcrtdll=. - * doc/invoke.texi: Add mcrtdll= documentation. - -2023-06-16 Simon Dardis <simon.dardis@imgtec.com> - - * config/mips/mips.cc (enum mips_code_readable_setting):New enmu. - (mips_handle_code_readable_attr):New static function. - (mips_get_code_readable_attr):New static enum function. - (mips_set_current_function):Set the code_readable mode. - (mips_option_override):Same as above. - * doc/extend.texi:Document code_readable. - -2023-06-16 Richard Biener <rguenther@suse.de> - - PR tree-optimization/110269 - * fold-const.cc (fold_binary_loc): Merge x != 0 folding - with tree_expr_nonzero_p ... - * match.pd (cmp (convert? addr@0) integer_zerop): With this - pattern. - -2023-06-15 Marek Polacek <polacek@redhat.com> - - * Makefile.in: Set LD_PICFLAG. Use it. Set enable_host_pie. - Remove NO_PIE_CFLAGS and NO_PIE_FLAG. Pass LD_PICFLAG to - ALL_LINKERFLAGS. Use the "pic" build of libiberty if --enable-host-pie. - * configure.ac (--enable-host-shared): Don't set PICFLAG here. - (--enable-host-pie): New check. Set PICFLAG and LD_PICFLAG after this - check. - * configure: Regenerate. - * doc/install.texi: Document --enable-host-pie. - -2023-06-15 Manolis Tsamis <manolis.tsamis@vrull.eu> - - * regcprop.cc (maybe_mode_change): Enable stack pointer - propagation. - -2023-06-15 Andrew MacLeod <amacleod@redhat.com> - - PR tree-optimization/110266 - * gimple-range-fold.cc (adjust_imagpart_expr): Check for integer - complex type. - (adjust_realpart_expr): Ditto. - -2023-06-15 Jan Beulich <jbeulich@suse.com> - - * config/i386/sse.md (<avx512>_vec_dup<mode><mask_name>): Use - vmovddup. - -2023-06-15 Jan Beulich <jbeulich@suse.com> - - * config/i386/constraints.md: Mention k and r for B. - -2023-06-15 Lulu Cheng <chenglulu@loongson.cn> - Andrew Pinski <apinski@marvell.com> - - PR target/110136 - * config/loongarch/loongarch.md: Modify the register constraints for template - "jumptable" and "indirect_jump" from "r" to "e". - -2023-06-15 Xi Ruoyao <xry111@xry111.site> - - * config/loongarch/loongarch-tune.h (loongarch_align): New - struct. - * config/loongarch/loongarch-def.h (loongarch_cpu_align): New - array. - * config/loongarch/loongarch-def.c (loongarch_cpu_align): Define - the array. - * config/loongarch/loongarch.cc - (loongarch_option_override_internal): Set the value of - -falign-functions= if -falign-functions is enabled but no value - is given. Likewise for -falign-labels=. - -2023-06-15 Jakub Jelinek <jakub@redhat.com> - - PR middle-end/79173 - * internal-fn.def (UADDC, USUBC): New internal functions. - * internal-fn.cc (expand_UADDC, expand_USUBC): New functions. - (commutative_ternary_fn_p): Return true also for IFN_UADDC. - * optabs.def (uaddc5_optab, usubc5_optab): New optabs. - * tree-ssa-math-opts.cc (uaddc_cast, uaddc_ne0, uaddc_is_cplxpart, - match_uaddc_usubc): New functions. - (math_opts_dom_walker::after_dom_children): Call match_uaddc_usubc - for PLUS_EXPR, MINUS_EXPR, BIT_IOR_EXPR and BIT_XOR_EXPR unless - other optimizations have been successful for those. - * gimple-fold.cc (gimple_fold_call): Handle IFN_UADDC and IFN_USUBC. - * fold-const-call.cc (fold_const_call): Likewise. - * gimple-range-fold.cc (adjust_imagpart_expr): Likewise. - * tree-ssa-dce.cc (eliminate_unnecessary_stmts): Likewise. - * doc/md.texi (uaddc<mode>5, usubc<mode>5): Document new named - patterns. - * config/i386/i386.md (uaddc<mode>5, usubc<mode>5): New - define_expand patterns. - (*setcc_qi_addqi3_cconly_overflow_1_<mode>, *setccc): Split - into NOTE_INSN_DELETED note rather than nop instruction. - (*setcc_qi_negqi_ccc_1_<mode>, *setcc_qi_negqi_ccc_2_<mode>): - Likewise. - -2023-06-15 Jakub Jelinek <jakub@redhat.com> - - PR middle-end/79173 - * config/i386/i386.md (subborrow<mode>): Add alternative with - memory destination and add for it define_peephole2 - TARGET_READ_MODIFY_WRITE/-Os patterns to prefer using memory - destination in these patterns. - -2023-06-15 Jakub Jelinek <jakub@redhat.com> - - PR middle-end/79173 - * config/i386/i386.md (*sub<mode>_3, @add<mode>3_carry, - addcarry<mode>, @sub<mode>3_carry, *add<mode>3_cc_overflow_1): Add - define_peephole2 TARGET_READ_MODIFY_WRITE/-Os patterns to prefer - using memory destination in these patterns. - -2023-06-15 Jakub Jelinek <jakub@redhat.com> - - * gimple-fold.cc (gimple_fold_call): Move handling of arg0 - as well as arg1 INTEGER_CSTs for .UBSAN_CHECK_{ADD,SUB,MUL} - and .{ADD,SUB,MUL}_OVERFLOW calls from here... - * fold-const-call.cc (fold_const_call): ... here. - -2023-06-15 Oluwatamilore Adebayo <oluwatamilore.adebayo@arm.com> - - * config/aarch64/aarch64-simd.md (aarch64_<su>abd<mode>): - Rename to <su>abd<mode>3. - * config/aarch64/aarch64-sve.md (<su>abd<mode>_3): Rename - to <su>abd<mode>3. - -2023-06-15 Oluwatamilore Adebayo <oluwatamilore.adebayo@arm.com> - - * doc/md.texi (sabd, uabd): Document them. - * internal-fn.def (ABD): Use new optab. - * optabs.def (sabd_optab, uabd_optab): New optabs, - * tree-vect-patterns.cc (vect_recog_absolute_difference): - Recognize the following idiom abs (a - b). - (vect_recog_sad_pattern): Refactor to use - vect_recog_absolute_difference. - (vect_recog_abd_pattern): Use patterns found by - vect_recog_absolute_difference to build a new ABD - internal call. - -2023-06-15 chenxiaolong <chenxl04200420@163.com> - - * config/loongarch/loongarch.h (LARCH_CALL_RATIO): Modify the value - of macro LARCH_CALL_RATIO on LoongArch to make it perform optimally. - -2023-06-15 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv-v.cc (shuffle_merge_patterns): New pattern. - (expand_vec_perm_const_1): Add merge optmization. - -2023-06-15 Lehua Ding <lehua.ding@rivai.ai> - - PR target/110119 - * config/riscv/riscv.cc (riscv_get_arg_info): Return NULL_RTX for vector mode - (riscv_pass_by_reference): Return true for vector mode - -2023-06-15 Pan Li <pan2.li@intel.com> - - * config/riscv/autovec-opt.md: Align the predictor sytle. - * config/riscv/autovec.md: Ditto. - -2023-06-15 Pan Li <pan2.li@intel.com> - - * config/riscv/riscv-v.cc (rvv_builder::get_merge_scalar_mask): - Take elen instead of scalar BITS_PER_WORD. - (expand_vector_init_merge_repeating_sequence): Use inner_bits_size - instead of scaler BITS_PER_WORD. - -2023-06-14 Jivan Hakobyan <jivanhakobyan9@gmail.com> - - * config/moxie/uclinux.h (MFWRAP_SPEC): Remove - -2023-06-14 Kyrylo Tkachov <kyrylo.tkachov@arm.com> - - * config/aarch64/aarch64-sve-builtins-base.cc (svlast_impl::fold): - Fix signed comparison warning in loop from npats to enelts. - -2023-06-14 Thomas Schwinge <thomas@codesourcery.com> - - * gcc.cc (driver_handle_option): Forward host '-lgfortran', '-lm' - to offloading compilation. - * config/gcn/mkoffload.cc (main): Adjust. - * config/nvptx/mkoffload.cc (main): Likewise. - * doc/invoke.texi (foffload-options): Update example. - -2023-06-14 liuhongt <hongtao.liu@intel.com> - - PR target/110227 - * config/i386/sse.md (mov<mode>_internal>): Use x instead of v - for alternative 2 since there's no evex version for vpcmpeqd - ymm, ymm, ymm. - -2023-06-13 Jeff Law <jlaw@ventanamicro.com> - - * gcc.cc (LINK_COMMAND_SPEC): Remove mudflap spec handling. - -2023-06-13 Jeff Law <jlaw@ventanamicro.com> - - * config/sh/divtab.cc: Remove. - -2023-06-13 Jakub Jelinek <jakub@redhat.com> - - * config/i386/i386.cc (standard_sse_constant_opcode): Remove - superfluous spaces around \t for vpcmpeqd. - -2023-06-13 Roger Sayle <roger@nextmovesoftware.com> - - * expr.cc (store_constructor) <case VECTOR_TYPE>: Don't bother - clearing vectors with only a single element. Set CLEARED if the - vector was initialized to zero. - -2023-06-13 Lehua Ding <lehua.ding@rivai.ai> - - * config/riscv/riscv-v.cc (struct mode_vtype_group): Remove duplicate - #include. - (ENTRY): Undef. - (TUPLE_ENTRY): Undef. - -2023-06-13 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv-v.cc (rvv_builder::single_step_npatterns_p): Add comment. - (shuffle_generic_patterns): Ditto. - (expand_vec_perm_const_1): Ditto. - -2023-06-13 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv-v.cc (emit_vlmax_decompress_insn): Fix bug. - (shuffle_decompress_patterns): Ditto. - -2023-06-13 Richard Biener <rguenther@suse.de> - - * tree-ssa-loop-ch.cc (ch_base::copy_headers): Free loop BBs. - -2023-06-13 Yanzhang Wang <yanzhang.wang@intel.com> - Kito Cheng <kito.cheng@sifive.com> - - * config/riscv/riscv-protos.h (riscv_init_cumulative_args): Set - warning flag if func is not builtin - * config/riscv/riscv.cc - (riscv_scalable_vector_type_p): Determine whether the type is scalable vector. - (riscv_arg_has_vector): Determine whether the arg is vector type. - (riscv_pass_in_vector_p): Check the vector type param is passed by value. - (riscv_init_cumulative_args): The same as header. - (riscv_get_arg_info): Add the checking. - (riscv_function_value): Check the func return and set warning flag - * config/riscv/riscv.h (INIT_CUMULATIVE_ARGS): Add a flag to - determine whether warning psabi or not. - -2023-06-13 Kyrylo Tkachov <kyrylo.tkachov@arm.com> - - * config/arm/arm-opts.h (enum arm_tp_type): Remove TP_CP15. - Add TP_TPIDRURW, TP_TPIDRURO, TP_TPIDRPRW values. - * config/arm/arm-protos.h (arm_output_load_tpidr): Declare prototype. - * config/arm/arm.cc (arm_option_reconfigure_globals): Replace TP_CP15 - with TP_TPIDRURO. - (arm_output_load_tpidr): Define. - * config/arm/arm.h (TARGET_HARD_TP): Define in terms of TARGET_SOFT_TP. - * config/arm/arm.md (load_tp_hard): Call arm_output_load_tpidr to output - assembly. - (reload_tp_hard): Likewise. - * config/arm/arm.opt (tpidrurw, tpidruro, tpidrprw): New values for - arm_tp_type. - * doc/invoke.texi (Arm Options, mtp): Document new values. - -2023-06-13 Kyrylo Tkachov <kyrylo.tkachov@arm.com> - - PR target/108779 - * config/aarch64/aarch64-opts.h (enum aarch64_tp_reg): Add - AARCH64_TPIDRRO_EL0 value. - * config/aarch64/aarch64.cc (aarch64_output_load_tp): Define. - * config/aarch64/aarch64.opt (tpidr_el0, tpidr_el1, tpidr_el2, - tpidr_el3, tpidrro_el3): New accepted values to -mtp=. - * doc/invoke.texi (AArch64 Options): Document new -mtp= options. - -2023-06-13 Alexandre Oliva <oliva@adacore.com> - - * range-op-float.cc (frange_nextafter): Drop inline. - (frelop_early_resolve): Add static. - (frange_float): Likewise. - -2023-06-13 Richard Biener <rguenther@suse.de> - - PR middle-end/110232 - * fold-const.cc (native_interpret_vector): Use TYPE_SIZE_UNIT - to check whether the buffer covers the whole vector. - -2023-06-13 Richard Biener <rguenther@suse.de> - - * tree-ssa-alias.cc (ref_maybe_used_by_call_p_1): For - .MASK_LOAD and friends set the size of the access to unknown. - -2023-06-13 Tejas Belagod <tbelagod@arm.com> - - PR target/96339 - * config/aarch64/aarch64-sve-builtins-base.cc (svlast_impl::fold): Fold sve - calls that have a constant input predicate vector. - (svlast_impl::is_lasta): Query to check if intrinsic is svlasta. - (svlast_impl::is_lastb): Query to check if intrinsic is svlastb. - (svlast_impl::vect_all_same): Check if all vector elements are equal. - -2023-06-13 Andi Kleen <ak@linux.intel.com> - - * config/i386/gcc-auto-profile: Regenerate. - -2023-06-13 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/vector-iterators.md: Fix requirement. - -2023-06-13 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv-v.cc (emit_vlmax_decompress_insn): New function. - (shuffle_decompress_patterns): New function. - (expand_vec_perm_const_1): Add decompress optimization. - -2023-06-12 Jeff Law <jlaw@ventanamicro.com> - - PR rtl-optimization/101188 - * postreload.cc (reload_cse_move2add_invalidate): New function, - extracted from... - (reload_cse_move2add): Call reload_cse_move2add_invalidate. - -2023-06-12 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org> - - * config/aarch64/aarch64.cc (aarch64_expand_vector_init): Tweak condition - if (n_var == n_elts && n_elts <= 16) to allow a single constant, - and if maxv == 1, use constant element for duplicating into register. - -2023-06-12 Tobias Burnus <tobias@codesourcery.com> - - * gimplify.cc (gimplify_adjust_omp_clauses_1): Use - GOMP_MAP_FORCE_PRESENT for 'present alloc' implicit mapping. - (gimplify_adjust_omp_clauses): Change - GOMP_MAP_PRESENT_{TO,TOFROM,FROM,ALLOC} to the equivalent - GOMP_MAP_FORCE_PRESENT. - * omp-low.cc (lower_omp_target): Remove handling of no-longer valid - GOMP_MAP_PRESENT_{TO,TOFROM,FROM,ALLOC}; update map kinds used for - to/from clauses with present modifier. - -2023-06-12 Andrew MacLeod <amacleod@redhat.com> - - PR tree-optimization/110205 - * range-op-float.cc (range_operator::fold_range): Add default FII - fold routine. - * range-op-mixed.h (class operator_gt): Add missing final overrides. - * range-op.cc (range_op_handler::fold_range): Add RO_FII case. - (operator_lshift ::update_bitmask): Add final override. - (operator_rshift ::update_bitmask): Add final override. - * range-op.h (range_operator::fold_range): Add FII prototype. - -2023-06-12 Andrew MacLeod <amacleod@redhat.com> - - * gimple-range-op.cc (gimple_range_op_handler::maybe_non_standard): - Use range_op_handler directly. - * range-op.cc (range_op_handler::range_op_handler): Unsigned - param instead of tree-code. - (ptr_op_widen_plus_signed): Delete. - (ptr_op_widen_plus_unsigned): Delete. - (ptr_op_widen_mult_signed): Delete. - (ptr_op_widen_mult_unsigned): Delete. - (range_op_table::initialize_integral_ops): Add new opcodes. - * range-op.h (range_op_handler): Use unsigned. - (OP_WIDEN_MULT_SIGNED): New. - (OP_WIDEN_MULT_UNSIGNED): New. - (OP_WIDEN_PLUS_SIGNED): New. - (OP_WIDEN_PLUS_UNSIGNED): New. - (RANGE_OP_TABLE_SIZE): New. - (range_op_table::operator []): Use unsigned. - (range_op_table::set): Use unsigned. - (m_range_tree): Make unsigned. - (ptr_op_widen_mult_signed): Remove. - (ptr_op_widen_mult_unsigned): Remove. - (ptr_op_widen_plus_signed): Remove. - (ptr_op_widen_plus_unsigned): Remove. - -2023-06-12 Andrew MacLeod <amacleod@redhat.com> - - * gimple-range-op.cc (gimple_range_op_handler): Set m_operator - manually as there is no access to the default operator. - (cfn_copysign::fold_range): Don't check for validity. - (cfn_ubsan::fold_range): Ditto. - (gimple_range_op_handler::maybe_builtin_call): Don't set to NULL. - * range-op.cc (default_operator): New. - (range_op_handler::range_op_handler): Use default_operator - instead of NULL. - (range_op_handler::operator bool): Move from header, compare - against default operator. - (range_op_handler::range_op): New. - * range-op.h (range_op_handler::operator bool): Move. - -2023-06-12 Andrew MacLeod <amacleod@redhat.com> - - * range-op.cc (unified_table): Delete. - (range_op_table operator_table): Instantiate. - (range_op_table::range_op_table): Rename from unified_table. - (range_op_handler::range_op_handler): Use range_op_table. - * range-op.h (range_op_table::operator []): Inline. - (range_op_table::set): Inline. - -2023-06-12 Andrew MacLeod <amacleod@redhat.com> - - * gimple-range-gori.cc (gori_compute::condexpr_adjust): Do not - pass type. - * gimple-range-op.cc (get_code): Rename from get_code_and_type - and simplify. - (gimple_range_op_handler::supported_p): No need for type. - (gimple_range_op_handler::gimple_range_op_handler): Ditto. - (cfn_copysign::fold_range): Ditto. - (cfn_ubsan::fold_range): Ditto. - * ipa-cp.cc (ipa_vr_operation_and_type_effects): Ditto. - * ipa-fnsummary.cc (evaluate_conditions_for_known_args): Ditto. - * range-op-float.cc (operator_plus::op1_range): Ditto. - (operator_mult::op1_range): Ditto. - (range_op_float_tests): Ditto. - * range-op.cc (get_op_handler): Remove. - (range_op_handler::set_op_handler): Remove. - (operator_plus::op1_range): No need for type. - (operator_minus::op1_range): Ditto. - (operator_mult::op1_range): Ditto. - (operator_exact_divide::op1_range): Ditto. - (operator_cast::op1_range): Ditto. - (perator_bitwise_not::fold_range): Ditto. - (operator_negate::fold_range): Ditto. - * range-op.h (range_op_handler::range_op_handler): Remove type param. - (range_cast): No need for type. - (range_op_table::operator[]): Check for enum_code >= 0. - * tree-data-ref.cc (compute_distributive_range): No need for type. - * tree-ssa-loop-unswitch.cc (unswitch_predicate): Ditto. - * value-query.cc (range_query::get_tree_range): Ditto. - * value-relation.cc (relation_oracle::validate_relation): Ditto. - * vr-values.cc (range_of_var_in_loop): Ditto. - (simplify_using_ranges::fold_cond_with_ops): Ditto. - -2023-06-12 Andrew MacLeod <amacleod@redhat.com> - - * range-op-mixed.h (operator_max): Remove final. - * range-op-ptr.cc (pointer_table::pointer_table): Remove MAX_EXPR. - (pointer_table::pointer_table): Remove. - (class hybrid_max_operator): New. - (range_op_table::initialize_pointer_ops): Add hybrid_max_operator. - * range-op.cc (pointer_tree_table): Remove. - (unified_table::unified_table): Comment out MAX_EXPR. - (get_op_handler): Remove check of pointer table. - * range-op.h (class pointer_table): Remove. - -2023-06-12 Andrew MacLeod <amacleod@redhat.com> - - * range-op-mixed.h (operator_min): Remove final. - * range-op-ptr.cc (pointer_table::pointer_table): Remove MIN_EXPR. - (class hybrid_min_operator): New. - (range_op_table::initialize_pointer_ops): Add hybrid_min_operator. - * range-op.cc (unified_table::unified_table): Comment out MIN_EXPR. - -2023-06-12 Andrew MacLeod <amacleod@redhat.com> - - * range-op-mixed.h (operator_bitwise_or): Remove final. - * range-op-ptr.cc (pointer_table::pointer_table): Remove BIT_IOR_EXPR. - (class hybrid_or_operator): New. - (range_op_table::initialize_pointer_ops): Add hybrid_or_operator. - * range-op.cc (unified_table::unified_table): Comment out BIT_IOR_EXPR. - -2023-06-12 Andrew MacLeod <amacleod@redhat.com> - - * range-op-mixed.h (operator_bitwise_and): Remove final. - * range-op-ptr.cc (pointer_table::pointer_table): Remove BIT_AND_EXPR. - (class hybrid_and_operator): New. - (range_op_table::initialize_pointer_ops): Add hybrid_and_operator. - * range-op.cc (unified_table::unified_table): Comment out BIT_AND_EXPR. - -2023-06-12 Andrew MacLeod <amacleod@redhat.com> - - * Makefile.in (OBJS): Add range-op-ptr.o. - * range-op-mixed.h (update_known_bitmask): Move prototype here. - (minus_op1_op2_relation_effect): Move prototype here. - (wi_includes_zero_p): Move function to here. - (wi_zero_p): Ditto. - * range-op.cc (update_known_bitmask): Remove static. - (wi_includes_zero_p): Move to header. - (wi_zero_p): Move to header. - (minus_op1_op2_relation_effect): Remove static. - (operator_pointer_diff): Move class and routines to range-op-ptr.cc. - (pointer_plus_operator): Ditto. - (pointer_min_max_operator): Ditto. - (pointer_and_operator): Ditto. - (pointer_or_operator): Ditto. - (pointer_table): Ditto. - (range_op_table::initialize_pointer_ops): Ditto. - * range-op-ptr.cc: New. - -2023-06-12 Andrew MacLeod <amacleod@redhat.com> - - * range-op-mixed.h (class operator_max): Move from... - * range-op.cc (unified_table::unified_table): Add MAX_EXPR. - (get_op_handler): Remove the integral table. - (class operator_max): Move from here. - (integral_table::integral_table): Delete. - * range-op.h (class integral_table): Delete. - -2023-06-12 Andrew MacLeod <amacleod@redhat.com> - - * range-op-mixed.h (class operator_min): Move from... - * range-op.cc (unified_table::unified_table): Add MIN_EXPR. - (class operator_min): Move from here. - (integral_table::integral_table): Remove MIN_EXPR. - -2023-06-12 Andrew MacLeod <amacleod@redhat.com> - - * range-op-mixed.h (class operator_bitwise_or): Move from... - * range-op.cc (unified_table::unified_table): Add BIT_IOR_EXPR. - (class operator_bitwise_or): Move from here. - (integral_table::integral_table): Remove BIT_IOR_EXPR. - -2023-06-12 Andrew MacLeod <amacleod@redhat.com> - - * range-op-mixed.h (class operator_bitwise_and): Move from... - * range-op.cc (unified_table::unified_table): Add BIT_AND_EXPR. - (get_op_handler): Check for a pointer table entry first. - (class operator_bitwise_and): Move from here. - (integral_table::integral_table): Remove BIT_AND_EXPR. - -2023-06-12 Andrew MacLeod <amacleod@redhat.com> - - * range-op-mixed.h (class operator_bitwise_xor): Move from... - * range-op.cc (unified_table::unified_table): Add BIT_XOR_EXPR. - (class operator_bitwise_xor): Move from here. - (integral_table::integral_table): Remove BIT_XOR_EXPR. - (pointer_table::pointer_table): Remove BIT_XOR_EXPR. - -2023-06-12 Andrew MacLeod <amacleod@redhat.com> - - * range-op-mixed.h (class operator_bitwise_not): Move from... - * range-op.cc (unified_table::unified_table): Add BIT_NOT_EXPR. - (class operator_bitwise_not): Move from here. - (integral_table::integral_table): Remove BIT_NOT_EXPR. - (pointer_table::pointer_table): Remove BIT_NOT_EXPR. - -2023-06-12 Andrew MacLeod <amacleod@redhat.com> - - * range-op-mixed.h (class operator_addr_expr): Move from... - * range-op.cc (unified_table::unified_table): Add ADDR_EXPR. - (class operator_addr_expr): Move from here. - (integral_table::integral_table): Remove ADDR_EXPR. - (pointer_table::pointer_table): Remove ADDR_EXPR. - -2023-06-12 Pan Li <pan2.li@intel.com> - - * config/riscv/riscv-vector-builtins-types.def - (vfloat16m1_t): Add type to lmul1 ops. - (vfloat16m2_t): Likewise. - (vfloat16m4_t): Likewise. - -2023-06-12 Richard Biener <rguenther@suse.de> - - * tree-ssa-alias.cc (call_may_clobber_ref_p_1): For - .MASK_STORE and friend set the size of the access to - unknown. - -2023-06-12 Tamar Christina <tamar.christina@arm.com> - - * config.in: Regenerate. - * configure: Regenerate. - * configure.ac: Remove DEFAULT_MATCHPD_PARTITIONS. - -2023-06-12 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/autovec-opt.md - (*v<any_shiftrt:optab><any_extend:optab>trunc<mode>): New pattern. - (*<any_shiftrt:optab>trunc<mode>): Ditto. - * config/riscv/autovec.md (<optab><mode>3): Change to - define_insn_and_split. - (v<optab><mode>3): Ditto. - (trunc<mode><v_double_trunc>2): Ditto. - -2023-06-12 Kyrylo Tkachov <kyrylo.tkachov@arm.com> - - * simplify-rtx.cc (simplify_const_unary_operation): - Handle US_TRUNCATE, SS_TRUNCATE. - -2023-06-12 Eric Botcazou <ebotcazou@adacore.com> - - PR modula2/109952 - * doc/gm2.texi (Standard procedures): Fix Next link. - -2023-06-12 Tamar Christina <tamar.christina@arm.com> - - * config.in: Regenerate. - -2023-06-12 Andre Vieira <andre.simoesdiasvieira@arm.com> - - PR middle-end/110142 - * tree-vect-patterns.cc (vect_recog_widen_op_pattern): Don't pass - subtype to vect_widened_op_tree and remove subtype parameter, also - remove superfluous overloaded function definition. - (vect_recog_widen_plus_pattern): Remove subtype parameter and dont pass - to call to vect_recog_widen_op_pattern. - (vect_recog_widen_minus_pattern): Likewise. - -2023-06-12 liuhongt <hongtao.liu@intel.com> - - * config/i386/sse.md (vec_pack<floatprefix>_float_<mode>): New expander. - (vec_unpack_<fixprefix>fix_trunc_lo_<mode>): Ditto. - (vec_unpack_<fixprefix>fix_trunc_hi_<mode>): Ditto. - (vec_unpacks_lo_<mode>): Ditto. - (vec_unpacks_hi_<mode>): Ditto. - (sse_movlhps_<mode>): New define_insn. - (ssse3_palignr<mode>_perm): Extend to V_128H. - (V_128H): New mode iterator. - (ssepackPHmode): New mode attribute. - (vunpck_extract_mode): Ditto. - (vpckfloat_concat_mode): Extend to VxSI/VxSF for _Float16. - (vpckfloat_temp_mode): Ditto. - (vpckfloat_op_mode): Ditto. - (vunpckfixt_mode): Extend to VxHF. - (vunpckfixt_model): Ditto. - (vunpckfixt_extract_mode): Ditto. - -2023-06-12 Richard Biener <rguenther@suse.de> - - PR middle-end/110200 - * genmatch.cc (expr::gen_transform): Put braces around - the if arm for the (convert ...) short-cut. - -2023-06-12 Kewen Lin <linkw@linux.ibm.com> - - PR target/109932 - * config/rs6000/rs6000-builtins.def (__builtin_pack_vector_int128, - __builtin_unpack_vector_int128): Move from stanza power7 to vsx. - -2023-06-12 Kewen Lin <linkw@linux.ibm.com> - - PR target/110011 - * config/rs6000/rs6000.cc (output_toc): Use the mode of the 128-bit - floating constant itself for real_to_target call. - -2023-06-12 Pan Li <pan2.li@intel.com> - - * config/riscv/riscv-vector-builtins-types.def - (vfloat16mf4_t): Add type to X2/X4/X8/X16/X32 vlmul ext ops. - (vfloat16mf2_t): Ditto. - (vfloat16m1_t): Ditto. - (vfloat16m2_t): Ditto. - (vfloat16m4_t): Ditto. - -2023-06-12 David Edelsohn <dje.gcc@gmail.com> - - * config/rs6000/rs6000-logue.cc (rs6000_stack_info): - Do not require a stack frame when debugging is enabled for AIX. - -2023-06-11 Georg-Johann Lay <avr@gjlay.de> - - * config/avr/avr.md (adjust_len) [insv_notbit_0, insv_notbit_7]: - Remove attribute values. - (insv_notbit): New post-reload insn. - (*insv.not-shiftrt_split, *insv.xor1-bit.0_split) - (*insv.not-bit.0_split, *insv.not-bit.7_split) - (*insv.xor-extract_split): Split to insv_notbit. - (*insv.not-shiftrt, *insv.xor1-bit.0, *insv.not-bit.0, *insv.not-bit.7) - (*insv.xor-extract): Remove post-reload insns. - * config/avr/avr.cc (avr_out_insert_notbit) [bitno]: Remove parameter. - (avr_adjust_insn_length): Adjust call of avr_out_insert_notbit. - [ADJUST_LEN_INSV_NOTBIT_0, ADJUST_LEN_INSV_NOTBIT_7]: Remove cases. - * config/avr/avr-protos.h (avr_out_insert_notbit): Adjust prototype. - -2023-06-11 Georg-Johann Lay <avr@gjlay.de> - - PR target/109907 - * config/avr/avr.md (adjust_len) [extr, extr_not]: New elements. - (MSB, SIZE): New mode attributes. - (any_shift): New code iterator. - (*lshr<mode>3_split, *lshr<mode>3, lshr<mode>3) - (*lshr<mode>3_const_split): Add constraint alternative for - the case of shift-offset = MSB. Ditch "length" attribute. - (extzv<mode): New. replaces extzv. Adjust following patterns. - Use avr_out_extr, avr_out_extr_not to print asm. - (*extzv.subreg.<mode>, *extzv.<mode>.subreg, *extzv.xor) - (*extzv<mode>.ge, *neg.ashiftrt<mode>.msb, *extzv.io.lsr7): New. - * config/avr/constraints.md (C15, C23, C31, Yil): New - * config/avr/predicates.md (reg_or_low_io_operand) - (const7_operand, reg_or_low_io_operand) - (const15_operand, const_0_to_15_operand) - (const23_operand, const_0_to_23_operand) - (const31_operand, const_0_to_31_operand): New. - * config/avr/avr-protos.h (avr_out_extr, avr_out_extr_not): New. - * config/avr/avr.cc (avr_out_extr, avr_out_extr_not): New funcs. - (lshrqi3_out, lshrhi3_out, lshrpsi3_out, lshrsi3_out): Adjust - MSB case to new insn constraint "r" for operands[1]. - (avr_adjust_insn_length) [ADJUST_LEN_EXTR_NOT, ADJUST_LEN_EXTR]: - Handle these cases. - (avr_rtx_costs_1): Adjust cost for a new pattern. - -2023-06-11 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv-vsetvl.cc (available_occurrence_p): Enhance user vsetvl optimization. - (vector_insn_info::parse_insn): Add rtx_insn parse. - (pass_vsetvl::local_eliminate_vsetvl_insn): Enhance user vsetvl optimization. - (get_first_vsetvl): New function. - (pass_vsetvl::global_eliminate_vsetvl_insn): Ditto. - (pass_vsetvl::cleanup_insns): Remove it. - (pass_vsetvl::ssa_post_optimization): New function. - (has_no_uses): Ditto. - (pass_vsetvl::propagate_avl): Remove it. - (pass_vsetvl::df_post_optimization): New function. - (pass_vsetvl::lazy_vsetvl): Rework Phase 5 && Phase 6. - * config/riscv/riscv-vsetvl.h: Adapt declaration. - -2023-06-10 Aldy Hernandez <aldyh@redhat.com> - - * ipa-cp.cc (ipcp_vr_lattice::init): Take type argument. - (ipcp_vr_lattice::print): Call dump method. - (ipcp_vr_lattice::meet_with): Adjust for m_vr being a - Value_Range. - (ipcp_vr_lattice::meet_with_1): Make argument a reference. - (ipcp_vr_lattice::set_to_bottom): Set varying for an unsupported - range. - (initialize_node_lattices): Pass type when appropriate. - (ipa_vr_operation_and_type_effects): Make type agnostic. - (ipa_value_range_from_jfunc): Same. - (propagate_vr_across_jump_function): Same. - * ipa-fnsummary.cc (evaluate_conditions_for_known_args): Same. - (evaluate_properties_for_edge): Same. - * ipa-prop.cc (ipa_vr::get_vrange): Same. - (ipcp_update_vr): Same. - * ipa-prop.h (ipa_value_range_from_jfunc): Same. - (ipa_range_set_and_normalize): Same. - -2023-06-10 Georg-Johann Lay <avr@gjlay.de> - - PR target/109650 - PR target/92729 - * config/avr/avr-passes.def (avr_pass_ifelse): Insert new pass. - * config/avr/avr.cc (avr_pass_ifelse): New RTL pass. - (avr_pass_data_ifelse): New pass_data for it. - (make_avr_pass_ifelse, avr_redundant_compare, avr_cbranch_cost) - (avr_canonicalize_comparison, avr_out_plus_set_ZN) - (avr_out_cmp_ext): New functions. - (compare_condtition): Make sure REG_CC dies in the branch insn. - (avr_rtx_costs_1): Add computation of cbranch costs. - (avr_adjust_insn_length) [ADJUST_LEN_ADD_SET_ZN, ADJUST_LEN_CMP_ZEXT]: - [ADJUST_LEN_CMP_SEXT]Handle them. - (TARGET_CANONICALIZE_COMPARISON): New define. - (avr_simplify_comparison_p, compare_diff_p, avr_compare_pattern) - (avr_reorg_remove_redundant_compare, avr_reorg): Remove functions. - (TARGET_MACHINE_DEPENDENT_REORG): Remove define. - * config/avr/avr-protos.h (avr_simplify_comparison_p): Remove proto. - (make_avr_pass_ifelse, avr_out_plus_set_ZN, cc_reg_rtx) - (avr_out_cmp_zext): New Protos - * config/avr/avr.md (branch, difficult_branch): Don't split insns. - (*cbranchhi.zero-extend.0", *cbranchhi.zero-extend.1") - (*swapped_tst<mode>, *add.for.eqne.<mode>): New insns. - (*cbranch<mode>4): Rename to cbranch<mode>4_insn. - (define_peephole): Add dead_or_set_regno_p(insn,REG_CC) as needed. - (define_deephole2): Add peep2_regno_dead_p(*,REG_CC) as needed. - Add new RTL peepholes for decrement-and-branch and *swapped_tst<mode>. - Rework signtest-and-branch peepholes for *sbrx_branch<mode>. - (adjust_len) [add_set_ZN, cmp_zext]: New. - (QIPSI): New mode iterator. - (ALLs1, ALLs2, ALLs4, ALLs234): New mode iterators. - (gelt): New code iterator. - (gelt_eqne): New code attribute. - (rvbranch, *rvbranch, difficult_rvbranch, *difficult_rvbranch) - (branch_unspec, *negated_tst<mode>, *reversed_tst<mode>) - (*cmpqi_sign_extend): Remove insns. - (define_c_enum "unspec") [UNSPEC_IDENTITY]: Remove. - * config/avr/avr-dimode.md (cbranch<mode>4): Canonicalize comparisons. - * config/avr/predicates.md (scratch_or_d_register_operand): New. - * config/avr/constraints.md (Yxx): New constraint. - -2023-06-10 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/autovec.md (select_vl<mode>): New pattern. - * config/riscv/riscv-protos.h (expand_select_vl): New function. - * config/riscv/riscv-v.cc (expand_select_vl): Ditto. - -2023-06-10 Andrew MacLeod <amacleod@redhat.com> - - * range-op-float.cc (foperator_mult_div_base): Delete. - (foperator_mult_div_base::find_range): Make static local function. - (foperator_mult): Remove. Move prototypes to range-op-mixed.h - (operator_mult::op1_range): Rename from foperator_mult. - (operator_mult::op2_range): Ditto. - (operator_mult::rv_fold): Ditto. - (float_table::float_table): Remove MULT_EXPR. - (class foperator_div): Inherit from range_operator. - (float_table::float_table): Delete. - * range-op-mixed.h (class operator_mult): Combined from integer - and float files. - * range-op.cc (float_tree_table): Delete. - (op_mult): New object. - (unified_table::unified_table): Add MULT_EXPR. - (get_op_handler): Do not check float table any longer. - (class cross_product_operator): Move to range-op-mixed.h. - (class operator_mult): Move to range-op-mixed.h. - (integral_table::integral_table): Remove MULT_EXPR. - (pointer_table::pointer_table): Remove MULT_EXPR. - * range-op.h (float_table): Remove. - -2023-06-10 Andrew MacLeod <amacleod@redhat.com> - - * range-op-float.cc (foperator_negate): Remove. Move prototypes - to range-op-mixed.h - (operator_negate::fold_range): Rename from foperator_negate. - (operator_negate::op1_range): Ditto. - (float_table::float_table): Remove NEGATE_EXPR. - * range-op-mixed.h (class operator_negate): Combined from integer - and float files. - * range-op.cc (op_negate): New object. - (unified_table::unified_table): Add NEGATE_EXPR. - (class operator_negate): Move to range-op-mixed.h. - (integral_table::integral_table): Remove NEGATE_EXPR. - (pointer_table::pointer_table): Remove NEGATE_EXPR. - -2023-06-10 Andrew MacLeod <amacleod@redhat.com> - - * range-op-float.cc (foperator_minus): Remove. Move prototypes - to range-op-mixed.h - (operator_minus::fold_range): Rename from foperator_minus. - (operator_minus::op1_range): Ditto. - (operator_minus::op2_range): Ditto. - (operator_minus::rv_fold): Ditto. - (float_table::float_table): Remove MINUS_EXPR. - * range-op-mixed.h (class operator_minus): Combined from integer - and float files. - * range-op.cc (op_minus): New object. - (unified_table::unified_table): Add MINUS_EXPR. - (class operator_minus): Move to range-op-mixed.h. - (integral_table::integral_table): Remove MINUS_EXPR. - (pointer_table::pointer_table): Remove MINUS_EXPR. - -2023-06-10 Andrew MacLeod <amacleod@redhat.com> - - * range-op-float.cc (foperator_abs): Remove. Move prototypes - to range-op-mixed.h - (operator_abs::fold_range): Rename from foperator_abs. - (operator_abs::op1_range): Ditto. - (float_table::float_table): Remove ABS_EXPR. - * range-op-mixed.h (class operator_abs): Combined from integer - and float files. - * range-op.cc (op_abs): New object. - (unified_table::unified_table): Add ABS_EXPR. - (class operator_abs): Move to range-op-mixed.h. - (integral_table::integral_table): Remove ABS_EXPR. - (pointer_table::pointer_table): Remove ABS_EXPR. - -2023-06-10 Andrew MacLeod <amacleod@redhat.com> - - * range-op-float.cc (foperator_plus): Remove. Move prototypes - to range-op-mixed.h - (operator_plus::fold_range): Rename from foperator_plus. - (operator_plus::op1_range): Ditto. - (operator_plus::op2_range): Ditto. - (operator_plus::rv_fold): Ditto. - (float_table::float_table): Remove PLUS_EXPR. - * range-op-mixed.h (class operator_plus): Combined from integer - and float files. - * range-op.cc (op_plus): New object. - (unified_table::unified_table): Add PLUS_EXPR. - (class operator_plus): Move to range-op-mixed.h. - (integral_table::integral_table): Remove PLUS_EXPR. - (pointer_table::pointer_table): Remove PLUS_EXPR. - -2023-06-10 Andrew MacLeod <amacleod@redhat.com> - - * range-op-mixed.h (class operator_cast): Combined from integer - and float files. - * range-op.cc (op_cast): New object. - (unified_table::unified_table): Add op_cast - (class operator_cast): Move to range-op-mixed.h. - (integral_table::integral_table): Remove op_cast - (pointer_table::pointer_table): Remove op_cast. - -2023-06-10 Andrew MacLeod <amacleod@redhat.com> - - * range-op-float.cc (operator_cst::fold_range): New. - * range-op-mixed.h (class operator_cst): Move from integer file. - * range-op.cc (op_cst): New object. - (unified_table::unified_table): Add op_cst. Also use for REAL_CST. - (class operator_cst): Move to range-op-mixed.h. - (integral_table::integral_table): Remove op_cst. - (pointer_table::pointer_table): Remove op_cst. - -2023-06-10 Andrew MacLeod <amacleod@redhat.com> - - * range-op-float.cc (foperator_identity): Remove. Move prototypes - to range-op-mixed.h - (operator_identity::fold_range): Rename from foperator_identity. - (operator_identity::op1_range): Ditto. - (float_table::float_table): Remove fop_identity. - * range-op-mixed.h (class operator_identity): Combined from integer - and float files. - * range-op.cc (op_identity): New object. - (unified_table::unified_table): Add op_identity. - (class operator_identity): Move to range-op-mixed.h. - (integral_table::integral_table): Remove identity. - (pointer_table::pointer_table): Remove identity. - -2023-06-10 Andrew MacLeod <amacleod@redhat.com> - - * range-op-float.cc (foperator_ge): Remove. Move prototypes - to range-op-mixed.h - (operator_ge::fold_range): Rename from foperator_ge. - (operator_ge::op1_range): Ditto. - (float_table::float_table): Remove GE_EXPR. - * range-op-mixed.h (class operator_ge): Combined from integer - and float files. - * range-op.cc (op_ge): New object. - (unified_table::unified_table): Add GE_EXPR. - (class operator_ge): Move to range-op-mixed.h. - (ge_op1_op2_relation): Fold into - operator_ge::op1_op2_relation. - (integral_table::integral_table): Remove GE_EXPR. - (pointer_table::pointer_table): Remove GE_EXPR. - * range-op.h (ge_op1_op2_relation): Delete. - -2023-06-10 Andrew MacLeod <amacleod@redhat.com> - - * range-op-float.cc (foperator_gt): Remove. Move prototypes - to range-op-mixed.h - (operator_gt::fold_range): Rename from foperator_gt. - (operator_gt::op1_range): Ditto. - (float_table::float_table): Remove GT_EXPR. - * range-op-mixed.h (class operator_gt): Combined from integer - and float files. - * range-op.cc (op_gt): New object. - (unified_table::unified_table): Add GT_EXPR. - (class operator_gt): Move to range-op-mixed.h. - (gt_op1_op2_relation): Fold into - operator_gt::op1_op2_relation. - (integral_table::integral_table): Remove GT_EXPR. - (pointer_table::pointer_table): Remove GT_EXPR. - * range-op.h (gt_op1_op2_relation): Delete. - -2023-06-10 Andrew MacLeod <amacleod@redhat.com> - - * range-op-float.cc (foperator_le): Remove. Move prototypes - to range-op-mixed.h - (operator_le::fold_range): Rename from foperator_le. - (operator_le::op1_range): Ditto. - (float_table::float_table): Remove LE_EXPR. - * range-op-mixed.h (class operator_le): Combined from integer - and float files. - * range-op.cc (op_le): New object. - (unified_table::unified_table): Add LE_EXPR. - (class operator_le): Move to range-op-mixed.h. - (le_op1_op2_relation): Fold into - operator_le::op1_op2_relation. - (integral_table::integral_table): Remove LE_EXPR. - (pointer_table::pointer_table): Remove LE_EXPR. - * range-op.h (le_op1_op2_relation): Delete. - -2023-06-10 Andrew MacLeod <amacleod@redhat.com> - - * range-op-float.cc (foperator_lt): Remove. Move prototypes - to range-op-mixed.h - (operator_lt::fold_range): Rename from foperator_lt. - (operator_lt::op1_range): Ditto. - (float_table::float_table): Remove LT_EXPR. - * range-op-mixed.h (class operator_lt): Combined from integer - and float files. - * range-op.cc (op_lt): New object. - (unified_table::unified_table): Add LT_EXPR. - (class operator_lt): Move to range-op-mixed.h. - (lt_op1_op2_relation): Fold into - operator_lt::op1_op2_relation. - (integral_table::integral_table): Remove LT_EXPR. - (pointer_table::pointer_table): Remove LT_EXPR. - * range-op.h (lt_op1_op2_relation): Delete. - -2023-06-10 Andrew MacLeod <amacleod@redhat.com> - - * range-op-float.cc (foperator_not_equal): Remove. Move prototypes - to range-op-mixed.h - (operator_equal::fold_range): Rename from foperator_not_equal. - (operator_equal::op1_range): Ditto. - (float_table::float_table): Remove NE_EXPR. - * range-op-mixed.h (class operator_not_equal): Combined from integer - and float files. - * range-op.cc (op_equal): New object. - (unified_table::unified_table): Add NE_EXPR. - (class operator_not_equal): Move to range-op-mixed.h. - (not_equal_op1_op2_relation): Fold into - operator_not_equal::op1_op2_relation. - (integral_table::integral_table): Remove NE_EXPR. - (pointer_table::pointer_table): Remove NE_EXPR. - * range-op.h (not_equal_op1_op2_relation): Delete. - -2023-06-10 Andrew MacLeod <amacleod@redhat.com> - - * range-op-float.cc (foperator_equal): Remove. Move prototypes - to range-op-mixed.h - (operator_equal::fold_range): Rename from foperator_equal. - (operator_equal::op1_range): Ditto. - (float_table::float_table): Remove EQ_EXPR. - * range-op-mixed.h (class operator_equal): Combined from integer - and float files. - * range-op.cc (op_equal): New object. - (unified_table::unified_table): Add EQ_EXPR. - (class operator_equal): Move to range-op-mixed.h. - (equal_op1_op2_relation): Fold into - operator_equal::op1_op2_relation. - (integral_table::integral_table): Remove EQ_EXPR. - (pointer_table::pointer_table): Remove EQ_EXPR. - * range-op.h (equal_op1_op2_relation): Delete. - -2023-06-10 Andrew MacLeod <amacleod@redhat.com> - - * range-op-float.cc (class float_table): Move to header. - (float_table::float_table): Move float only operators to... - (range_op_table::initialize_float_ops): Here. - * range-op-mixed.h: New. - * range-op.cc (integral_tree_table, pointer_tree_table): Moved - to top of file. - (float_tree_table): Moved from range-op-float.cc. - (unified_tree_table): New. - (unified_table::unified_table): New. Call initialize routines. - (get_op_handler): Check unified table first. - (range_op_handler::range_op_handler): Handle no type constructor. - (integral_table::integral_table): Move integral only operators to... - (range_op_table::initialize_integral_ops): Here. - (pointer_table::pointer_table): Move pointer only operators to... - (range_op_table::initialize_pointer_ops): Here. - * range-op.h (enum bool_range_state): Move to range-op-mixed.h. - (get_bool_state): Ditto. - (empty_range_varying): Ditto. - (relop_early_resolve): Ditto. - (class range_op_table): Add new init methods for range types. - (class integral_table): Move declaration to here. - (class pointer_table): Move declaration to here. - (class float_table): Move declaration to here. - -2023-06-09 Ju-Zhe Zhong <juzhe.zhong@rivai.ai> - Richard Sandiford <richard.sandiford@arm.com> - Richard Biener <rguenther@suse.de> - - * doc/md.texi: Add SELECT_VL support. - * internal-fn.def (SELECT_VL): Ditto. - * optabs.def (OPTAB_D): Ditto. - * tree-vect-loop-manip.cc (vect_set_loop_controls_directly): Ditto. - * tree-vect-loop.cc (_loop_vec_info::_loop_vec_info): Ditto. - * tree-vect-stmts.cc (get_select_vl_data_ref_ptr): Ditto. - (vectorizable_store): Ditto. - (vectorizable_load): Ditto. - * tree-vectorizer.h (LOOP_VINFO_USING_SELECT_VL_P): Ditto. - -2023-06-09 Andrew MacLeod <amacleod@redhat.com> - - PR ipa/109886 - * ipa-prop.cc (ipa_compute_jump_functions_for_edge): Check param - type as well. - -2023-06-09 Andrew MacLeod <amacleod@redhat.com> - - * range-op.cc (range_cast): Move to... - * range-op.h (range_cast): Here and add generic a version. - -2023-06-09 Marek Polacek <polacek@redhat.com> - - PR c/39589 - PR c++/96868 - * doc/invoke.texi: Clarify that -Wmissing-field-initializers doesn't - warn about designated initializers in C only. - -2023-06-09 Andrew Pinski <apinski@marvell.com> - - PR tree-optimization/97711 - PR tree-optimization/110155 - * match.pd ((zero_one == 0) ? y : z <op> y): Add plus to the op. - ((zero_one != 0) ? z <op> y : y): Likewise. - -2023-06-09 Andrew Pinski <apinski@marvell.com> - - * match.pd ((zero_one ==/!= 0) ? y : z <op> y): Use - multiply rather than negation/bit_and. - -2023-06-09 Andrew Pinski <apinski@marvell.com> - - * match.pd (`X & -Y -> X * Y`): Allow for truncation - and the same type for unsigned types. - -2023-06-09 Andrew Pinski <apinski@marvell.com> - - PR tree-optimization/110165 - PR tree-optimization/110166 - * match.pd (zero_one_valued_p): Don't accept - signed 1-bit integers. - -2023-06-09 Richard Biener <rguenther@suse.de> - - * match.pd (two conversions in a row): Use element_precision - to DTRT for VECTOR_TYPE. - -2023-06-09 Pan Li <pan2.li@intel.com> - - * config/riscv/riscv.md (enabled): Move to another place, and - add fp_vector_disabled to the cond. - (fp_vector_disabled): New attr defined for disabling fp. - * config/riscv/vector-iterators.md: Fix V_WHOLE and V_FRACT. - -2023-06-09 Pan Li <pan2.li@intel.com> - - * config/riscv/riscv-protos.h (enum frm_field_enum): Adjust - literal to int. - -2023-06-09 liuhongt <hongtao.liu@intel.com> - - PR target/110108 - * config/i386/i386.cc (ix86_gimple_fold_builtin): Explicitly - view_convert_expr mask to signed type when folding pblendvb - builtins. - -2023-06-09 liuhongt <hongtao.liu@intel.com> - - PR target/110108 - * config/i386/i386.cc (ix86_gimple_fold_builtin): Fold - _mm{,256,512}_abs_{epi8,epi16,epi32,epi64} into gimple - ABSU_EXPR + VCE, don't fold _mm_abs_{pi8,pi16,pi32} w/o - TARGET_64BIT. - * config/i386/i386-builtin.def: Replace CODE_FOR_nothing with - real codename for __builtin_ia32_pabs{b,w,d}. - -2023-06-08 Andrew MacLeod <amacleod@redhat.com> - - * gimple-range-op.cc - (gimple_range_op_handler::gimple_range_op_handler): Adjust. - (gimple_range_op_handler::maybe_builtin_call): Adjust. - * gimple-range-op.h (operand1, operand2): Use m_operator. - * range-op.cc (integral_table, pointer_table): Relocate. - (get_op_handler): Rename from get_handler and handle all types. - (range_op_handler::range_op_handler): Relocate. - (range_op_handler::set_op_handler): Relocate and adjust. - (range_op_handler::range_op_handler): Relocate. - (dispatch_trio): New. - (RO_III, RO_IFI, RO_IFF, RO_FFF, RO_FIF, RO_FII): New consts. - (range_op_handler::dispatch_kind): New. - (range_op_handler::fold_range): Relocate and Use new dispatch value. - (range_op_handler::op1_range): Ditto. - (range_op_handler::op2_range): Ditto. - (range_op_handler::lhs_op1_relation): Ditto. - (range_op_handler::lhs_op2_relation): Ditto. - (range_op_handler::op1_op2_relation): Ditto. - (range_op_handler::set_op_handler): Use m_operator member. - * range-op.h (range_op_handler::operator bool): Use m_operator. - (range_op_handler::dispatch_kind): New. - (range_op_handler::m_valid): Delete. - (range_op_handler::m_int): Delete - (range_op_handler::m_float): Delete - (range_op_handler::m_operator): New. - (range_op_table::operator[]): Relocate from .cc file. - (range_op_table::set): Ditto. - * value-range.h (class vrange): Make range_op_handler a friend. - -2023-06-08 Andrew MacLeod <amacleod@redhat.com> - - * gimple-range-op.cc (cfn_constant_float_p): Change base class. - (cfn_pass_through_arg1): Adjust using statemenmt. - (cfn_signbit): Change base class, adjust using statement. - (cfn_copysign): Ditto. - (cfn_sqrt): Ditto. - (cfn_sincos): Ditto. - * range-op-float.cc (fold_range): Change class to range_operator. - (rv_fold): Ditto. - (op1_range): Ditto - (op2_range): Ditto - (lhs_op1_relation): Ditto. - (lhs_op2_relation): Ditto. - (op1_op2_relation): Ditto. - (foperator_*): Ditto. - (class float_table): New. Inherit from range_op_table. - (floating_tree_table) Change to range_op_table pointer. - (class floating_op_table): Delete. - * range-op.cc (operator_equal): Adjust using statement. - (operator_not_equal): Ditto. - (operator_lt, operator_le, operator_gt, operator_ge): Ditto. - (operator_minus, operator_cast): Ditto. - (operator_bitwise_and, pointer_plus_operator): Ditto. - (get_float_handle): Change return type. - * range-op.h (range_operator_float): Delete. Relocate all methods - into class range_operator. - (range_op_handler::m_float): Change type to range_operator. - (floating_op_table): Delete. - (floating_tree_table): Change type. - -2023-06-08 Andrew MacLeod <amacleod@redhat.com> - - * range-op.cc (range_operator::fold_range): Call virtual routine. - (range_operator::update_bitmask): New. - (operator_equal::update_bitmask): New. - (operator_not_equal::update_bitmask): New. - (operator_lt::update_bitmask): New. - (operator_le::update_bitmask): New. - (operator_gt::update_bitmask): New. - (operator_ge::update_bitmask): New. - (operator_ge::update_bitmask): New. - (operator_plus::update_bitmask): New. - (operator_minus::update_bitmask): New. - (operator_pointer_diff::update_bitmask): New. - (operator_min::update_bitmask): New. - (operator_max::update_bitmask): New. - (operator_mult::update_bitmask): New. - (operator_div:operator_div):New. - (operator_div::update_bitmask): New. - (operator_div::m_code): New member. - (operator_exact_divide::operator_exact_divide): New constructor. - (operator_lshift::update_bitmask): New. - (operator_rshift::update_bitmask): New. - (operator_bitwise_and::update_bitmask): New. - (operator_bitwise_or::update_bitmask): New. - (operator_bitwise_xor::update_bitmask): New. - (operator_trunc_mod::update_bitmask): New. - (op_ident, op_unknown, op_ptr_min_max): New. - (op_nop, op_convert): Delete. - (op_ssa, op_paren, op_obj_type): Delete. - (op_realpart, op_imagpart): Delete. - (op_ptr_min, op_ptr_max): Delete. - (pointer_plus_operator:update_bitmask): New. - (range_op_table::set): Do not use m_code. - (integral_table::integral_table): Adjust to single instances. - * range-op.h (range_operator::range_operator): Delete. - (range_operator::m_code): Delete. - (range_operator::update_bitmask): New. - -2023-06-08 Andrew MacLeod <amacleod@redhat.com> - - * range-op-float.cc (range_operator_float::fold_range): Return - NAN of the result type. - -2023-06-08 Jakub Jelinek <jakub@redhat.com> - - * optabs.cc (expand_ffs): Add forward declaration. - (expand_doubleword_clz): Rename to ... - (expand_doubleword_clz_ctz_ffs): ... this. Add UNOPTAB argument, - handle also doubleword CTZ and FFS in addition to CLZ. - (expand_unop): Adjust caller. Also call it for doubleword - ctz_optab and ffs_optab. - -2023-06-08 Jakub Jelinek <jakub@redhat.com> - - PR target/110152 - * config/i386/i386-expand.cc (ix86_expand_vector_init_general): For - n_words == 2 recurse with mmx_ok as first argument rather than false. - -2023-06-07 Roger Sayle <roger@nextmovesoftware.com> - - * wide-int.cc (wi::bitreverse_large): Use HOST_WIDE_INT_1U to - avoid sign extension/undefined behaviour when setting each bit. - -2023-06-07 Roger Sayle <roger@nextmovesoftware.com> - Uros Bizjak <ubizjak@gmail.com> - - * config/i386/i386-expand.cc (ix86_expand_builtin) <handlecarry>: - Use new x86_stc instruction when the carry flag must be set. - * config/i386/i386.cc (ix86_cc_mode): Use CCCmode for *x86_cmc. - (ix86_rtx_costs): Provide accurate rtx_costs for *x86_cmc. - * config/i386/i386.h (TARGET_SLOW_STC): New define. - * config/i386/i386.md (UNSPEC_STC): New UNSPEC for stc. - (x86_stc): New define_insn. - (define_peephole2): Convert x86_stc into alternate implementation - on pentium4 without -Os when a QImode register is available. - (*x86_cmc): New define_insn. - (define_peephole2): Convert *x86_cmc into alternate implementation - on pentium4 without -Os when a QImode register is available. - (*setccc): New define_insn_and_split for a no-op CCCmode move. - (*setcc_qi_negqi_ccc_1_<mode>): New define_insn_and_split to - recognize (and eliminate) the carry flag being copied to itself. - (*setcc_qi_negqi_ccc_2_<mode>): Likewise. - * config/i386/x86-tune.def (X86_TUNE_SLOW_STC): New tuning flag. - -2023-06-07 Andrew Pinski <apinski@marvell.com> - - * match.pd: Fix comment for the - `(zero_one ==/!= 0) ? y : z <op> y` patterns. - -2023-06-07 Jeff Law <jlaw@ventanamicro.com> - Jeff Law <jlaw@ventanamicro.com> - - * config/riscv/bitmanip.md (rotrdi3, rotrsi3, rotlsi3): New expanders. - (rotrsi3_sext): Expose generator. - (rotlsi3 pattern): Hide generator. - * config/riscv/riscv-protos.h (riscv_emit_binary): New function - declaration. - * config/riscv/riscv.cc (riscv_emit_binary): Removed static - * config/riscv/riscv.md (addsi3, subsi3, negsi2): Hide generator. - (mulsi3, <optab>si3): Likewise. - (addsi3, subsi3, negsi2, mulsi3, <optab>si3): New expanders. - (addv<mode>4, subv<mode>4, mulv<mode>4): Use riscv_emit_binary. - (<u>mulsidi3): Likewise. - (addsi3_extended, subsi3_extended, negsi2_extended): Expose generator. - (mulsi3_extended, <optab>si3_extended): Likewise. - (splitter for shadd feeding divison): Update RTL pattern to account - for changes in how 32 bit ops are expanded for TARGET_64BIT. - * loop-iv.cc (get_biv_step_1): Process src of extension when it PLUS. - -2023-06-07 Dimitar Dimitrov <dimitar@dinux.eu> - - PR target/109725 - * config/riscv/riscv.cc (riscv_print_operand): Calculate - memmodel only when it is valid. - -2023-06-07 Dimitar Dimitrov <dimitar@dinux.eu> - - * config/riscv/riscv.cc (riscv_const_insns): Recursively call - for constant element of a vector. - -2023-06-07 Jakub Jelinek <jakub@redhat.com> - - * match.pd (zero_one_valued_p): Don't handle integer_zerop specially, - instead compare tree_nonzero_bits <= 1U rather than just == 1. - -2023-06-07 Alex Coplan <alex.coplan@arm.com> - - PR target/110132 - * config/aarch64/aarch64-builtins.cc (aarch64_general_simulate_builtin): - New. Use it ... - (aarch64_init_ls64_builtins): ... here. Switch to declaring public ACLE - names for builtins. - (aarch64_general_init_builtins): Ensure we invoke the arm_acle.h - setup if in_lto_p, just like we do for SVE. - * config/aarch64/arm_acle.h: (__arm_ld64b): Delete. - (__arm_st64b): Delete. - (__arm_st64bv): Delete. - (__arm_st64bv0): Delete. - -2023-06-07 Alex Coplan <alex.coplan@arm.com> - - PR target/110100 - * config/aarch64/aarch64-builtins.cc (aarch64_expand_builtin_ls64): - Use input operand for the destination address. - * config/aarch64/aarch64.md (st64b): Fix constraint on address - operand. - -2023-06-07 Alex Coplan <alex.coplan@arm.com> - - PR target/110100 - * config/aarch64/aarch64-builtins.cc (aarch64_init_ls64_builtins_types): - Replace eight consecutive spaces with tabs. - (aarch64_init_ls64_builtins): Likewise. - (aarch64_expand_builtin_ls64): Likewise. - * config/aarch64/aarch64.md (ld64b): Likewise. - (st64b): Likewise. - (st64bv): Likewise - (st64bv0): Likewise. - -2023-06-07 Vladimir N. Makarov <vmakarov@redhat.com> - - * ira-costs.cc: (find_costs_and_classes): Constrain classes of pic - offset table pseudo to a general reg subset. - -2023-06-07 Kyrylo Tkachov <kyrylo.tkachov@arm.com> - - * config/aarch64/aarch64-simd.md (aarch64_sqmovun<mode><vczle><vczbe>): - Rename to... - (*aarch64_sqmovun<mode>_insn<vczle><vczbe>): ... This. Reimplement - with RTL codes. - (aarch64_sqmovun<mode> [SD_HSDI]): Reimplement with RTL codes. - (aarch64_sqxtun2<mode>_le): Likewise. - (aarch64_sqxtun2<mode>_be): Likewise. - (aarch64_sqxtun2<mode>): Adjust for the above. - (aarch64_sqmovun<mode>): New define_expand. - * config/aarch64/iterators.md (UNSPEC_SQXTUN): Delete. - (half_mask): New mode attribute. - * config/aarch64/predicates.md (aarch64_simd_umax_half_mode): - New predicate. - -2023-06-07 Kyrylo Tkachov <kyrylo.tkachov@arm.com> - - * config/aarch64/aarch64-simd.md (aarch64_addp<mode><vczle><vczbe>): - Reimplement as... - (aarch64_addp<mode>_insn): ... This... - (aarch64_addp<mode><vczle><vczbe>_insn): ... And this. - (aarch64_addp<mode>): New define_expand. - -2023-06-07 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv-protos.h (expand_vec_perm_const): New function. - * config/riscv/riscv-v.cc - (rvv_builder::can_duplicate_repeating_sequence_p): Support POLY - handling. - (rvv_builder::single_step_npatterns_p): New function. - (rvv_builder::npatterns_all_equal_p): Ditto. - (const_vec_all_in_range_p): Support POLY handling. - (gen_const_vector_dup): Ditto. - (emit_vlmax_gather_insn): Add vrgatherei16. - (emit_vlmax_masked_gather_mu_insn): Ditto. - (expand_const_vector): Add VLA SLP const vector support. - (expand_vec_perm): Support POLY. - (struct expand_vec_perm_d): New struct. - (shuffle_generic_patterns): New function. - (expand_vec_perm_const_1): Ditto. - (expand_vec_perm_const): Ditto. - * config/riscv/riscv.cc (riscv_vectorize_vec_perm_const): Ditto. - (TARGET_VECTORIZE_VEC_PERM_CONST): New targethook. - -2023-06-07 Andrew Pinski <apinski@marvell.com> - - PR middle-end/110117 - * expr.cc (expand_single_bit_test): Handle - const_int from expand_expr. - -2023-06-07 Andrew Pinski <apinski@marvell.com> - - * expr.cc (do_store_flag): Rearrange the - TER code so that it overrides the nonzero bits - info if we had `a & POW2`. - -2023-06-07 Andrew Pinski <apinski@marvell.com> - - PR tree-optimization/110134 - * match.pd (-A CMP -B -> B CMP A): Allow EQ/NE for all integer - types. - (-A CMP CST -> B CMP (-CST)): Likewise. - -2023-06-07 Andrew Pinski <apinski@marvell.com> - - PR tree-optimization/89263 - PR tree-optimization/99069 - PR tree-optimization/20083 - PR tree-optimization/94898 - * match.pd: Add patterns to optimize `a ? onezero : onezero` with - one of the operands are constant. - -2023-06-07 Andrew Pinski <apinski@marvell.com> - - * match.pd (zero_one_valued_p): Match 0 integer constant - too. - -2023-06-07 Pan Li <pan2.li@intel.com> - - * config/riscv/riscv-vector-builtins-types.def - (vfloat32mf2_t): Take RVV_REQUIRE_ELEN_FP_16 as requirement. - (vfloat32m1_t): Ditto. - (vfloat32m2_t): Ditto. - (vfloat32m4_t): Ditto. - (vfloat32m8_t): Ditto. - (vint16mf4_t): Ditto. - (vint16mf2_t): Ditto. - (vint16m1_t): Ditto. - (vint16m2_t): Ditto. - (vint16m4_t): Ditto. - (vint16m8_t): Ditto. - (vuint16mf4_t): Ditto. - (vuint16mf2_t): Ditto. - (vuint16m1_t): Ditto. - (vuint16m2_t): Ditto. - (vuint16m4_t): Ditto. - (vuint16m8_t): Ditto. - (vint32mf2_t): Ditto. - (vint32m1_t): Ditto. - (vint32m2_t): Ditto. - (vint32m4_t): Ditto. - (vint32m8_t): Ditto. - (vuint32mf2_t): Ditto. - (vuint32m1_t): Ditto. - (vuint32m2_t): Ditto. - (vuint32m4_t): Ditto. - (vuint32m8_t): Ditto. - -2023-06-07 Jason Merrill <jason@redhat.com> - - PR c++/58487 - * doc/invoke.texi: Document it. - -2023-06-06 Roger Sayle <roger@nextmovesoftware.com> - - * doc/rtl.texi (bitreverse, copysign): Document new RTX codes. - * rtl.def (BITREVERSE, COPYSIGN): Define new RTX codes. - * simplify-rtx.cc (simplify_unary_operation_1): Optimize - NOT (BITREVERSE x) as BITREVERSE (NOT x). - Optimize POPCOUNT (BITREVERSE x) as POPCOUNT x. - Optimize PARITY (BITREVERSE x) as PARITY x. - Optimize BITREVERSE (BITREVERSE x) as x. - (simplify_const_unary_operation) <case BITREVERSE>: Evaluate - BITREVERSE of a constant integer at compile-time. - (simplify_binary_operation_1) <case COPYSIGN>: Optimize - COPY_SIGN (x, x) as x. Optimize COPYSIGN (x, C) as ABS x - or NEG (ABS x) for constant C. Optimize COPYSIGN (ABS x, y) - and COPYSIGN (NEG x, y) as COPYSIGN (x, y). - Optimize COPYSIGN (x, ABS y) as ABS x. - Optimize COPYSIGN (COPYSIGN (x, y), z) as COPYSIGN (x, z). - Optimize COPYSIGN (x, COPYSIGN (y, z)) as COPYSIGN (x, z). - (simplify_const_binary_operation): Evaluate COPYSIGN of constant - arguments at compile-time. - -2023-06-06 Uros Bizjak <ubizjak@gmail.com> - - * rtl.h (function_invariant_p): Change return type from int to bool. - * reload1.cc (function_invariant_p): Change return type from - int to bool and adjust function body accordingly. - -2023-06-06 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/autovec-opt.md (*<optab>_fma<mode>): New pattern. - (*single_<optab>mult_plus<mode>): Ditto. - (*double_<optab>mult_plus<mode>): Ditto. - (*sign_zero_extend_fma): Ditto. - (*zero_sign_extend_fma): Ditto. - * config/riscv/riscv-protos.h (enum insn_type): New enum. - -2023-06-06 Kwok Cheung Yeung <kcy@codesourcery.com> - Tobias Burnus <tobias@codesourcery.com> - - * gimplify.cc (omp_notice_variable): Apply GOVD_MAP_ALLOC_ONLY flag - and defaultmap flags if the defaultmap has GOVD_MAP_FORCE_PRESENT flag - set. - (omp_get_attachment): Handle map clauses with 'present' modifier. - (omp_group_base): Likewise. - (gimplify_scan_omp_clauses): Reorder present maps to come first. - Set GOVD flags for present defaultmaps. - (gimplify_adjust_omp_clauses_1): Set map kind for present defaultmaps. - * omp-low.cc (scan_sharing_clauses): Handle 'always, present' map - clauses. - (lower_omp_target): Handle map clauses with 'present' modifier. - Handle 'to' and 'from' clauses with 'present'. - * tree-core.h (enum omp_clause_defaultmap_kind): Add - OMP_CLAUSE_DEFAULTMAP_PRESENT defaultmap kind. - * tree-pretty-print.cc (dump_omp_clause): Handle 'map', 'to' and - 'from' clauses with 'present' modifier. Handle present defaultmap. - * tree.h (OMP_CLAUSE_MOTION_PRESENT): New #define. - -2023-06-06 Segher Boessenkool <segher@kernel.crashing.org> - - * config/rs6000/genfusion.pl: Delete some dead code. - -2023-06-06 Segher Boessenkool <segher@kernel.crashing.org> - - * config/rs6000/genfusion.pl (gen_ld_cmpi_p10_one): New, rewritten and - split out from... - (gen_ld_cmpi_p10): ... this. - -2023-06-06 Jeevitha Palanisamy <jeevitha@linux.ibm.com> - - PR target/106907 - * config/rs6000/rs6000.cc (vec_const_128bit_to_bytes): Remove - duplicate expression. - -2023-06-06 Kyrylo Tkachov <kyrylo.tkachov@arm.com> - - * config/aarch64/aarch64-builtins.cc (aarch64_general_gimple_fold_builtin): - Handle unsigned reduc_plus_scal_ builtins. - * config/aarch64/aarch64-simd-builtins.def (addp): Delete DImode instances. - * config/aarch64/aarch64-simd.md (aarch64_addpdi): Delete. - * config/aarch64/arm_neon.h (vpaddd_s64): Reimplement with - __builtin_aarch64_reduc_plus_scal_v2di. - (vpaddd_u64): Reimplement with __builtin_aarch64_reduc_plus_scal_v2di_uu. - -2023-06-06 Kyrylo Tkachov <kyrylo.tkachov@arm.com> - - * config/aarch64/aarch64-simd.md (aarch64_<sur>shr_n<mode>): Delete. - (aarch64_<sra_op>rshr_n<mode><vczle><vczbe>_insn): New define_insn. - (aarch64_<sra_op>rshr_n<mode>): New define_expand. - -2023-06-06 Kyrylo Tkachov <kyrylo.tkachov@arm.com> - - * config/aarch64/aarch64-simd.md (aarch64_shrn<mode>_insn_le): Delete. - (aarch64_shrn<mode>_insn_be): Delete. - (*aarch64_<srn_op>shrn<mode>_vect): Rename to... - (*aarch64_<srn_op>shrn<mode><vczle><vczbe>): ... This. - (aarch64_shrn<mode>): Remove reference to the above deleted patterns. - (aarch64_rshrn<mode>_insn_le): Delete. - (aarch64_rshrn<mode>_insn_be): Delete. - (aarch64_rshrn<mode><vczle><vczbe>_insn): New define_insn. - (aarch64_rshrn<mode>): Remove references to the above deleted patterns. - -2023-06-06 Kyrylo Tkachov <kyrylo.tkachov@arm.com> - - * config/aarch64/aarch64-protos.h (aarch64_parallel_select_half_p): - Define prototype. - (aarch64_pars_overlap_p): Likewise. - * config/aarch64/aarch64-simd.md (aarch64_<su>addlv<mode>): - Express in terms of UNSPEC_ADDV. - (*aarch64_<su>addlv<VDQV_L:mode>_ze<GPI:mode>): Likewise. - (*aarch64_<su>addlv<mode>_reduction): Define. - (*aarch64_uaddlv<mode>_reduction_2): Likewise. - * config/aarch64/aarch64.cc (aarch64_parallel_select_half_p): Define. - (aarch64_pars_overlap_p): Likewise. - * config/aarch64/iterators.md (UNSPEC_SADDLV, UNSPEC_UADDLV): Delete. - (VQUADW): New mode attribute. - (VWIDE2X_S): Likewise. - (USADDLV): Delete. - (su): Delete handling of UNSPEC_SADDLV, UNSPEC_UADDLV. - * config/aarch64/predicates.md (vect_par_cnst_select_half): Define. - -2023-06-06 Richard Biener <rguenther@suse.de> - - PR middle-end/110055 - * gimplify.cc (gimplify_target_expr): Do not emit - CLOBBERs for variables which have static storage duration - after gimplifying their initializers. - -2023-06-06 Richard Biener <rguenther@suse.de> - - PR tree-optimization/109143 - * tree-ssa-structalias.cc (solution_set_expand): Avoid - one bitmap iteration and optimize bit range setting. - -2023-06-06 Hans-Peter Nilsson <hp@axis.com> - - PR bootstrap/110120 - * postreload.cc (reload_cse_move2add, move2add_use_add2_insn): Use - XVECEXP, not XEXP, to access first item of a PARALLEL. - -2023-06-06 Pan Li <pan2.li@intel.com> - - * config/riscv/riscv-vector-builtins-types.def - (vfloat16mf4_t): Add vfloat16mf4_t to WF operations. - (vfloat16mf2_t): Likewise. - (vfloat16m1_t): Likewise. - (vfloat16m2_t): Likewise. - (vfloat16m4_t): Likewise. - (vfloat16m8_t): Likewise. - * config/riscv/vector-iterators.md: Add FP=16 to VWF, VWF_ZVE64, - VWLMUL1, VWLMUL1_ZVE64, vwlmul1 and vwlmul1_zve64. - -2023-06-06 Fei Gao <gaofei@eswincomputing.com> - - * config/riscv/riscv.cc (riscv_adjust_libcall_cfi_prologue): Use Pmode - for cfi reg/mem machmode - (riscv_adjust_libcall_cfi_epilogue): Use Pmode for cfi reg machmode - -2023-06-06 Li Xu <xuli1@eswincomputing.com> - - * config/riscv/vector-iterators.md: - Fix 'REQUIREMENT' for machine_mode 'MODE'. - * config/riscv/vector.md (@pred_indexed_<order>store<VNX16_QHS:mode> - <VNX16_QHSI:mode>): change VNX16_QHSI to VNX16_QHSDI. - (@pred_indexed_<order>store<VNX16_QHS:mode><VNX16_QHSDI:mode>): Ditto. - -2023-06-06 Pan Li <pan2.li@intel.com> - - * config/riscv/vector-iterators.md: Fix typo in mode attr. - -2023-06-05 Andre Vieira <andre.simoesdiasvieira@arm.com> - Joel Hutton <joel.hutton@arm.com> - - * doc/generic.texi: Remove old tree codes. - * expr.cc (expand_expr_real_2): Remove old tree code cases. - * gimple-pretty-print.cc (dump_binary_rhs): Likewise. - * optabs-tree.cc (optab_for_tree_code): Likewise. - (supportable_half_widening_operation): Likewise. - * tree-cfg.cc (verify_gimple_assign_binary): Likewise. - * tree-inline.cc (estimate_operator_cost): Likewise. - (op_symbol_code): Likewise. - * tree-vect-data-refs.cc (vect_get_smallest_scalar_type): Likewise. - (vect_analyze_data_ref_accesses): Likewise. - * tree-vect-generic.cc (expand_vector_operations_1): Likewise. - * cfgexpand.cc (expand_debug_expr): Likewise. - * tree-vect-stmts.cc (vectorizable_conversion): Likewise. - (supportable_widening_operation): Likewise. - * gimple-range-op.cc (gimple_range_op_handler::maybe_non_standard): - Likewise. - * optabs.def (vec_widen_ssubl_hi_optab, vec_widen_ssubl_lo_optab, - vec_widen_saddl_hi_optab, vec_widen_saddl_lo_optab, - vec_widen_usubl_hi_optab, vec_widen_usubl_lo_optab, - vec_widen_uaddl_hi_optab, vec_widen_uaddl_lo_optab): Remove optabs. - * tree-pretty-print.cc (dump_generic_node): Remove tree code definition. - * tree.def (WIDEN_PLUS_EXPR, WIDEN_MINUS_EXPR, VEC_WIDEN_PLUS_HI_EXPR, - VEC_WIDEN_PLUS_LO_EXPR, VEC_WIDEN_MINUS_HI_EXPR, - VEC_WIDEN_MINUS_LO_EXPR): Likewise. - -2023-06-05 Andre Vieira <andre.simoesdiasvieira@arm.com> - Joel Hutton <joel.hutton@arm.com> - Tamar Christina <tamar.christina@arm.com> - - * config/aarch64/aarch64-simd.md (vec_widen_<su>addl_lo_<mode>): Rename - this ... - (vec_widen_<su>add_lo_<mode>): ... to this. - (vec_widen_<su>addl_hi_<mode>): Rename this ... - (vec_widen_<su>add_hi_<mode>): ... to this. - (vec_widen_<su>subl_lo_<mode>): Rename this ... - (vec_widen_<su>sub_lo_<mode>): ... to this. - (vec_widen_<su>subl_hi_<mode>): Rename this ... - (vec_widen_<su>sub_hi_<mode>): ...to this. - * doc/generic.texi: Document new IFN codes. - * internal-fn.cc (lookup_hilo_internal_fn): Add lookup function. - (commutative_binary_fn_p): Add widen_plus fn's. - (widening_fn_p): New function. - (narrowing_fn_p): New function. - (direct_internal_fn_optab): Change visibility. - * internal-fn.def (DEF_INTERNAL_WIDENING_OPTAB_FN): Macro to define an - internal_fn that expands into multiple internal_fns for widening. - (IFN_VEC_WIDEN_PLUS, IFN_VEC_WIDEN_PLUS_HI, IFN_VEC_WIDEN_PLUS_LO, - IFN_VEC_WIDEN_PLUS_EVEN, IFN_VEC_WIDEN_PLUS_ODD, - IFN_VEC_WIDEN_MINUS, IFN_VEC_WIDEN_MINUS_HI, - IFN_VEC_WIDEN_MINUS_LO, IFN_VEC_WIDEN_MINUS_ODD, - IFN_VEC_WIDEN_MINUS_EVEN): Define widening plus,minus functions. - * internal-fn.h (direct_internal_fn_optab): Declare new prototype. - (lookup_hilo_internal_fn): Likewise. - (widening_fn_p): Likewise. - (Narrowing_fn_p): Likewise. - * optabs.cc (commutative_optab_p): Add widening plus optabs. - * optabs.def (OPTAB_D): Define widen add, sub optabs. - * tree-vect-patterns.cc (vect_recog_widen_op_pattern): Support - patterns with a hi/lo or even/odd split. - (vect_recog_sad_pattern): Refactor to use new IFN codes. - (vect_recog_widen_plus_pattern): Likewise. - (vect_recog_widen_minus_pattern): Likewise. - (vect_recog_average_pattern): Likewise. - * tree-vect-stmts.cc (vectorizable_conversion): Add support for - _HILO IFNs. - (supportable_widening_operation): Likewise. - * tree.def (WIDEN_SUM_EXPR): Update example to use new IFNs. - -2023-06-05 Andre Vieira <andre.simoesdiasvieira@arm.com> - Joel Hutton <joel.hutton@arm.com> - - * tree-vect-patterns.cc: Add include for gimple-iterator. - (vect_recog_widen_op_pattern): Refactor to use code_helper. - (vect_gimple_build): New function. - * tree-vect-stmts.cc (simple_integer_narrowing): Refactor to use - code_helper. - (vectorizable_call): Likewise. - (vect_gen_widened_results_half): Likewise. - (vect_create_vectorized_demotion_stmts): Likewise. - (vect_create_vectorized_promotion_stmts): Likewise. - (vect_create_half_widening_stmts): Likewise. - (vectorizable_conversion): Likewise. - (supportable_widening_operation): Likewise. - (supportable_narrowing_operation): Likewise. - * tree-vectorizer.h (supportable_widening_operation): Change - prototype to use code_helper. - (supportable_narrowing_operation): Likewise. - (vect_gimple_build): New function prototype. - * tree.h (code_helper::safe_as_tree_code): New function. - (code_helper::safe_as_fn_code): New function. - -2023-06-05 Roger Sayle <roger@nextmovesoftware.com> - - * wide-int.cc (wi::bitreverse_large): New function implementing - bit reversal of an integer. - * wide-int.h (wi::bitreverse): New (template) function prototype. - (bitreverse_large): Prototype helper function/implementation. - (wi::bitreverse): New template wrapper around bitreverse_large. - -2023-06-05 Uros Bizjak <ubizjak@gmail.com> - - * rtl.h (print_rtl_single): Change return type from int to void. - (print_rtl_single_with_indent): Ditto. - * print-rtl.h (class rtx_writer): Ditto. Change m_sawclose to bool. - * print-rtl.cc (rtx_writer::rtx_writer): Update for m_sawclose change. - (rtx_writer::print_rtx_operand_code_0): Ditto. - (rtx_writer::print_rtx_operand_codes_E_and_V): Ditto. - (rtx_writer::print_rtx_operand_code_i): Ditto. - (rtx_writer::print_rtx_operand_code_u): Ditto. - (rtx_writer::print_rtx_operand): Ditto. - (rtx_writer::print_rtx): Ditto. - (rtx_writer::finish_directive): Ditto. - (print_rtl_single): Change return type from int to void - and adjust function body accordingly. - (rtx_writer::print_rtl_single_with_indent): Ditto. - -2023-06-05 Uros Bizjak <ubizjak@gmail.com> - - * rtl.h (reg_classes_intersect_p): Change return type from int to bool. - (reg_class_subset_p): Ditto. - * reginfo.cc (reg_classes_intersect_p): Ditto. - (reg_class_subset_p): Ditto. - -2023-06-05 Pan Li <pan2.li@intel.com> - - * config/riscv/riscv-vector-builtins-types.def - (vfloat32mf2_t): New type for DEF_RVV_WEXTF_OPS. - (vfloat32m1_t): Ditto. - (vfloat32m2_t): Ditto. - (vfloat32m4_t): Ditto. - (vfloat32m8_t): Ditto. - (vint16mf4_t): New type for DEF_RVV_CONVERT_I_OPS. - (vint16mf2_t): Ditto. - (vint16m1_t): Ditto. - (vint16m2_t): Ditto. - (vint16m4_t): Ditto. - (vint16m8_t): Ditto. - (vuint16mf4_t): New type for DEF_RVV_CONVERT_U_OPS. - (vuint16mf2_t): Ditto. - (vuint16m1_t): Ditto. - (vuint16m2_t): Ditto. - (vuint16m4_t): Ditto. - (vuint16m8_t): Ditto. - (vint32mf2_t): New type for DEF_RVV_WCONVERT_I_OPS. - (vint32m1_t): Ditto. - (vint32m2_t): Ditto. - (vint32m4_t): Ditto. - (vint32m8_t): Ditto. - (vuint32mf2_t): New type for DEF_RVV_WCONVERT_U_OPS. - (vuint32m1_t): Ditto. - (vuint32m2_t): Ditto. - (vuint32m4_t): Ditto. - (vuint32m8_t): Ditto. - * config/riscv/vector-iterators.md: Add FP=16 support for V, - VWCONVERTI, VCONVERT, VNCONVERT, VMUL1 and vlmul1. - -2023-06-05 Andrew Pinski <apinski@marvell.com> - - PR bootstrap/110085 - * Makefile.in (clean): Remove the removing of - MULTILIB_DIR/MULTILIB_OPTIONS directories. - -2023-06-05 YunQiang Su <yunqiang.su@cipunited.com> - - * config/mips/mips-protos.h (mips_emit_speculation_barrier): New - prototype. - * config/mips/mips.cc (speculation_barrier_libfunc): New static - variable. - (mips_init_libfuncs): Initialize it. - (mips_emit_speculation_barrier): New function. - * config/mips/mips.md (speculation_barrier): Call - mips_emit_speculation_barrier. - -2023-06-05 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv-v.cc (class rvv_builder): Reorganize functions. - (rvv_builder::can_duplicate_repeating_sequence_p): Ditto. - (rvv_builder::repeating_sequence_use_merge_profitable_p): Ditto. - (rvv_builder::get_merged_repeating_sequence): Ditto. - (rvv_builder::get_merge_scalar_mask): Ditto. - (emit_scalar_move_insn): Ditto. - (emit_vlmax_integer_move_insn): Ditto. - (emit_nonvlmax_integer_move_insn): Ditto. - (emit_vlmax_gather_insn): Ditto. - (emit_vlmax_masked_gather_mu_insn): Ditto. - (get_repeating_sequence_dup_machine_mode): Ditto. - -2023-06-05 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/autovec.md: Split arguments. - * config/riscv/riscv-protos.h (expand_vec_perm): Ditto. - * config/riscv/riscv-v.cc (expand_vec_perm): Ditto. - -2023-06-04 Andrew Pinski <apinski@marvell.com> - - * expr.cc (do_store_flag): Improve for single bit testing - not against zero but against that single bit. - -2023-06-04 Andrew Pinski <apinski@marvell.com> - - * expr.cc (do_store_flag): Extend the one bit checking case - to handle the case where we don't have an and but rather still - one bit is known to be non-zero. - -2023-06-04 Jeff Law <jlaw@ventanamicro.com> - - * config/h8300/constraints.md (Zz): Make this a normal - constraint. - * config/h8300/h8300.cc (TARGET_LRA_P): Remove. - * config/h8300/logical.md (H8/SX bit patterns): Remove. - -2023-06-04 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp> - - * config/xtensa/xtensa.md (*btrue_INT_MIN, *eqne_INT_MIN): - New insn_and_split patterns. - -2023-06-04 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - PR target/110109 - * config/riscv/riscv-vector-builtins-bases.cc: Change expand approach. - * config/riscv/vector.md (@vlmul_extx2<mode>): Remove it. - (@vlmul_extx4<mode>): Ditto. - (@vlmul_extx8<mode>): Ditto. - (@vlmul_extx16<mode>): Ditto. - (@vlmul_extx32<mode>): Ditto. - (@vlmul_extx64<mode>): Ditto. - (*vlmul_extx2<mode>): Ditto. - (*vlmul_extx4<mode>): Ditto. - (*vlmul_extx8<mode>): Ditto. - (*vlmul_extx16<mode>): Ditto. - (*vlmul_extx32<mode>): Ditto. - (*vlmul_extx64<mode>): Ditto. - -2023-06-04 Pan Li <pan2.li@intel.com> - - * config/riscv/riscv-vector-builtins-types.def - (vfloat32mf2_t): Add vfloat32mf2_t type to vfncvt.f.f.w operations. - (vfloat32m1_t): Likewise. - (vfloat32m2_t): Likewise. - (vfloat32m4_t): Likewise. - (vfloat32m8_t): Likewise. - * config/riscv/riscv-vector-builtins.def: Fix typo in comments. - * config/riscv/vector-iterators.md: Add single to half machine - mode conversion. - -2023-06-04 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/autovec-opt.md (*<optab>not<mode>): Move to autovec-opt.md. - (*n<optab><mode>): Ditto. - * config/riscv/autovec.md (*<optab>not<mode>): Ditto. - (*n<optab><mode>): Ditto. - * config/riscv/vector.md: Ditto. - -2023-06-04 Roger Sayle <roger@nextmovesoftware.com> - - PR target/110083 - * config/i386/i386-features.cc (scalar_chain::convert_compare): - Update or delete REG_EQUAL notes, converting CONST_INT and - CONST_WIDE_INT immediate operands to a suitable CONST_VECTOR. - -2023-06-04 Jason Merrill <jason@redhat.com> - - PR c++/97720 - * tree-eh.cc (lower_resx): Pass the exception pointer to the - failure_decl. - * except.h: Tweak comment. - -2023-06-04 Hans-Peter Nilsson <hp@axis.com> - - * postreload.cc (move2add_use_add2_insn): Handle - trivial single_sets. Rename variable PAT to SET. - (move2add_use_add3_insn, reload_cse_move2add): Similar. - -2023-06-04 Pan Li <pan2.li@intel.com> - - * config/riscv/riscv-vector-builtins-types.def - (vfloat16mf4_t): Add the float16 type to DEF_RVV_F_OPS. - (vfloat16mf2_t): Likewise. - (vfloat16m1_t): Likewise. - (vfloat16m2_t): Likewise. - (vfloat16m4_t): Likewise. - (vfloat16m8_t): Likewise. - * config/riscv/riscv.md: Add vfloat16*_t to attr mode. - * config/riscv/vector-iterators.md: Add vfloat16*_t machine mode - to V, V_WHOLE, V_FRACT, VINDEX, VM, VEL and sew. - * config/riscv/vector.md: Add vfloat16*_t machine mode to sew, - vlmul and ratio. - -2023-06-03 Fei Gao <gaofei@eswincomputing.com> - - * config/riscv/riscv.cc (riscv_expand_epilogue): fix cfi issue with - correct offset. - -2023-06-03 Die Li <lidie@eswincomputing.com> - - * config/riscv/thead.md (*th_cond_gpr_mov<GPR:mode><GPR2:mode>): Delete. - -2023-06-03 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/predicates.md: Change INTVAL into UINTVAL. - -2023-06-03 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/vector.md: Add vector-opt.md. - * config/riscv/autovec-opt.md: New file. - -2023-06-03 liuhongt <hongtao.liu@intel.com> - - PR tree-optimization/110067 - * gimple-ssa-store-merging.cc (find_bswap_or_nop): Don't try - bswap + rotate when TYPE_PRECISION(n->type) > n->range. - -2023-06-03 liuhongt <hongtao.liu@intel.com> - - PR target/92658 - * config/i386/mmx.md (truncv2hiv2qi2): New define_insn. - (truncv2si<mode>2): Ditto. - -2023-06-02 Andrew Pinski <apinski@marvell.com> - - PR rtl-optimization/102733 - * dse.cc (store_info): Add addrspace field. - (record_store): Record the address space - and check to make sure they are the same. - -2023-06-02 Andrew Pinski <apinski@marvell.com> - - PR rtl-optimization/110042 - * ifcvt.cc (bbs_ok_for_cmove_arith): Allow paradoxical subregs. - (bb_valid_for_noce_process_p): Strip the subreg for the SET_DEST. - -2023-06-02 Iain Sandoe <iain@sandoe.co.uk> - - PR target/110044 - * config/rs6000/rs6000.cc (darwin_rs6000_special_round_type_align): - Make sure that we do not have a cap on field alignment before altering - the struct layout based on the type alignment of the first entry. - -2023-06-02 David Faust <david.faust@oracle.com> - - PR debug/110073 - * btfout.cc (btf_absolute_func_id): New function. - (btf_asm_func_type): Call it here. Change index parameter from - size_t to ctf_id_t. Use PRIu64 formatter. - -2023-06-02 Alex Coplan <alex.coplan@arm.com> - - * btfout.cc (btf_asm_type): Use PRIu64 instead of %lu for uint64_t. - (btf_asm_datasec_type): Likewise. - -2023-06-02 Carl Love <cel@us.ibm.com> - - * config/rs6000/rs6000-builtins.def (__builtin_altivec_tr_stxvrhx, - __builtin_altivec_tr_stxvrwx): Fix type of third argument. - -2023-06-02 Jason Merrill <jason@redhat.com> - - PR c++/110070 - PR c++/105838 - * tree.h (DECL_MERGEABLE): New. - * tree-core.h (struct tree_decl_common): Mention it. - * gimplify.cc (gimplify_init_constructor): Check it. - * cgraph.cc (symtab_node::address_can_be_compared_p): Likewise. - * varasm.cc (categorize_decl_for_section): Likewise. - -2023-06-02 Uros Bizjak <ubizjak@gmail.com> - - * rtl.h (stack_regs_mentioned): Change return type from int to bool. - * reg-stack.cc (struct_block_info_def): Change "done" to bool. - (stack_regs_mentioned_p): Change return type from int to bool - and adjust function body accordingly. - (stack_regs_mentioned): Ditto. - (check_asm_stack_operands): Ditto. Change "malformed_asm" - variable to bool. - (move_for_stack_reg): Recode handling of control_flow_insn_deleted. - (swap_rtx_condition_1): Change return type from int to bool - and adjust function body accordingly. Change "r" variable to bool. - (swap_rtx_condition): Change return type from int to bool - and adjust function body accordingly. - (subst_stack_regs_pat): Recode handling of control_flow_insn_deleted. - (subst_stack_regs): Ditto. - (convert_regs_entry): Change return type from int to bool and adjust - function body accordingly. Change "inserted" variable to bool. - (convert_regs_1): Recode handling of control_flow_insn_deleted. - (convert_regs_2): Recode handling of cfg_altered. - (convert_regs): Ditto. Change "inserted" variable to bool. - -2023-06-02 Jason Merrill <jason@redhat.com> - - PR c++/95226 - * varasm.cc (output_constant) [REAL_TYPE]: Check that sizes match. - (initializer_constant_valid_p_1): Compare float precision. - -2023-06-02 Alexander Monakov <amonakov@ispras.ru> - - * doc/extend.texi (Vector Extensions): Clarify bitwise shift - semantics. - -2023-06-02 Ju-Zhe Zhong <juzhe.zhong@rivai.ai> - - * tree-vect-loop-manip.cc (vect_set_loop_controls_directly): Change decrement IV flow. - (vect_set_loop_condition_partial_vectors): Ditto. - -2023-06-02 Georg-Johann Lay <avr@gjlay.de> - - PR target/110088 - * config/avr/avr.md: Add an RTL peephole to optimize operations on - non-LD_REGS after a move from LD_REGS. - (piaop): New code iterator. - -2023-06-02 Thomas Schwinge <thomas@codesourcery.com> - - PR testsuite/66005 - * doc/install.texi: Document (optional) Perl usage for parallel - testing of libgomp. - -2023-06-02 Thomas Schwinge <thomas@codesourcery.com> - - PR bootstrap/82856 - * doc/install.texi (Perl): Back to requiring "Perl version 5.6.1 (or - later)". - -2023-06-02 Juzhe-Zhong <juzhe.zhong@rivai.ai> - KuanLin Chen <best124612@gmail.com> - - * config/riscv/riscv-vector-builtins-bases.cc: Add _mu overloaded intrinsics. - * config/riscv/riscv-vector-builtins-shapes.cc (struct fault_load_def): Ditto. - -2023-06-02 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv-v.cc (expand_vec_series): Optimize reverse series index vector. - -2023-06-02 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/predicates.md: Change INTVAL into UINTVAL. - -2023-06-02 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv-vector-builtins.cc (DEF_RVV_VXRM_ENUM): Add - __RISCV_ prefix. - (DEF_RVV_FRM_ENUM): Ditto. - -2023-06-02 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv-vector-builtins-bases.cc: Change vwadd.wv/vwsub.wv - intrinsic API expander - * config/riscv/vector.md - (@pred_single_widen_<plus_minus:optab><any_extend:su><mode>): Remove it. - (@pred_single_widen_sub<any_extend:su><mode>): New pattern. - (@pred_single_widen_add<any_extend:su><mode>): New pattern. - -2023-06-02 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/autovec.md (vec_perm<mode>): New pattern. - * config/riscv/predicates.md (vector_perm_operand): New predicate. - * config/riscv/riscv-protos.h (enum insn_type): New enum. - (expand_vec_perm): New function. - * config/riscv/riscv-v.cc (const_vec_all_in_range_p): Ditto. - (gen_const_vector_dup): Ditto. - (emit_vlmax_gather_insn): Ditto. - (emit_vlmax_masked_gather_mu_insn): Ditto. - (expand_vec_perm): Ditto. - -2023-06-01 Jason Merrill <jason@redhat.com> - - * doc/invoke.texi (-Wpedantic): Improve clarity. - -2023-06-01 Uros Bizjak <ubizjak@gmail.com> - - * rtl.h (exp_equiv_p): Change return type from int to bool. - * cse.cc (mention_regs): Change return type from int to bool - and adjust function body accordingly. - (exp_equiv_p): Ditto. - (insert_regs): Ditto. Change "modified" function argument to bool - and update usage accordingly. - (record_jump_cond): Remove always zero "reversed_nonequality" - function argument and update usage accordingly. - (fold_rtx): Change "changed" variable to bool. - (record_jump_equiv): Remove unneeded "reversed_nonequality" variable. - (is_dead_reg): Change return type from int to bool. - -2023-06-01 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp> - - * config/xtensa/xtensa.md (adddi3, subdi3): - New RTL generation patterns implemented according to the instruc- - tion idioms described in the Xtensa ISA reference manual (p. 600). - -2023-06-01 Roger Sayle <roger@nextmovesoftware.com> - Uros Bizjak <ubizjak@gmail.com> - - PR target/109973 - * config/i386/i386-builtin.def (__builtin_ia32_ptestz128): Use new - CODE_for_sse4_1_ptestzv2di. - (__builtin_ia32_ptestc128): Use new CODE_for_sse4_1_ptestcv2di. - (__builtin_ia32_ptestz256): Use new CODE_for_avx_ptestzv4di. - (__builtin_ia32_ptestc256): Use new CODE_for_avx_ptestcv4di. - * config/i386/i386-expand.cc (ix86_expand_branch): Use CCZmode - when expanding UNSPEC_PTEST to compare against zero. - * config/i386/i386-features.cc (scalar_chain::convert_compare): - Likewise generate CCZmode UNSPEC_PTESTs when converting comparisons. - (general_scalar_chain::convert_insn): Use CCZmode for COMPARE result. - (timode_scalar_chain::convert_insn): Use CCZmode for COMPARE result. - * config/i386/i386-protos.h (ix86_match_ptest_ccmode): Prototype. - * config/i386/i386.cc (ix86_match_ptest_ccmode): New predicate to - check for suitable matching modes for the UNSPEC_PTEST pattern. - * config/i386/sse.md (define_split): When splitting UNSPEC_MOVMSK - to UNSPEC_PTEST, preserve the FLAG_REG mode as CCZ. - (*<sse4_1>_ptest<mode>): Add asterisk to hide define_insn. Remove - ":CC" mode of FLAGS_REG, instead use ix86_match_ptest_ccmode. - (<sse4_1>_ptestz<mode>): New define_expand to specify CCZ. - (<sse4_1>_ptestc<mode>): New define_expand to specify CCC. - (<sse4_1>_ptest<mode>): A define_expand using CC to preserve the - current behavior. - (*ptest<mode>_and): Specify CCZ to only perform this optimization - when only the Z flag is required. - -2023-06-01 Jonathan Wakely <jwakely@redhat.com> - - PR target/109954 - * doc/invoke.texi (x86 Options): Fix description of -m32 option. - -2023-06-01 Kyrylo Tkachov <kyrylo.tkachov@arm.com> - - * config/aarch64/aarch64-simd.md (*aarch64_simd_mov<VDMOV:mode>): - Add =r,m and =r,m alternatives. - (load_pair<DREG:mode><DREG2:mode>): Likewise. - (vec_store_pair<DREG:mode><DREG2:mode>): Likewise. - -2023-06-01 Pan Li <pan2.li@intel.com> - - * common/config/riscv/riscv-common.cc: Add FP_16 mask to zvfhmin - and zvfh. - * config/riscv/genrvv-type-indexer.cc (valid_type): Allow FP16. - (main): Disable FP16 tuple. - * config/riscv/riscv-opts.h (MASK_VECTOR_ELEN_FP_16): New macro. - (TARGET_VECTOR_ELEN_FP_16): Ditto. - * config/riscv/riscv-vector-builtins.cc (check_required_extensions): - Add FP16. - * config/riscv/riscv-vector-builtins.def (vfloat16mf4_t): New type. - (vfloat16mf2_t): Ditto. - (vfloat16m1_t): Ditto. - (vfloat16m2_t): Ditto. - (vfloat16m4_t): Ditto. - (vfloat16m8_t): Ditto. - * config/riscv/riscv-vector-builtins.h (RVV_REQUIRE_ELEN_FP_16): - New macro. - * config/riscv/riscv-vector-switch.def (ENTRY): Allow FP16 - machine mode based on TARGET_VECTOR_ELEN_FP_16. - -2023-06-01 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv-vector-builtins.cc (register_frm): New function. - (DEF_RVV_FRM_ENUM): New macro. - (handle_pragma_vector): Add FRM enum - * config/riscv/riscv-vector-builtins.def (DEF_RVV_FRM_ENUM): New macro. - (RNE): Ditto. - (RTZ): Ditto. - (RDN): Ditto. - (RUP): Ditto. - (RMM): Ditto. - -2023-05-31 Roger Sayle <roger@nextmovesoftware.com> - Richard Sandiford <richard.sandiford@arm.com> - - * fold-const-call.cc (fold_const_call_ss) <CFN_BUILT_IN_BSWAP*>: - Update call to wi::bswap. - * simplify-rtx.cc (simplify_const_unary_operation) <case BSWAP>: - Update call to wi::bswap. - * tree-ssa-ccp.cc (evaluate_stmt) <case BUILT_IN_BSWAP*>: - Update calls to wi::bswap. - * wide-int.cc (wide_int_storage::bswap): Remove/rename to... - (wi::bswap_large): New function, with revised API. - * wide-int.h (wi::bswap): New (template) function prototype. - (wide_int_storage::bswap): Remove method. - (sext_large, zext_large): Consistent indentation/line wrapping. - (bswap_large): Prototype helper function containing implementation. - (wi::bswap): New template wrapper around bswap_large. - -2023-05-31 Kyrylo Tkachov <kyrylo.tkachov@arm.com> - - PR target/99195 - * config/aarch64/aarch64-simd.md (<sur>dot_prod<vsi2qi>): Rename to... - (<sur>dot_prod<vsi2qi><vczle><vczbe>): ... This. - (usdot_prod<vsi2qi>): Rename to... - (usdot_prod<vsi2qi><vczle><vczbe>): ... This. - (aarch64_<sur>dot_lane<vsi2qi>): Rename to... - (aarch64_<sur>dot_lane<vsi2qi><vczle><vczbe>): ... This. - (aarch64_<sur>dot_laneq<vsi2qi>): Rename to... - (aarch64_<sur>dot_laneq<vsi2qi><vczle><vczbe>): ... This. - (aarch64_<DOTPROD_I8MM:sur>dot_lane<VB:isquadop><VS:vsi2qi>): Rename to... - (aarch64_<DOTPROD_I8MM:sur>dot_lane<VB:isquadop><VS:vsi2qi><vczle><vczbe>): - ... This. - -2023-05-31 Kyrylo Tkachov <kyrylo.tkachov@arm.com> - - PR target/99195 - * config/aarch64/aarch64-simd.md (aarch64_sq<r>dmulh<mode>): Rename to... - (aarch64_sq<r>dmulh<mode><vczle><vczbe>): ... This. - (aarch64_sq<r>dmulh_n<mode>): Rename to... - (aarch64_sq<r>dmulh_n<mode><vczle><vczbe>): ... This. - (aarch64_sq<r>dmulh_lane<mode>): Rename to... - (aarch64_sq<r>dmulh_lane<mode><vczle><vczbe>): ... This. - (aarch64_sq<r>dmulh_laneq<mode>): Rename to... - (aarch64_sq<r>dmulh_laneq<mode><vczle><vczbe>): ... This. - (aarch64_sqrdml<SQRDMLH_AS:rdma_as>h<mode>): Rename to... - (aarch64_sqrdml<SQRDMLH_AS:rdma_as>h<mode><vczle><vczbe>): ... This. - (aarch64_sqrdml<SQRDMLH_AS:rdma_as>h_lane<mode>): Rename to... - (aarch64_sqrdml<SQRDMLH_AS:rdma_as>h_lane<mode><vczle><vczbe>): ... This. - (aarch64_sqrdml<SQRDMLH_AS:rdma_as>h_laneq<mode>): Rename to... - (aarch64_sqrdml<SQRDMLH_AS:rdma_as>h_laneq<mode><vczle><vczbe>): ... This. - -2023-05-31 David Faust <david.faust@oracle.com> - - * btfout.cc (btf_kind_names): New. - (btf_kind_name): New. - (btf_absolute_var_id): New utility function. - (btf_relative_var_id): Likewise. - (btf_relative_func_id): Likewise. - (btf_absolute_datasec_id): Likewise. - (btf_asm_type_ref): New. - (btf_asm_type): Update asm comments and use btf_asm_type_ref (). - (btf_asm_array): Likewise. Accept ctf_container_ref parameter. - (btf_asm_varent): Likewise. - (btf_asm_func_arg): Likewise. - (btf_asm_datasec_entry): Likewise. - (btf_asm_datasec_type): Likewise. - (btf_asm_func_type): Likewise. Add index parameter. - (btf_asm_enum_const): Likewise. - (btf_asm_sou_member): Likewise. - (output_btf_vars): Update btf_asm_* call accordingly. - (output_asm_btf_sou_fields): Likewise. - (output_asm_btf_enum_list): Likewise. - (output_asm_btf_func_args_list): Likewise. - (output_asm_btf_vlen_bytes): Likewise. - (output_btf_func_types): Add ctf_container_ref parameter. - Pass it to btf_asm_func_type. - (output_btf_datasec_types): Update btf_asm_datsec_type call similarly. - (btf_output): Update output_btf_func_types call similarly. - -2023-05-31 David Faust <david.faust@oracle.com> - - * btfout.cc (btf_asm_type): Add dedicated cases for BTF_KIND_ARRAY - and BTF_KIND_FWD which do not use the size/type field at all. - -2023-05-31 Uros Bizjak <ubizjak@gmail.com> - - * rtl.h (subreg_lowpart_p): Change return type from int to bool. - (active_insn_p): Ditto. - (in_sequence_p): Ditto. - (unshare_all_rtl): Change return type from int to void. - * emit-rtl.h (mem_expr_equal_p): Change return type from int to bool. - * emit-rtl.cc (subreg_lowpart_p): Change return type from int to bool - and adjust function body accordingly. - (mem_expr_equal_p): Ditto. - (unshare_all_rtl): Change return type from int to void - and adjust function body accordingly. - (verify_rtx_sharing): Remove unneeded return. - (active_insn_p): Change return type from int to bool - and adjust function body accordingly. - (in_sequence_p): Ditto. - -2023-05-31 Uros Bizjak <ubizjak@gmail.com> - - * rtl.h (true_dependence): Change return type from int to bool. - (canon_true_dependence): Ditto. - (read_dependence): Ditto. - (anti_dependence): Ditto. - (canon_anti_dependence): Ditto. - (output_dependence): Ditto. - (canon_output_dependence): Ditto. - (may_alias_p): Ditto. - * alias.h (alias_sets_conflict_p): Ditto. - (alias_sets_must_conflict_p): Ditto. - (objects_must_conflict_p): Ditto. - (nonoverlapping_memrefs_p): Ditto. - * alias.cc (rtx_equal_for_memref_p): Remove forward declaration. - (record_set): Ditto. - (base_alias_check): Ditto. - (find_base_value): Ditto. - (mems_in_disjoint_alias_sets_p): Ditto. - (get_alias_set_entry): Ditto. - (decl_for_component_ref): Ditto. - (write_dependence_p): Ditto. - (memory_modified_1): Ditto. - (mems_in_disjoint_alias_set_p): Change return type from int to bool - and adjust function body accordingly. - (alias_sets_conflict_p): Ditto. - (alias_sets_must_conflict_p): Ditto. - (objects_must_conflict_p): Ditto. - (rtx_equal_for_memref_p): Ditto. - (base_alias_check): Ditto. - (read_dependence): Ditto. - (nonoverlapping_memrefs_p): Ditto. - (true_dependence_1): Ditto. - (true_dependence): Ditto. - (canon_true_dependence): Ditto. - (write_dependence_p): Ditto. - (anti_dependence): Ditto. - (canon_anti_dependence): Ditto. - (output_dependence): Ditto. - (canon_output_dependence): Ditto. - (may_alias_p): Ditto. - (init_alias_analysis): Change "changed" variable to bool. - -2023-05-31 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/autovec.md (<optab><v_double_trunc><mode>2): Change - expand into define_insn_and_split. - -2023-05-31 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/vector.md: Remove FRM. - -2023-05-31 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/vector.md: Remove FRM. - -2023-05-31 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/vector.md: Remove FRM. - -2023-05-31 Christophe Lyon <christophe.lyon@linaro.org> - - PR target/110039 - * config/aarch64/aarch64.md (aarch64_rev16si2_alt3): New - pattern. - -2023-05-31 Richard Biener <rguenther@suse.de> - - PR ipa/109983 - PR tree-optimization/109143 - * tree-ssa-structalias.cc (struct topo_info): Remove. - (init_topo_info): Likewise. - (free_topo_info): Likewise. - (compute_topo_order): Simplify API, put the component - with ESCAPED last so it's processed first. - (topo_visit): Adjust. - (solve_graph): Likewise. - -2023-05-31 Richard Biener <rguenther@suse.de> - - * tree-ssa-structalias.cc (constraint_stats::num_avoided_edges): - New. - (add_graph_edge): Count redundant edges we avoid to create. - (dump_sa_stats): Dump them. - (ipa_pta_execute): Do not dump generating constraints when - we are not dumping them. - -2023-05-31 Kyrylo Tkachov <kyrylo.tkachov@arm.com> - - * config/aarch64/aarch64-simd.md (*aarch64_simd_mov<VDMOV:mode>): Rewrite - output template to avoid explicit switch on which_alternative. - (*aarch64_simd_mov<VQMOV:mode>): Likewise. - (and<mode>3): Likewise. - (ior<mode>3): Likewise. - * config/aarch64/aarch64.md (*mov<mode>_aarch64): Likewise. - -2023-05-31 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp> - - * config/xtensa/predicates.md (xtensa_bit_join_operator): - New predicate. - * config/xtensa/xtensa.md (ior_op): Remove. - (*shlrd_reg): Rename from "*shlrd_reg_<code>", and add the - insn_and_split pattern of the same name to express and capture - the bit-combining operation with both sides swapped. - In addition, replace use of code iterator with new operator - predicate. - (*shlrd_const, *shlrd_per_byte): - Likewise regarding the code iterator. - -2023-05-31 Cui, Lili <lili.cui@intel.com> - - PR tree-optimization/110038 - * params.opt: Add a limit on tree-reassoc-width. - * tree-ssa-reassoc.cc - (rewrite_expr_tree_parallel): Add width limit. - -2023-05-31 Pan Li <pan2.li@intel.com> - - * common/config/riscv/riscv-common.cc: - (riscv_implied_info): Add zvfh item. - (riscv_ext_version_table): Ditto. - (riscv_ext_flag_table): Ditto. - * config/riscv/riscv-opts.h (MASK_ZVFH): New macro. - (TARGET_ZVFH): Ditto. - -2023-05-30 liuhongt <hongtao.liu@intel.com> - - PR tree-optimization/108804 - * tree-vect-patterns.cc (vect_get_range_info): Remove static. - * tree-vect-stmts.cc (vect_create_vectorized_demotion_stmts): - Add new parameter narrow_src_p. - (vectorizable_conversion): Enhance NARROW FLOAT_EXPR - vectorization by truncating to lower precision. - * tree-vectorizer.h (vect_get_range_info): New declare. - -2023-05-30 Vladimir N. Makarov <vmakarov@redhat.com> - - * lra-int.h (lra_update_sp_offset): Add the prototype. - * lra.cc (setup_sp_offset): Change the return type. Use - lra_update_sp_offset. - * lra-eliminations.cc (lra_update_sp_offset): New function. - (lra_process_new_insns): Push the current insn to reprocess if the - input reload changes sp offset. - -2023-05-30 Uros Bizjak <ubizjak@gmail.com> - - PR target/110041 - * config/i386/i386-expand.cc (ix86_expand_vecop_qihi2): - Fix misleading identation. - -2023-05-30 Uros Bizjak <ubizjak@gmail.com> - - * rtl.h (comparison_dominates_p): Change return type from int to bool. - (condjump_p): Ditto. - (any_condjump_p): Ditto. - (any_uncondjump_p): Ditto. - (simplejump_p): Ditto. - (returnjump_p): Ditto. - (eh_returnjump_p): Ditto. - (onlyjump_p): Ditto. - (invert_jump_1): Ditto. - (invert_jump): Ditto. - (rtx_renumbered_equal_p): Ditto. - (redirect_jump_1): Ditto. - (redirect_jump): Ditto. - (condjump_in_parallel_p): Ditto. - * jump.cc (invert_exp_1): Adjust forward declaration. - (comparison_dominates_p): Change return type from int to bool - and adjust function body accordingly. - (simplejump_p): Ditto. - (condjump_p): Ditto. - (condjump_in_parallel_p): Ditto. - (any_uncondjump_p): Ditto. - (any_condjump_p): Ditto. - (returnjump_p): Ditto. - (eh_returnjump_p): Ditto. - (onlyjump_p): Ditto. - (redirect_jump_1): Ditto. - (redirect_jump): Ditto. - (invert_exp_1): Ditto. - (invert_jump_1): Ditto. - (invert_jump): Ditto. - (rtx_renumbered_equal_p): Ditto. - -2023-05-30 Andrew Pinski <apinski@marvell.com> - - * fold-const.cc (minmax_from_comparison): Add support for NE_EXPR. - * match.pd ((cond (cmp (convert1? x) c1) (convert2? x) c2) pattern): - Add ne as a possible cmp. - ((a CMP b) ? minmax<a, c> : minmax<b, c> pattern): Likewise. - -2023-05-30 Andrew Pinski <apinski@marvell.com> - - * match.pd (`(a CMP CST1) ? max<a,CST2> : a`): New - pattern. - -2023-05-30 Roger Sayle <roger@nextmovesoftware.com> - - * simplify-rtx.cc (simplify_binary_operation_1) <AND>: Use wide-int - instead of HWI_COMPUTABLE_MODE_P and UINTVAL in transformation of - (and (extend X) C) as (zero_extend (and X C)), to also optimize - modes wider than HOST_WIDE_INT. - -2023-05-30 Roger Sayle <roger@nextmovesoftware.com> - - PR target/107172 - * simplify-rtx.cc (simplify_const_relational_operation): Return - early if we have a MODE_CC comparison that isn't a COMPARE against - const0_rtx. - -2023-05-30 Robin Dapp <rdapp@ventanamicro.com> - - * config/riscv/riscv.cc (riscv_const_insns): Allow - const_vec_duplicates. - -2023-05-30 liuhongt <hongtao.liu@intel.com> - - PR middle-end/108938 - * gimple-ssa-store-merging.cc (is_bswap_or_nop_p): New - function, cut from original find_bswap_or_nop function. - (find_bswap_or_nop): Add a new parameter, detect bswap + - rotate and save rotate result in the new parameter. - (bswap_replace): Add a new parameter to indicate rotate and - generate rotate stmt if needed. - (maybe_optimize_vector_constructor): Adjust for new rotate - parameter in the upper 2 functions. - (pass_optimize_bswap::execute): Ditto. - (imm_store_chain_info::output_merged_store): Ditto. - -2023-05-30 Kyrylo Tkachov <kyrylo.tkachov@arm.com> - - * config/aarch64/aarch64-simd.md (aarch64_<sur>adalp<mode>): Delete. - (aarch64_<su>adalp<mode>): New define_expand. - (*aarch64_<su>adalp<mode><vczle><vczbe>_insn): New define_insn. - (aarch64_<su>addlp<mode>): Convert to define_expand. - (*aarch64_<su>addlp<mode><vczle><vczbe>_insn): New define_insn. - * config/aarch64/iterators.md (UNSPEC_SADDLP, UNSPEC_UADDLP): Delete. - (ADALP): Likewise. - (USADDLP): Likewise. - * config/aarch64/predicates.md (vect_par_cnst_even_or_odd_half): Define. - -2023-05-30 Kyrylo Tkachov <kyrylo.tkachov@arm.com> - - * config/aarch64/aarch64-builtins.cc (VAR1): Move to after inclusion of - aarch64-builtin-iterators.h. Add definition to remap shadd, uhadd, - srhadd, urhadd builtin codes for standard optab ones. - * config/aarch64/aarch64-simd.md (<u>avg<mode>3_floor): Rename to... - (<su_optab>avg<mode>3_floor): ... This. Expand to RTL codes rather than - unspec. - (<u>avg<mode>3_ceil): Rename to... - (<su_optab>avg<mode>3_ceil): ... This. Expand to RTL codes rather than - unspec. - (aarch64_<su>hsub<mode>): New define_expand. - (aarch64_<sur>h<addsub><mode><vczle><vczbe>): Split into... - (*aarch64_<su>h<ADDSUB:optab><mode><vczle><vczbe>_insn): ... This... - (*aarch64_<su>rhadd<mode><vczle><vczbe>_insn): ... And this. - -2023-05-30 Andreas Schwab <schwab@suse.de> - - PR target/110036 - * config/riscv/riscv.cc (riscv_asan_shadow_offset): Update to - match libsanitizer. - -2023-05-30 Kyrylo Tkachov <kyrylo.tkachov@arm.com> - - * config/aarch64/aarch64-modes.def (V16HI, V8SI, V4DI, V2TI): New modes. - * config/aarch64/aarch64-protos.h (aarch64_const_vec_rnd_cst_p): - Declare prototype. - (aarch64_const_vec_rsra_rnd_imm_p): Likewise. - * config/aarch64/aarch64-simd.md (*aarch64_simd_sra<mode>): Rename to... - (aarch64_<sra_op>sra_n<mode>_insn): ... This. - (aarch64_<sra_op>rsra_n<mode>_insn): New define_insn. - (aarch64_<sra_op>sra_n<mode>): New define_expand. - (aarch64_<sra_op>rsra_n<mode>): Likewise. - (aarch64_<sur>sra_n<mode>): Rename to... - (aarch64_<sur>sra_ndi): ... This. - * config/aarch64/aarch64.cc (aarch64_classify_vector_mode): Add - any_target_p argument. - (aarch64_extract_vec_duplicate_wide_int): Define. - (aarch64_const_vec_rsra_rnd_imm_p): Likewise. - (aarch64_const_vec_rnd_cst_p): Likewise. - (aarch64_vector_mode_supported_any_target_p): Likewise. - (TARGET_VECTOR_MODE_SUPPORTED_ANY_TARGET_P): Likewise. - * config/aarch64/iterators.md (UNSPEC_SRSRA, UNSPEC_URSRA): Delete. - (VSRA): Adjust for the above. - (sur): Likewise. - (V2XWIDE): New mode_attr. - (vec_or_offset): Likewise. - (SHIFTEXTEND): Likewise. - * config/aarch64/predicates.md (aarch64_simd_rsra_rnd_imm_vec): New - predicate. - * doc/tm.texi (TARGET_VECTOR_MODE_SUPPORTED_P): Adjust description to - clarify that it applies to current target options. - (TARGET_VECTOR_MODE_SUPPORTED_ANY_TARGET_P): Document. - * doc/tm.texi.in: Regenerate. - * stor-layout.cc (mode_for_vector): Check - vector_mode_supported_any_target_p when iterating through vector modes. - * target.def (TARGET_VECTOR_MODE_SUPPORTED_P): Adjust description to - clarify that it applies to current target options. - (TARGET_VECTOR_MODE_SUPPORTED_ANY_TARGET_P): Define. - -2023-05-30 Lili Cui <lili.cui@intel.com> - - PR tree-optimization/98350 - * tree-ssa-reassoc.cc - (rewrite_expr_tree_parallel): Rewrite this function. - (rank_ops_for_fma): New. - (reassociate_bb): Handle new function. - -2023-05-30 Uros Bizjak <ubizjak@gmail.com> - - * rtl.h (rtx_addr_can_trap_p): Change return type from int to bool. - (rtx_unstable_p): Ditto. - (reg_mentioned_p): Ditto. - (reg_referenced_p): Ditto. - (reg_used_between_p): Ditto. - (reg_set_between_p): Ditto. - (modified_between_p): Ditto. - (no_labels_between_p): Ditto. - (modified_in_p): Ditto. - (reg_set_p): Ditto. - (multiple_sets): Ditto. - (set_noop_p): Ditto. - (noop_move_p): Ditto. - (reg_overlap_mentioned_p): Ditto. - (dead_or_set_p): Ditto. - (dead_or_set_regno_p): Ditto. - (find_reg_fusage): Ditto. - (find_regno_fusage): Ditto. - (side_effects_p): Ditto. - (volatile_refs_p): Ditto. - (volatile_insn_p): Ditto. - (may_trap_p_1): Ditto. - (may_trap_p): Ditto. - (may_trap_or_fault_p): Ditto. - (computed_jump_p): Ditto. - (auto_inc_p): Ditto. - (loc_mentioned_in_p): Ditto. - * rtlanal.cc (computed_jump_p_1): Adjust forward declaration. - (rtx_unstable_p): Change return type from int to bool - and adjust function body accordingly. - (rtx_addr_can_trap_p): Ditto. - (reg_mentioned_p): Ditto. - (no_labels_between_p): Ditto. - (reg_used_between_p): Ditto. - (reg_referenced_p): Ditto. - (reg_set_between_p): Ditto. - (reg_set_p): Ditto. - (modified_between_p): Ditto. - (modified_in_p): Ditto. - (multiple_sets): Ditto. - (set_noop_p): Ditto. - (noop_move_p): Ditto. - (reg_overlap_mentioned_p): Ditto. - (dead_or_set_p): Ditto. - (dead_or_set_regno_p): Ditto. - (find_reg_fusage): Ditto. - (find_regno_fusage): Ditto. - (remove_node_from_insn_list): Ditto. - (volatile_insn_p): Ditto. - (volatile_refs_p): Ditto. - (side_effects_p): Ditto. - (may_trap_p_1): Ditto. - (may_trap_p): Ditto. - (may_trap_or_fault_p): Ditto. - (computed_jump_p): Ditto. - (auto_inc_p): Ditto. - (loc_mentioned_in_p): Ditto. - * combine.cc (can_combine_p): Update indirect function. - -2023-05-30 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/autovec.md (<optab><mode><vconvert>2): New pattern. - * config/riscv/iterators.md: New attribute. - * config/riscv/vector-iterators.md: New attribute. - -2023-05-30 From: Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv.md: Fix signed and unsigned comparison - warning. - -2023-05-30 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/autovec.md (fnma<mode>4): New pattern. - (*fnma<mode>): Ditto. - -2023-05-29 Die Li <lidie@eswincomputing.com> - - * config/riscv/riscv.cc (riscv_expand_conditional_move_onesided): - Delete. - (riscv_expand_conditional_move): Reuse the TARGET_SFB_ALU expand - process for TARGET_XTHEADCONDMOV - -2023-05-29 Uros Bizjak <ubizjak@gmail.com> - - PR target/110021 - * config/i386/i386-expand.cc (ix86_expand_vecop_qihi2): Also require - TARGET_AVX512BW to generate truncv16hiv16qi2. - -2023-05-29 Jivan Hakobyan <jivanhakobyan9@gmail.com> - - * config/riscv/riscv.md (and<mode>3): New expander. - (*and<mode>3) New pattern. - * config/riscv/predicates.md (arith_operand_or_mode_mask): New - predicate. - -2023-05-29 Pan Li <pan2.li@intel.com> - - * config/riscv/riscv-v.cc (emit_vlmax_insn): Remove unnecessary - comments and rename local variables. - (emit_nonvlmax_insn): Diito. - (emit_vlmax_merge_insn): Ditto. - (emit_vlmax_cmp_insn): Ditto. - (emit_vlmax_cmp_mu_insn): Ditto. - (emit_scalar_move_insn): Ditto. - -2023-05-29 Pan Li <pan2.li@intel.com> - - * config/riscv/riscv-v.cc (emit_vlmax_insn): Eliminate the - magic number. - (emit_nonvlmax_insn): Ditto. - (emit_vlmax_merge_insn): Ditto. - (emit_vlmax_cmp_insn): Ditto. - (emit_vlmax_cmp_mu_insn): Ditto. - (expand_vec_series): Ditto. - -2023-05-29 Pan Li <pan2.li@intel.com> - - * config/riscv/riscv-protos.h (enum insn_type): New type. - * config/riscv/riscv-v.cc (RVV_INSN_OPERANDS_MAX): New macro. - (rvv_builder::can_duplicate_repeating_sequence_p): Align the referenced - class member. - (rvv_builder::get_merged_repeating_sequence): Ditto. - (rvv_builder::repeating_sequence_use_merge_profitable_p): New function - to evaluate the optimization cost. - (rvv_builder::get_merge_scalar_mask): New function to get the merge - mask. - (emit_scalar_move_insn): New function to emit vmv.s.x. - (emit_vlmax_integer_move_insn): New function to emit vlmax vmv.v.x. - (emit_nonvlmax_integer_move_insn): New function to emit nonvlmax - vmv.v.x. - (get_repeating_sequence_dup_machine_mode): New function to get the dup - machine mode. - (expand_vector_init_merge_repeating_sequence): New function to perform - the optimization. - (expand_vec_init): Add this vector init optimization. - * config/riscv/riscv.h (BITS_PER_WORD): New macro. - -2023-05-29 Eric Botcazou <ebotcazou@adacore.com> - - * tree-ssa-loop-manip.cc (create_iv): Try harder to find a SLOC to - put onto the increment when it is inserted after the position. - -2023-05-29 Eric Botcazou <ebotcazou@adacore.com> - - * match.pd ((T)P - (T)(P + A) -> -(T) A): Avoid artificial overflow - on constants. - -2023-05-29 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv-vsetvl.cc (source_equal_p): Fix ICE. - -2023-05-29 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/autovec.md (fma<mode>4): New pattern. - (*fma<mode>): Ditto. - * config/riscv/riscv-protos.h (enum insn_type): New enum. - (emit_vlmax_ternary_insn): New function. - * config/riscv/riscv-v.cc (emit_vlmax_ternary_insn): Ditto. - -2023-05-29 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/vector.md: Fix vimuladd instruction bug. - -2023-05-29 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv.cc (global_state_unknown_p): New function. - (riscv_mode_after): Fix incorrect VXM. - -2023-05-29 Pan Li <pan2.li@intel.com> - - * common/config/riscv/riscv-common.cc: - (riscv_implied_info): Add zvfhmin item. - (riscv_ext_version_table): Ditto. - (riscv_ext_flag_table): Ditto. - * config/riscv/riscv-opts.h (MASK_ZVFHMIN): New macro. - (TARGET_ZFHMIN): Align indent. - (TARGET_ZFH): Ditto. - (TARGET_ZVFHMIN): New macro. - -2023-05-27 liuhongt <hongtao.liu@intel.com> - - PR target/100711 - * config/i386/sse.md (*andnot<mode>3): Extend below splitter - to VI_AVX2 to cover more modes. - -2023-05-27 liuhongt <hongtao.liu@intel.com> - - * config/i386/x86-tune.def (X86_TUNE_AVOID_FALSE_DEP_FOR_BMI): - Remove ATOM and ICELAKE(and later) core processors. - -2023-05-26 Robin Dapp <rdapp@ventanamicro.com> - - * config/riscv/autovec.md (<optab><mode>2): Add vneg/vnot. - (abs<mode>2): Add. - * config/riscv/riscv-protos.h (emit_vlmax_masked_mu_insn): - Declare. - * config/riscv/riscv-v.cc (emit_vlmax_masked_mu_insn): New - function. - -2023-05-26 Robin Dapp <rdapp@ventanamicro.com> - Juzhe Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/autovec.md (<optab><v_double_trunc><mode>2): New - expander. - (<optab><v_quad_trunc><mode>2): Dito. - (<optab><v_oct_trunc><mode>2): Dito. - (trunc<mode><v_double_trunc>2): Dito. - (trunc<mode><v_quad_trunc>2): Dito. - (trunc<mode><v_oct_trunc>2): Dito. - * config/riscv/riscv-protos.h (vectorize_related_mode): Define. - (autovectorize_vector_modes): Define. - * config/riscv/riscv-v.cc (vectorize_related_mode): Implement - hook. - (autovectorize_vector_modes): Implement hook. - * config/riscv/riscv.cc (riscv_autovectorize_vector_modes): - Implement target hook. - (riscv_vectorize_related_mode): Implement target hook. - (TARGET_VECTORIZE_AUTOVECTORIZE_VECTOR_MODES): Define. - (TARGET_VECTORIZE_RELATED_MODE): Define. - * config/riscv/vector-iterators.md: Add lowercase versions of - mode_attr iterators. - -2023-05-26 Andrew Stubbs <ams@codesourcery.com> - Tobias Burnus <tobias@codesourcery.com> - - * config/gcn/gcn-hsa.h (XNACKOPT): New macro. - (ASM_SPEC): Use XNACKOPT. - * config/gcn/gcn-opts.h (enum sram_ecc_type): Rename to ... - (enum hsaco_attr_type): ... this, and generalize the names. - (TARGET_XNACK): New macro. - * config/gcn/gcn.cc (gcn_option_override): Update to sorry for all - but -mxnack=off. - (output_file_start): Update xnack handling. - (gcn_hsa_declare_function_name): Use TARGET_XNACK. - * config/gcn/gcn.opt (-mxnack): Add the "on/off/any" syntax. - (sram_ecc_type): Rename to ... - (hsaco_attr_type: ... this.) - * config/gcn/mkoffload.cc (SET_XNACK_ANY): New macro. - (TEST_XNACK): Delete. - (TEST_XNACK_ANY): New macro. - (TEST_XNACK_ON): New macro. - (main): Support the new -mxnack=on/off/any syntax. - * doc/invoke.texi (-mxnack): Update for new syntax. - -2023-05-26 Andrew Pinski <apinski@marvell.com> - - * genmatch.cc (emit_debug_printf): New function. - (dt_simplify::gen_1): Emit printf into the code - before the `return true` or returning the folded result - instead of emitting it always. - -2023-05-26 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp> - - * config/xtensa/xtensa-protos.h - (xtensa_expand_block_set_unrolled_loop, - xtensa_expand_block_set_small_loop): Remove. - (xtensa_expand_block_set): New prototype. - * config/xtensa/xtensa.cc - (xtensa_expand_block_set_libcall): New subfunction. - (xtensa_expand_block_set_unrolled_loop, - xtensa_expand_block_set_small_loop): Rewrite as subfunctions. - (xtensa_expand_block_set): New function that calls the above - subfunctions. - * config/xtensa/xtensa.md (memsetsi): Change to invoke only - xtensa_expand_block_set(). - -2023-05-26 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp> - - * config/xtensa/xtensa-protos.h (xtensa_m1_or_1_thru_15): - New prototype. - * config/xtensa/xtensa.cc (xtensa_m1_or_1_thru_15): - New function. - * config/xtensa/constraints.md (O): - Change to use the above function. - * config/xtensa/xtensa.md (*subsi3_from_const): - New insn_and_split pattern. - -2023-05-26 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp> - - * config/xtensa/xtensa.md (*extzvsi-1bit_ashlsi3): - Retract excessive line folding, and correct the value of - the "length" insn attribute related to TARGET_DENSITY. - (*extzvsi-1bit_addsubx): Ditto. - -2023-05-26 Uros Bizjak <ubizjak@gmail.com> - - * config/i386/i386-expand.cc (ix86_expand_vecop_qihi): - Do not disable call to ix86_expand_vecop_qihi2. - -2023-05-26 liuhongt <hongtao.liu@intel.com> - - PR target/109610 - PR target/109858 - * ira-costs.cc (scan_one_insn): Only use NO_REGS in cost - calculation when !hard_regno_mode_ok for GENERAL_REGS and - mode, otherwise still use GENERAL_REGS. - -2023-05-26 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv.cc (vector_zero_call_used_regs): Add - explict VL and drop VL in ops. - -2023-05-25 Jin Ma <jinma@linux.alibaba.com> - - * sched-deps.cc (sched_macro_fuse_insns): Insns should not be fusion - in different BB blocks. - -2023-05-25 Uros Bizjak <ubizjak@gmail.com> - - * config/i386/i386-expand.cc (ix86_expand_vecop_qihi2): - Rewrite to expand to 2x-wider (e.g. V16QI -> V16HImode) - instructions when available. Emulate truncation via - ix86_expand_vec_perm_const_1 when native truncate insn - is not available. - (ix86_expand_vecop_qihi_partial) <case MULT>: Use pmovzx - when available. Trivially rename some variables. - (ix86_expand_vecop_qihi): Unconditionally call ix86_expand_vecop_qihi2. - * config/i386/i386.cc (ix86_multiplication_cost): Rewrite cost - calculation of V*QImode emulations to account for generation of - 2x-wider mode instructions. - (ix86_shift_rotate_cost): Update cost calculation of V*QImode - emulations to account for generation of 2x-wider mode instructions. - -2023-05-25 Georg-Johann Lay <avr@gjlay.de> - - PR target/104327 - * config/avr/avr.cc (avr_can_inline_p): New static function. - (TARGET_CAN_INLINE_P): Define to that function. - -2023-05-25 Georg-Johann Lay <avr@gjlay.de> - - PR target/82931 - * config/avr/avr.md (*movbitqi.0): Rename to *movbit<mode>.0-6. - Handle any bit position and use mode QISI. - * config/avr/avr.cc (avr_rtx_costs_1) [IOR]: Return a cost - of 2 insns for bit-transfer of respective style. - -2023-05-25 Christophe Lyon <christophe.lyon@linaro.org> - - * config/arm/iterators.md (MVE_6): Remove. - * config/arm/mve.md: Replace MVE_6 with MVE_5. - -2023-05-25 Ju-Zhe Zhong <juzhe.zhong@rivai.ai> - Richard Sandiford <richard.sandiford@arm.com> - - * tree-vect-loop-manip.cc (vect_adjust_loop_lens_control): New - function. - (vect_set_loop_controls_directly): Add decrement IV support. - (vect_set_loop_condition_partial_vectors): Ditto. - * tree-vect-loop.cc (_loop_vec_info::_loop_vec_info): New - variable. - * tree-vectorizer.h (LOOP_VINFO_USING_DECREMENTING_IV_P): New - macro. - -2023-05-25 Kyrylo Tkachov <kyrylo.tkachov@arm.com> - - PR target/99195 - * config/aarch64/aarch64-simd.md (aarch64_fcadd<rot><mode>): Rename to... - (aarch64_fcadd<rot><mode><vczle><vczbe>): ... This. - Fix canonicalization of PLUS operands. - (aarch64_fcmla<rot><mode>): Rename to... - (aarch64_fcmla<rot><mode><vczle><vczbe>): ... This. - Fix canonicalization of PLUS operands. - (aarch64_fcmla_lane<rot><mode>): Rename to... - (aarch64_fcmla_lane<rot><mode><vczle><vczbe>): ... This. - Fix canonicalization of PLUS operands. - (aarch64_fcmla_laneq<rot>v4hf): Rename to... - (aarch64_fcmla_laneq<rot>v4hf<vczle><vczbe>): ... This. - Fix canonicalization of PLUS operands. - (aarch64_fcmlaq_lane<rot><mode>): Fix canonicalization of PLUS operands. - -2023-05-25 Chris Sidebottom <chris.sidebottom@arm.com> - - * config/arm/arm.md (rbitsi2): Rename to... - (arm_rbit): ... This. - (ctzsi2): Adjust for the above. - (arm_rev16si2): Convert to define_expand. - (arm_rev16si2_alt1): New pattern. - (arm_rev16si2_alt): Rename to... - (*arm_rev16si2_alt2): ... This. - * config/arm/arm_acle.h (__ror, __rorl, __rorll, __clz, __clzl, __clzll, - __cls, __clsl, __clsll, __revsh, __rev, __revl, __revll, __rev16, - __rev16l, __rev16ll, __rbit, __rbitl, __rbitll): Define intrinsics. - * config/arm/arm_acle_builtins.def (rbit, rev16si2): Define builtins. - -2023-05-25 Alex Coplan <alex.coplan@arm.com> - - PR target/109800 - * config/arm/arm.md (movdf): Generate temporary pseudo in DImode - instead of DFmode. - * config/arm/vfp.md (no_literal_pool_df_immediate): Rather than punning an - lvalue DFmode pseudo into DImode, use a DImode pseudo and pun it into - DFmode as an rvalue. - -2023-05-25 Richard Biener <rguenther@suse.de> - - PR target/109955 - * tree-vect-stmts.cc (vectorizable_condition): For - embedded comparisons also handle the case when the target - only provides vec_cmp and vcond_mask. - -2023-05-25 Claudiu Zissulescu <claziss@gmail.com> - - * config/arc/arc.cc (arc_call_tls_get_addr): Simplify access using - TLS Local Dynamic. - -2023-05-25 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org> - - * config/aarch64/aarch64.cc (scalar_move_insn_p): New function. - (seq_cost_ignoring_scalar_moves): Likewise. - (aarch64_expand_vector_init): Call seq_cost_ignoring_scalar_moves. - -2023-05-25 Kyrylo Tkachov <kyrylo.tkachov@arm.com> - - * config/aarch64/arm_neon.h (vcage_f64): Reimplement with builtins. - (vcage_f32): Likewise. - (vcages_f32): Likewise. - (vcageq_f32): Likewise. - (vcaged_f64): Likewise. - (vcageq_f64): Likewise. - (vcagts_f32): Likewise. - (vcagt_f32): Likewise. - (vcagt_f64): Likewise. - (vcagtq_f32): Likewise. - (vcagtd_f64): Likewise. - (vcagtq_f64): Likewise. - (vcale_f32): Likewise. - (vcale_f64): Likewise. - (vcaled_f64): Likewise. - (vcales_f32): Likewise. - (vcaleq_f32): Likewise. - (vcaleq_f64): Likewise. - (vcalt_f32): Likewise. - (vcalt_f64): Likewise. - (vcaltd_f64): Likewise. - (vcaltq_f32): Likewise. - (vcaltq_f64): Likewise. - (vcalts_f32): Likewise. - -2023-05-25 Hu, Lin1 <lin1.hu@intel.com> - - PR target/109173 - PR target/109174 - * config/i386/avx512bwintrin.h (_mm512_srli_epi16): Change type from - int to const int or const int to const unsigned int. - (_mm512_mask_srli_epi16): Ditto. - (_mm512_slli_epi16): Ditto. - (_mm512_mask_slli_epi16): Ditto. - (_mm512_maskz_slli_epi16): Ditto. - (_mm512_srai_epi16): Ditto. - (_mm512_mask_srai_epi16): Ditto. - (_mm512_maskz_srai_epi16): Ditto. - * config/i386/avx512fintrin.h (_mm512_slli_epi64): Ditto. - (_mm512_mask_slli_epi64): Ditto. - (_mm512_maskz_slli_epi64): Ditto. - (_mm512_srli_epi64): Ditto. - (_mm512_mask_srli_epi64): Ditto. - (_mm512_maskz_srli_epi64): Ditto. - (_mm512_srai_epi64): Ditto. - (_mm512_mask_srai_epi64): Ditto. - (_mm512_maskz_srai_epi64): Ditto. - (_mm512_slli_epi32): Ditto. - (_mm512_mask_slli_epi32): Ditto. - (_mm512_maskz_slli_epi32): Ditto. - (_mm512_srli_epi32): Ditto. - (_mm512_mask_srli_epi32): Ditto. - (_mm512_maskz_srli_epi32): Ditto. - (_mm512_srai_epi32): Ditto. - (_mm512_mask_srai_epi32): Ditto. - (_mm512_maskz_srai_epi32): Ditto. - * config/i386/avx512vlbwintrin.h (_mm256_mask_srai_epi16): Ditto. - (_mm256_maskz_srai_epi16): Ditto. - (_mm_mask_srai_epi16): Ditto. - (_mm_maskz_srai_epi16): Ditto. - (_mm256_mask_slli_epi16): Ditto. - (_mm256_maskz_slli_epi16): Ditto. - (_mm_mask_slli_epi16): Ditto. - (_mm_maskz_slli_epi16): Ditto. - (_mm_maskz_srli_epi16): Ditto. - * config/i386/avx512vlintrin.h (_mm256_mask_srli_epi32): Ditto. - (_mm256_maskz_srli_epi32): Ditto. - (_mm_mask_srli_epi32): Ditto. - (_mm_maskz_srli_epi32): Ditto. - (_mm256_mask_srli_epi64): Ditto. - (_mm256_maskz_srli_epi64): Ditto. - (_mm_mask_srli_epi64): Ditto. - (_mm_maskz_srli_epi64): Ditto. - (_mm256_mask_srai_epi32): Ditto. - (_mm256_maskz_srai_epi32): Ditto. - (_mm_mask_srai_epi32): Ditto. - (_mm_maskz_srai_epi32): Ditto. - (_mm256_srai_epi64): Ditto. - (_mm256_mask_srai_epi64): Ditto. - (_mm256_maskz_srai_epi64): Ditto. - (_mm_srai_epi64): Ditto. - (_mm_mask_srai_epi64): Ditto. - (_mm_maskz_srai_epi64): Ditto. - (_mm_mask_slli_epi32): Ditto. - (_mm_maskz_slli_epi32): Ditto. - (_mm_mask_slli_epi64): Ditto. - (_mm_maskz_slli_epi64): Ditto. - (_mm256_mask_slli_epi32): Ditto. - (_mm256_maskz_slli_epi32): Ditto. - (_mm256_mask_slli_epi64): Ditto. - (_mm256_maskz_slli_epi64): Ditto. - -2023-05-25 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/vector.md: Remove FRM_REGNUM dependency in rtz - instructions. - -2023-05-25 Aldy Hernandez <aldyh@redhat.com> - - * data-streamer-in.cc (streamer_read_value_range): Handle NANs. - * data-streamer-out.cc (streamer_write_vrange): Same. - * value-range.h (class vrange): Make streamer_write_vrange a friend. - -2023-05-25 Aldy Hernandez <aldyh@redhat.com> - - * value-query.cc (range_query::get_tree_range): Set NAN directly - if necessary. - * value-range.cc (frange::set): Assert that bounds are not NAN. - -2023-05-25 Aldy Hernandez <aldyh@redhat.com> - - * value-range.cc (add_vrange): Handle known NANs. - -2023-05-25 Aldy Hernandez <aldyh@redhat.com> - - * value-range.h (frange::set_nan): New. - -2023-05-25 Alexandre Oliva <oliva@adacore.com> - - PR target/100106 - * emit-rtl.cc (validate_subreg): Reject a SUBREG of a MEM that - requires stricter alignment than MEM's. - -2023-05-24 Andrew MacLeod <amacleod@redhat.com> - - PR tree-optimization/107822 - PR tree-optimization/107986 - * Makefile.in (OBJS): Add gimple-range-phi.o. - * gimple-range-cache.h (ranger_cache::m_estimate): New - phi_analyzer pointer member. - * gimple-range-fold.cc (fold_using_range::range_of_phi): Use - phi_analyzer if no loop info is available. - * gimple-range-phi.cc: New file. - * gimple-range-phi.h: New file. - * tree-vrp.cc (execute_ranger_vrp): Utililze a phi_analyzer. - -2023-05-24 Andrew MacLeod <amacleod@redhat.com> - - * gimple-range-fold.cc (fur_list::fur_list): Add range_query param - to contructors. - (fold_range): Add range_query parameter. - (fur_relation::fur_relation): New. - (fur_relation::trio): New. - (fur_relation::register_relation): New. - (fold_relations): New. - * gimple-range-fold.h (fold_range): Adjust prototypes. - (fold_relations): New. - -2023-05-24 Andrew MacLeod <amacleod@redhat.com> - - * gimple-range-cache.cc (ssa_cache::range_of_expr): New. - * gimple-range-cache.h (class ssa_cache): Inherit from range_query. - (ranger_cache::const_query): New. - * gimple-range.cc (gimple_ranger::const_query): New. - * gimple-range.h (gimple_ranger::const_query): New prototype. - -2023-05-24 Andrew MacLeod <amacleod@redhat.com> - - * gimple-range-cache.cc (ssa_cache::dump): Use get_range. - (ssa_cache::dump_range_query): Delete. - (ssa_lazy_cache::dump_range_query): Delete. - (ssa_lazy_cache::get_range): Move from header file. - (ssa_lazy_cache::clear_range): ditto. - (ssa_lazy_cache::clear): Ditto. - * gimple-range-cache.h (class ssa_cache): Virtualize. - (class ssa_lazy_cache): Inherit and virtualize. - -2023-05-24 Aldy Hernandez <aldyh@redhat.com> - - * value-range.h (vrange::kind): Remove. - -2023-05-24 Roger Sayle <roger@nextmovesoftware.com> - - PR middle-end/109840 - * match.pd <popcount optimizations>: Preserve zero-extension when - optimizing popcount((T)bswap(x)) and popcount((T)rotate(x,y)) as - popcount((T)x), so the popcount's argument keeps the same type. - <parity optimizations>: Likewise preserve extensions when - simplifying parity((T)bswap(x)) and parity((T)rotate(x,y)) as - parity((T)x), so that the parity's argument type is the same. - -2023-05-24 Aldy Hernandez <aldyh@redhat.com> - - * ipa-cp.cc (ipa_value_range_from_jfunc): Use new ipa_vr API. - (ipcp_store_vr_results): Same. - * ipa-prop.cc (ipa_vr::ipa_vr): New. - (ipa_vr::get_vrange): New. - (ipa_vr::set_unknown): New. - (ipa_vr::streamer_read): New. - (ipa_vr::streamer_write): New. - (write_ipcp_transformation_info): Use new ipa_vr API. - (read_ipcp_transformation_info): Same. - (ipa_vr::nonzero_p): Delete. - (ipcp_update_vr): Use new ipa_vr API. - * ipa-prop.h (class ipa_vr): Provide an API and hide internals. - * ipa-sra.cc (zap_useless_ipcp_results): Use new ipa_vr API. - -2023-05-24 Jan-Benedict Glaw <jbglaw@lug-owl.de> - - * config/mcore/mcore.cc (output_inline_const) Make buffer smaller to - silence overflow warnings later on. - -2023-05-24 Uros Bizjak <ubizjak@gmail.com> - - * config/i386/i386-expand.cc (ix86_expand_vecop_qihi2): - Remove handling of V8QImode. - * config/i386/mmx.md (v<insn>v8qi3): Move from sse.md. - Call ix86_expand_vecop_qihi_partial. Enable for TARGET_MMX_WITH_SSE. - (v<insn>v4qi3): Ditto. - * config/i386/sse.md (v<insn>v8qi3): Remove. - -2023-05-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com> - - PR target/99195 - * config/aarch64/aarch64-simd.md (aarch64_simd_lshr<mode>): Rename to... - (aarch64_simd_lshr<mode><vczle><vczbe>): ... This. - (aarch64_simd_ashr<mode>): Rename to... - (aarch64_simd_ashr<mode><vczle><vczbe>): ... This. - (aarch64_simd_imm_shl<mode>): Rename to... - (aarch64_simd_imm_shl<mode><vczle><vczbe>): ... This. - (aarch64_simd_reg_sshl<mode>): Rename to... - (aarch64_simd_reg_sshl<mode><vczle><vczbe>): ... This. - (aarch64_simd_reg_shl<mode>_unsigned): Rename to... - (aarch64_simd_reg_shl<mode>_unsigned<vczle><vczbe>): ... This. - (aarch64_simd_reg_shl<mode>_signed): Rename to... - (aarch64_simd_reg_shl<mode>_signed<vczle><vczbe>): ... This. - (vec_shr_<mode>): Rename to... - (vec_shr_<mode><vczle><vczbe>): ... This. - (aarch64_<sur>shl<mode>): Rename to... - (aarch64_<sur>shl<mode><vczle><vczbe>): ... This. - (aarch64_<sur>q<r>shl<mode>): Rename to... - (aarch64_<sur>q<r>shl<mode><vczle><vczbe>): ... This. - -2023-05-24 Richard Biener <rguenther@suse.de> - - PR target/109944 - * config/i386/i386-expand.cc (ix86_expand_vector_init_general): - Perform final vector composition using - ix86_expand_vector_init_general instead of setting - the highpart and lowpart which causes spilling. - -2023-05-24 Andrew MacLeod <amacleod@redhat.com> - - PR tree-optimization/109695 - * gimple-range-cache.cc (ranger_cache::get_global_range): Add - changed param. - * gimple-range-cache.h (ranger_cache::get_global_range): Ditto. - * gimple-range.cc (gimple_ranger::range_of_stmt): Pass changed - flag to set_global_range. - (gimple_ranger::prefill_stmt_dependencies): Ditto. - -2023-05-24 Andrew MacLeod <amacleod@redhat.com> - - PR tree-optimization/109695 - * gimple-range-cache.cc (temporal_cache::temporal_value): Return - a positive int. - (temporal_cache::current_p): Check always_current method. - (temporal_cache::set_always_current): Add param and set value - appropriately. - (temporal_cache::always_current_p): New. - (ranger_cache::get_global_range): Adjust. - (ranger_cache::set_global_range): set always current first. - -2023-05-24 Andrew MacLeod <amacleod@redhat.com> - - PR tree-optimization/109695 - * gimple-range-cache.cc (ranger_cache::get_global_range): Call - fold_range with global query to choose an initial value. - -2023-05-24 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv-protos.h (enum frm_field_enum): Add FRM_ - prefix. - -2023-05-24 Richard Biener <rguenther@suse.de> - - PR tree-optimization/109849 - * tree-ssa-pre.cc (do_hoist_insertion): Do not intersect - expressions but take the first sets. - -2023-05-24 Gaius Mulley <gaiusmod2@gmail.com> - - PR modula2/109952 - * doc/gm2.texi (High procedure function): New node. - (Using): New menu entry for High procedure function. - -2023-05-24 Richard Sandiford <richard.sandiford@arm.com> - - PR rtl-optimization/109940 - * early-remat.cc (postorder_index): Rename to... - (rpo_index): ...this. - (compare_candidates): Sort by decreasing rpo_index rather than - increasing postorder_index. - (early_remat::sort_candidates): Calculate the forward RPO from - DF_FORWARD. - (early_remat::local_phase): Follow forward RPO using DF_FORWARD, - rather than DF_BACKWARD in reverse. - -2023-05-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com> - - PR target/109939 - * config/arm/arm-builtins.cc (SAT_BINOP_UNSIGNED_IMM_QUALIFIERS): Use - qualifier_none for the return operand. - -2023-05-24 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/autovec.md (<optab><mode>3): New pattern. - (one_cmpl<mode>2): Ditto. - (*<optab>not<mode>): Ditto. - (*n<optab><mode>): Ditto. - * config/riscv/riscv-v.cc (expand_vec_cmp_float): Change to - one_cmpl. - -2023-05-24 Kewen Lin <linkw@linux.ibm.com> - - * tree-vect-slp.cc (vect_transform_slp_perm_load_1): Adjust the - calculation on n_perms by considering nvectors_per_build. - -2023-05-24 Juzhe-Zhong <juzhe.zhong@rivai.ai> - Richard Sandiford <richard.sandiford@arm.com> - - * config/riscv/autovec.md (@vcond_mask_<mode><vm>): New pattern. - (vec_cmp<mode><vm>): New pattern. - (vec_cmpu<mode><vm>): New pattern. - (vcond<V:mode><VI:mode>): New pattern. - (vcondu<V:mode><VI:mode>): New pattern. - * config/riscv/riscv-protos.h (enum insn_type): Add new enum. - (emit_vlmax_merge_insn): New function. - (emit_vlmax_cmp_insn): Ditto. - (emit_vlmax_cmp_mu_insn): Ditto. - (expand_vec_cmp): Ditto. - (expand_vec_cmp_float): Ditto. - (expand_vcond): Ditto. - * config/riscv/riscv-v.cc (emit_vlmax_merge_insn): Ditto. - (emit_vlmax_cmp_insn): Ditto. - (emit_vlmax_cmp_mu_insn): Ditto. - (get_cmp_insn_code): Ditto. - (expand_vec_cmp): Ditto. - (expand_vec_cmp_float): Ditto. - (expand_vcond): Ditto. - -2023-05-24 Pan Li <pan2.li@intel.com> - - * config/riscv/genrvv-type-indexer.cc (main): Add - unsigned_eew*_lmul1_interpret for indexer. - * config/riscv/riscv-vector-builtins-functions.def (vreinterpret): - Register vuint*m1_t interpret function. - * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_UNSIGNED_EEW8_LMUL1_INTERPRET_OPS): - New macro for vuint8m1_t. - (DEF_RVV_UNSIGNED_EEW16_LMUL1_INTERPRET_OPS): Likewise. - (DEF_RVV_UNSIGNED_EEW32_LMUL1_INTERPRET_OPS): Likewise. - (DEF_RVV_UNSIGNED_EEW64_LMUL1_INTERPRET_OPS): Likewise. - (vbool1_t): Add to unsigned_eew*_interpret_ops. - (vbool2_t): Likewise. - (vbool4_t): Likewise. - (vbool8_t): Likewise. - (vbool16_t): Likewise. - (vbool32_t): Likewise. - (vbool64_t): Likewise. - * config/riscv/riscv-vector-builtins.cc (DEF_RVV_UNSIGNED_EEW8_LMUL1_INTERPRET_OPS): - New macro for vuint*m1_t. - (DEF_RVV_UNSIGNED_EEW16_LMUL1_INTERPRET_OPS): Likewise. - (DEF_RVV_UNSIGNED_EEW32_LMUL1_INTERPRET_OPS): Likewise. - (DEF_RVV_UNSIGNED_EEW64_LMUL1_INTERPRET_OPS): Likewise. - (required_extensions_p): Add vuint*m1_t interpret case. - * config/riscv/riscv-vector-builtins.def (unsigned_eew8_lmul1_interpret): - Add vuint*m1_t interpret to base type. - (unsigned_eew16_lmul1_interpret): Likewise. - (unsigned_eew32_lmul1_interpret): Likewise. - (unsigned_eew64_lmul1_interpret): Likewise. - -2023-05-24 Pan Li <pan2.li@intel.com> - - * config/riscv/genrvv-type-indexer.cc (EEW_SIZE_LIST): New macro - for the eew size list. - (LMUL1_LOG2): New macro for the log2 value of lmul=1. - (main): Add signed_eew*_lmul1_interpret for indexer. - * config/riscv/riscv-vector-builtins-functions.def (vreinterpret): - Register vint*m1_t interpret function. - * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_SIGNED_EEW8_LMUL1_INTERPRET_OPS): - New macro for vint8m1_t. - (DEF_RVV_SIGNED_EEW16_LMUL1_INTERPRET_OPS): Likewise. - (DEF_RVV_SIGNED_EEW32_LMUL1_INTERPRET_OPS): Likewise. - (DEF_RVV_SIGNED_EEW64_LMUL1_INTERPRET_OPS): Likewise. - (vbool1_t): Add to signed_eew*_interpret_ops. - (vbool2_t): Likewise. - (vbool4_t): Likewise. - (vbool8_t): Likewise. - (vbool16_t): Likewise. - (vbool32_t): Likewise. - (vbool64_t): Likewise. - * config/riscv/riscv-vector-builtins.cc (DEF_RVV_SIGNED_EEW8_LMUL1_INTERPRET_OPS): - New macro for vint*m1_t. - (DEF_RVV_SIGNED_EEW16_LMUL1_INTERPRET_OPS): Likewise. - (DEF_RVV_SIGNED_EEW32_LMUL1_INTERPRET_OPS): Likewise. - (DEF_RVV_SIGNED_EEW64_LMUL1_INTERPRET_OPS): Likewise. - (required_extensions_p): Add vint8m1_t interpret case. - * config/riscv/riscv-vector-builtins.def (signed_eew8_lmul1_interpret): - Add vint*m1_t interpret to base type. - (signed_eew16_lmul1_interpret): Likewise. - (signed_eew32_lmul1_interpret): Likewise. - (signed_eew64_lmul1_interpret): Likewise. - -2023-05-24 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/autovec.md: Adjust for new interface. - * config/riscv/riscv-protos.h (emit_vlmax_insn): Add VL operand. - (emit_nonvlmax_insn): Add AVL operand. - * config/riscv/riscv-v.cc (emit_vlmax_insn): Add VL operand. - (emit_nonvlmax_insn): Add AVL operand. - (sew64_scalar_helper): Adjust for new interface. - (expand_tuple_move): Ditto. - * config/riscv/vector.md: Ditto. - -2023-05-24 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv-v.cc (expand_vec_series): Remove magic number. - (expand_const_vector): Ditto. - (legitimize_move): Ditto. - (sew64_scalar_helper): Ditto. - (expand_tuple_move): Ditto. - (expand_vector_init_insert_elems): Ditto. - * config/riscv/riscv.cc (vector_zero_call_used_regs): Ditto. - -2023-05-24 liuhongt <hongtao.liu@intel.com> - - PR target/109900 - * config/i386/i386.cc (ix86_gimple_fold_builtin): Fold - _mm{,256,512}_abs_{epi8,epi16,epi32,epi64} and - _mm_abs_{pi8,pi16,pi32} into gimple ABS_EXPR. - (ix86_masked_all_ones): Handle 64-bit mask. - * config/i386/i386-builtin.def: Replace icode of related - non-mask simd abs builtins with CODE_FOR_nothing. - -2023-05-23 Martin Uecker <uecker@tugraz.at> - - PR c/109450 - * function.cc (gimplify_parm_type): Remove function. - (gimplify_parameters): Call gimplify_type_sizes. - -2023-05-23 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp> - - * config/xtensa/xtensa.md (*addsubx): Rename from '*addx', - and change to also accept '*subx' pattern. - (*subx): Remove. - -2023-05-23 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp> - - * config/xtensa/predicates.md (addsub_operator): New. - * config/xtensa/xtensa.md (*extzvsi-1bit_ashlsi3, - *extzvsi-1bit_addsubx): New insn_and_split patterns. - * config/xtensa/xtensa.cc (xtensa_rtx_costs): - Add a special case about ifcvt 'noce_try_cmove()' to handle - constant loads that do not fit into signed 12 bits in the - patterns added above. - -2023-05-23 Richard Biener <rguenther@suse.de> - - PR tree-optimization/109747 - * tree-vect-slp.cc (vect_prologue_cost_for_slp): Pass down - the SLP node only once to the cost hook. - -2023-05-23 Georg-Johann Lay <avr@gjlay.de> - - * config/avr/avr.cc (avr_insn_cost): New static function. - (TARGET_INSN_COST): Define to that function. - -2023-05-23 Richard Biener <rguenther@suse.de> - - PR target/109944 - * config/i386/i386.cc (ix86_vector_costs::add_stmt_cost): - For vector construction or splats apply GPR->XMM move - costing. QImode memory can be handled directly only - with SSE4.1 pinsrb. - -2023-05-23 Richard Biener <rguenther@suse.de> - - PR tree-optimization/108752 - * tree-vect-stmts.cc (vectorizable_operation): For bit - operations with generic word_mode vectors do not cost - an extra stmt. For plus, minus and negate also cost the - constant materialization. - -2023-05-23 Uros Bizjak <ubizjak@gmail.com> - - * config/i386/i386-expand.cc (ix86_expand_vecop_qihi_partial): - Call ix86_expand_vec_shift_qihi_constant for shifts - with constant count operand. - * config/i386/i386.cc (ix86_shift_rotate_cost): - Handle V4QImode and V8QImode. - * config/i386/mmx.md (<insn>v8qi3): New insn pattern. - (<insn>v4qi3): Ditto. - -2023-05-23 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/vector.md: Add mode. - -2023-05-23 Aldy Hernandez <aldyh@redhat.com> - - PR tree-optimization/109934 - * value-range.cc (irange::invert): Remove buggy special case. - -2023-05-23 Richard Biener <rguenther@suse.de> - - * tree-ssa-pre.cc (compute_antic_aux): Dump the correct - ANTIC_OUT. - -2023-05-23 Richard Sandiford <richard.sandiford@arm.com> - - PR target/109632 - * config/aarch64/aarch64.cc (aarch64_modes_tieable_p): Allow - subregs between any scalars that are 64 bits or smaller. - * config/aarch64/iterators.md (SUBDI_BITS): New int iterator. - (bits_etype): New int attribute. - * config/aarch64/aarch64.md (*insv_reg<mode>_<SUBDI_BITS>) - (*aarch64_bfi<GPI:mode><ALLX:mode>_<SUBDI_BITS>): New patterns. - (*aarch64_bfidi<ALLX:mode>_subreg_<SUBDI_BITS>): Likewise. - -2023-05-23 Richard Sandiford <richard.sandiford@arm.com> - - * doc/md.texi: Document that <FOO> can be used to refer to the - numerical value of an int iterator FOO. Tweak other parts of - the int iterator documentation. - * read-rtl.cc (iterator_group::has_self_attr): New field. - (map_attr_string): When has_self_attr is true, make <FOO> - expand to the current value of iterator FOO. - (initialize_iterators): Set has_self_attr for int iterators. - -2023-05-23 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/autovec.md: Refactor the framework of RVV auto-vectorization. - * config/riscv/riscv-protos.h (RVV_MISC_OP_NUM): Ditto. - (RVV_UNOP_NUM): New macro. - (RVV_BINOP_NUM): Ditto. - (legitimize_move): Refactor the framework of RVV auto-vectorization. - (emit_vlmax_op): Ditto. - (emit_vlmax_reg_op): Ditto. - (emit_len_op): Ditto. - (emit_len_binop): Ditto. - (emit_vlmax_tany_many): Ditto. - (emit_nonvlmax_tany_many): Ditto. - (sew64_scalar_helper): Ditto. - (expand_tuple_move): Ditto. - * config/riscv/riscv-v.cc (emit_pred_op): Ditto. - (emit_pred_binop): Ditto. - (emit_vlmax_op): Ditto. - (emit_vlmax_tany_many): New function. - (emit_len_op): Remove. - (emit_nonvlmax_tany_many): New function. - (emit_vlmax_reg_op): Remove. - (emit_len_binop): Ditto. - (emit_index_op): Ditto. - (expand_vec_series): Refactor the framework of RVV auto-vectorization. - (expand_const_vector): Ditto. - (legitimize_move): Ditto. - (sew64_scalar_helper): Ditto. - (expand_tuple_move): Ditto. - (expand_vector_init_insert_elems): Ditto. - * config/riscv/riscv.cc (vector_zero_call_used_regs): Ditto. - * config/riscv/vector.md: Ditto. - -2023-05-23 Kyrylo Tkachov <kyrylo.tkachov@arm.com> - - PR target/109855 - * config/aarch64/aarch64-simd.md (add_vec_concat_subst_le): Add predicate - and constraint for operand 0. - (add_vec_concat_subst_be): Likewise. - -2023-05-23 Richard Biener <rguenther@suse.de> - - PR tree-optimization/109849 - * tree-ssa-pre.cc (do_hoist_insertion): Compute ANTIC_OUT - and use that to determine what to hoist. - -2023-05-23 Eric Botcazou <ebotcazou@adacore.com> - - * fold-const.cc (native_encode_initializer) <CONSTRUCTOR>: Apply the - specific treatment for bit-fields only if they have an integral type - and filter out non-integral bit-fields that do not start and end on - a byte boundary. - -2023-05-23 Aldy Hernandez <aldyh@redhat.com> - - PR tree-optimization/109920 - * value-range.h (RESIZABLE>::~int_range): Use delete[]. - -2023-05-22 Uros Bizjak <ubizjak@gmail.com> - - * config/i386/i386.cc (ix86_shift_rotate_cost): Correct - calcuation of integer vector mode costs to reflect generated - instruction sequences of different integer vector modes and - different target ABIs. Remove "speed" function argument. - (ix86_rtx_costs): Update call for removed function argument. - (ix86_vector_costs::add_stmt_cost): Ditto. - -2023-05-22 Aldy Hernandez <aldyh@redhat.com> - - * value-range.h (class Value_Range): Implement set_zero, - set_nonzero, and nonzero_p. - -2023-05-22 Uros Bizjak <ubizjak@gmail.com> - - * config/i386/i386.cc (ix86_multiplication_cost): Add - the cost of a memory read to the cost of V?QImode sequences. - -2023-05-22 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv-v.cc: Add "m_" prefix. - -2023-05-22 Ju-Zhe Zhong <juzhe.zhong@rivai.ai> - - * tree-vect-loop.cc (vect_get_loop_len): Fix issue for - multiple-rgroup of length. - * tree-vect-stmts.cc (vectorizable_store): Ditto. - (vectorizable_load): Ditto. - * tree-vectorizer.h (vect_get_loop_len): Ditto. - -2023-05-22 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv.cc (riscv_const_insns): Reorganize the - codes. - -2023-05-22 Kewen Lin <linkw@linux.ibm.com> - - * tree-vect-slp.cc (vect_transform_slp_perm_load_1): Refactor the - handling for the case index == count. - -2023-05-21 Georg-Johann Lay <avr@gjlay.de> - - PR target/90622 - * config/avr/avr.cc (avr_fold_builtin) [AVR_BUILTIN_INSERT_BITS]: - Don't fold to XOR / AND / XOR if just one bit is copied to the - same position. - -2023-05-21 Roger Sayle <roger@nextmovesoftware.com> - - * config/nvptx/nvptx.cc (nvptx_expand_brev): Expand target - builtin for bit reversal using brev instruction. - (enum nvptx_builtins): Add NVPTX_BUILTIN_BREV and - NVPTX_BUILTIN_BREVLL. - (nvptx_init_builtins): Define "brev" and "brevll". - (nvptx_expand_builtin): Expand NVPTX_BUILTIN_BREV and - NVPTX_BUILTIN_BREVLL via nvptx_expand_brev function. - * doc/extend.texi (Nvidia PTX Builtin-in Functions): New - section, document __builtin_nvptx_brev{,ll}. - -2023-05-21 Jakub Jelinek <jakub@redhat.com> - - PR tree-optimization/109505 - * match.pd ((x | CST1) & CST2 -> (x & CST2) | (CST1 & CST2), - Combine successive equal operations with constants, - (A +- CST1) +- CST2 -> A + CST3, (CST1 - A) +- CST2 -> CST3 - A, - CST1 - (CST2 - A) -> CST3 + A): Use ! on ops with 2 CONSTANT_CLASS_P - operands. - -2023-05-21 Andrew Pinski <apinski@marvell.com> - - * expr.cc (expand_single_bit_test): Correct bitpos for big-endian. - -2023-05-21 Pan Li <pan2.li@intel.com> - - * config/riscv/genrvv-type-indexer.cc (BOOL_SIZE_LIST): Add the - rest bool size, aka 2, 4, 8, 16, 32, 64. - * config/riscv/riscv-vector-builtins-functions.def (vreinterpret): - Register vbool[2|4|8|16|32|64] interpret function. - * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_BOOL2_INTERPRET_OPS): - New macro for vbool2_t. - (DEF_RVV_BOOL4_INTERPRET_OPS): Likewise. - (DEF_RVV_BOOL8_INTERPRET_OPS): Likewise. - (DEF_RVV_BOOL16_INTERPRET_OPS): Likewise. - (DEF_RVV_BOOL32_INTERPRET_OPS): Likewise. - (DEF_RVV_BOOL64_INTERPRET_OPS): Likewise. - (vint8m1_t): Add the type to bool[2|4|8|16|32|64]_interpret_ops. - (vint16m1_t): Likewise. - (vint32m1_t): Likewise. - (vint64m1_t): Likewise. - (vuint8m1_t): Likewise. - (vuint16m1_t): Likewise. - (vuint32m1_t): Likewise. - (vuint64m1_t): Likewise. - * config/riscv/riscv-vector-builtins.cc (DEF_RVV_BOOL2_INTERPRET_OPS): - New macro for vbool2_t. - (DEF_RVV_BOOL4_INTERPRET_OPS): Likewise. - (DEF_RVV_BOOL8_INTERPRET_OPS): Likewise. - (DEF_RVV_BOOL16_INTERPRET_OPS): Likewise. - (DEF_RVV_BOOL32_INTERPRET_OPS): Likewise. - (DEF_RVV_BOOL64_INTERPRET_OPS): Likewise. - (required_extensions_p): Add vbool[2|4|8|16|32|64] interpret case. - * config/riscv/riscv-vector-builtins.def (bool2_interpret): Add - vbool2_t interprect to base type. - (bool4_interpret): Likewise. - (bool8_interpret): Likewise. - (bool16_interpret): Likewise. - (bool32_interpret): Likewise. - (bool64_interpret): Likewise. - -2023-05-21 Andrew Pinski <apinski@marvell.com> - - PR middle-end/109919 - * expr.cc (expand_single_bit_test): Don't use the - target for expand_expr. - -2023-05-20 Gerald Pfeifer <gerald@pfeifer.com> - - * doc/install.texi (Specific): Remove de facto empty alpha*-*-* - section. - -2023-05-20 Pan Li <pan2.li@intel.com> - - * mode-switching.cc (entity_map): Initialize the array to zero. - (bb_info): Ditto. - -2023-05-20 Triffid Hunter <triffid.hunter@gmail.com> - - PR target/105753 - * config/avr/avr.md (divmodpsi, udivmodpsi, divmodsi, udivmodsi): - Remove superfluous "parallel" in insn pattern. - ([u]divmod<mode>4): Tidy code. Use gcc_unreachable() instead of - printing error text to assembly. - -2023-05-20 Andrew Pinski <apinski@marvell.com> - - * expr.cc (fold_single_bit_test): Rename to ... - (expand_single_bit_test): This and expand directly. - (do_store_flag): Update for the rename function. - -2023-05-20 Andrew Pinski <apinski@marvell.com> - - * expr.cc (fold_single_bit_test): Use BIT_FIELD_REF - instead of shift/and. - -2023-05-20 Andrew Pinski <apinski@marvell.com> - - * expr.cc (fold_single_bit_test): Add an assert - and simplify based on code being NE_EXPR or EQ_EXPR. - -2023-05-20 Andrew Pinski <apinski@marvell.com> - - * expr.cc (fold_single_bit_test): Take inner and bitnum - instead of arg0 and arg1. Update the code. - (do_store_flag): Don't create a tree when calling - fold_single_bit_test instead just call it with the bitnum - and the inner tree. - -2023-05-20 Andrew Pinski <apinski@marvell.com> - - * expr.cc (fold_single_bit_test): Use get_def_for_expr - instead of checking the inner's code. - -2023-05-20 Andrew Pinski <apinski@marvell.com> - - * expr.cc (fold_single_bit_test_into_sign_test): Inline into ... - (fold_single_bit_test): This and simplify. - -2023-05-20 Andrew Pinski <apinski@marvell.com> - - * fold-const.cc (fold_single_bit_test_into_sign_test): Move to - expr.cc. - (fold_single_bit_test): Likewise. - * expr.cc (fold_single_bit_test_into_sign_test): Move from fold-const.cc - (fold_single_bit_test): Likewise and make static. - * fold-const.h (fold_single_bit_test): Remove declaration. - -2023-05-20 Die Li <lidie@eswincomputing.com> - - * config/riscv/riscv.cc (riscv_expand_conditional_move): Fix mode - checking. - -2023-05-20 Raphael Moreira Zinsly <rzinsly@ventanamicro.com> - - * config/riscv/bitmanip.md (branch<X:mode>_bext): New split pattern. - -2023-05-20 Raphael Moreira Zinsly <rzinsly@ventanamicro.com> - - PR target/106888 - * config/riscv/bitmanip.md - (<bitmanip_optab>disi2): Match with any_extend. - (<bitmanip_optab>disi2_sext): New pattern to match - with sign extend using an ANDI instruction. - -2023-05-19 Nathan Sidwell <nathan@acm.org> - - PR other/99451 - * opts.h (handle_deferred_dump_options): Declare. - * opts-global.cc (handle_common_deferred_options): Do not handle - dump options here. - (handle_deferred_dump_options): New. - * toplev.cc (toplev::main): Call it after plugin init. - -2023-05-19 Joern Rennecke <joern.rennecke@embecosm.com> - - * config/riscv/constraints.md (DsS, DsD): Restore agreement - with shiftm1 mode attribute. - -2023-05-19 Andrew Pinski <apinski@marvell.com> - - PR driver/33980 - * gcc.cc (default_compilers["@c-header"]): Add %w - after the --output-pch. - -2023-05-19 Vineet Gupta <vineetg@rivosinc.com> - - * config/riscv/riscv.cc (riscv_split_integer): if loval is equal - to hival, ASHIFT the corresponding regs. - -2023-05-19 Robin Dapp <rdapp@ventanamicro.com> - - * config/riscv/riscv.cc (riscv_const_insns): Remove else. - -2023-05-19 Jakub Jelinek <jakub@redhat.com> - - PR tree-optimization/105776 - * tree-ssa-math-opts.cc (arith_overflow_check_p): If cast_stmt is - non-NULL, allow division statement to have a cast as single imm use - rather than comparison/condition. - (match_arith_overflow): In that case remove the cast stmt in addition - to the division statement. - -2023-05-19 Jakub Jelinek <jakub@redhat.com> - - PR tree-optimization/101856 - * tree-ssa-math-opts.cc (match_arith_overflow): Pattern detect - unsigned __builtin_mul_overflow_p even when umulv4_optab doesn't - support it but umul_highpart_optab does. - -2023-05-19 Eric Botcazou <ebotcazou@adacore.com> - - * varasm.cc (output_constructor_bitfield): Call tree_to_uhwi instead - of tree_to_shwi on array indices. Minor tweaks. - -2023-05-18 Bernhard Reutner-Fischer <aldot@gcc.gnu.org> - - * alias.cc (ref_all_alias_ptr_type_p): Use _P() defines from tree.h. - * attribs.cc (diag_attr_exclusions): Ditto. - (decl_attributes): Ditto. - (build_type_attribute_qual_variant): Ditto. - * builtins.cc (fold_builtin_carg): Ditto. - (fold_builtin_next_arg): Ditto. - (do_mpc_arg2): Ditto. - * cfgexpand.cc (expand_return): Ditto. - * cgraph.h (decl_in_symtab_p): Ditto. - (symtab_node::get_create): Ditto. - * dwarf2out.cc (base_type_die): Ditto. - (implicit_ptr_descriptor): Ditto. - (gen_array_type_die): Ditto. - (gen_type_die_with_usage): Ditto. - (optimize_location_into_implicit_ptr): Ditto. - * expr.cc (do_store_flag): Ditto. - * fold-const.cc (negate_expr_p): Ditto. - (fold_negate_expr_1): Ditto. - (fold_convert_const): Ditto. - (fold_convert_loc): Ditto. - (constant_boolean_node): Ditto. - (fold_binary_op_with_conditional_arg): Ditto. - (build_fold_addr_expr_with_type_loc): Ditto. - (fold_comparison): Ditto. - (fold_checksum_tree): Ditto. - (tree_unary_nonnegative_warnv_p): Ditto. - (integer_valued_real_unary_p): Ditto. - (fold_read_from_constant_string): Ditto. - * gcc-rich-location.cc (maybe_range_label_for_tree_type_mismatch::get_text): Ditto. - * gimple-expr.cc (useless_type_conversion_p): Ditto. - (is_gimple_reg): Ditto. - (is_gimple_asm_val): Ditto. - (mark_addressable): Ditto. - * gimple-expr.h (is_gimple_variable): Ditto. - (virtual_operand_p): Ditto. - * gimple-ssa-warn-access.cc (pass_waccess::check_dangling_stores): Ditto. - * gimplify.cc (gimplify_bind_expr): Ditto. - (gimplify_return_expr): Ditto. - (gimple_add_padding_init_for_auto_var): Ditto. - (gimplify_addr_expr): Ditto. - (omp_add_variable): Ditto. - (omp_notice_variable): Ditto. - (omp_get_base_pointer): Ditto. - (omp_strip_components_and_deref): Ditto. - (omp_strip_indirections): Ditto. - (omp_accumulate_sibling_list): Ditto. - (omp_build_struct_sibling_lists): Ditto. - (gimplify_adjust_omp_clauses_1): Ditto. - (gimplify_adjust_omp_clauses): Ditto. - (gimplify_omp_for): Ditto. - (goa_lhs_expr_p): Ditto. - (gimplify_one_sizepos): Ditto. - * graphite-scop-detection.cc (scop_detection::graphite_can_represent_scev): Ditto. - * ipa-devirt.cc (odr_types_equivalent_p): Ditto. - * ipa-prop.cc (ipa_set_jf_constant): Ditto. - (propagate_controlled_uses): Ditto. - * ipa-sra.cc (type_prevails_p): Ditto. - (scan_expr_access): Ditto. - * optabs-tree.cc (optab_for_tree_code): Ditto. - * toplev.cc (wrapup_global_declaration_1): Ditto. - * trans-mem.cc (transaction_invariant_address_p): Ditto. - * tree-cfg.cc (verify_types_in_gimple_reference): Ditto. - (verify_gimple_comparison): Ditto. - (verify_gimple_assign_binary): Ditto. - (verify_gimple_assign_single): Ditto. - * tree-complex.cc (get_component_ssa_name): Ditto. - * tree-emutls.cc (lower_emutls_2): Ditto. - * tree-inline.cc (copy_tree_body_r): Ditto. - (estimate_move_cost): Ditto. - (copy_decl_for_dup_finish): Ditto. - * tree-nested.cc (convert_nonlocal_omp_clauses): Ditto. - (note_nonlocal_vla_type): Ditto. - (convert_local_omp_clauses): Ditto. - (remap_vla_decls): Ditto. - (fixup_vla_decls): Ditto. - * tree-parloops.cc (loop_has_vector_phi_nodes): Ditto. - * tree-pretty-print.cc (print_declaration): Ditto. - (print_call_name): Ditto. - * tree-sra.cc (compare_access_positions): Ditto. - * tree-ssa-alias.cc (compare_type_sizes): Ditto. - * tree-ssa-ccp.cc (get_default_value): Ditto. - * tree-ssa-coalesce.cc (populate_coalesce_list_for_outofssa): Ditto. - * tree-ssa-dom.cc (reduce_vector_comparison_to_scalar_comparison): Ditto. - * tree-ssa-forwprop.cc (can_propagate_from): Ditto. - * tree-ssa-propagate.cc (may_propagate_copy): Ditto. - * tree-ssa-sccvn.cc (fully_constant_vn_reference_p): Ditto. - * tree-ssa-sink.cc (statement_sink_location): Ditto. - * tree-ssa-structalias.cc (type_must_have_pointers): Ditto. - * tree-ssa-ter.cc (find_replaceable_in_bb): Ditto. - * tree-ssa-uninit.cc (warn_uninit): Ditto. - * tree-ssa.cc (maybe_rewrite_mem_ref_base): Ditto. - (non_rewritable_mem_ref_base): Ditto. - * tree-streamer-in.cc (lto_input_ts_type_non_common_tree_pointers): Ditto. - * tree-streamer-out.cc (write_ts_type_non_common_tree_pointers): Ditto. - * tree-vect-generic.cc (do_binop): Ditto. - (do_cond): Ditto. - * tree-vect-stmts.cc (vect_init_vector): Ditto. - * tree-vector-builder.h (tree_vector_builder::note_representative): Ditto. - * tree.cc (sign_mask_for): Ditto. - (verify_type_variant): Ditto. - (gimple_canonical_types_compatible_p): Ditto. - (verify_type): Ditto. - * ubsan.cc (get_ubsan_type_info_for_type): Ditto. - * var-tracking.cc (prepare_call_arguments): Ditto. - (vt_add_function_parameters): Ditto. - * varasm.cc (decode_addr_const): Ditto. - -2023-05-18 Bernhard Reutner-Fischer <aldot@gcc.gnu.org> - - * omp-low.cc (scan_sharing_clauses): Use _P() defines from tree.h. - (lower_reduction_clauses): Ditto. - (lower_send_clauses): Ditto. - (lower_omp_task_reductions): Ditto. - * omp-oacc-neuter-broadcast.cc (install_var_field): Ditto. - (worker_single_copy): Ditto. - * omp-offload.cc (oacc_rewrite_var_decl): Ditto. - * omp-simd-clone.cc (plausible_type_for_simd_clone): Ditto. - -2023-05-18 Bernhard Reutner-Fischer <aldot@gcc.gnu.org> - - * lto-streamer-in.cc (lto_input_var_decl_ref): Use _P defines from - tree.h. - (lto_read_body_or_constructor): Ditto. - * lto-streamer-out.cc (tree_is_indexable): Ditto. - (lto_output_var_decl_ref): Ditto. - (DFS::DFS_write_tree_body): Ditto. - (wrap_refs): Ditto. - (write_symbol_extension_info): Ditto. - -2023-05-18 Bernhard Reutner-Fischer <aldot@gcc.gnu.org> - - * config/aarch64/aarch64.cc (aarch64_short_vector_p): Use _P - defines from tree.h. - (aarch64_mangle_type): Ditto. - * config/alpha/alpha.cc (alpha_in_small_data_p): Ditto. - (alpha_gimplify_va_arg_1): Ditto. - * config/arc/arc.cc (arc_encode_section_info): Ditto. - (arc_is_aux_reg_p): Ditto. - (arc_is_uncached_mem_p): Ditto. - (arc_handle_aux_attribute): Ditto. - * config/arm/arm.cc (arm_handle_isr_attribute): Ditto. - (arm_handle_cmse_nonsecure_call): Ditto. - (arm_set_default_type_attributes): Ditto. - (arm_is_segment_info_known): Ditto. - (arm_mangle_type): Ditto. - * config/arm/unknown-elf.h (IN_NAMED_SECTION_P): Ditto. - * config/avr/avr.cc (avr_lookup_function_attribute1): Ditto. - (avr_decl_absdata_p): Ditto. - (avr_insert_attributes): Ditto. - (avr_section_type_flags): Ditto. - (avr_encode_section_info): Ditto. - * config/bfin/bfin.cc (bfin_handle_l2_attribute): Ditto. - * config/bpf/bpf.cc (bpf_core_compute): Ditto. - * config/c6x/c6x.cc (c6x_in_small_data_p): Ditto. - * config/csky/csky.cc (csky_handle_isr_attribute): Ditto. - (csky_mangle_type): Ditto. - * config/darwin-c.cc (darwin_pragma_unused): Ditto. - * config/darwin.cc (is_objc_metadata): Ditto. - * config/epiphany/epiphany.cc (epiphany_function_ok_for_sibcall): Ditto. - * config/epiphany/epiphany.h (ROUND_TYPE_ALIGN): Ditto. - * config/frv/frv.cc (frv_emit_movsi): Ditto. - * config/gcn/gcn-tree.cc (gcn_lockless_update): Ditto. - * config/gcn/gcn.cc (gcn_asm_output_symbol_ref): Ditto. - * config/h8300/h8300.cc (h8300_encode_section_info): Ditto. - * config/i386/i386-expand.cc: Ditto. - * config/i386/i386.cc (type_natural_mode): Ditto. - (ix86_function_arg): Ditto. - (ix86_data_alignment): Ditto. - (ix86_local_alignment): Ditto. - (ix86_simd_clone_compute_vecsize_and_simdlen): Ditto. - * config/i386/winnt-cxx.cc (i386_pe_type_dllimport_p): Ditto. - (i386_pe_type_dllexport_p): Ditto. - (i386_pe_adjust_class_at_definition): Ditto. - * config/i386/winnt.cc (i386_pe_determine_dllimport_p): Ditto. - (i386_pe_binds_local_p): Ditto. - (i386_pe_section_type_flags): Ditto. - * config/ia64/ia64.cc (ia64_encode_section_info): Ditto. - (ia64_gimplify_va_arg): Ditto. - (ia64_in_small_data_p): Ditto. - * config/iq2000/iq2000.cc (iq2000_function_arg): Ditto. - * config/lm32/lm32.cc (lm32_in_small_data_p): Ditto. - * config/loongarch/loongarch.cc (loongarch_handle_model_attribute): Ditto. - * config/m32c/m32c.cc (m32c_insert_attributes): Ditto. - * config/mcore/mcore.cc (mcore_mark_dllimport): Ditto. - (mcore_encode_section_info): Ditto. - * config/microblaze/microblaze.cc (microblaze_elf_in_small_data_p): Ditto. - * config/mips/mips.cc (mips_output_aligned_decl_common): Ditto. - * config/mmix/mmix.cc (mmix_encode_section_info): Ditto. - * config/nvptx/nvptx.cc (nvptx_encode_section_info): Ditto. - (pass_in_memory): Ditto. - (nvptx_generate_vector_shuffle): Ditto. - (nvptx_lockless_update): Ditto. - * config/pa/pa.cc (pa_function_arg_padding): Ditto. - (pa_function_value): Ditto. - (pa_function_arg): Ditto. - * config/pa/pa.h (IN_NAMED_SECTION_P): Ditto. - (TEXT_SPACE_P): Ditto. - * config/pa/som.h (MAKE_DECL_ONE_ONLY): Ditto. - * config/pdp11/pdp11.cc (pdp11_return_in_memory): Ditto. - * config/riscv/riscv.cc (riscv_in_small_data_p): Ditto. - (riscv_mangle_type): Ditto. - * config/rl78/rl78.cc (rl78_insert_attributes): Ditto. - (rl78_addsi3_internal): Ditto. - * config/rs6000/aix.h (ROUND_TYPE_ALIGN): Ditto. - * config/rs6000/darwin.h (ROUND_TYPE_ALIGN): Ditto. - * config/rs6000/freebsd64.h (ROUND_TYPE_ALIGN): Ditto. - * config/rs6000/linux64.h (ROUND_TYPE_ALIGN): Ditto. - * config/rs6000/rs6000-call.cc (rs6000_function_arg_boundary): Ditto. - (rs6000_function_arg_advance_1): Ditto. - (rs6000_function_arg): Ditto. - (rs6000_pass_by_reference): Ditto. - * config/rs6000/rs6000-logue.cc (rs6000_function_ok_for_sibcall): Ditto. - * config/rs6000/rs6000.cc (rs6000_data_alignment): Ditto. - (rs6000_set_default_type_attributes): Ditto. - (rs6000_elf_in_small_data_p): Ditto. - (IN_NAMED_SECTION): Ditto. - (rs6000_xcoff_encode_section_info): Ditto. - (rs6000_function_value): Ditto. - (invalid_arg_for_unprototyped_fn): Ditto. - * config/s390/s390-c.cc (s390_fn_types_compatible): Ditto. - (s390_vec_n_elem): Ditto. - * config/s390/s390.cc (s390_check_type_for_vector_abi): Ditto. - (s390_function_arg_integer): Ditto. - (s390_return_in_memory): Ditto. - (s390_encode_section_info): Ditto. - * config/sh/sh.cc (sh_gimplify_va_arg_expr): Ditto. - (sh_function_value): Ditto. - * config/sol2.cc (solaris_insert_attributes): Ditto. - * config/sparc/sparc.cc (function_arg_slotno): Ditto. - * config/sparc/sparc.h (ROUND_TYPE_ALIGN): Ditto. - * config/stormy16/stormy16.cc (xstormy16_encode_section_info): Ditto. - (xstormy16_handle_below100_attribute): Ditto. - * config/v850/v850.cc (v850_encode_section_info): Ditto. - (v850_insert_attributes): Ditto. - * config/visium/visium.cc (visium_pass_by_reference): Ditto. - (visium_return_in_memory): Ditto. - * config/xtensa/xtensa.cc (xtensa_multibss_section_type_flags): Ditto. - -2023-05-18 Uros Bizjak <ubizjak@gmail.com> - - * config/i386/i386-expand.cc (ix86_expand_vecop_qihi_partial): New. - (ix86_expand_vecop_qihi): Add op2vec bool variable. - Do not set REG_EQUAL note. - * config/i386/i386-protos.h (ix86_expand_vecop_qihi_partial): - Add prototype. - * config/i386/i386.cc (ix86_multiplication_cost): Handle - V4QImode and V8QImode. - * config/i386/mmx.md (mulv8qi3): New expander. - (mulv4qi3): Ditto. - * config/i386/sse.md (mulv8qi3): Remove. - -2023-05-18 Georg-Johann Lay <avr@gjlay.de> - - * config/avr/gen-avr-mmcu-specs.cc: Remove stale */ after // comment. - -2023-05-18 Jonathan Wakely <jwakely@redhat.com> - - PR bootstrap/105831 - * config.gcc: Use = operator instead of ==. - -2023-05-18 Michael Bäuerle <micha@NetBSD.org> - - PR bootstrap/105831 - * config/nvptx/gen-opt.sh: Use = operator instead of ==. - * configure.ac: Likewise. - * configure: Regenerate. - -2023-05-18 Stam Markianos-Wright <stam.markianos-wright@arm.com> - - * config/arm/arm_mve.h: (__ARM_mve_typeid): Add more pointer types. - (__ARM_mve_coerce1): Remove. - (__ARM_mve_coerce2): Remove. - (__ARM_mve_coerce3): Remove. - (__ARM_mve_coerce_i_scalar): New. - (__ARM_mve_coerce_s8_ptr): New. - (__ARM_mve_coerce_u8_ptr): New. - (__ARM_mve_coerce_s16_ptr): New. - (__ARM_mve_coerce_u16_ptr): New. - (__ARM_mve_coerce_s32_ptr): New. - (__ARM_mve_coerce_u32_ptr): New. - (__ARM_mve_coerce_s64_ptr): New. - (__ARM_mve_coerce_u64_ptr): New. - (__ARM_mve_coerce_f_scalar): New. - (__ARM_mve_coerce_f16_ptr): New. - (__ARM_mve_coerce_f32_ptr): New. - (__arm_vst4q): Change _coerce_ overloads. - (__arm_vbicq): Change _coerce_ overloads. - (__arm_vld1q): Change _coerce_ overloads. - (__arm_vld1q_z): Change _coerce_ overloads. - (__arm_vld2q): Change _coerce_ overloads. - (__arm_vld4q): Change _coerce_ overloads. - (__arm_vldrhq_gather_offset): Change _coerce_ overloads. - (__arm_vldrhq_gather_offset_z): Change _coerce_ overloads. - (__arm_vldrhq_gather_shifted_offset): Change _coerce_ overloads. - (__arm_vldrhq_gather_shifted_offset_z): Change _coerce_ overloads. - (__arm_vldrwq_gather_offset): Change _coerce_ overloads. - (__arm_vldrwq_gather_offset_z): Change _coerce_ overloads. - (__arm_vldrwq_gather_shifted_offset): Change _coerce_ overloads. - (__arm_vldrwq_gather_shifted_offset_z): Change _coerce_ overloads. - (__arm_vst1q_p): Change _coerce_ overloads. - (__arm_vst2q): Change _coerce_ overloads. - (__arm_vst1q): Change _coerce_ overloads. - (__arm_vstrhq): Change _coerce_ overloads. - (__arm_vstrhq_p): Change _coerce_ overloads. - (__arm_vstrhq_scatter_offset_p): Change _coerce_ overloads. - (__arm_vstrhq_scatter_offset): Change _coerce_ overloads. - (__arm_vstrhq_scatter_shifted_offset_p): Change _coerce_ overloads. - (__arm_vstrhq_scatter_shifted_offset): Change _coerce_ overloads. - (__arm_vstrwq_p): Change _coerce_ overloads. - (__arm_vstrwq): Change _coerce_ overloads. - (__arm_vstrwq_scatter_offset): Change _coerce_ overloads. - (__arm_vstrwq_scatter_offset_p): Change _coerce_ overloads. - (__arm_vstrwq_scatter_shifted_offset): Change _coerce_ overloads. - (__arm_vstrwq_scatter_shifted_offset_p): Change _coerce_ overloads. - (__arm_vsetq_lane): Change _coerce_ overloads. - (__arm_vldrbq_gather_offset): Change _coerce_ overloads. - (__arm_vdwdupq_x_u8): Change _coerce_ overloads. - (__arm_vdwdupq_x_u16): Change _coerce_ overloads. - (__arm_vdwdupq_x_u32): Change _coerce_ overloads. - (__arm_viwdupq_x_u8): Change _coerce_ overloads. - (__arm_viwdupq_x_u16): Change _coerce_ overloads. - (__arm_viwdupq_x_u32): Change _coerce_ overloads. - (__arm_vidupq_x_u8): Change _coerce_ overloads. - (__arm_vddupq_x_u8): Change _coerce_ overloads. - (__arm_vidupq_x_u16): Change _coerce_ overloads. - (__arm_vddupq_x_u16): Change _coerce_ overloads. - (__arm_vidupq_x_u32): Change _coerce_ overloads. - (__arm_vddupq_x_u32): Change _coerce_ overloads. - (__arm_vldrdq_gather_offset): Change _coerce_ overloads. - (__arm_vldrdq_gather_offset_z): Change _coerce_ overloads. - (__arm_vldrdq_gather_shifted_offset): Change _coerce_ overloads. - (__arm_vldrdq_gather_shifted_offset_z): Change _coerce_ overloads. - (__arm_vldrbq_gather_offset_z): Change _coerce_ overloads. - (__arm_vidupq_u16): Change _coerce_ overloads. - (__arm_vidupq_u32): Change _coerce_ overloads. - (__arm_vidupq_u8): Change _coerce_ overloads. - (__arm_vddupq_u16): Change _coerce_ overloads. - (__arm_vddupq_u32): Change _coerce_ overloads. - (__arm_vddupq_u8): Change _coerce_ overloads. - (__arm_viwdupq_m): Change _coerce_ overloads. - (__arm_viwdupq_u16): Change _coerce_ overloads. - (__arm_viwdupq_u32): Change _coerce_ overloads. - (__arm_viwdupq_u8): Change _coerce_ overloads. - (__arm_vdwdupq_m): Change _coerce_ overloads. - (__arm_vdwdupq_u16): Change _coerce_ overloads. - (__arm_vdwdupq_u32): Change _coerce_ overloads. - (__arm_vdwdupq_u8): Change _coerce_ overloads. - (__arm_vstrbq): Change _coerce_ overloads. - (__arm_vstrbq_p): Change _coerce_ overloads. - (__arm_vstrbq_scatter_offset_p): Change _coerce_ overloads. - (__arm_vstrdq_scatter_offset_p): Change _coerce_ overloads. - (__arm_vstrdq_scatter_offset): Change _coerce_ overloads. - (__arm_vstrdq_scatter_shifted_offset_p): Change _coerce_ overloads. - (__arm_vstrdq_scatter_shifted_offset): Change _coerce_ overloads. - -2023-05-18 Stam Markianos-Wright <stam.markianos-wright@arm.com> - - * config/arm/arm_mve.h (__arm_vbicq): Change coerce on - scalar constant. - -2023-05-18 Stam Markianos-Wright <stam.markianos-wright@arm.com> - - * config/arm/arm_mve.h (__arm_vadcq_s32): Fix arithmetic. - (__arm_vadcq_u32): Likewise. - (__arm_vadcq_m_s32): Likewise. - (__arm_vadcq_m_u32): Likewise. - (__arm_vsbcq_s32): Likewise. - (__arm_vsbcq_u32): Likewise. - (__arm_vsbcq_m_s32): Likewise. - (__arm_vsbcq_m_u32): Likewise. - * config/arm/mve.md (get_fpscr_nzcvqc): Make unspec_volatile. - -2023-05-18 Andrea Corallo <andrea.corallo@arm.com> - - * config/arm/mve.md (mve_vrndq_m_f<mode>, mve_vrev64q_f<mode>) - (mve_vrev32q_fv8hf, mve_vcvttq_f32_f16v4sf) - (mve_vcvtbq_f32_f16v4sf, mve_vcvtq_to_f_<supf><mode>) - (mve_vrev64q_<supf><mode>, mve_vcvtq_from_f_<supf><mode>) - (mve_vmovltq_<supf><mode>, mve_vmovlbq_<supf><mode>) - (mve_vcvtpq_<supf><mode>, mve_vcvtnq_<supf><mode>) - (mve_vcvtmq_<supf><mode>, mve_vcvtaq_<supf><mode>) - (mve_vmvnq_n_<supf><mode>, mve_vrev16q_<supf>v16qi) - (mve_vctp<MVE_vctp>q<MVE_vpred>, mve_vbrsrq_n_f<mode>) - (mve_vbrsrq_n_<supf><mode>, mve_vandq_f<mode>, mve_vbicq_f<mode>) - (mve_vctp<MVE_vctp>q_m<MVE_vpred>, mve_vcvtbq_f16_f32v8hf) - (mve_vcvttq_f16_f32v8hf, mve_veorq_f<mode>) - (mve_vmlaldavxq_s<mode>, mve_vmlsldavq_s<mode>) - (mve_vmlsldavxq_s<mode>, mve_vornq_f<mode>, mve_vorrq_f<mode>) - (mve_vrmlaldavhxq_sv4si, mve_vcvtq_m_to_f_<supf><mode>) - (mve_vshlcq_<supf><mode>, mve_vmvnq_m_<supf><mode>) - (mve_vpselq_<supf><mode>, mve_vcvtbq_m_f16_f32v8hf) - (mve_vcvtbq_m_f32_f16v4sf, mve_vcvttq_m_f16_f32v8hf) - (mve_vcvttq_m_f32_f16v4sf, mve_vmlaldavq_p_<supf><mode>) - (mve_vmlsldavaq_s<mode>, mve_vmlsldavaxq_s<mode>) - (mve_vmlsldavq_p_s<mode>, mve_vmlsldavxq_p_s<mode>) - (mve_vmvnq_m_n_<supf><mode>, mve_vorrq_m_n_<supf><mode>) - (mve_vpselq_f<mode>, mve_vrev32q_m_fv8hf) - (mve_vrev32q_m_<supf><mode>, mve_vrev64q_m_f<mode>) - (mve_vrmlaldavhaxq_sv4si, mve_vrmlaldavhxq_p_sv4si) - (mve_vrmlsldavhaxq_sv4si, mve_vrmlsldavhq_p_sv4si) - (mve_vrmlsldavhxq_p_sv4si, mve_vrev16q_m_<supf>v16qi) - (mve_vrmlaldavhq_p_<supf>v4si, mve_vrmlsldavhaq_sv4si) - (mve_vandq_m_<supf><mode>, mve_vbicq_m_<supf><mode>) - (mve_veorq_m_<supf><mode>, mve_vornq_m_<supf><mode>) - (mve_vorrq_m_<supf><mode>, mve_vandq_m_f<mode>) - (mve_vbicq_m_f<mode>, mve_veorq_m_f<mode>, mve_vornq_m_f<mode>) - (mve_vorrq_m_f<mode>) - (mve_vstrdq_scatter_shifted_offset_p_<supf>v2di_insn) - (mve_vstrdq_scatter_shifted_offset_<supf>v2di_insn) - (mve_vstrdq_scatter_base_wb_p_<supf>v2di) : Fix spacing and - capitalization in the emitted asm. - -2023-05-18 Andrea Corallo <andrea.corallo@arm.com> - - * config/arm/constraints.md (mve_vldrd_immediate): Move it to - predicates.md. - (Ri): Move constraint definition from predicates.md. - (Rl): Define new constraint. - * config/arm/mve.md (mve_vstrwq_scatter_base_wb_p_<supf>v4si): Add - missing constraint. - (mve_vstrwq_scatter_base_wb_p_fv4sf): Add missing Up constraint - for op 1, use mve_vstrw_immediate predicate and Rl constraint for - op 2. Fix asm output spacing. - (mve_vstrdq_scatter_base_wb_p_<supf>v2di): Add missing constraint. - * config/arm/predicates.md (Ri) Move constraint to constraints.md - (mve_vldrd_immediate): Move it from - constraints.md. - (mve_vstrw_immediate): New predicate. - -2023-05-18 Pan Li <pan2.li@intel.com> - Ju-Zhe Zhong <juzhe.zhong@rivai.ai> - Kito Cheng <kito.cheng@sifive.com> - Richard Biener <rguenther@suse.de> - Richard Sandiford <richard.sandiford@arm.com> - - * combine.cc (struct reg_stat_type): Extend machine_mode to 16 bits. - * cse.cc (struct qty_table_elem): Extend machine_mode to 16 bits - (struct table_elt): Extend machine_mode to 16 bits. - (struct set): Ditto. - * genmodes.cc (emit_mode_wider): Extend type from char to short. - (emit_mode_complex): Ditto. - (emit_mode_inner): Ditto. - (emit_class_narrowest_mode): Ditto. - * genopinit.cc (main): Extend the machine_mode limit. - * ira-int.h (struct ira_allocno): Extend machine_mode to 16 bits and - re-ordered the struct fields for padding. - * machmode.h (MACHINE_MODE_BITSIZE): New macro. - (GET_MODE_2XWIDER_MODE): Extend type from char to short. - (get_mode_alignment): Extend type from char to short. - * ree.cc (struct ext_modified): Extend machine_mode to 16 bits and - removed the ATTRIBUTE_PACKED. - * rtl-ssa/accesses.h: Extend machine_mode to 16 bits, narrow - * rtl-ssa/internals.inl (rtl_ssa::access_info): Adjust the assignment. - m_kind to 2 bits and remove m_spare. - * rtl.h (RTX_CODE_BITSIZE): New macro. - (struct rtx_def): Swap both the bit size and location between the - rtx_code and the machine_mode. - (subreg_shape::unique_id): Extend the machine_mode limit. - * rtlanal.h: Extend machine_mode to 16 bits. - * tree-core.h (struct tree_type_common): Extend machine_mode to 16 - bits and re-ordered the struct fields for padding. - (struct tree_decl_common): Extend machine_mode to 16 bits. - -2023-05-17 Jin Ma <jinma@linux.alibaba.com> - - * genrecog.cc (print_nonbool_test): Fix type error of - switch (SUBREG_BYTE (op))'. - -2023-05-17 Jin Ma <jinma@linux.alibaba.com> - - * common/config/riscv/riscv-common.cc: Remove - trailing spaces on lines. - * config/riscv/riscv.cc (riscv_legitimize_move): Likewise. - * config/riscv/riscv.h (enum reg_class): Likewise. - * config/riscv/riscv.md: Likewise. - -2023-05-17 John David Anglin <danglin@gcc.gnu.org> - - * config/pa/pa.md (clear_cache): New. - -2023-05-17 Arsen Arsenović <arsen@aarsen.me> - - * doc/extend.texi (C++ Concepts) <forall>: Remove extraneous - parenthesis. Fix misnamed index entry. - <concept>: Fix misnamed index entry. - -2023-05-17 Jivan Hakobyan <jivanhakobyan9@gmail.com> - - * config/riscv/riscv.md (*<optab><GPR:mode>3_mask): New pattern, - combined from ... - (*<optab>si3_mask, *<optab>di3_mask): Here. - (*<optab>si3_mask_1, *<optab>di3_mask_1): And here. - * config/riscv/bitmanip.md (*<bitmanip_optab><GPR:mode>3_mask): New - pattern. - (*<bitmanip_optab>si3_sext_mask): Likewise. - * config/riscv/iterators.md (shiftm1): Use const_si_mask_operand - and const_di_mask_operand. - (bitmanip_rotate): New iterator. - (bitmanip_optab): Add rotates. - * config/riscv/predicates.md (const_si_mask_operand): Renamed - from const31_operand. Generalize to handle more mask constants. - (const_di_mask_operand): Similarly. - -2023-05-17 Jakub Jelinek <jakub@redhat.com> - - PR c++/109884 - * config/i386/i386-builtin-types.def (FLOAT128): Use - float128t_type_node rather than float128_type_node. - -2023-05-17 Alexander Monakov <amonakov@ispras.ru> - - * tree-ssa-math-opts.cc (convert_mult_to_fma): Enable only for - FP_CONTRACT_FAST (no functional change). - -2023-05-17 Uros Bizjak <ubizjak@gmail.com> - - * config/i386/i386.cc (ix86_multiplication_cost): Correct - calcuation of integer vector mode costs to reflect generated - instruction sequences of different integer vector modes and - different target ABIs. - -2023-05-17 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv-opts.h (enum riscv_entity): New enum. - * config/riscv/riscv.cc (riscv_emit_mode_set): New function. - (riscv_mode_needed): Ditto. - (riscv_mode_after): Ditto. - (riscv_mode_entry): Ditto. - (riscv_mode_exit): Ditto. - (riscv_mode_priority): Ditto. - (TARGET_MODE_EMIT): New target hook. - (TARGET_MODE_NEEDED): Ditto. - (TARGET_MODE_AFTER): Ditto. - (TARGET_MODE_ENTRY): Ditto. - (TARGET_MODE_EXIT): Ditto. - (TARGET_MODE_PRIORITY): Ditto. - * config/riscv/riscv.h (OPTIMIZE_MODE_SWITCHING): Ditto. - (NUM_MODES_FOR_MODE_SWITCHING): Ditto. - * config/riscv/riscv.md: Add csrwvxrm. - * config/riscv/vector.md (rnu,rne,rdn,rod,none): New attribute. - (vxrmsi): New pattern. - -2023-05-17 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv-vector-builtins-bases.cc: Introduce rounding mode. - * config/riscv/riscv-vector-builtins-shapes.cc (struct alu_def): Ditto. - (struct narrow_alu_def): Ditto. - * config/riscv/riscv-vector-builtins.cc (function_builder::apply_predication): Ditto. - (function_expander::use_exact_insn): Ditto. - * config/riscv/riscv-vector-builtins.h (function_checker::arg_num): New function. - (function_base::has_rounding_mode_operand_p): New function. - -2023-05-17 Andrew Pinski <apinski@marvell.com> - - * tree-ssa-forwprop.cc (simplify_builtin_call): Check - against 0 instead of calling integer_zerop. - -2023-05-17 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv-vector-builtins.cc (register_vxrm): New function. - (DEF_RVV_VXRM_ENUM): New macro. - (handle_pragma_vector): Add vxrm enum register. - * config/riscv/riscv-vector-builtins.def (DEF_RVV_VXRM_ENUM): New macro. - (RNU): Ditto. - (RNE): Ditto. - (RDN): Ditto. - (ROD): Ditto. - -2023-05-17 Aldy Hernandez <aldyh@redhat.com> - - * value-range.h (Value_Range::operator=): New. - -2023-05-17 Aldy Hernandez <aldyh@redhat.com> - - * value-range.cc (vrange::operator=): Add a stub to copy - unsupported ranges. - * value-range.h (is_a <unsupported_range>): New. - (Value_Range::operator=): Support copying unsupported ranges. - -2023-05-17 Aldy Hernandez <aldyh@redhat.com> - - * data-streamer-in.cc (streamer_read_real_value): New. - (streamer_read_value_range): New. - * data-streamer-out.cc (streamer_write_real_value): New. - (streamer_write_vrange): New. - * data-streamer.h (streamer_write_vrange): New. - (streamer_read_value_range): New. - -2023-05-17 Jonathan Wakely <jwakely@redhat.com> - - PR c++/109532 - * doc/invoke.texi (Code Gen Options): Note that -fshort-enums - is ignored for a fixed underlying type. - (C++ Dialect Options): Likewise for -fstrict-enums. - -2023-05-17 Tobias Burnus <tobias@codesourcery.com> - - * gimplify.cc (gimplify_scan_omp_clauses): Remove Fortran - special case. - -2023-05-17 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com> - - * config/s390/s390.cc (TARGET_ATOMIC_ALIGN_FOR_MODE): - New. - (s390_atomic_align_for_mode): New. - -2023-05-17 Jakub Jelinek <jakub@redhat.com> - - * wide-int.cc (wi::from_array): Add missing closing paren in function - comment. - -2023-05-17 Kewen Lin <linkw@linux.ibm.com> - - * tree-vect-loop.cc (vect_analyze_loop_1): Don't retry analysis with - suggested unroll factor once the previous analysis fails. - -2023-05-17 Pan Li <pan2.li@intel.com> - - * config/riscv/genrvv-type-indexer.cc (BOOL_SIZE_LIST): New - macro. - (main): Add bool1 to the type indexer. - * config/riscv/riscv-vector-builtins-functions.def - (vreinterpret): Register vbool1 interpret function. - * config/riscv/riscv-vector-builtins-types.def - (DEF_RVV_BOOL1_INTERPRET_OPS): New macro. - (vint8m1_t): Add the type to bool1_interpret_ops. - (vint16m1_t): Ditto. - (vint32m1_t): Ditto. - (vint64m1_t): Ditto. - (vuint8m1_t): Ditto. - (vuint16m1_t): Ditto. - (vuint32m1_t): Ditto. - (vuint64m1_t): Ditto. - * config/riscv/riscv-vector-builtins.cc - (DEF_RVV_BOOL1_INTERPRET_OPS): New macro. - (required_extensions_p): Add bool1 interpret case. - * config/riscv/riscv-vector-builtins.def - (bool1_interpret): Add bool1 interpret to base type. - * config/riscv/vector.md (@vreinterpret<mode>): Add new expand - with VB dest for vreinterpret. - -2023-05-17 Jiufu Guo <guojiufu@linux.ibm.com> - - PR target/106708 - * config/rs6000/rs6000.cc (rs6000_emit_set_long_const): Support building - constants through "lis; xoris". - -2023-05-16 Ajit Kumar Agarwal <aagarwa1@linux.ibm.com> - - * common/config/rs6000/rs6000-common.cc: Add REE pass as a - default rs6000 target pass for O2 and above. - * doc/invoke.texi: Document -free - -2023-05-16 Kito Cheng <kito.cheng@sifive.com> - - * common/config/riscv/riscv-common.cc (riscv_compute_multilib): - Fix wrong select_kind... - -2023-05-16 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com> - - * config/s390/s390-protos.h (s390_expand_setmem): Change - function signature. - * config/s390/s390.cc (s390_expand_setmem): For memset's less - than or equal to 256 byte do not perform a libc call. - * config/s390/s390.md: Change expander into a version which - takes 8 operands. - -2023-05-16 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com> - - * config/s390/s390-protos.h (s390_expand_movmem): New. - * config/s390/s390.cc (s390_expand_movmem): New. - * config/s390/s390.md (movmem<mode>): New. - (*mvcrl): New. - (mvcrl): New. - -2023-05-16 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com> - - * config/s390/s390-protos.h (s390_expand_cpymem): Change - function signature. - * config/s390/s390.cc (s390_expand_cpymem): For memcpy's less - than or equal to 256 byte do not perform a libc call. - (s390_expand_insv): Adapt new function signature of - s390_expand_cpymem. - * config/s390/s390.md: Change expander into a version which - takes 8 operands. - -2023-05-16 Andrew Pinski <apinski@marvell.com> - - PR tree-optimization/109424 - * match.pd: Add patterns for min/max of zero_one_valued - values to `&`/`|`. - -2023-05-16 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv-protos.h (enum frm_field_enum): New enum. - * config/riscv/riscv-vector-builtins.cc - (function_expander::use_ternop_insn): Add default rounding mode. - (function_expander::use_widen_ternop_insn): Ditto. - * config/riscv/riscv.cc (riscv_hard_regno_nregs): Add FRM REGNUM. - (riscv_hard_regno_mode_ok): Ditto. - (riscv_conditional_register_usage): Ditto. - * config/riscv/riscv.h (DWARF_FRAME_REGNUM): Ditto. - (FRM_REG_P): Ditto. - (RISCV_DWARF_FRM): Ditto. - * config/riscv/riscv.md: Ditto. - * config/riscv/vector-iterators.md: split no frm and has frm operations. - * config/riscv/vector.md (@pred_<optab><mode>_scalar): New pattern. - (@pred_<optab><mode>): Ditto. - -2023-05-15 Aldy Hernandez <aldyh@redhat.com> - - PR tree-optimization/109695 - * value-range.cc (irange::operator=): Resize range. - (irange::union_): Same. - (irange::intersect): Same. - (irange::invert): Same. - (int_range_max): Default to 3 sub-ranges and resize as needed. - * value-range.h (irange::maybe_resize): New. - (~int_range): New. - (int_range::int_range): Adjust for resizing. - (int_range::operator=): Same. - -2023-05-15 Aldy Hernandez <aldyh@redhat.com> - - * ipa-cp.cc (ipcp_vr_lattice::meet_with_1): Avoid unnecessary - range copying - * value-range.cc (irange::union_nonzero_bits): Return TRUE only - when range changed. - -2023-05-15 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv-protos.h (enum vxrm_field_enum): New enum. - * config/riscv/riscv-vector-builtins.cc - (function_expander::use_exact_insn): Add default rounding mode operand. - * config/riscv/riscv.cc (riscv_hard_regno_nregs): Add VXRM_REGNUM. - (riscv_hard_regno_mode_ok): Ditto. - (riscv_conditional_register_usage): Ditto. - * config/riscv/riscv.h (DWARF_FRAME_REGNUM): Ditto. - (VXRM_REG_P): Ditto. - (RISCV_DWARF_VXRM): Ditto. - * config/riscv/riscv.md: Ditto. - * config/riscv/vector.md: Ditto - -2023-05-15 Pan Li <pan2.li@intel.com> - - * optabs.cc (maybe_gen_insn): Add case to generate instruction - that has 11 operands. - -2023-05-15 Kyrylo Tkachov <kyrylo.tkachov@arm.com> - - * config/aarch64/aarch64.cc (aarch64_rtx_costs, NEG case): Add costing - logic for vector modes. - -2023-05-15 Kyrylo Tkachov <kyrylo.tkachov@arm.com> - - PR target/99195 - * config/aarch64/aarch64-simd.md (aarch64_cm<optab><mode>): Rename to... - (aarch64_cm<optab><mode><vczle><vczbe>): ... This. - (aarch64_cmtst<mode>): Rename to... - (aarch64_cmtst<mode><vczle><vczbe>): ... This. - (*aarch64_cmtst_same_<mode>): Rename to... - (*aarch64_cmtst_same_<mode><vczle><vczbe>): ... This. - (*aarch64_cmtstdi): Rename to... - (*aarch64_cmtstdi<vczle><vczbe>): ... This. - (aarch64_fac<optab><mode>): Rename to... - (aarch64_fac<optab><mode><vczle><vczbe>): ... This. - -2023-05-15 Kyrylo Tkachov <kyrylo.tkachov@arm.com> - - PR target/99195 - * config/aarch64/aarch64-simd.md (aarch64_s<optab><mode>): Rename to... - (aarch64_s<optab><mode><vczle><vczbe>): ... This. - -2023-05-15 Pan Li <pan2.li@intel.com> - Juzhe-Zhong <juzhe.zhong@rivai.ai> - kito-cheng <kito.cheng@sifive.com> - - * config/riscv/riscv-v.cc (const_vlmax_p): New function for - deciding the mode is constant or not. - (set_len_and_policy): Optimize VLS-VLMAX code gen to vsetivli. - -2023-05-15 Richard Biener <rguenther@suse.de> - - PR tree-optimization/109848 - * tree-ssa-forwprop.cc (pass_forwprop::execute): Put the - TARGET_MEM_REF address preparation before the store, not - before the CTOR. - -2023-05-15 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv.cc - (riscv_vectorize_preferred_vector_alignment): New function. - (TARGET_VECTORIZE_PREFERRED_VECTOR_ALIGNMENT): New target hook. - -2023-05-14 Andrew Pinski <apinski@marvell.com> - - PR tree-optimization/109829 - * match.pd: Add pattern for `signbit(x) !=/== 0 ? x : -x`. - -2023-05-14 Uros Bizjak <ubizjak@gmail.com> - - PR target/109807 - * config/i386/i386.cc: Revert the 2023-05-11 change. - (ix86_widen_mult_cost): Return high value instead of - ICEing for unsupported modes. - -2023-05-14 Ard Biesheuvel <ardb@kernel.org> - - * config/i386/i386.cc (x86_function_profiler): Take - ix86_direct_extern_access into account when generating calls - to __fentry__() - -2023-05-14 Pan Li <pan2.li@intel.com> - - * config/riscv/riscv-vector-builtins.cc (required_extensions_p): - Refactor the or pattern to switch cases. - -2023-05-13 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org> - - * config/aarch64/aarch64.cc (aarch64_expand_vector_init_fallback): Rename - aarch64_expand_vector_init to this, and remove interleaving case. - Recursively call aarch64_expand_vector_init_fallback, instead of - aarch64_expand_vector_init. - (aarch64_unzip_vector_init): New function. - (aarch64_expand_vector_init): Likewise. - -2023-05-13 Kito Cheng <kito.cheng@sifive.com> - - * config/riscv/riscv-vsetvl.cc (pass_vsetvl::cleanup_insns): - Pull out function call from the gcc_assert. - -2023-05-13 Kito Cheng <kito.cheng@sifive.com> - - * config/riscv/riscv-vsetvl.cc (vlmul_to_str): New. - (policy_to_str): New. - (vector_insn_info::dump): Use vlmul_to_str and policy_to_str. - -2023-05-13 Andrew Pinski <apinski@marvell.com> - - PR tree-optimization/109834 - * match.pd (popcount(bswap(x))->popcount(x)): Fix up unsigned type checking. - (popcount(rotate(x,y))->popcount(x)): Likewise. - -2023-05-12 Uros Bizjak <ubizjak@gmail.com> - - * config/i386/i386-expand.cc (ix86_expand_vecop_qihi2): Also - reject ymm instructions for TARGET_PREFER_AVX128. Use generic - gen_extend_insn to generate zero/sign extension instructions. - Fix comments. - (ix86_expand_vecop_qihi): Initialize interleave functions - for MULT code only. Fix comments. - -2023-05-12 Uros Bizjak <ubizjak@gmail.com> - - PR target/109797 - * config/i386/mmx.md (mulv2si3): Remove expander. - (mulv2si3): Rename insn pattern from *mulv2si. - -2023-05-12 Tobias Burnus <tobias@codesourcery.com> - - PR libstdc++/109816 - * lto-cgraph.cc (output_symtab): Guard lto_output_toplevel_asms by - '!lto_stream_offload_p'. - -2023-05-12 Kito Cheng <kito.cheng@sifive.com> - Juzhe-Zhong <juzhe.zhong@rivai.ai> - - PR target/109743 - * config/riscv/riscv-vsetvl.cc (pass_vsetvl::get_vsetvl_at_end): New. - (local_avl_compatible_p): New. - (pass_vsetvl::local_eliminate_vsetvl_insn): Enhance local optimizations - for LCM, rewrite as a backward algorithm. - (pass_vsetvl::cleanup_insns): Use new local_eliminate_vsetvl_insn - interface, handle a BB at once. - -2023-05-12 Richard Biener <rguenther@suse.de> - - PR tree-optimization/64731 - * tree-ssa-forwprop.cc (pass_forwprop::execute): Also - handle TARGET_MEM_REF destinations of stores from vector - CTORs. - -2023-05-12 Richard Biener <rguenther@suse.de> - - PR tree-optimization/109791 - * match.pd (minus (convert ADDR_EXPR@0) (convert (pointer_plus @1 @2))): - New pattern. - (minus (convert (pointer_plus @1 @2)) (convert ADDR_EXPR@0)): - Likewise. - -2023-05-12 Christophe Lyon <christophe.lyon@arm.com> - - * config/arm/arm-mve-builtins-base.cc (vsriq): New. - * config/arm/arm-mve-builtins-base.def (vsriq): New. - * config/arm/arm-mve-builtins-base.h (vsriq): New. - * config/arm/arm-mve-builtins.cc - (function_instance::has_inactive_argument): Handle vsriq. - * config/arm/arm_mve.h (vsriq): Remove. - (vsriq_m): Remove. - (vsriq_n_u8): Remove. - (vsriq_n_s8): Remove. - (vsriq_n_u16): Remove. - (vsriq_n_s16): Remove. - (vsriq_n_u32): Remove. - (vsriq_n_s32): Remove. - (vsriq_m_n_s8): Remove. - (vsriq_m_n_u8): Remove. - (vsriq_m_n_s16): Remove. - (vsriq_m_n_u16): Remove. - (vsriq_m_n_s32): Remove. - (vsriq_m_n_u32): Remove. - (__arm_vsriq_n_u8): Remove. - (__arm_vsriq_n_s8): Remove. - (__arm_vsriq_n_u16): Remove. - (__arm_vsriq_n_s16): Remove. - (__arm_vsriq_n_u32): Remove. - (__arm_vsriq_n_s32): Remove. - (__arm_vsriq_m_n_s8): Remove. - (__arm_vsriq_m_n_u8): Remove. - (__arm_vsriq_m_n_s16): Remove. - (__arm_vsriq_m_n_u16): Remove. - (__arm_vsriq_m_n_s32): Remove. - (__arm_vsriq_m_n_u32): Remove. - (__arm_vsriq): Remove. - (__arm_vsriq_m): Remove. - -2023-05-12 Christophe Lyon <christophe.lyon@arm.com> - - * config/arm/iterators.md (mve_insn): Add vsri. - * config/arm/mve.md (mve_vsriq_n_<supf><mode>): Rename into ... - (@mve_<mve_insn>q_n_<supf><mode>): .,. this. - (mve_vsriq_m_n_<supf><mode>): Rename into ... - (@mve_<mve_insn>q_m_n_<supf><mode>): ... this. - -2023-05-12 Christophe Lyon <christophe.lyon@arm.com> - - * config/arm/arm-mve-builtins-shapes.cc (ternary_rshift): New. - * config/arm/arm-mve-builtins-shapes.h (ternary_rshift): New. - -2023-05-12 Christophe Lyon <christophe.lyon@arm.com> - - * config/arm/arm-mve-builtins-base.cc (vsliq): New. - * config/arm/arm-mve-builtins-base.def (vsliq): New. - * config/arm/arm-mve-builtins-base.h (vsliq): New. - * config/arm/arm-mve-builtins.cc - (function_instance::has_inactive_argument): Handle vsliq. - * config/arm/arm_mve.h (vsliq): Remove. - (vsliq_m): Remove. - (vsliq_n_u8): Remove. - (vsliq_n_s8): Remove. - (vsliq_n_u16): Remove. - (vsliq_n_s16): Remove. - (vsliq_n_u32): Remove. - (vsliq_n_s32): Remove. - (vsliq_m_n_s8): Remove. - (vsliq_m_n_s32): Remove. - (vsliq_m_n_s16): Remove. - (vsliq_m_n_u8): Remove. - (vsliq_m_n_u32): Remove. - (vsliq_m_n_u16): Remove. - (__arm_vsliq_n_u8): Remove. - (__arm_vsliq_n_s8): Remove. - (__arm_vsliq_n_u16): Remove. - (__arm_vsliq_n_s16): Remove. - (__arm_vsliq_n_u32): Remove. - (__arm_vsliq_n_s32): Remove. - (__arm_vsliq_m_n_s8): Remove. - (__arm_vsliq_m_n_s32): Remove. - (__arm_vsliq_m_n_s16): Remove. - (__arm_vsliq_m_n_u8): Remove. - (__arm_vsliq_m_n_u32): Remove. - (__arm_vsliq_m_n_u16): Remove. - (__arm_vsliq): Remove. - (__arm_vsliq_m): Remove. - -2023-05-12 Christophe Lyon <christophe.lyon@arm.com> - - * config/arm/iterators.md (mve_insn>): Add vsli. - * config/arm/mve.md (mve_vsliq_n_<supf><mode>): Rename into ... - (@mve_<mve_insn>q_n_<supf><mode>): ... this. - (mve_vsliq_m_n_<supf><mode>): Rename into ... - (@mve_<mve_insn>q_m_n_<supf><mode>): ... this. - -2023-05-12 Christophe Lyon <christophe.lyon@arm.com> - - * config/arm/arm-mve-builtins-shapes.cc (ternary_lshift): New. - * config/arm/arm-mve-builtins-shapes.h (ternary_lshift): New. - -2023-05-12 Christophe Lyon <christophe.lyon@arm.com> - - * config/arm/arm-mve-builtins-base.cc (vpselq): New. - * config/arm/arm-mve-builtins-base.def (vpselq): New. - * config/arm/arm-mve-builtins-base.h (vpselq): New. - * config/arm/arm_mve.h (vpselq): Remove. - (vpselq_u8): Remove. - (vpselq_s8): Remove. - (vpselq_u16): Remove. - (vpselq_s16): Remove. - (vpselq_u32): Remove. - (vpselq_s32): Remove. - (vpselq_u64): Remove. - (vpselq_s64): Remove. - (vpselq_f16): Remove. - (vpselq_f32): Remove. - (__arm_vpselq_u8): Remove. - (__arm_vpselq_s8): Remove. - (__arm_vpselq_u16): Remove. - (__arm_vpselq_s16): Remove. - (__arm_vpselq_u32): Remove. - (__arm_vpselq_s32): Remove. - (__arm_vpselq_u64): Remove. - (__arm_vpselq_s64): Remove. - (__arm_vpselq_f16): Remove. - (__arm_vpselq_f32): Remove. - (__arm_vpselq): Remove. - -2023-05-12 Christophe Lyon <christophe.lyon@arm.com> - - * config/arm/arm-mve-builtins-shapes.cc (vpsel): New. - * config/arm/arm-mve-builtins-shapes.h (vpsel): New. - -2023-05-12 Christophe Lyon <christophe.lyon@arm.com> - - * config/arm/arm.cc (arm_expand_vcond): Use gen_mve_q instead of - gen_mve_vpselq. - * config/arm/iterators.md (MVE_VPSELQ_F): New. - (mve_insn): Add vpsel. - * config/arm/mve.md (@mve_vpselq_<supf><mode>): Rename into ... - (@mve_<mve_insn>q_<supf><mode>): ... this. - (@mve_vpselq_f<mode>): Rename into ... - (@mve_<mve_insn>q_f<mode>): ... this. - -2023-05-12 Christophe Lyon <christophe.lyon@arm.com> - - * config/arm/arm-mve-builtins-base.cc (vfmaq, vfmasq, vfmsq): New. - * config/arm/arm-mve-builtins-base.def (vfmaq, vfmasq, vfmsq): New. - * config/arm/arm-mve-builtins-base.h (vfmaq, vfmasq, vfmsq): New. - * config/arm/arm-mve-builtins.cc - (function_instance::has_inactive_argument): Handle vfmaq, vfmasq, - vfmsq. - * config/arm/arm_mve.h (vfmaq): Remove. - (vfmasq): Remove. - (vfmsq): Remove. - (vfmaq_m): Remove. - (vfmasq_m): Remove. - (vfmsq_m): Remove. - (vfmaq_f16): Remove. - (vfmaq_n_f16): Remove. - (vfmasq_n_f16): Remove. - (vfmsq_f16): Remove. - (vfmaq_f32): Remove. - (vfmaq_n_f32): Remove. - (vfmasq_n_f32): Remove. - (vfmsq_f32): Remove. - (vfmaq_m_f32): Remove. - (vfmaq_m_f16): Remove. - (vfmaq_m_n_f32): Remove. - (vfmaq_m_n_f16): Remove. - (vfmasq_m_n_f32): Remove. - (vfmasq_m_n_f16): Remove. - (vfmsq_m_f32): Remove. - (vfmsq_m_f16): Remove. - (__arm_vfmaq_f16): Remove. - (__arm_vfmaq_n_f16): Remove. - (__arm_vfmasq_n_f16): Remove. - (__arm_vfmsq_f16): Remove. - (__arm_vfmaq_f32): Remove. - (__arm_vfmaq_n_f32): Remove. - (__arm_vfmasq_n_f32): Remove. - (__arm_vfmsq_f32): Remove. - (__arm_vfmaq_m_f32): Remove. - (__arm_vfmaq_m_f16): Remove. - (__arm_vfmaq_m_n_f32): Remove. - (__arm_vfmaq_m_n_f16): Remove. - (__arm_vfmasq_m_n_f32): Remove. - (__arm_vfmasq_m_n_f16): Remove. - (__arm_vfmsq_m_f32): Remove. - (__arm_vfmsq_m_f16): Remove. - (__arm_vfmaq): Remove. - (__arm_vfmasq): Remove. - (__arm_vfmsq): Remove. - (__arm_vfmaq_m): Remove. - (__arm_vfmasq_m): Remove. - (__arm_vfmsq_m): Remove. - -2023-05-12 Christophe Lyon <christophe.lyon@arm.com> - - * config/arm/iterators.md (MVE_FP_M_BINARY): Add VFMAQ_M_F, - VFMSQ_M_F. - (MVE_FP_M_N_BINARY): Add VFMAQ_M_N_F, VFMASQ_M_N_F. - (MVE_VFMxQ_F, MVE_VFMAxQ_N_F): New. - (mve_insn): Add vfma, vfmas, vfms. - * config/arm/mve.md (mve_vfmaq_f<mode>, mve_vfmsq_f<mode>): Merge - into ... - (@mve_<mve_insn>q_f<mode>): ... this. - (mve_vfmaq_n_f<mode>, mve_vfmasq_n_f<mode>): Merge into ... - (@mve_<mve_insn>q_n_f<mode>): ... this. - (mve_vfmaq_m_f<mode>, mve_vfmsq_m_f<mode>): Merge into - @mve_<mve_insn>q_m_f<mode>. - (mve_vfmaq_m_n_f<mode>, mve_vfmasq_m_n_f<mode>): Merge into - @mve_<mve_insn>q_m_n_f<mode>. - -2023-05-12 Christophe Lyon <christophe.lyon@arm.com> - - * config/arm/arm-mve-builtins-shapes.cc (ternary_opt_n): New. - * config/arm/arm-mve-builtins-shapes.h (ternary_opt_n): New. - -2023-05-12 Christophe Lyon <christophe.lyon@arm.com> - - * config/arm/arm-mve-builtins-base.cc - (FUNCTION_WITH_RTX_M_N_NO_F): New. - (vmvnq): New. - * config/arm/arm-mve-builtins-base.def (vmvnq): New. - * config/arm/arm-mve-builtins-base.h (vmvnq): New. - * config/arm/arm_mve.h (vmvnq): Remove. - (vmvnq_m): Remove. - (vmvnq_x): Remove. - (vmvnq_s8): Remove. - (vmvnq_s16): Remove. - (vmvnq_s32): Remove. - (vmvnq_n_s16): Remove. - (vmvnq_n_s32): Remove. - (vmvnq_u8): Remove. - (vmvnq_u16): Remove. - (vmvnq_u32): Remove. - (vmvnq_n_u16): Remove. - (vmvnq_n_u32): Remove. - (vmvnq_m_u8): Remove. - (vmvnq_m_s8): Remove. - (vmvnq_m_u16): Remove. - (vmvnq_m_s16): Remove. - (vmvnq_m_u32): Remove. - (vmvnq_m_s32): Remove. - (vmvnq_m_n_s16): Remove. - (vmvnq_m_n_u16): Remove. - (vmvnq_m_n_s32): Remove. - (vmvnq_m_n_u32): Remove. - (vmvnq_x_s8): Remove. - (vmvnq_x_s16): Remove. - (vmvnq_x_s32): Remove. - (vmvnq_x_u8): Remove. - (vmvnq_x_u16): Remove. - (vmvnq_x_u32): Remove. - (vmvnq_x_n_s16): Remove. - (vmvnq_x_n_s32): Remove. - (vmvnq_x_n_u16): Remove. - (vmvnq_x_n_u32): Remove. - (__arm_vmvnq_s8): Remove. - (__arm_vmvnq_s16): Remove. - (__arm_vmvnq_s32): Remove. - (__arm_vmvnq_n_s16): Remove. - (__arm_vmvnq_n_s32): Remove. - (__arm_vmvnq_u8): Remove. - (__arm_vmvnq_u16): Remove. - (__arm_vmvnq_u32): Remove. - (__arm_vmvnq_n_u16): Remove. - (__arm_vmvnq_n_u32): Remove. - (__arm_vmvnq_m_u8): Remove. - (__arm_vmvnq_m_s8): Remove. - (__arm_vmvnq_m_u16): Remove. - (__arm_vmvnq_m_s16): Remove. - (__arm_vmvnq_m_u32): Remove. - (__arm_vmvnq_m_s32): Remove. - (__arm_vmvnq_m_n_s16): Remove. - (__arm_vmvnq_m_n_u16): Remove. - (__arm_vmvnq_m_n_s32): Remove. - (__arm_vmvnq_m_n_u32): Remove. - (__arm_vmvnq_x_s8): Remove. - (__arm_vmvnq_x_s16): Remove. - (__arm_vmvnq_x_s32): Remove. - (__arm_vmvnq_x_u8): Remove. - (__arm_vmvnq_x_u16): Remove. - (__arm_vmvnq_x_u32): Remove. - (__arm_vmvnq_x_n_s16): Remove. - (__arm_vmvnq_x_n_s32): Remove. - (__arm_vmvnq_x_n_u16): Remove. - (__arm_vmvnq_x_n_u32): Remove. - (__arm_vmvnq): Remove. - (__arm_vmvnq_m): Remove. - (__arm_vmvnq_x): Remove. - -2023-05-12 Christophe Lyon <christophe.lyon@arm.com> - - * config/arm/iterators.md (mve_insn): Add vmvn. - * config/arm/mve.md (mve_vmvnq_n_<supf><mode>): Rename into ... - (@mve_<mve_insn>q_n_<supf><mode>): ... this. - (mve_vmvnq_m_<supf><mode>): Rename into ... - (@mve_<mve_insn>q_m_<supf><mode>): ... this. - (mve_vmvnq_m_n_<supf><mode>): Rename into ... - (@mve_<mve_insn>q_m_n_<supf><mode>): ... this. - -2023-05-12 Christophe Lyon <christophe.lyon@arm.com> - - * config/arm/arm-mve-builtins-shapes.cc (mvn): New. - * config/arm/arm-mve-builtins-shapes.h (mvn): New. - -2023-05-12 Christophe Lyon <christophe.lyon@arm.com> - - * config/arm/arm-mve-builtins-base.cc (vbrsrq): New. - * config/arm/arm-mve-builtins-base.def (vbrsrq): New. - * config/arm/arm-mve-builtins-base.h (vbrsrq): New. - * config/arm/arm_mve.h (vbrsrq): Remove. - (vbrsrq_m): Remove. - (vbrsrq_x): Remove. - (vbrsrq_n_f16): Remove. - (vbrsrq_n_f32): Remove. - (vbrsrq_n_u8): Remove. - (vbrsrq_n_s8): Remove. - (vbrsrq_n_u16): Remove. - (vbrsrq_n_s16): Remove. - (vbrsrq_n_u32): Remove. - (vbrsrq_n_s32): Remove. - (vbrsrq_m_n_s8): Remove. - (vbrsrq_m_n_s32): Remove. - (vbrsrq_m_n_s16): Remove. - (vbrsrq_m_n_u8): Remove. - (vbrsrq_m_n_u32): Remove. - (vbrsrq_m_n_u16): Remove. - (vbrsrq_m_n_f32): Remove. - (vbrsrq_m_n_f16): Remove. - (vbrsrq_x_n_s8): Remove. - (vbrsrq_x_n_s16): Remove. - (vbrsrq_x_n_s32): Remove. - (vbrsrq_x_n_u8): Remove. - (vbrsrq_x_n_u16): Remove. - (vbrsrq_x_n_u32): Remove. - (vbrsrq_x_n_f16): Remove. - (vbrsrq_x_n_f32): Remove. - (__arm_vbrsrq_n_u8): Remove. - (__arm_vbrsrq_n_s8): Remove. - (__arm_vbrsrq_n_u16): Remove. - (__arm_vbrsrq_n_s16): Remove. - (__arm_vbrsrq_n_u32): Remove. - (__arm_vbrsrq_n_s32): Remove. - (__arm_vbrsrq_m_n_s8): Remove. - (__arm_vbrsrq_m_n_s32): Remove. - (__arm_vbrsrq_m_n_s16): Remove. - (__arm_vbrsrq_m_n_u8): Remove. - (__arm_vbrsrq_m_n_u32): Remove. - (__arm_vbrsrq_m_n_u16): Remove. - (__arm_vbrsrq_x_n_s8): Remove. - (__arm_vbrsrq_x_n_s16): Remove. - (__arm_vbrsrq_x_n_s32): Remove. - (__arm_vbrsrq_x_n_u8): Remove. - (__arm_vbrsrq_x_n_u16): Remove. - (__arm_vbrsrq_x_n_u32): Remove. - (__arm_vbrsrq_n_f16): Remove. - (__arm_vbrsrq_n_f32): Remove. - (__arm_vbrsrq_m_n_f32): Remove. - (__arm_vbrsrq_m_n_f16): Remove. - (__arm_vbrsrq_x_n_f16): Remove. - (__arm_vbrsrq_x_n_f32): Remove. - (__arm_vbrsrq): Remove. - (__arm_vbrsrq_m): Remove. - (__arm_vbrsrq_x): Remove. - -2023-05-12 Christophe Lyon <christophe.lyon@arm.com> - - * config/arm/iterators.md (MVE_VBRSR_M_N_FP, MVE_VBRSR_N_FP): New. - (mve_insn): Add vbrsr. - * config/arm/mve.md (mve_vbrsrq_n_f<mode>): Rename into ... - (@mve_<mve_insn>q_n_f<mode>): ... this. - (mve_vbrsrq_n_<supf><mode>): Rename into ... - (@mve_<mve_insn>q_n_<supf><mode>): ... this. - (mve_vbrsrq_m_n_<supf><mode>): Rename into ... - (@mve_<mve_insn>q_m_n_<supf><mode>): ... this. - (mve_vbrsrq_m_n_f<mode>): Rename into ... - (@mve_<mve_insn>q_m_n_f<mode>): ... this. - -2023-05-12 Christophe Lyon <christophe.lyon@arm.com> - - * config/arm/arm-mve-builtins-shapes.cc (binary_imm32): New. - * config/arm/arm-mve-builtins-shapes.h (binary_imm32): New. - -2023-05-12 Christophe Lyon <christophe.lyon@arm.com> - - * config/arm/arm-mve-builtins-base.cc (vqshluq): New. - * config/arm/arm-mve-builtins-base.def (vqshluq): New. - * config/arm/arm-mve-builtins-base.h (vqshluq): New. - * config/arm/arm_mve.h (vqshluq): Remove. - (vqshluq_m): Remove. - (vqshluq_n_s8): Remove. - (vqshluq_n_s16): Remove. - (vqshluq_n_s32): Remove. - (vqshluq_m_n_s8): Remove. - (vqshluq_m_n_s16): Remove. - (vqshluq_m_n_s32): Remove. - (__arm_vqshluq_n_s8): Remove. - (__arm_vqshluq_n_s16): Remove. - (__arm_vqshluq_n_s32): Remove. - (__arm_vqshluq_m_n_s8): Remove. - (__arm_vqshluq_m_n_s16): Remove. - (__arm_vqshluq_m_n_s32): Remove. - (__arm_vqshluq): Remove. - (__arm_vqshluq_m): Remove. - -2023-05-12 Christophe Lyon <christophe.lyon@arm.com> - - * config/arm/iterators.md (mve_insn): Add vqshlu. - (supf): Add VQSHLUQ_M_N_S, VQSHLUQ_N_S. - (VQSHLUQ_M_N, VQSHLUQ_N): New. - * config/arm/mve.md (mve_vqshluq_n_s<mode>): Change name into ... - (@mve_<mve_insn>q_n_<supf><mode>): ... this. - (mve_vqshluq_m_n_s<mode>): Change name into ... - (@mve_<mve_insn>q_m_n_<supf><mode>): ... this. - -2023-05-12 Christophe Lyon <christophe.lyon@arm.com> - - * config/arm/arm-mve-builtins-shapes.cc - (binary_lshift_unsigned): New. - * config/arm/arm-mve-builtins-shapes.h - (binary_lshift_unsigned): New. - -2023-05-12 Christophe Lyon <christophe.lyon@arm.com> - - * config/arm/arm-mve-builtins-base.cc (vrmlaldavhaq) - (vrmlaldavhaxq, vrmlsldavhaq, vrmlsldavhaxq): New. - * config/arm/arm-mve-builtins-base.def (vrmlaldavhaq) - (vrmlaldavhaxq, vrmlsldavhaq, vrmlsldavhaxq): New. - * config/arm/arm-mve-builtins-base.h (vrmlaldavhaq) - (vrmlaldavhaxq, vrmlsldavhaq, vrmlsldavhaxq): New. - * config/arm/arm-mve-builtins-functions.h: Handle vrmlaldavhaq, - vrmlaldavhaxq, vrmlsldavhaq, vrmlsldavhaxq. - * config/arm/arm_mve.h (vrmlaldavhaq): Remove. - (vrmlaldavhaxq): Remove. - (vrmlsldavhaq): Remove. - (vrmlsldavhaxq): Remove. - (vrmlaldavhaq_p): Remove. - (vrmlaldavhaxq_p): Remove. - (vrmlsldavhaq_p): Remove. - (vrmlsldavhaxq_p): Remove. - (vrmlaldavhaq_s32): Remove. - (vrmlaldavhaq_u32): Remove. - (vrmlaldavhaxq_s32): Remove. - (vrmlsldavhaq_s32): Remove. - (vrmlsldavhaxq_s32): Remove. - (vrmlaldavhaq_p_s32): Remove. - (vrmlaldavhaq_p_u32): Remove. - (vrmlaldavhaxq_p_s32): Remove. - (vrmlsldavhaq_p_s32): Remove. - (vrmlsldavhaxq_p_s32): Remove. - (__arm_vrmlaldavhaq_s32): Remove. - (__arm_vrmlaldavhaq_u32): Remove. - (__arm_vrmlaldavhaxq_s32): Remove. - (__arm_vrmlsldavhaq_s32): Remove. - (__arm_vrmlsldavhaxq_s32): Remove. - (__arm_vrmlaldavhaq_p_s32): Remove. - (__arm_vrmlaldavhaq_p_u32): Remove. - (__arm_vrmlaldavhaxq_p_s32): Remove. - (__arm_vrmlsldavhaq_p_s32): Remove. - (__arm_vrmlsldavhaxq_p_s32): Remove. - (__arm_vrmlaldavhaq): Remove. - (__arm_vrmlaldavhaxq): Remove. - (__arm_vrmlsldavhaq): Remove. - (__arm_vrmlsldavhaxq): Remove. - (__arm_vrmlaldavhaq_p): Remove. - (__arm_vrmlaldavhaxq_p): Remove. - (__arm_vrmlsldavhaq_p): Remove. - (__arm_vrmlsldavhaxq_p): Remove. - -2023-05-12 Christophe Lyon <christophe.lyon@arm.com> - - * config/arm/iterators.md (MVE_VRMLxLDAVHAxQ) - (MVE_VRMLxLDAVHAxQ_P): New. - (mve_insn): Add vrmlaldavha, vrmlaldavhax, vrmlsldavha, - vrmlsldavhax. - (supf): Add VRMLALDAVHAXQ_P_S, VRMLALDAVHAXQ_S, VRMLSLDAVHAQ_P_S, - VRMLSLDAVHAQ_S, VRMLSLDAVHAXQ_P_S, VRMLSLDAVHAXQ_S, - VRMLALDAVHAQ_P_S. - * config/arm/mve.md (mve_vrmlaldavhaq_<supf>v4si) - (mve_vrmlaldavhaxq_sv4si, mve_vrmlsldavhaxq_sv4si) - (mve_vrmlsldavhaq_sv4si): Merge into ... - (@mve_<mve_insn>q_<supf>v4si): ... this. - (mve_vrmlaldavhaq_p_sv4si, mve_vrmlaldavhaq_p_uv4si) - (mve_vrmlaldavhaxq_p_sv4si, mve_vrmlsldavhaq_p_sv4si) - (mve_vrmlsldavhaxq_p_sv4si): Merge into ... - (@mve_<mve_insn>q_p_<supf>v4si): ... this. - -2023-05-12 Christophe Lyon <christophe.lyon@arm.com> - - * config/arm/arm-mve-builtins-base.cc (vqdmullbq, vqdmulltq): New. - * config/arm/arm-mve-builtins-base.def (vqdmullbq, vqdmulltq): - New. - * config/arm/arm-mve-builtins-base.h (vqdmullbq, vqdmulltq): New. - * config/arm/arm_mve.h (vqdmulltq): Remove. - (vqdmullbq): Remove. - (vqdmullbq_m): Remove. - (vqdmulltq_m): Remove. - (vqdmulltq_s16): Remove. - (vqdmulltq_n_s16): Remove. - (vqdmullbq_s16): Remove. - (vqdmullbq_n_s16): Remove. - (vqdmulltq_s32): Remove. - (vqdmulltq_n_s32): Remove. - (vqdmullbq_s32): Remove. - (vqdmullbq_n_s32): Remove. - (vqdmullbq_m_n_s32): Remove. - (vqdmullbq_m_n_s16): Remove. - (vqdmullbq_m_s32): Remove. - (vqdmullbq_m_s16): Remove. - (vqdmulltq_m_n_s32): Remove. - (vqdmulltq_m_n_s16): Remove. - (vqdmulltq_m_s32): Remove. - (vqdmulltq_m_s16): Remove. - (__arm_vqdmulltq_s16): Remove. - (__arm_vqdmulltq_n_s16): Remove. - (__arm_vqdmullbq_s16): Remove. - (__arm_vqdmullbq_n_s16): Remove. - (__arm_vqdmulltq_s32): Remove. - (__arm_vqdmulltq_n_s32): Remove. - (__arm_vqdmullbq_s32): Remove. - (__arm_vqdmullbq_n_s32): Remove. - (__arm_vqdmullbq_m_n_s32): Remove. - (__arm_vqdmullbq_m_n_s16): Remove. - (__arm_vqdmullbq_m_s32): Remove. - (__arm_vqdmullbq_m_s16): Remove. - (__arm_vqdmulltq_m_n_s32): Remove. - (__arm_vqdmulltq_m_n_s16): Remove. - (__arm_vqdmulltq_m_s32): Remove. - (__arm_vqdmulltq_m_s16): Remove. - (__arm_vqdmulltq): Remove. - (__arm_vqdmullbq): Remove. - (__arm_vqdmullbq_m): Remove. - (__arm_vqdmulltq_m): Remove. - -2023-05-12 Christophe Lyon <christophe.lyon@arm.com> - - * config/arm/iterators.md (MVE_VQDMULLxQ, MVE_VQDMULLxQ_M) - (MVE_VQDMULLxQ_M_N, MVE_VQDMULLxQ_N): New. - (mve_insn): Add vqdmullb, vqdmullt. - (supf): Add VQDMULLBQ_S, VQDMULLBQ_M_S, VQDMULLBQ_M_N_S, - VQDMULLBQ_N_S, VQDMULLTQ_S, VQDMULLTQ_M_S, VQDMULLTQ_M_N_S, - VQDMULLTQ_N_S. - * config/arm/mve.md (mve_vqdmullbq_n_s<mode>) - (mve_vqdmulltq_n_s<mode>): Merge into ... - (@mve_<mve_insn>q_n_<supf><mode>): ... this. - (mve_vqdmullbq_s<mode>, mve_vqdmulltq_s<mode>): Merge into ... - (@mve_<mve_insn>q_<supf><mode>): ... this. - (mve_vqdmullbq_m_n_s<mode>, mve_vqdmulltq_m_n_s<mode>): Merge into - ... - (@mve_<mve_insn>q_m_n_<supf><mode>): ... this. - (mve_vqdmullbq_m_s<mode>, mve_vqdmulltq_m_s<mode>): Merge into ... - (@mve_<mve_insn>q_m_<supf><mode>): ... this. - -2023-05-12 Christophe Lyon <christophe.lyon@arm.com> - - * config/arm/arm-mve-builtins-shapes.cc (binary_widen_opt_n): New. - * config/arm/arm-mve-builtins-shapes.h (binary_widen_opt_n): New. - -2023-05-12 Kito Cheng <kito.cheng@sifive.com> - - * common/config/riscv/riscv-common.cc (riscv_select_multilib_by_abi): - Drop unused parameter. - (riscv_select_multilib): Ditto. - (riscv_compute_multilib): Update call site of - riscv_select_multilib_by_abi and riscv_select_multilib_by_abi. - -2023-05-12 Juzhe Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/autovec.md (vec_init<mode><vel>): New pattern. - * config/riscv/riscv-protos.h (expand_vec_init): New function. - * config/riscv/riscv-v.cc (class rvv_builder): New class. - (rvv_builder::can_duplicate_repeating_sequence_p): New function. - (rvv_builder::get_merged_repeating_sequence): Ditto. - (expand_vector_init_insert_elems): Ditto. - (expand_vec_init): Ditto. - * config/riscv/vector-iterators.md: New attribute. - -2023-05-12 Haochen Gui <guihaoc@gcc.gnu.org> - - * config/rs6000/rs6000-builtins.def - (__builtin_vsx_scalar_insert_exp): Replace bif-pattern from xsiexpdp - to xsiexpdp_di. - (__builtin_vsx_scalar_insert_exp_dp): Replace bif-pattern from - xsiexpdpf to xsiexpdpf_di. - * config/rs6000/vsx.md (xsiexpdp): Rename to... - (xsiexpdp_<mode>): ..., set the mode of second operand to GPR and - replace TARGET_64BIT with TARGET_POWERPC64. - (xsiexpdpf): Rename to... - (xsiexpdpf_<mode>): ..., set the mode of second operand to GPR and - replace TARGET_64BIT with TARGET_POWERPC64. - -2023-05-12 Haochen Gui <guihaoc@gcc.gnu.org> - - * config/rs6000/rs6000-builtins.def - (__builtin_vsx_scalar_extract_sig): Set return type to const signed - long long. - * config/rs6000/vsx.md (xsxsigdp): Replace TARGET_64BIT with - TARGET_POWERPC64. - -2023-05-12 Haochen Gui <guihaoc@gcc.gnu.org> - - * config/rs6000/rs6000-builtins.def - (__builtin_vsx_scalar_extract_exp): Set return type to const signed - int and set its bif-pattern to xsxexpdp_si, move it from power9-64 - to power9 catalog. - * config/rs6000/vsx.md (xsxexpdp): Rename to ... - (xsxexpdp_<mode>): ..., set mode of operand 0 to GPR and remove - TARGET_64BIT check. - * doc/extend.texi (scalar_extract_exp): Remove 64-bit environment - requirement when it has a 64-bit argument. - -2023-05-12 Pan Li <pan2.li@intel.com> - Richard Sandiford <richard.sandiford@arm.com> - Richard Biener <rguenther@suse.de> - Jakub Jelinek <jakub@redhat.com> - - * mux-utils.h: Add overload operator == and != for pointer_mux. - * var-tracking.cc: Included mux-utils.h for pointer_tmux. - (decl_or_value): Changed from void * to pointer_mux<tree_node, rtx_def>. - (dv_is_decl_p): Reconciled to the new type, aka pointer_mux. - (dv_as_decl): Ditto. - (dv_as_opaque): Removed due to unnecessary. - (struct variable_hasher): Take decl_or_value as compare_type. - (variable_hasher::equal): Diito. - (dv_from_decl): Reconciled to the new type, aka pointer_mux. - (dv_from_value): Ditto. - (attrs_list_member): Ditto. - (vars_copy): Ditto. - (var_reg_decl_set): Ditto. - (var_reg_delete_and_set): Ditto. - (find_loc_in_1pdv): Ditto. - (canonicalize_values_star): Ditto. - (variable_post_merge_new_vals): Ditto. - (dump_onepart_variable_differences): Ditto. - (variable_different_p): Ditto. - (set_slot_part): Ditto. - (clobber_slot_part): Ditto. - (clobber_variable_part): Ditto. - -2023-05-11 mtsamis <manolis.tsamis@vrull.eu> - - * match.pd: simplify vector shift + bit_and + multiply. - -2023-05-11 Christophe Lyon <christophe.lyon@arm.com> - - * config/arm/arm-mve-builtins-base.cc (vmlaq, vmlasq, vqdmlahq) - (vqdmlashq, vqrdmlahq, vqrdmlashq): New. - * config/arm/arm-mve-builtins-base.def (vmlaq, vmlasq, vqdmlahq) - (vqdmlashq, vqrdmlahq, vqrdmlashq): New. - * config/arm/arm-mve-builtins-base.h (vmlaq, vmlasq, vqdmlahq) - (vqdmlashq, vqrdmlahq, vqrdmlashq): New. - * config/arm/arm-mve-builtins.cc - (function_instance::has_inactive_argument): Handle vmlaq, vmlasq, - vqdmlahq, vqdmlashq, vqrdmlahq, vqrdmlashq. - * config/arm/arm_mve.h (vqrdmlashq): Remove. - (vqrdmlahq): Remove. - (vqdmlashq): Remove. - (vqdmlahq): Remove. - (vmlasq): Remove. - (vmlaq): Remove. - (vmlaq_m): Remove. - (vmlasq_m): Remove. - (vqdmlashq_m): Remove. - (vqdmlahq_m): Remove. - (vqrdmlahq_m): Remove. - (vqrdmlashq_m): Remove. - (vmlasq_n_u8): Remove. - (vmlaq_n_u8): Remove. - (vqrdmlashq_n_s8): Remove. - (vqrdmlahq_n_s8): Remove. - (vqdmlahq_n_s8): Remove. - (vqdmlashq_n_s8): Remove. - (vmlasq_n_s8): Remove. - (vmlaq_n_s8): Remove. - (vmlasq_n_u16): Remove. - (vmlaq_n_u16): Remove. - (vqrdmlashq_n_s16): Remove. - (vqrdmlahq_n_s16): Remove. - (vqdmlashq_n_s16): Remove. - (vqdmlahq_n_s16): Remove. - (vmlasq_n_s16): Remove. - (vmlaq_n_s16): Remove. - (vmlasq_n_u32): Remove. - (vmlaq_n_u32): Remove. - (vqrdmlashq_n_s32): Remove. - (vqrdmlahq_n_s32): Remove. - (vqdmlashq_n_s32): Remove. - (vqdmlahq_n_s32): Remove. - (vmlasq_n_s32): Remove. - (vmlaq_n_s32): Remove. - (vmlaq_m_n_s8): Remove. - (vmlaq_m_n_s32): Remove. - (vmlaq_m_n_s16): Remove. - (vmlaq_m_n_u8): Remove. - (vmlaq_m_n_u32): Remove. - (vmlaq_m_n_u16): Remove. - (vmlasq_m_n_s8): Remove. - (vmlasq_m_n_s32): Remove. - (vmlasq_m_n_s16): Remove. - (vmlasq_m_n_u8): Remove. - (vmlasq_m_n_u32): Remove. - (vmlasq_m_n_u16): Remove. - (vqdmlashq_m_n_s8): Remove. - (vqdmlashq_m_n_s32): Remove. - (vqdmlashq_m_n_s16): Remove. - (vqdmlahq_m_n_s8): Remove. - (vqdmlahq_m_n_s32): Remove. - (vqdmlahq_m_n_s16): Remove. - (vqrdmlahq_m_n_s8): Remove. - (vqrdmlahq_m_n_s32): Remove. - (vqrdmlahq_m_n_s16): Remove. - (vqrdmlashq_m_n_s8): Remove. - (vqrdmlashq_m_n_s32): Remove. - (vqrdmlashq_m_n_s16): Remove. - (__arm_vmlasq_n_u8): Remove. - (__arm_vmlaq_n_u8): Remove. - (__arm_vqrdmlashq_n_s8): Remove. - (__arm_vqdmlashq_n_s8): Remove. - (__arm_vqrdmlahq_n_s8): Remove. - (__arm_vqdmlahq_n_s8): Remove. - (__arm_vmlasq_n_s8): Remove. - (__arm_vmlaq_n_s8): Remove. - (__arm_vmlasq_n_u16): Remove. - (__arm_vmlaq_n_u16): Remove. - (__arm_vqrdmlashq_n_s16): Remove. - (__arm_vqdmlashq_n_s16): Remove. - (__arm_vqrdmlahq_n_s16): Remove. - (__arm_vqdmlahq_n_s16): Remove. - (__arm_vmlasq_n_s16): Remove. - (__arm_vmlaq_n_s16): Remove. - (__arm_vmlasq_n_u32): Remove. - (__arm_vmlaq_n_u32): Remove. - (__arm_vqrdmlashq_n_s32): Remove. - (__arm_vqdmlashq_n_s32): Remove. - (__arm_vqrdmlahq_n_s32): Remove. - (__arm_vqdmlahq_n_s32): Remove. - (__arm_vmlasq_n_s32): Remove. - (__arm_vmlaq_n_s32): Remove. - (__arm_vmlaq_m_n_s8): Remove. - (__arm_vmlaq_m_n_s32): Remove. - (__arm_vmlaq_m_n_s16): Remove. - (__arm_vmlaq_m_n_u8): Remove. - (__arm_vmlaq_m_n_u32): Remove. - (__arm_vmlaq_m_n_u16): Remove. - (__arm_vmlasq_m_n_s8): Remove. - (__arm_vmlasq_m_n_s32): Remove. - (__arm_vmlasq_m_n_s16): Remove. - (__arm_vmlasq_m_n_u8): Remove. - (__arm_vmlasq_m_n_u32): Remove. - (__arm_vmlasq_m_n_u16): Remove. - (__arm_vqdmlahq_m_n_s8): Remove. - (__arm_vqdmlahq_m_n_s32): Remove. - (__arm_vqdmlahq_m_n_s16): Remove. - (__arm_vqrdmlahq_m_n_s8): Remove. - (__arm_vqrdmlahq_m_n_s32): Remove. - (__arm_vqrdmlahq_m_n_s16): Remove. - (__arm_vqrdmlashq_m_n_s8): Remove. - (__arm_vqrdmlashq_m_n_s32): Remove. - (__arm_vqrdmlashq_m_n_s16): Remove. - (__arm_vqdmlashq_m_n_s8): Remove. - (__arm_vqdmlashq_m_n_s16): Remove. - (__arm_vqdmlashq_m_n_s32): Remove. - (__arm_vmlasq): Remove. - (__arm_vmlaq): Remove. - (__arm_vqrdmlashq): Remove. - (__arm_vqdmlashq): Remove. - (__arm_vqrdmlahq): Remove. - (__arm_vqdmlahq): Remove. - (__arm_vmlaq_m): Remove. - (__arm_vmlasq_m): Remove. - (__arm_vqdmlahq_m): Remove. - (__arm_vqrdmlahq_m): Remove. - (__arm_vqrdmlashq_m): Remove. - (__arm_vqdmlashq_m): Remove. - -2023-05-11 Christophe Lyon <christophe.lyon@arm.com> - - * config/arm/iterators.md (MVE_VMLxQ_N): New. - (mve_insn): Add vmla, vmlas, vqdmlah, vqdmlash, vqrdmlah, - vqrdmlash. - (supf): Add VQDMLAHQ_N_S, VQDMLASHQ_N_S, VQRDMLAHQ_N_S, - VQRDMLASHQ_N_S. - * config/arm/mve.md (mve_vmlaq_n_<supf><mode>) - (mve_vmlasq_n_<supf><mode>, mve_vqdmlahq_n_<supf><mode>) - (mve_vqdmlashq_n_<supf><mode>, mve_vqrdmlahq_n_<supf><mode>) - (mve_vqrdmlashq_n_<supf><mode>): Merge into ... - (@mve_<mve_insn>q_n_<supf><mode>): ... this. - -2023-05-11 Christophe Lyon <christophe.lyon@arm.com> - - * config/arm/arm-mve-builtins-shapes.cc (ternary_n): New. - * config/arm/arm-mve-builtins-shapes.h (ternary_n): New. - -2023-05-11 Christophe Lyon <christophe.lyon@arm.com> - - * config/arm/arm-mve-builtins-base.cc (vqdmladhq, vqdmladhxq) - (vqdmlsdhq, vqdmlsdhxq, vqrdmladhq, vqrdmladhxq, vqrdmlsdhq) - (vqrdmlsdhxq): New. - * config/arm/arm-mve-builtins-base.def (vqdmladhq, vqdmladhxq) - (vqdmlsdhq, vqdmlsdhxq, vqrdmladhq, vqrdmladhxq, vqrdmlsdhq) - (vqrdmlsdhxq): New. - * config/arm/arm-mve-builtins-base.h (vqdmladhq, vqdmladhxq) - (vqdmlsdhq, vqdmlsdhxq, vqrdmladhq, vqrdmladhxq, vqrdmlsdhq) - (vqrdmlsdhxq): New. - * config/arm/arm-mve-builtins.cc - (function_instance::has_inactive_argument): Handle vqrdmladhq, - vqrdmladhxq, vqrdmlsdhq, vqrdmlsdhxq vqdmladhq, vqdmladhxq, - vqdmlsdhq, vqdmlsdhxq. - * config/arm/arm_mve.h (vqrdmlsdhxq): Remove. - (vqrdmlsdhq): Remove. - (vqrdmladhxq): Remove. - (vqrdmladhq): Remove. - (vqdmlsdhxq): Remove. - (vqdmlsdhq): Remove. - (vqdmladhxq): Remove. - (vqdmladhq): Remove. - (vqdmladhq_m): Remove. - (vqdmladhxq_m): Remove. - (vqdmlsdhq_m): Remove. - (vqdmlsdhxq_m): Remove. - (vqrdmladhq_m): Remove. - (vqrdmladhxq_m): Remove. - (vqrdmlsdhq_m): Remove. - (vqrdmlsdhxq_m): Remove. - (vqrdmlsdhxq_s8): Remove. - (vqrdmlsdhq_s8): Remove. - (vqrdmladhxq_s8): Remove. - (vqrdmladhq_s8): Remove. - (vqdmlsdhxq_s8): Remove. - (vqdmlsdhq_s8): Remove. - (vqdmladhxq_s8): Remove. - (vqdmladhq_s8): Remove. - (vqrdmlsdhxq_s16): Remove. - (vqrdmlsdhq_s16): Remove. - (vqrdmladhxq_s16): Remove. - (vqrdmladhq_s16): Remove. - (vqdmlsdhxq_s16): Remove. - (vqdmlsdhq_s16): Remove. - (vqdmladhxq_s16): Remove. - (vqdmladhq_s16): Remove. - (vqrdmlsdhxq_s32): Remove. - (vqrdmlsdhq_s32): Remove. - (vqrdmladhxq_s32): Remove. - (vqrdmladhq_s32): Remove. - (vqdmlsdhxq_s32): Remove. - (vqdmlsdhq_s32): Remove. - (vqdmladhxq_s32): Remove. - (vqdmladhq_s32): Remove. - (vqdmladhq_m_s8): Remove. - (vqdmladhq_m_s32): Remove. - (vqdmladhq_m_s16): Remove. - (vqdmladhxq_m_s8): Remove. - (vqdmladhxq_m_s32): Remove. - (vqdmladhxq_m_s16): Remove. - (vqdmlsdhq_m_s8): Remove. - (vqdmlsdhq_m_s32): Remove. - (vqdmlsdhq_m_s16): Remove. - (vqdmlsdhxq_m_s8): Remove. - (vqdmlsdhxq_m_s32): Remove. - (vqdmlsdhxq_m_s16): Remove. - (vqrdmladhq_m_s8): Remove. - (vqrdmladhq_m_s32): Remove. - (vqrdmladhq_m_s16): Remove. - (vqrdmladhxq_m_s8): Remove. - (vqrdmladhxq_m_s32): Remove. - (vqrdmladhxq_m_s16): Remove. - (vqrdmlsdhq_m_s8): Remove. - (vqrdmlsdhq_m_s32): Remove. - (vqrdmlsdhq_m_s16): Remove. - (vqrdmlsdhxq_m_s8): Remove. - (vqrdmlsdhxq_m_s32): Remove. - (vqrdmlsdhxq_m_s16): Remove. - (__arm_vqrdmlsdhxq_s8): Remove. - (__arm_vqrdmlsdhq_s8): Remove. - (__arm_vqrdmladhxq_s8): Remove. - (__arm_vqrdmladhq_s8): Remove. - (__arm_vqdmlsdhxq_s8): Remove. - (__arm_vqdmlsdhq_s8): Remove. - (__arm_vqdmladhxq_s8): Remove. - (__arm_vqdmladhq_s8): Remove. - (__arm_vqrdmlsdhxq_s16): Remove. - (__arm_vqrdmlsdhq_s16): Remove. - (__arm_vqrdmladhxq_s16): Remove. - (__arm_vqrdmladhq_s16): Remove. - (__arm_vqdmlsdhxq_s16): Remove. - (__arm_vqdmlsdhq_s16): Remove. - (__arm_vqdmladhxq_s16): Remove. - (__arm_vqdmladhq_s16): Remove. - (__arm_vqrdmlsdhxq_s32): Remove. - (__arm_vqrdmlsdhq_s32): Remove. - (__arm_vqrdmladhxq_s32): Remove. - (__arm_vqrdmladhq_s32): Remove. - (__arm_vqdmlsdhxq_s32): Remove. - (__arm_vqdmlsdhq_s32): Remove. - (__arm_vqdmladhxq_s32): Remove. - (__arm_vqdmladhq_s32): Remove. - (__arm_vqdmladhq_m_s8): Remove. - (__arm_vqdmladhq_m_s32): Remove. - (__arm_vqdmladhq_m_s16): Remove. - (__arm_vqdmladhxq_m_s8): Remove. - (__arm_vqdmladhxq_m_s32): Remove. - (__arm_vqdmladhxq_m_s16): Remove. - (__arm_vqdmlsdhq_m_s8): Remove. - (__arm_vqdmlsdhq_m_s32): Remove. - (__arm_vqdmlsdhq_m_s16): Remove. - (__arm_vqdmlsdhxq_m_s8): Remove. - (__arm_vqdmlsdhxq_m_s32): Remove. - (__arm_vqdmlsdhxq_m_s16): Remove. - (__arm_vqrdmladhq_m_s8): Remove. - (__arm_vqrdmladhq_m_s32): Remove. - (__arm_vqrdmladhq_m_s16): Remove. - (__arm_vqrdmladhxq_m_s8): Remove. - (__arm_vqrdmladhxq_m_s32): Remove. - (__arm_vqrdmladhxq_m_s16): Remove. - (__arm_vqrdmlsdhq_m_s8): Remove. - (__arm_vqrdmlsdhq_m_s32): Remove. - (__arm_vqrdmlsdhq_m_s16): Remove. - (__arm_vqrdmlsdhxq_m_s8): Remove. - (__arm_vqrdmlsdhxq_m_s32): Remove. - (__arm_vqrdmlsdhxq_m_s16): Remove. - (__arm_vqrdmlsdhxq): Remove. - (__arm_vqrdmlsdhq): Remove. - (__arm_vqrdmladhxq): Remove. - (__arm_vqrdmladhq): Remove. - (__arm_vqdmlsdhxq): Remove. - (__arm_vqdmlsdhq): Remove. - (__arm_vqdmladhxq): Remove. - (__arm_vqdmladhq): Remove. - (__arm_vqdmladhq_m): Remove. - (__arm_vqdmladhxq_m): Remove. - (__arm_vqdmlsdhq_m): Remove. - (__arm_vqdmlsdhxq_m): Remove. - (__arm_vqrdmladhq_m): Remove. - (__arm_vqrdmladhxq_m): Remove. - (__arm_vqrdmlsdhq_m): Remove. - (__arm_vqrdmlsdhxq_m): Remove. - -2023-05-11 Christophe Lyon <christophe.lyon@arm.com> - - * config/arm/iterators.md (MVE_VQxDMLxDHxQ_S): New. - (mve_insn): Add vqdmladh, vqdmladhx, vqdmlsdh, vqdmlsdhx, - vqrdmladh, vqrdmladhx, vqrdmlsdh, vqrdmlsdhx. - (supf): Add VQDMLADHQ_S, VQDMLADHXQ_S, VQDMLSDHQ_S, VQDMLSDHXQ_S, - VQRDMLADHQ_S,VQRDMLADHXQ_S, VQRDMLSDHQ_S, VQRDMLSDHXQ_S. - * config/arm/mve.md (mve_vqrdmladhq_s<mode>) - (mve_vqrdmladhxq_s<mode>, mve_vqrdmlsdhq_s<mode>) - (mve_vqrdmlsdhxq_s<mode>, mve_vqdmlsdhxq_s<mode>) - (mve_vqdmlsdhq_s<mode>, mve_vqdmladhxq_s<mode>) - (mve_vqdmladhq_s<mode>): Merge into ... - (@mve_<mve_insn>q_<supf><mode>): ... this. - -2023-05-11 Christophe Lyon <christophe.lyon@arm.com> - - * config/arm/arm-mve-builtins-shapes.cc (ternary): New. - * config/arm/arm-mve-builtins-shapes.h (ternary): New. - -2023-05-11 Christophe Lyon <christophe.lyon@arm.com> - - * config/arm/arm-mve-builtins-base.cc (vmlaldavaq, vmlaldavaxq) - (vmlsldavaq, vmlsldavaxq): New. - * config/arm/arm-mve-builtins-base.def (vmlaldavaq, vmlaldavaxq) - (vmlsldavaq, vmlsldavaxq): New. - * config/arm/arm-mve-builtins-base.h (vmlaldavaq, vmlaldavaxq) - (vmlsldavaq, vmlsldavaxq): New. - * config/arm/arm_mve.h (vmlaldavaq): Remove. - (vmlaldavaxq): Remove. - (vmlsldavaq): Remove. - (vmlsldavaxq): Remove. - (vmlaldavaq_p): Remove. - (vmlaldavaxq_p): Remove. - (vmlsldavaq_p): Remove. - (vmlsldavaxq_p): Remove. - (vmlaldavaq_s16): Remove. - (vmlaldavaxq_s16): Remove. - (vmlsldavaq_s16): Remove. - (vmlsldavaxq_s16): Remove. - (vmlaldavaq_u16): Remove. - (vmlaldavaq_s32): Remove. - (vmlaldavaxq_s32): Remove. - (vmlsldavaq_s32): Remove. - (vmlsldavaxq_s32): Remove. - (vmlaldavaq_u32): Remove. - (vmlaldavaq_p_s32): Remove. - (vmlaldavaq_p_s16): Remove. - (vmlaldavaq_p_u32): Remove. - (vmlaldavaq_p_u16): Remove. - (vmlaldavaxq_p_s32): Remove. - (vmlaldavaxq_p_s16): Remove. - (vmlsldavaq_p_s32): Remove. - (vmlsldavaq_p_s16): Remove. - (vmlsldavaxq_p_s32): Remove. - (vmlsldavaxq_p_s16): Remove. - (__arm_vmlaldavaq_s16): Remove. - (__arm_vmlaldavaxq_s16): Remove. - (__arm_vmlsldavaq_s16): Remove. - (__arm_vmlsldavaxq_s16): Remove. - (__arm_vmlaldavaq_u16): Remove. - (__arm_vmlaldavaq_s32): Remove. - (__arm_vmlaldavaxq_s32): Remove. - (__arm_vmlsldavaq_s32): Remove. - (__arm_vmlsldavaxq_s32): Remove. - (__arm_vmlaldavaq_u32): Remove. - (__arm_vmlaldavaq_p_s32): Remove. - (__arm_vmlaldavaq_p_s16): Remove. - (__arm_vmlaldavaq_p_u32): Remove. - (__arm_vmlaldavaq_p_u16): Remove. - (__arm_vmlaldavaxq_p_s32): Remove. - (__arm_vmlaldavaxq_p_s16): Remove. - (__arm_vmlsldavaq_p_s32): Remove. - (__arm_vmlsldavaq_p_s16): Remove. - (__arm_vmlsldavaxq_p_s32): Remove. - (__arm_vmlsldavaxq_p_s16): Remove. - (__arm_vmlaldavaq): Remove. - (__arm_vmlaldavaxq): Remove. - (__arm_vmlsldavaq): Remove. - (__arm_vmlsldavaxq): Remove. - (__arm_vmlaldavaq_p): Remove. - (__arm_vmlaldavaxq_p): Remove. - (__arm_vmlsldavaq_p): Remove. - (__arm_vmlsldavaxq_p): Remove. - -2023-05-11 Christophe Lyon <christophe.lyon@arm.com> - - * config/arm/iterators.md (MVE_VMLxLDAVAxQ, MVE_VMLxLDAVAxQ_P): - New. - (mve_insn): Add vmlaldava, vmlaldavax, vmlsldava, vmlsldavax. - (supf): Add VMLALDAVAXQ_P_S, VMLALDAVAXQ_S, VMLSLDAVAQ_P_S, - VMLSLDAVAQ_S, VMLSLDAVAXQ_P_S, VMLSLDAVAXQ_S. - * config/arm/mve.md (mve_vmlaldavaq_<supf><mode>) - (mve_vmlsldavaq_s<mode>, mve_vmlsldavaxq_s<mode>) - (mve_vmlaldavaxq_s<mode>): Merge into ... - (@mve_<mve_insn>q_<supf><mode>): ... this. - (mve_vmlaldavaq_p_<supf><mode>, mve_vmlaldavaxq_p_<supf><mode>) - (mve_vmlsldavaq_p_s<mode>, mve_vmlsldavaxq_p_s<mode>): Merge into - ... - (@mve_<mve_insn>q_p_<supf><mode>): ... this. - -2023-05-11 Christophe Lyon <christophe.lyon@arm.com> - - * config/arm/arm-mve-builtins-shapes.cc (binary_acca_int64): New. - * config/arm/arm-mve-builtins-shapes.h (binary_acca_int64): New. - -2023-05-11 Christophe Lyon <christophe.lyon@arm.com> - - * config/arm/arm-mve-builtins-base.cc (vrmlaldavhq, vrmlaldavhxq) - (vrmlsldavhq, vrmlsldavhxq): New. - * config/arm/arm-mve-builtins-base.def (vrmlaldavhq, vrmlaldavhxq) - (vrmlsldavhq, vrmlsldavhxq): New. - * config/arm/arm-mve-builtins-base.h (vrmlaldavhq, vrmlaldavhxq) - (vrmlsldavhq, vrmlsldavhxq): New. - * config/arm/arm-mve-builtins-functions.h - (unspec_mve_function_exact_insn_pred_p): Handle vrmlaldavhq, - vrmlaldavhxq, vrmlsldavhq, vrmlsldavhxq. - * config/arm/arm_mve.h (vrmlaldavhq): Remove. - (vrmlsldavhxq): Remove. - (vrmlsldavhq): Remove. - (vrmlaldavhxq): Remove. - (vrmlaldavhq_p): Remove. - (vrmlaldavhxq_p): Remove. - (vrmlsldavhq_p): Remove. - (vrmlsldavhxq_p): Remove. - (vrmlaldavhq_u32): Remove. - (vrmlsldavhxq_s32): Remove. - (vrmlsldavhq_s32): Remove. - (vrmlaldavhxq_s32): Remove. - (vrmlaldavhq_s32): Remove. - (vrmlaldavhq_p_s32): Remove. - (vrmlaldavhxq_p_s32): Remove. - (vrmlsldavhq_p_s32): Remove. - (vrmlsldavhxq_p_s32): Remove. - (vrmlaldavhq_p_u32): Remove. - (__arm_vrmlaldavhq_u32): Remove. - (__arm_vrmlsldavhxq_s32): Remove. - (__arm_vrmlsldavhq_s32): Remove. - (__arm_vrmlaldavhxq_s32): Remove. - (__arm_vrmlaldavhq_s32): Remove. - (__arm_vrmlaldavhq_p_s32): Remove. - (__arm_vrmlaldavhxq_p_s32): Remove. - (__arm_vrmlsldavhq_p_s32): Remove. - (__arm_vrmlsldavhxq_p_s32): Remove. - (__arm_vrmlaldavhq_p_u32): Remove. - (__arm_vrmlaldavhq): Remove. - (__arm_vrmlsldavhxq): Remove. - (__arm_vrmlsldavhq): Remove. - (__arm_vrmlaldavhxq): Remove. - (__arm_vrmlaldavhq_p): Remove. - (__arm_vrmlaldavhxq_p): Remove. - (__arm_vrmlsldavhq_p): Remove. - (__arm_vrmlsldavhxq_p): Remove. - -2023-05-11 Christophe Lyon <christophe.lyon@arm.com> - - * config/arm/iterators.md (MVE_VRMLxLDAVxQ, MVE_VRMLxLDAVHxQ_P): - New. - (mve_insn): Add vrmlaldavh, vrmlaldavhx, vrmlsldavh, vrmlsldavhx. - (supf): Add VRMLALDAVHXQ_P_S, VRMLALDAVHXQ_S, VRMLSLDAVHQ_P_S, - VRMLSLDAVHQ_S, VRMLSLDAVHXQ_P_S, VRMLSLDAVHXQ_S. - * config/arm/mve.md (mve_vrmlaldavhxq_sv4si) - (mve_vrmlsldavhq_sv4si, mve_vrmlsldavhxq_sv4si) - (mve_vrmlaldavhq_<supf>v4si): Merge into ... - (@mve_<mve_insn>q_<supf>v4si): ... this. - (mve_vrmlaldavhxq_p_sv4si, mve_vrmlsldavhq_p_sv4si) - (mve_vrmlsldavhxq_p_sv4si, mve_vrmlaldavhq_p_<supf>v4si): Merge - into ... - (@mve_<mve_insn>q_p_<supf>v4si): ... this. - -2023-05-11 Christophe Lyon <christophe.lyon@arm.com> - - * config/arm/arm-mve-builtins-base.cc (vmlaldavq, vmlaldavxq) - (vmlsldavq, vmlsldavxq): New. - * config/arm/arm-mve-builtins-base.def (vmlaldavq, vmlaldavxq) - (vmlsldavq, vmlsldavxq): New. - * config/arm/arm-mve-builtins-base.h (vmlaldavq, vmlaldavxq) - (vmlsldavq, vmlsldavxq): New. - * config/arm/arm_mve.h (vmlaldavq): Remove. - (vmlsldavxq): Remove. - (vmlsldavq): Remove. - (vmlaldavxq): Remove. - (vmlaldavq_p): Remove. - (vmlaldavxq_p): Remove. - (vmlsldavq_p): Remove. - (vmlsldavxq_p): Remove. - (vmlaldavq_u16): Remove. - (vmlsldavxq_s16): Remove. - (vmlsldavq_s16): Remove. - (vmlaldavxq_s16): Remove. - (vmlaldavq_s16): Remove. - (vmlaldavq_u32): Remove. - (vmlsldavxq_s32): Remove. - (vmlsldavq_s32): Remove. - (vmlaldavxq_s32): Remove. - (vmlaldavq_s32): Remove. - (vmlaldavq_p_s16): Remove. - (vmlaldavxq_p_s16): Remove. - (vmlsldavq_p_s16): Remove. - (vmlsldavxq_p_s16): Remove. - (vmlaldavq_p_u16): Remove. - (vmlaldavq_p_s32): Remove. - (vmlaldavxq_p_s32): Remove. - (vmlsldavq_p_s32): Remove. - (vmlsldavxq_p_s32): Remove. - (vmlaldavq_p_u32): Remove. - (__arm_vmlaldavq_u16): Remove. - (__arm_vmlsldavxq_s16): Remove. - (__arm_vmlsldavq_s16): Remove. - (__arm_vmlaldavxq_s16): Remove. - (__arm_vmlaldavq_s16): Remove. - (__arm_vmlaldavq_u32): Remove. - (__arm_vmlsldavxq_s32): Remove. - (__arm_vmlsldavq_s32): Remove. - (__arm_vmlaldavxq_s32): Remove. - (__arm_vmlaldavq_s32): Remove. - (__arm_vmlaldavq_p_s16): Remove. - (__arm_vmlaldavxq_p_s16): Remove. - (__arm_vmlsldavq_p_s16): Remove. - (__arm_vmlsldavxq_p_s16): Remove. - (__arm_vmlaldavq_p_u16): Remove. - (__arm_vmlaldavq_p_s32): Remove. - (__arm_vmlaldavxq_p_s32): Remove. - (__arm_vmlsldavq_p_s32): Remove. - (__arm_vmlsldavxq_p_s32): Remove. - (__arm_vmlaldavq_p_u32): Remove. - (__arm_vmlaldavq): Remove. - (__arm_vmlsldavxq): Remove. - (__arm_vmlsldavq): Remove. - (__arm_vmlaldavxq): Remove. - (__arm_vmlaldavq_p): Remove. - (__arm_vmlaldavxq_p): Remove. - (__arm_vmlsldavq_p): Remove. - (__arm_vmlsldavxq_p): Remove. - -2023-05-11 Christophe Lyon <christophe.lyon@arm.com> - - * config/arm/iterators.md (MVE_VMLxLDAVxQ, MVE_VMLxLDAVxQ_P): New. - (mve_insn): Add vmlaldav, vmlaldavx, vmlsldav, vmlsldavx. - (supf): Add VMLALDAVXQ_S, VMLSLDAVQ_S, VMLSLDAVXQ_S, - VMLALDAVXQ_P_S, VMLSLDAVQ_P_S, VMLSLDAVXQ_P_S. - * config/arm/mve.md (mve_vmlaldavq_<supf><mode>) - (mve_vmlaldavxq_s<mode>, mve_vmlsldavq_s<mode>) - (mve_vmlsldavxq_s<mode>): Merge into ... - (@mve_<mve_insn>q_<supf><mode>): ... this. - (mve_vmlaldavq_p_<supf><mode>, mve_vmlaldavxq_p_s<mode>) - (mve_vmlsldavq_p_s<mode>, mve_vmlsldavxq_p_s<mode>): Merge into - ... - (@mve_<mve_insn>q_p_<supf><mode>): ... this. - -2023-05-11 Christophe Lyon <christophe.lyon@arm.com> - - * config/arm/arm-mve-builtins-shapes.cc (binary_acc_int64): New. - * config/arm/arm-mve-builtins-shapes.h (binary_acc_int64): New. - -2023-05-11 Christophe Lyon <christophe.lyon@arm.com> - - * config/arm/arm-mve-builtins-base.cc (vabavq): New. - * config/arm/arm-mve-builtins-base.def (vabavq): New. - * config/arm/arm-mve-builtins-base.h (vabavq): New. - * config/arm/arm_mve.h (vabavq): Remove. - (vabavq_p): Remove. - (vabavq_s8): Remove. - (vabavq_s16): Remove. - (vabavq_s32): Remove. - (vabavq_u8): Remove. - (vabavq_u16): Remove. - (vabavq_u32): Remove. - (vabavq_p_s8): Remove. - (vabavq_p_u8): Remove. - (vabavq_p_s16): Remove. - (vabavq_p_u16): Remove. - (vabavq_p_s32): Remove. - (vabavq_p_u32): Remove. - (__arm_vabavq_s8): Remove. - (__arm_vabavq_s16): Remove. - (__arm_vabavq_s32): Remove. - (__arm_vabavq_u8): Remove. - (__arm_vabavq_u16): Remove. - (__arm_vabavq_u32): Remove. - (__arm_vabavq_p_s8): Remove. - (__arm_vabavq_p_u8): Remove. - (__arm_vabavq_p_s16): Remove. - (__arm_vabavq_p_u16): Remove. - (__arm_vabavq_p_s32): Remove. - (__arm_vabavq_p_u32): Remove. - (__arm_vabavq): Remove. - (__arm_vabavq_p): Remove. - -2023-05-11 Christophe Lyon <christophe.lyon@arm.com> - - * config/arm/iterators.md (mve_insn): Add vabav. - * config/arm/mve.md (mve_vabavq_<supf><mode>): Rename into ... - (@mve_<mve_insn>q_<supf><mode>): ... this,. - (mve_vabavq_p_<supf><mode>): Rename into ... - (@mve_<mve_insn>q_p_<supf><mode>): ... this,. - -2023-05-11 Christophe Lyon <christophe.lyon@arm.com> - - * config/arm/arm-mve-builtins-base.cc (vmladavaxq, vmladavaq) - (vmlsdavaq, vmlsdavaxq): New. - * config/arm/arm-mve-builtins-base.def (vmladavaxq, vmladavaq) - (vmlsdavaq, vmlsdavaxq): New. - * config/arm/arm-mve-builtins-base.h (vmladavaxq, vmladavaq) - (vmlsdavaq, vmlsdavaxq): New. - * config/arm/arm_mve.h (vmladavaq): Remove. - (vmlsdavaxq): Remove. - (vmlsdavaq): Remove. - (vmladavaxq): Remove. - (vmladavaq_p): Remove. - (vmladavaxq_p): Remove. - (vmlsdavaq_p): Remove. - (vmlsdavaxq_p): Remove. - (vmladavaq_u8): Remove. - (vmlsdavaxq_s8): Remove. - (vmlsdavaq_s8): Remove. - (vmladavaxq_s8): Remove. - (vmladavaq_s8): Remove. - (vmladavaq_u16): Remove. - (vmlsdavaxq_s16): Remove. - (vmlsdavaq_s16): Remove. - (vmladavaxq_s16): Remove. - (vmladavaq_s16): Remove. - (vmladavaq_u32): Remove. - (vmlsdavaxq_s32): Remove. - (vmlsdavaq_s32): Remove. - (vmladavaxq_s32): Remove. - (vmladavaq_s32): Remove. - (vmladavaq_p_s8): Remove. - (vmladavaq_p_s32): Remove. - (vmladavaq_p_s16): Remove. - (vmladavaq_p_u8): Remove. - (vmladavaq_p_u32): Remove. - (vmladavaq_p_u16): Remove. - (vmladavaxq_p_s8): Remove. - (vmladavaxq_p_s32): Remove. - (vmladavaxq_p_s16): Remove. - (vmlsdavaq_p_s8): Remove. - (vmlsdavaq_p_s32): Remove. - (vmlsdavaq_p_s16): Remove. - (vmlsdavaxq_p_s8): Remove. - (vmlsdavaxq_p_s32): Remove. - (vmlsdavaxq_p_s16): Remove. - (__arm_vmladavaq_u8): Remove. - (__arm_vmlsdavaxq_s8): Remove. - (__arm_vmlsdavaq_s8): Remove. - (__arm_vmladavaxq_s8): Remove. - (__arm_vmladavaq_s8): Remove. - (__arm_vmladavaq_u16): Remove. - (__arm_vmlsdavaxq_s16): Remove. - (__arm_vmlsdavaq_s16): Remove. - (__arm_vmladavaxq_s16): Remove. - (__arm_vmladavaq_s16): Remove. - (__arm_vmladavaq_u32): Remove. - (__arm_vmlsdavaxq_s32): Remove. - (__arm_vmlsdavaq_s32): Remove. - (__arm_vmladavaxq_s32): Remove. - (__arm_vmladavaq_s32): Remove. - (__arm_vmladavaq_p_s8): Remove. - (__arm_vmladavaq_p_s32): Remove. - (__arm_vmladavaq_p_s16): Remove. - (__arm_vmladavaq_p_u8): Remove. - (__arm_vmladavaq_p_u32): Remove. - (__arm_vmladavaq_p_u16): Remove. - (__arm_vmladavaxq_p_s8): Remove. - (__arm_vmladavaxq_p_s32): Remove. - (__arm_vmladavaxq_p_s16): Remove. - (__arm_vmlsdavaq_p_s8): Remove. - (__arm_vmlsdavaq_p_s32): Remove. - (__arm_vmlsdavaq_p_s16): Remove. - (__arm_vmlsdavaxq_p_s8): Remove. - (__arm_vmlsdavaxq_p_s32): Remove. - (__arm_vmlsdavaxq_p_s16): Remove. - (__arm_vmladavaq): Remove. - (__arm_vmlsdavaxq): Remove. - (__arm_vmlsdavaq): Remove. - (__arm_vmladavaxq): Remove. - (__arm_vmladavaq_p): Remove. - (__arm_vmladavaxq_p): Remove. - (__arm_vmlsdavaq_p): Remove. - (__arm_vmlsdavaxq_p): Remove. - -2023-05-11 Christophe Lyon <christophe.lyon@arm.com> - - * config/arm/arm-mve-builtins-shapes.cc (binary_acca_int32): New. - * config/arm/arm-mve-builtins-shapes.h (binary_acca_int32): New. - -2023-05-11 Christophe Lyon <christophe.lyon@arm.com> - - * config/arm/arm-mve-builtins-base.cc (vmladavq, vmladavxq) - (vmlsdavq, vmlsdavxq): New. - * config/arm/arm-mve-builtins-base.def (vmladavq, vmladavxq) - (vmlsdavq, vmlsdavxq): New. - * config/arm/arm-mve-builtins-base.h (vmladavq, vmladavxq) - (vmlsdavq, vmlsdavxq): New. - * config/arm/arm_mve.h (vmladavq): Remove. - (vmlsdavxq): Remove. - (vmlsdavq): Remove. - (vmladavxq): Remove. - (vmladavq_p): Remove. - (vmlsdavxq_p): Remove. - (vmlsdavq_p): Remove. - (vmladavxq_p): Remove. - (vmladavq_u8): Remove. - (vmlsdavxq_s8): Remove. - (vmlsdavq_s8): Remove. - (vmladavxq_s8): Remove. - (vmladavq_s8): Remove. - (vmladavq_u16): Remove. - (vmlsdavxq_s16): Remove. - (vmlsdavq_s16): Remove. - (vmladavxq_s16): Remove. - (vmladavq_s16): Remove. - (vmladavq_u32): Remove. - (vmlsdavxq_s32): Remove. - (vmlsdavq_s32): Remove. - (vmladavxq_s32): Remove. - (vmladavq_s32): Remove. - (vmladavq_p_u8): Remove. - (vmlsdavxq_p_s8): Remove. - (vmlsdavq_p_s8): Remove. - (vmladavxq_p_s8): Remove. - (vmladavq_p_s8): Remove. - (vmladavq_p_u16): Remove. - (vmlsdavxq_p_s16): Remove. - (vmlsdavq_p_s16): Remove. - (vmladavxq_p_s16): Remove. - (vmladavq_p_s16): Remove. - (vmladavq_p_u32): Remove. - (vmlsdavxq_p_s32): Remove. - (vmlsdavq_p_s32): Remove. - (vmladavxq_p_s32): Remove. - (vmladavq_p_s32): Remove. - (__arm_vmladavq_u8): Remove. - (__arm_vmlsdavxq_s8): Remove. - (__arm_vmlsdavq_s8): Remove. - (__arm_vmladavxq_s8): Remove. - (__arm_vmladavq_s8): Remove. - (__arm_vmladavq_u16): Remove. - (__arm_vmlsdavxq_s16): Remove. - (__arm_vmlsdavq_s16): Remove. - (__arm_vmladavxq_s16): Remove. - (__arm_vmladavq_s16): Remove. - (__arm_vmladavq_u32): Remove. - (__arm_vmlsdavxq_s32): Remove. - (__arm_vmlsdavq_s32): Remove. - (__arm_vmladavxq_s32): Remove. - (__arm_vmladavq_s32): Remove. - (__arm_vmladavq_p_u8): Remove. - (__arm_vmlsdavxq_p_s8): Remove. - (__arm_vmlsdavq_p_s8): Remove. - (__arm_vmladavxq_p_s8): Remove. - (__arm_vmladavq_p_s8): Remove. - (__arm_vmladavq_p_u16): Remove. - (__arm_vmlsdavxq_p_s16): Remove. - (__arm_vmlsdavq_p_s16): Remove. - (__arm_vmladavxq_p_s16): Remove. - (__arm_vmladavq_p_s16): Remove. - (__arm_vmladavq_p_u32): Remove. - (__arm_vmlsdavxq_p_s32): Remove. - (__arm_vmlsdavq_p_s32): Remove. - (__arm_vmladavxq_p_s32): Remove. - (__arm_vmladavq_p_s32): Remove. - (__arm_vmladavq): Remove. - (__arm_vmlsdavxq): Remove. - (__arm_vmlsdavq): Remove. - (__arm_vmladavxq): Remove. - (__arm_vmladavq_p): Remove. - (__arm_vmlsdavxq_p): Remove. - (__arm_vmlsdavq_p): Remove. - (__arm_vmladavxq_p): Remove. - -2023-05-11 Christophe Lyon <christophe.lyon@arm.com> - - * config/arm/iterators.md (MVE_VMLxDAVQ, MVE_VMLxDAVQ_P) - (MVE_VMLxDAVAQ, MVE_VMLxDAVAQ_P): New. - (mve_insn): Add vmladava, vmladavax, vmladav, vmladavx, vmlsdava, - vmlsdavax, vmlsdav, vmlsdavx. - (supf): Add VMLADAVAXQ_P_S, VMLADAVAXQ_S, VMLADAVXQ_P_S, - VMLADAVXQ_S, VMLSDAVAQ_P_S, VMLSDAVAQ_S, VMLSDAVAXQ_P_S, - VMLSDAVAXQ_S, VMLSDAVQ_P_S, VMLSDAVQ_S, VMLSDAVXQ_P_S, - VMLSDAVXQ_S. - * config/arm/mve.md (mve_vmladavq_<supf><mode>) - (mve_vmladavxq_s<mode>, mve_vmlsdavq_s<mode>) - (mve_vmlsdavxq_s<mode>): Merge into ... - (@mve_<mve_insn>q_<supf><mode>): ... this. - (mve_vmlsdavaq_s<mode>, mve_vmladavaxq_s<mode>) - (mve_vmlsdavaxq_s<mode>, mve_vmladavaq_<supf><mode>): Merge into - ... - (@mve_<mve_insn>q_<supf><mode>): ... this. - (mve_vmladavq_p_<supf><mode>, mve_vmladavxq_p_s<mode>) - (mve_vmlsdavq_p_s<mode>, mve_vmlsdavxq_p_s<mode>): Merge into ... - (@mve_<mve_insn>q_p_<supf><mode>): ... this. - (mve_vmladavaq_p_<supf><mode>, mve_vmladavaxq_p_s<mode>) - (mve_vmlsdavaq_p_s<mode>, mve_vmlsdavaxq_p_s<mode>): Merge into - ... - (@mve_<mve_insn>q_p_<supf><mode>): ... this. - -2023-05-11 Christophe Lyon <christophe.lyon@arm.com> - - * config/arm/arm-mve-builtins-shapes.cc (binary_acc_int32): New. - * config/arm/arm-mve-builtins-shapes.h (binary_acc_int32): New. - -2023-05-11 Christophe Lyon <christophe.lyon@arm.com> - - * config/arm/arm-mve-builtins-base.cc (vaddlvaq): New. - * config/arm/arm-mve-builtins-base.def (vaddlvaq): New. - * config/arm/arm-mve-builtins-base.h (vaddlvaq): New. - * config/arm/arm_mve.h (vaddlvaq): Remove. - (vaddlvaq_p): Remove. - (vaddlvaq_u32): Remove. - (vaddlvaq_s32): Remove. - (vaddlvaq_p_s32): Remove. - (vaddlvaq_p_u32): Remove. - (__arm_vaddlvaq_u32): Remove. - (__arm_vaddlvaq_s32): Remove. - (__arm_vaddlvaq_p_s32): Remove. - (__arm_vaddlvaq_p_u32): Remove. - (__arm_vaddlvaq): Remove. - (__arm_vaddlvaq_p): Remove. - -2023-05-11 Christophe Lyon <christophe.lyon@arm.com> - - * config/arm/arm-mve-builtins-shapes.cc (unary_widen_acc): New. - * config/arm/arm-mve-builtins-shapes.h (unary_widen_acc): New. - -2023-05-11 Christophe Lyon <christophe.lyon@arm.com> - - * config/arm/iterators.md (mve_insn): Add vaddlva. - * config/arm/mve.md (mve_vaddlvaq_<supf>v4si): Rename into ... - (@mve_<mve_insn>q_<supf>v4si): ... this. - (mve_vaddlvaq_p_<supf>v4si): Rename into ... - (@mve_<mve_insn>q_p_<supf>v4si): ... this. - -2023-05-11 Uros Bizjak <ubizjak@gmail.com> - - PR target/109807 - * config/i386/i386.cc (ix86_widen_mult_cost): - Handle V4HImode and V2SImode. - -2023-05-11 Andrew Pinski <apinski@marvell.com> - - * tree-ssa-dce.cc (simple_dce_from_worklist): For ssa names - defined by a phi node with more than one uses, allow for the - only uses are in that same defining statement. - -2023-05-11 Robin Dapp <rdapp@ventanamicro.com> - - * config/riscv/riscv.cc (riscv_const_insns): Add permissible - vector constants. - -2023-05-11 Pan Li <pan2.li@intel.com> - - * config/riscv/vector.md: Add comments for simplifying to vmset. - -2023-05-11 Robin Dapp <rdapp@ventanamicro.com> - - * config/riscv/autovec.md (<optab><mode>3): Add scalar shift - pattern. - (v<optab><mode>3): Add vector shift pattern. - * config/riscv/vector-iterators.md: New iterator. - -2023-05-11 Robin Dapp <rdapp@ventanamicro.com> - - * config/riscv/autovec.md: Use renamed functions. - * config/riscv/riscv-protos.h (emit_vlmax_op): Rename. - (emit_vlmax_reg_op): To this. - (emit_nonvlmax_op): Rename. - (emit_len_op): To this. - (emit_nonvlmax_binop): Rename. - (emit_len_binop): To this. - * config/riscv/riscv-v.cc (emit_pred_op): Add default parameter. - (emit_pred_binop): Remove vlmax_p. - (emit_vlmax_op): Rename. - (emit_vlmax_reg_op): To this. - (emit_nonvlmax_op): Rename. - (emit_len_op): To this. - (emit_nonvlmax_binop): Rename. - (emit_len_binop): To this. - (sew64_scalar_helper): Use renamed functions. - (expand_tuple_move): Use renamed functions. - * config/riscv/riscv.cc (vector_zero_call_used_regs): Use - renamed functions. - * config/riscv/vector.md: Use renamed functions. - -2023-05-11 Robin Dapp <rdapp@ventanamicro.com> - Michael Collison <collison@rivosinc.com> - - * config/riscv/autovec.md (<optab><mode>3): Add integer binops. - * config/riscv/riscv-protos.h (emit_nonvlmax_binop): Declare. - * config/riscv/riscv-v.cc (emit_pred_op): New function. - (set_expander_dest_and_mask): New function. - (emit_pred_binop): New function. - (emit_nonvlmax_binop): New function. - -2023-05-11 Pan Li <pan2.li@intel.com> - - * cfgloopmanip.cc (create_empty_loop_on_edge): Add PLUS_EXPR. - * gimple-loop-interchange.cc - (tree_loop_interchange::map_inductions_to_loop): Ditto. - * tree-ssa-loop-ivcanon.cc (create_canonical_iv): Ditto. - * tree-ssa-loop-ivopts.cc (create_new_iv): Ditto. - * tree-ssa-loop-manip.cc (create_iv): Ditto. - (tree_transform_and_unroll_loop): Ditto. - (canonicalize_loop_ivs): Ditto. - * tree-ssa-loop-manip.h (create_iv): Ditto. - * tree-vect-data-refs.cc (vect_create_data_ref_ptr): Ditto. - * tree-vect-loop-manip.cc (vect_set_loop_controls_directly): - Ditto. - (vect_set_loop_condition_normal): Ditto. - * tree-vect-loop.cc (vect_create_epilog_for_reduction): Ditto. - * tree-vect-stmts.cc (vectorizable_store): Ditto. - (vectorizable_load): Ditto. - -2023-05-11 Christophe Lyon <christophe.lyon@arm.com> - - * config/arm/arm-mve-builtins-base.cc (vmovlbq, vmovltq): New. - * config/arm/arm-mve-builtins-base.def (vmovlbq, vmovltq): New. - * config/arm/arm-mve-builtins-base.h (vmovlbq, vmovltq): New. - * config/arm/arm_mve.h (vmovlbq): Remove. - (vmovltq): Remove. - (vmovlbq_m): Remove. - (vmovltq_m): Remove. - (vmovlbq_x): Remove. - (vmovltq_x): Remove. - (vmovlbq_s8): Remove. - (vmovlbq_s16): Remove. - (vmovltq_s8): Remove. - (vmovltq_s16): Remove. - (vmovltq_u8): Remove. - (vmovltq_u16): Remove. - (vmovlbq_u8): Remove. - (vmovlbq_u16): Remove. - (vmovlbq_m_s8): Remove. - (vmovltq_m_s8): Remove. - (vmovlbq_m_u8): Remove. - (vmovltq_m_u8): Remove. - (vmovlbq_m_s16): Remove. - (vmovltq_m_s16): Remove. - (vmovlbq_m_u16): Remove. - (vmovltq_m_u16): Remove. - (vmovlbq_x_s8): Remove. - (vmovlbq_x_s16): Remove. - (vmovlbq_x_u8): Remove. - (vmovlbq_x_u16): Remove. - (vmovltq_x_s8): Remove. - (vmovltq_x_s16): Remove. - (vmovltq_x_u8): Remove. - (vmovltq_x_u16): Remove. - (__arm_vmovlbq_s8): Remove. - (__arm_vmovlbq_s16): Remove. - (__arm_vmovltq_s8): Remove. - (__arm_vmovltq_s16): Remove. - (__arm_vmovltq_u8): Remove. - (__arm_vmovltq_u16): Remove. - (__arm_vmovlbq_u8): Remove. - (__arm_vmovlbq_u16): Remove. - (__arm_vmovlbq_m_s8): Remove. - (__arm_vmovltq_m_s8): Remove. - (__arm_vmovlbq_m_u8): Remove. - (__arm_vmovltq_m_u8): Remove. - (__arm_vmovlbq_m_s16): Remove. - (__arm_vmovltq_m_s16): Remove. - (__arm_vmovlbq_m_u16): Remove. - (__arm_vmovltq_m_u16): Remove. - (__arm_vmovlbq_x_s8): Remove. - (__arm_vmovlbq_x_s16): Remove. - (__arm_vmovlbq_x_u8): Remove. - (__arm_vmovlbq_x_u16): Remove. - (__arm_vmovltq_x_s8): Remove. - (__arm_vmovltq_x_s16): Remove. - (__arm_vmovltq_x_u8): Remove. - (__arm_vmovltq_x_u16): Remove. - (__arm_vmovlbq): Remove. - (__arm_vmovltq): Remove. - (__arm_vmovlbq_m): Remove. - (__arm_vmovltq_m): Remove. - (__arm_vmovlbq_x): Remove. - (__arm_vmovltq_x): Remove. - -2023-05-11 Christophe Lyon <christophe.lyon@arm.com> - - * config/arm/arm-mve-builtins-shapes.cc (unary_widen): New. - * config/arm/arm-mve-builtins-shapes.h (unary_widen): New. - -2023-05-11 Christophe Lyon <christophe.lyon@arm.com> - - * config/arm/iterators.md (mve_insn): Add vmovlb, vmovlt. - (VMOVLBQ, VMOVLTQ): Merge into ... - (VMOVLxQ): ... this. - (VMOVLTQ_M, VMOVLBQ_M): Merge into ... - (VMOVLxQ_M): ... this. - * config/arm/mve.md (mve_vmovltq_<supf><mode>) - (mve_vmovlbq_<supf><mode>): Merge into ... - (@mve_<mve_insn>q_<supf><mode>): ... this. - (mve_vmovlbq_m_<supf><mode>, mve_vmovltq_m_<supf><mode>): Merge - into ... - (@mve_<mve_insn>q_m_<supf><mode>): ... this. - -2023-05-11 Christophe Lyon <christophe.lyon@arm.com> - - * config/arm/arm-mve-builtins-base.cc (vaddlvq): New. - * config/arm/arm-mve-builtins-base.def (vaddlvq): New. - * config/arm/arm-mve-builtins-base.h (vaddlvq): New. - * config/arm/arm-mve-builtins-functions.h - (unspec_mve_function_exact_insn_pred_p): Handle vaddlvq. - * config/arm/arm_mve.h (vaddlvq): Remove. - (vaddlvq_p): Remove. - (vaddlvq_s32): Remove. - (vaddlvq_u32): Remove. - (vaddlvq_p_s32): Remove. - (vaddlvq_p_u32): Remove. - (__arm_vaddlvq_s32): Remove. - (__arm_vaddlvq_u32): Remove. - (__arm_vaddlvq_p_s32): Remove. - (__arm_vaddlvq_p_u32): Remove. - (__arm_vaddlvq): Remove. - (__arm_vaddlvq_p): Remove. - -2023-05-11 Christophe Lyon <christophe.lyon@arm.com> - - * config/arm/iterators.md (mve_insn): Add vaddlv. - * config/arm/mve.md (mve_vaddlvq_<supf>v4si): Rename into ... - (@mve_<mve_insn>q_<supf>v4si): ... this. - (mve_vaddlvq_p_<supf>v4si): Rename into ... - (@mve_<mve_insn>q_p_<supf>v4si): ... this. - -2023-05-11 Christophe Lyon <christophe.lyon@arm.com> - - * config/arm/arm-mve-builtins-shapes.cc (unary_acc): New. - * config/arm/arm-mve-builtins-shapes.h (unary_acc): New. - -2023-05-11 Christophe Lyon <christophe.lyon@arm.com> - - * config/arm/arm-mve-builtins-base.cc (vaddvaq): New. - * config/arm/arm-mve-builtins-base.def (vaddvaq): New. - * config/arm/arm-mve-builtins-base.h (vaddvaq): New. - * config/arm/arm_mve.h (vaddvaq): Remove. - (vaddvaq_p): Remove. - (vaddvaq_u8): Remove. - (vaddvaq_s8): Remove. - (vaddvaq_u16): Remove. - (vaddvaq_s16): Remove. - (vaddvaq_u32): Remove. - (vaddvaq_s32): Remove. - (vaddvaq_p_u8): Remove. - (vaddvaq_p_s8): Remove. - (vaddvaq_p_u16): Remove. - (vaddvaq_p_s16): Remove. - (vaddvaq_p_u32): Remove. - (vaddvaq_p_s32): Remove. - (__arm_vaddvaq_u8): Remove. - (__arm_vaddvaq_s8): Remove. - (__arm_vaddvaq_u16): Remove. - (__arm_vaddvaq_s16): Remove. - (__arm_vaddvaq_u32): Remove. - (__arm_vaddvaq_s32): Remove. - (__arm_vaddvaq_p_u8): Remove. - (__arm_vaddvaq_p_s8): Remove. - (__arm_vaddvaq_p_u16): Remove. - (__arm_vaddvaq_p_s16): Remove. - (__arm_vaddvaq_p_u32): Remove. - (__arm_vaddvaq_p_s32): Remove. - (__arm_vaddvaq): Remove. - (__arm_vaddvaq_p): Remove. - -2023-05-11 Christophe Lyon <christophe.lyon@arm.com> - - * config/arm/arm-mve-builtins-shapes.cc (unary_int32_acc): New. - * config/arm/arm-mve-builtins-shapes.h (unary_int32_acc): New. - -2023-05-11 Christophe Lyon <christophe.lyon@arm.com> - - * config/arm/iterators.md (mve_insn): Add vaddva. - * config/arm/mve.md (mve_vaddvaq_<supf><mode>): Rename into ... - (@mve_<mve_insn>q_<supf><mode>): ... this. - (mve_vaddvaq_p_<supf><mode>): Rename into ... - (@mve_<mve_insn>q_p_<supf><mode>): ... this. - -2023-05-11 Christophe Lyon <christophe.lyon@arm.com> - - * config/arm/arm-mve-builtins-base.cc (vaddvq): New. - * config/arm/arm-mve-builtins-base.def (vaddvq): New. - * config/arm/arm-mve-builtins-base.h (vaddvq): New. - * config/arm/arm_mve.h (vaddvq): Remove. - (vaddvq_p): Remove. - (vaddvq_s8): Remove. - (vaddvq_s16): Remove. - (vaddvq_s32): Remove. - (vaddvq_u8): Remove. - (vaddvq_u16): Remove. - (vaddvq_u32): Remove. - (vaddvq_p_u8): Remove. - (vaddvq_p_s8): Remove. - (vaddvq_p_u16): Remove. - (vaddvq_p_s16): Remove. - (vaddvq_p_u32): Remove. - (vaddvq_p_s32): Remove. - (__arm_vaddvq_s8): Remove. - (__arm_vaddvq_s16): Remove. - (__arm_vaddvq_s32): Remove. - (__arm_vaddvq_u8): Remove. - (__arm_vaddvq_u16): Remove. - (__arm_vaddvq_u32): Remove. - (__arm_vaddvq_p_u8): Remove. - (__arm_vaddvq_p_s8): Remove. - (__arm_vaddvq_p_u16): Remove. - (__arm_vaddvq_p_s16): Remove. - (__arm_vaddvq_p_u32): Remove. - (__arm_vaddvq_p_s32): Remove. - (__arm_vaddvq): Remove. - (__arm_vaddvq_p): Remove. - -2023-05-11 Christophe Lyon <christophe.lyon@arm.com> - - * config/arm/arm-mve-builtins-shapes.cc (unary_int32): New. - * config/arm/arm-mve-builtins-shapes.h (unary_int32): New. - -2023-05-11 Christophe Lyon <christophe.lyon@arm.com> - - * config/arm/iterators.md (mve_insn): Add vaddv. - * config/arm/mve.md (@mve_vaddvq_<supf><mode>): Rename into ... - (@mve_<mve_insn>q_<supf><mode>): ... this. - (mve_vaddvq_p_<supf><mode>): Rename into ... - (@mve_<mve_insn>q_p_<supf><mode>): ... this. - * config/arm/vec-common.md: Use gen_mve_q instead of - gen_mve_vaddvq. - -2023-05-11 Christophe Lyon <christophe.lyon@arm.com> - - * config/arm/arm-mve-builtins-base.cc (FUNCTION_ONLY_N): New. - (vdupq): New. - * config/arm/arm-mve-builtins-base.def (vdupq): New. - * config/arm/arm-mve-builtins-base.h: (vdupq): New. - * config/arm/arm_mve.h (vdupq_n): Remove. - (vdupq_m): Remove. - (vdupq_n_f16): Remove. - (vdupq_n_f32): Remove. - (vdupq_n_s8): Remove. - (vdupq_n_s16): Remove. - (vdupq_n_s32): Remove. - (vdupq_n_u8): Remove. - (vdupq_n_u16): Remove. - (vdupq_n_u32): Remove. - (vdupq_m_n_u8): Remove. - (vdupq_m_n_s8): Remove. - (vdupq_m_n_u16): Remove. - (vdupq_m_n_s16): Remove. - (vdupq_m_n_u32): Remove. - (vdupq_m_n_s32): Remove. - (vdupq_m_n_f16): Remove. - (vdupq_m_n_f32): Remove. - (vdupq_x_n_s8): Remove. - (vdupq_x_n_s16): Remove. - (vdupq_x_n_s32): Remove. - (vdupq_x_n_u8): Remove. - (vdupq_x_n_u16): Remove. - (vdupq_x_n_u32): Remove. - (vdupq_x_n_f16): Remove. - (vdupq_x_n_f32): Remove. - (__arm_vdupq_n_s8): Remove. - (__arm_vdupq_n_s16): Remove. - (__arm_vdupq_n_s32): Remove. - (__arm_vdupq_n_u8): Remove. - (__arm_vdupq_n_u16): Remove. - (__arm_vdupq_n_u32): Remove. - (__arm_vdupq_m_n_u8): Remove. - (__arm_vdupq_m_n_s8): Remove. - (__arm_vdupq_m_n_u16): Remove. - (__arm_vdupq_m_n_s16): Remove. - (__arm_vdupq_m_n_u32): Remove. - (__arm_vdupq_m_n_s32): Remove. - (__arm_vdupq_x_n_s8): Remove. - (__arm_vdupq_x_n_s16): Remove. - (__arm_vdupq_x_n_s32): Remove. - (__arm_vdupq_x_n_u8): Remove. - (__arm_vdupq_x_n_u16): Remove. - (__arm_vdupq_x_n_u32): Remove. - (__arm_vdupq_n_f16): Remove. - (__arm_vdupq_n_f32): Remove. - (__arm_vdupq_m_n_f16): Remove. - (__arm_vdupq_m_n_f32): Remove. - (__arm_vdupq_x_n_f16): Remove. - (__arm_vdupq_x_n_f32): Remove. - (__arm_vdupq_n): Remove. - (__arm_vdupq_m): Remove. - -2023-05-11 Christophe Lyon <christophe.lyon@arm.com> - - * config/arm/arm-mve-builtins-shapes.cc (unary_n): New. - * config/arm/arm-mve-builtins-shapes.h (unary_n): New. - -2023-05-11 Christophe Lyon <christophe.lyon@arm.com> - - * config/arm/iterators.md (MVE_FP_M_N_VDUPQ_ONLY) - (MVE_FP_N_VDUPQ_ONLY): New. - (mve_insn): Add vdupq. - * config/arm/mve.md (mve_vdupq_n_f<mode>): Rename into ... - (@mve_<mve_insn>q_n_f<mode>): ... this. - (mve_vdupq_n_<supf><mode>): Rename into ... - (@mve_<mve_insn>q_n_<supf><mode>): ... this. - (mve_vdupq_m_n_<supf><mode>): Rename into ... - (@mve_<mve_insn>q_m_n_<supf><mode>): ... this. - (mve_vdupq_m_n_f<mode>): Rename into ... - (@mve_<mve_insn>q_m_n_f<mode>): ... this. - -2023-05-11 Christophe Lyon <christophe.lyon@arm.com> - - * config/arm/arm-mve-builtins-base.cc (vrev16q, vrev32q, vrev64q): - New. - * config/arm/arm-mve-builtins-base.def (vrev16q, vrev32q) - (vrev64q): New. - * config/arm/arm-mve-builtins-base.h (vrev16q, vrev32q) - (vrev64q): New. - * config/arm/arm_mve.h (vrev16q): Remove. - (vrev32q): Remove. - (vrev64q): Remove. - (vrev64q_m): Remove. - (vrev16q_m): Remove. - (vrev32q_m): Remove. - (vrev16q_x): Remove. - (vrev32q_x): Remove. - (vrev64q_x): Remove. - (vrev64q_f16): Remove. - (vrev64q_f32): Remove. - (vrev32q_f16): Remove. - (vrev16q_s8): Remove. - (vrev32q_s8): Remove. - (vrev32q_s16): Remove. - (vrev64q_s8): Remove. - (vrev64q_s16): Remove. - (vrev64q_s32): Remove. - (vrev64q_u8): Remove. - (vrev64q_u16): Remove. - (vrev64q_u32): Remove. - (vrev32q_u8): Remove. - (vrev32q_u16): Remove. - (vrev16q_u8): Remove. - (vrev64q_m_u8): Remove. - (vrev64q_m_s8): Remove. - (vrev64q_m_u16): Remove. - (vrev64q_m_s16): Remove. - (vrev64q_m_u32): Remove. - (vrev64q_m_s32): Remove. - (vrev16q_m_s8): Remove. - (vrev32q_m_f16): Remove. - (vrev16q_m_u8): Remove. - (vrev32q_m_s8): Remove. - (vrev64q_m_f16): Remove. - (vrev32q_m_u8): Remove. - (vrev32q_m_s16): Remove. - (vrev64q_m_f32): Remove. - (vrev32q_m_u16): Remove. - (vrev16q_x_s8): Remove. - (vrev16q_x_u8): Remove. - (vrev32q_x_s8): Remove. - (vrev32q_x_s16): Remove. - (vrev32q_x_u8): Remove. - (vrev32q_x_u16): Remove. - (vrev64q_x_s8): Remove. - (vrev64q_x_s16): Remove. - (vrev64q_x_s32): Remove. - (vrev64q_x_u8): Remove. - (vrev64q_x_u16): Remove. - (vrev64q_x_u32): Remove. - (vrev32q_x_f16): Remove. - (vrev64q_x_f16): Remove. - (vrev64q_x_f32): Remove. - (__arm_vrev16q_s8): Remove. - (__arm_vrev32q_s8): Remove. - (__arm_vrev32q_s16): Remove. - (__arm_vrev64q_s8): Remove. - (__arm_vrev64q_s16): Remove. - (__arm_vrev64q_s32): Remove. - (__arm_vrev64q_u8): Remove. - (__arm_vrev64q_u16): Remove. - (__arm_vrev64q_u32): Remove. - (__arm_vrev32q_u8): Remove. - (__arm_vrev32q_u16): Remove. - (__arm_vrev16q_u8): Remove. - (__arm_vrev64q_m_u8): Remove. - (__arm_vrev64q_m_s8): Remove. - (__arm_vrev64q_m_u16): Remove. - (__arm_vrev64q_m_s16): Remove. - (__arm_vrev64q_m_u32): Remove. - (__arm_vrev64q_m_s32): Remove. - (__arm_vrev16q_m_s8): Remove. - (__arm_vrev16q_m_u8): Remove. - (__arm_vrev32q_m_s8): Remove. - (__arm_vrev32q_m_u8): Remove. - (__arm_vrev32q_m_s16): Remove. - (__arm_vrev32q_m_u16): Remove. - (__arm_vrev16q_x_s8): Remove. - (__arm_vrev16q_x_u8): Remove. - (__arm_vrev32q_x_s8): Remove. - (__arm_vrev32q_x_s16): Remove. - (__arm_vrev32q_x_u8): Remove. - (__arm_vrev32q_x_u16): Remove. - (__arm_vrev64q_x_s8): Remove. - (__arm_vrev64q_x_s16): Remove. - (__arm_vrev64q_x_s32): Remove. - (__arm_vrev64q_x_u8): Remove. - (__arm_vrev64q_x_u16): Remove. - (__arm_vrev64q_x_u32): Remove. - (__arm_vrev64q_f16): Remove. - (__arm_vrev64q_f32): Remove. - (__arm_vrev32q_f16): Remove. - (__arm_vrev32q_m_f16): Remove. - (__arm_vrev64q_m_f16): Remove. - (__arm_vrev64q_m_f32): Remove. - (__arm_vrev32q_x_f16): Remove. - (__arm_vrev64q_x_f16): Remove. - (__arm_vrev64q_x_f32): Remove. - (__arm_vrev16q): Remove. - (__arm_vrev32q): Remove. - (__arm_vrev64q): Remove. - (__arm_vrev64q_m): Remove. - (__arm_vrev16q_m): Remove. - (__arm_vrev32q_m): Remove. - (__arm_vrev16q_x): Remove. - (__arm_vrev32q_x): Remove. - (__arm_vrev64q_x): Remove. - -2023-05-11 Christophe Lyon <christophe.lyon@arm.com> - - * config/arm/iterators.md (MVE_V8HF, MVE_V16QI) - (MVE_FP_VREV64Q_ONLY, MVE_FP_M_VREV64Q_ONLY, MVE_FP_VREV32Q_ONLY) - (MVE_FP_M_VREV32Q_ONLY): New iterators. - (mve_insn): Add vrev16q, vrev32q, vrev64q. - * config/arm/mve.md (mve_vrev64q_f<mode>): Rename into ... - (@mve_<mve_insn>q_f<mode>): ... this - (mve_vrev32q_fv8hf): Rename into @mve_<mve_insn>q_f<mode>. - (mve_vrev64q_<supf><mode>): Rename into ... - (@mve_<mve_insn>q_<supf><mode>): ... this. - (mve_vrev32q_<supf><mode>): Rename into - @mve_<mve_insn>q_<supf><mode>. - (mve_vrev16q_<supf>v16qi): Rename into - @mve_<mve_insn>q_<supf><mode>. - (mve_vrev64q_m_<supf><mode>): Rename into - @mve_<mve_insn>q_m_<supf><mode>. - (mve_vrev32q_m_fv8hf): Rename into @mve_<mve_insn>q_m_f<mode>. - (mve_vrev32q_m_<supf><mode>): Rename into - @mve_<mve_insn>q_m_<supf><mode>. - (mve_vrev64q_m_f<mode>): Rename into @mve_<mve_insn>q_m_f<mode>. - (mve_vrev16q_m_<supf>v16qi): Rename into - @mve_<mve_insn>q_m_<supf><mode>. - -2023-05-11 Christophe Lyon <christophe.lyon@arm.com> - - * config/arm/arm-mve-builtins-base.cc (vcmpeqq, vcmpneq, vcmpgeq) - (vcmpgtq, vcmpleq, vcmpltq, vcmpcsq, vcmphiq): New. - * config/arm/arm-mve-builtins-base.def (vcmpeqq, vcmpneq, vcmpgeq) - (vcmpgtq, vcmpleq, vcmpltq, vcmpcsq, vcmphiq): New. - * config/arm/arm-mve-builtins-base.h (vcmpeqq, vcmpneq, vcmpgeq) - (vcmpgtq, vcmpleq, vcmpltq, vcmpcsq, vcmphiq): New. - * config/arm/arm-mve-builtins-functions.h (class - unspec_based_mve_function_exact_insn_vcmp): New. - * config/arm/arm-mve-builtins.cc - (function_instance::has_inactive_argument): Handle vcmp. - * config/arm/arm_mve.h (vcmpneq): Remove. - (vcmphiq): Remove. - (vcmpeqq): Remove. - (vcmpcsq): Remove. - (vcmpltq): Remove. - (vcmpleq): Remove. - (vcmpgtq): Remove. - (vcmpgeq): Remove. - (vcmpneq_m): Remove. - (vcmphiq_m): Remove. - (vcmpeqq_m): Remove. - (vcmpcsq_m): Remove. - (vcmpcsq_m_n): Remove. - (vcmpltq_m): Remove. - (vcmpleq_m): Remove. - (vcmpgtq_m): Remove. - (vcmpgeq_m): Remove. - (vcmpneq_s8): Remove. - (vcmpneq_s16): Remove. - (vcmpneq_s32): Remove. - (vcmpneq_u8): Remove. - (vcmpneq_u16): Remove. - (vcmpneq_u32): Remove. - (vcmpneq_n_u8): Remove. - (vcmphiq_u8): Remove. - (vcmphiq_n_u8): Remove. - (vcmpeqq_u8): Remove. - (vcmpeqq_n_u8): Remove. - (vcmpcsq_u8): Remove. - (vcmpcsq_n_u8): Remove. - (vcmpneq_n_s8): Remove. - (vcmpltq_s8): Remove. - (vcmpltq_n_s8): Remove. - (vcmpleq_s8): Remove. - (vcmpleq_n_s8): Remove. - (vcmpgtq_s8): Remove. - (vcmpgtq_n_s8): Remove. - (vcmpgeq_s8): Remove. - (vcmpgeq_n_s8): Remove. - (vcmpeqq_s8): Remove. - (vcmpeqq_n_s8): Remove. - (vcmpneq_n_u16): Remove. - (vcmphiq_u16): Remove. - (vcmphiq_n_u16): Remove. - (vcmpeqq_u16): Remove. - (vcmpeqq_n_u16): Remove. - (vcmpcsq_u16): Remove. - (vcmpcsq_n_u16): Remove. - (vcmpneq_n_s16): Remove. - (vcmpltq_s16): Remove. - (vcmpltq_n_s16): Remove. - (vcmpleq_s16): Remove. - (vcmpleq_n_s16): Remove. - (vcmpgtq_s16): Remove. - (vcmpgtq_n_s16): Remove. - (vcmpgeq_s16): Remove. - (vcmpgeq_n_s16): Remove. - (vcmpeqq_s16): Remove. - (vcmpeqq_n_s16): Remove. - (vcmpneq_n_u32): Remove. - (vcmphiq_u32): Remove. - (vcmphiq_n_u32): Remove. - (vcmpeqq_u32): Remove. - (vcmpeqq_n_u32): Remove. - (vcmpcsq_u32): Remove. - (vcmpcsq_n_u32): Remove. - (vcmpneq_n_s32): Remove. - (vcmpltq_s32): Remove. - (vcmpltq_n_s32): Remove. - (vcmpleq_s32): Remove. - (vcmpleq_n_s32): Remove. - (vcmpgtq_s32): Remove. - (vcmpgtq_n_s32): Remove. - (vcmpgeq_s32): Remove. - (vcmpgeq_n_s32): Remove. - (vcmpeqq_s32): Remove. - (vcmpeqq_n_s32): Remove. - (vcmpneq_n_f16): Remove. - (vcmpneq_f16): Remove. - (vcmpltq_n_f16): Remove. - (vcmpltq_f16): Remove. - (vcmpleq_n_f16): Remove. - (vcmpleq_f16): Remove. - (vcmpgtq_n_f16): Remove. - (vcmpgtq_f16): Remove. - (vcmpgeq_n_f16): Remove. - (vcmpgeq_f16): Remove. - (vcmpeqq_n_f16): Remove. - (vcmpeqq_f16): Remove. - (vcmpneq_n_f32): Remove. - (vcmpneq_f32): Remove. - (vcmpltq_n_f32): Remove. - (vcmpltq_f32): Remove. - (vcmpleq_n_f32): Remove. - (vcmpleq_f32): Remove. - (vcmpgtq_n_f32): Remove. - (vcmpgtq_f32): Remove. - (vcmpgeq_n_f32): Remove. - (vcmpgeq_f32): Remove. - (vcmpeqq_n_f32): Remove. - (vcmpeqq_f32): Remove. - (vcmpeqq_m_f16): Remove. - (vcmpeqq_m_f32): Remove. - (vcmpneq_m_u8): Remove. - (vcmpneq_m_n_u8): Remove. - (vcmphiq_m_u8): Remove. - (vcmphiq_m_n_u8): Remove. - (vcmpeqq_m_u8): Remove. - (vcmpeqq_m_n_u8): Remove. - (vcmpcsq_m_u8): Remove. - (vcmpcsq_m_n_u8): Remove. - (vcmpneq_m_s8): Remove. - (vcmpneq_m_n_s8): Remove. - (vcmpltq_m_s8): Remove. - (vcmpltq_m_n_s8): Remove. - (vcmpleq_m_s8): Remove. - (vcmpleq_m_n_s8): Remove. - (vcmpgtq_m_s8): Remove. - (vcmpgtq_m_n_s8): Remove. - (vcmpgeq_m_s8): Remove. - (vcmpgeq_m_n_s8): Remove. - (vcmpeqq_m_s8): Remove. - (vcmpeqq_m_n_s8): Remove. - (vcmpneq_m_u16): Remove. - (vcmpneq_m_n_u16): Remove. - (vcmphiq_m_u16): Remove. - (vcmphiq_m_n_u16): Remove. - (vcmpeqq_m_u16): Remove. - (vcmpeqq_m_n_u16): Remove. - (vcmpcsq_m_u16): Remove. - (vcmpcsq_m_n_u16): Remove. - (vcmpneq_m_s16): Remove. - (vcmpneq_m_n_s16): Remove. - (vcmpltq_m_s16): Remove. - (vcmpltq_m_n_s16): Remove. - (vcmpleq_m_s16): Remove. - (vcmpleq_m_n_s16): Remove. - (vcmpgtq_m_s16): Remove. - (vcmpgtq_m_n_s16): Remove. - (vcmpgeq_m_s16): Remove. - (vcmpgeq_m_n_s16): Remove. - (vcmpeqq_m_s16): Remove. - (vcmpeqq_m_n_s16): Remove. - (vcmpneq_m_u32): Remove. - (vcmpneq_m_n_u32): Remove. - (vcmphiq_m_u32): Remove. - (vcmphiq_m_n_u32): Remove. - (vcmpeqq_m_u32): Remove. - (vcmpeqq_m_n_u32): Remove. - (vcmpcsq_m_u32): Remove. - (vcmpcsq_m_n_u32): Remove. - (vcmpneq_m_s32): Remove. - (vcmpneq_m_n_s32): Remove. - (vcmpltq_m_s32): Remove. - (vcmpltq_m_n_s32): Remove. - (vcmpleq_m_s32): Remove. - (vcmpleq_m_n_s32): Remove. - (vcmpgtq_m_s32): Remove. - (vcmpgtq_m_n_s32): Remove. - (vcmpgeq_m_s32): Remove. - (vcmpgeq_m_n_s32): Remove. - (vcmpeqq_m_s32): Remove. - (vcmpeqq_m_n_s32): Remove. - (vcmpeqq_m_n_f16): Remove. - (vcmpgeq_m_f16): Remove. - (vcmpgeq_m_n_f16): Remove. - (vcmpgtq_m_f16): Remove. - (vcmpgtq_m_n_f16): Remove. - (vcmpleq_m_f16): Remove. - (vcmpleq_m_n_f16): Remove. - (vcmpltq_m_f16): Remove. - (vcmpltq_m_n_f16): Remove. - (vcmpneq_m_f16): Remove. - (vcmpneq_m_n_f16): Remove. - (vcmpeqq_m_n_f32): Remove. - (vcmpgeq_m_f32): Remove. - (vcmpgeq_m_n_f32): Remove. - (vcmpgtq_m_f32): Remove. - (vcmpgtq_m_n_f32): Remove. - (vcmpleq_m_f32): Remove. - (vcmpleq_m_n_f32): Remove. - (vcmpltq_m_f32): Remove. - (vcmpltq_m_n_f32): Remove. - (vcmpneq_m_f32): Remove. - (vcmpneq_m_n_f32): Remove. - (__arm_vcmpneq_s8): Remove. - (__arm_vcmpneq_s16): Remove. - (__arm_vcmpneq_s32): Remove. - (__arm_vcmpneq_u8): Remove. - (__arm_vcmpneq_u16): Remove. - (__arm_vcmpneq_u32): Remove. - (__arm_vcmpneq_n_u8): Remove. - (__arm_vcmphiq_u8): Remove. - (__arm_vcmphiq_n_u8): Remove. - (__arm_vcmpeqq_u8): Remove. - (__arm_vcmpeqq_n_u8): Remove. - (__arm_vcmpcsq_u8): Remove. - (__arm_vcmpcsq_n_u8): Remove. - (__arm_vcmpneq_n_s8): Remove. - (__arm_vcmpltq_s8): Remove. - (__arm_vcmpltq_n_s8): Remove. - (__arm_vcmpleq_s8): Remove. - (__arm_vcmpleq_n_s8): Remove. - (__arm_vcmpgtq_s8): Remove. - (__arm_vcmpgtq_n_s8): Remove. - (__arm_vcmpgeq_s8): Remove. - (__arm_vcmpgeq_n_s8): Remove. - (__arm_vcmpeqq_s8): Remove. - (__arm_vcmpeqq_n_s8): Remove. - (__arm_vcmpneq_n_u16): Remove. - (__arm_vcmphiq_u16): Remove. - (__arm_vcmphiq_n_u16): Remove. - (__arm_vcmpeqq_u16): Remove. - (__arm_vcmpeqq_n_u16): Remove. - (__arm_vcmpcsq_u16): Remove. - (__arm_vcmpcsq_n_u16): Remove. - (__arm_vcmpneq_n_s16): Remove. - (__arm_vcmpltq_s16): Remove. - (__arm_vcmpltq_n_s16): Remove. - (__arm_vcmpleq_s16): Remove. - (__arm_vcmpleq_n_s16): Remove. - (__arm_vcmpgtq_s16): Remove. - (__arm_vcmpgtq_n_s16): Remove. - (__arm_vcmpgeq_s16): Remove. - (__arm_vcmpgeq_n_s16): Remove. - (__arm_vcmpeqq_s16): Remove. - (__arm_vcmpeqq_n_s16): Remove. - (__arm_vcmpneq_n_u32): Remove. - (__arm_vcmphiq_u32): Remove. - (__arm_vcmphiq_n_u32): Remove. - (__arm_vcmpeqq_u32): Remove. - (__arm_vcmpeqq_n_u32): Remove. - (__arm_vcmpcsq_u32): Remove. - (__arm_vcmpcsq_n_u32): Remove. - (__arm_vcmpneq_n_s32): Remove. - (__arm_vcmpltq_s32): Remove. - (__arm_vcmpltq_n_s32): Remove. - (__arm_vcmpleq_s32): Remove. - (__arm_vcmpleq_n_s32): Remove. - (__arm_vcmpgtq_s32): Remove. - (__arm_vcmpgtq_n_s32): Remove. - (__arm_vcmpgeq_s32): Remove. - (__arm_vcmpgeq_n_s32): Remove. - (__arm_vcmpeqq_s32): Remove. - (__arm_vcmpeqq_n_s32): Remove. - (__arm_vcmpneq_m_u8): Remove. - (__arm_vcmpneq_m_n_u8): Remove. - (__arm_vcmphiq_m_u8): Remove. - (__arm_vcmphiq_m_n_u8): Remove. - (__arm_vcmpeqq_m_u8): Remove. - (__arm_vcmpeqq_m_n_u8): Remove. - (__arm_vcmpcsq_m_u8): Remove. - (__arm_vcmpcsq_m_n_u8): Remove. - (__arm_vcmpneq_m_s8): Remove. - (__arm_vcmpneq_m_n_s8): Remove. - (__arm_vcmpltq_m_s8): Remove. - (__arm_vcmpltq_m_n_s8): Remove. - (__arm_vcmpleq_m_s8): Remove. - (__arm_vcmpleq_m_n_s8): Remove. - (__arm_vcmpgtq_m_s8): Remove. - (__arm_vcmpgtq_m_n_s8): Remove. - (__arm_vcmpgeq_m_s8): Remove. - (__arm_vcmpgeq_m_n_s8): Remove. - (__arm_vcmpeqq_m_s8): Remove. - (__arm_vcmpeqq_m_n_s8): Remove. - (__arm_vcmpneq_m_u16): Remove. - (__arm_vcmpneq_m_n_u16): Remove. - (__arm_vcmphiq_m_u16): Remove. - (__arm_vcmphiq_m_n_u16): Remove. - (__arm_vcmpeqq_m_u16): Remove. - (__arm_vcmpeqq_m_n_u16): Remove. - (__arm_vcmpcsq_m_u16): Remove. - (__arm_vcmpcsq_m_n_u16): Remove. - (__arm_vcmpneq_m_s16): Remove. - (__arm_vcmpneq_m_n_s16): Remove. - (__arm_vcmpltq_m_s16): Remove. - (__arm_vcmpltq_m_n_s16): Remove. - (__arm_vcmpleq_m_s16): Remove. - (__arm_vcmpleq_m_n_s16): Remove. - (__arm_vcmpgtq_m_s16): Remove. - (__arm_vcmpgtq_m_n_s16): Remove. - (__arm_vcmpgeq_m_s16): Remove. - (__arm_vcmpgeq_m_n_s16): Remove. - (__arm_vcmpeqq_m_s16): Remove. - (__arm_vcmpeqq_m_n_s16): Remove. - (__arm_vcmpneq_m_u32): Remove. - (__arm_vcmpneq_m_n_u32): Remove. - (__arm_vcmphiq_m_u32): Remove. - (__arm_vcmphiq_m_n_u32): Remove. - (__arm_vcmpeqq_m_u32): Remove. - (__arm_vcmpeqq_m_n_u32): Remove. - (__arm_vcmpcsq_m_u32): Remove. - (__arm_vcmpcsq_m_n_u32): Remove. - (__arm_vcmpneq_m_s32): Remove. - (__arm_vcmpneq_m_n_s32): Remove. - (__arm_vcmpltq_m_s32): Remove. - (__arm_vcmpltq_m_n_s32): Remove. - (__arm_vcmpleq_m_s32): Remove. - (__arm_vcmpleq_m_n_s32): Remove. - (__arm_vcmpgtq_m_s32): Remove. - (__arm_vcmpgtq_m_n_s32): Remove. - (__arm_vcmpgeq_m_s32): Remove. - (__arm_vcmpgeq_m_n_s32): Remove. - (__arm_vcmpeqq_m_s32): Remove. - (__arm_vcmpeqq_m_n_s32): Remove. - (__arm_vcmpneq_n_f16): Remove. - (__arm_vcmpneq_f16): Remove. - (__arm_vcmpltq_n_f16): Remove. - (__arm_vcmpltq_f16): Remove. - (__arm_vcmpleq_n_f16): Remove. - (__arm_vcmpleq_f16): Remove. - (__arm_vcmpgtq_n_f16): Remove. - (__arm_vcmpgtq_f16): Remove. - (__arm_vcmpgeq_n_f16): Remove. - (__arm_vcmpgeq_f16): Remove. - (__arm_vcmpeqq_n_f16): Remove. - (__arm_vcmpeqq_f16): Remove. - (__arm_vcmpneq_n_f32): Remove. - (__arm_vcmpneq_f32): Remove. - (__arm_vcmpltq_n_f32): Remove. - (__arm_vcmpltq_f32): Remove. - (__arm_vcmpleq_n_f32): Remove. - (__arm_vcmpleq_f32): Remove. - (__arm_vcmpgtq_n_f32): Remove. - (__arm_vcmpgtq_f32): Remove. - (__arm_vcmpgeq_n_f32): Remove. - (__arm_vcmpgeq_f32): Remove. - (__arm_vcmpeqq_n_f32): Remove. - (__arm_vcmpeqq_f32): Remove. - (__arm_vcmpeqq_m_f16): Remove. - (__arm_vcmpeqq_m_f32): Remove. - (__arm_vcmpeqq_m_n_f16): Remove. - (__arm_vcmpgeq_m_f16): Remove. - (__arm_vcmpgeq_m_n_f16): Remove. - (__arm_vcmpgtq_m_f16): Remove. - (__arm_vcmpgtq_m_n_f16): Remove. - (__arm_vcmpleq_m_f16): Remove. - (__arm_vcmpleq_m_n_f16): Remove. - (__arm_vcmpltq_m_f16): Remove. - (__arm_vcmpltq_m_n_f16): Remove. - (__arm_vcmpneq_m_f16): Remove. - (__arm_vcmpneq_m_n_f16): Remove. - (__arm_vcmpeqq_m_n_f32): Remove. - (__arm_vcmpgeq_m_f32): Remove. - (__arm_vcmpgeq_m_n_f32): Remove. - (__arm_vcmpgtq_m_f32): Remove. - (__arm_vcmpgtq_m_n_f32): Remove. - (__arm_vcmpleq_m_f32): Remove. - (__arm_vcmpleq_m_n_f32): Remove. - (__arm_vcmpltq_m_f32): Remove. - (__arm_vcmpltq_m_n_f32): Remove. - (__arm_vcmpneq_m_f32): Remove. - (__arm_vcmpneq_m_n_f32): Remove. - (__arm_vcmpneq): Remove. - (__arm_vcmphiq): Remove. - (__arm_vcmpeqq): Remove. - (__arm_vcmpcsq): Remove. - (__arm_vcmpltq): Remove. - (__arm_vcmpleq): Remove. - (__arm_vcmpgtq): Remove. - (__arm_vcmpgeq): Remove. - (__arm_vcmpneq_m): Remove. - (__arm_vcmphiq_m): Remove. - (__arm_vcmpeqq_m): Remove. - (__arm_vcmpcsq_m): Remove. - (__arm_vcmpltq_m): Remove. - (__arm_vcmpleq_m): Remove. - (__arm_vcmpgtq_m): Remove. - (__arm_vcmpgeq_m): Remove. - -2023-05-11 Christophe Lyon <christophe.lyon@arm.com> - - * config/arm/arm-mve-builtins-shapes.cc (cmp): New. - * config/arm/arm-mve-builtins-shapes.h (cmp): New. - -2023-05-11 Christophe Lyon <christophe.lyon@arm.com> - - * config/arm/iterators.md (MVE_CMP_M, MVE_CMP_M_F, MVE_CMP_M_N) - (MVE_CMP_M_N_F, mve_cmp_op1): New. - (isu): Add VCMP* - (supf): Likewise. - * config/arm/mve.md (mve_vcmp<mve_cmp_op>q_n_<mode>): Rename into ... - (@mve_vcmp<mve_cmp_op>q_n_<mode>): ... this. - (mve_vcmpeqq_m_f<mode>, mve_vcmpgeq_m_f<mode>) - (mve_vcmpgtq_m_f<mode>, mve_vcmpleq_m_f<mode>) - (mve_vcmpltq_m_f<mode>, mve_vcmpneq_m_f<mode>): Merge into ... - (@mve_vcmp<mve_cmp_op1>q_m_f<mode>): ... this. - (mve_vcmpcsq_m_u<mode>, mve_vcmpeqq_m_<supf><mode>) - (mve_vcmpgeq_m_s<mode>, mve_vcmpgtq_m_s<mode>) - (mve_vcmphiq_m_u<mode>, mve_vcmpleq_m_s<mode>) - (mve_vcmpltq_m_s<mode>, mve_vcmpneq_m_<supf><mode>): Merge into - ... - (@mve_vcmp<mve_cmp_op1>q_m_<supf><mode>): ... this. - (mve_vcmpcsq_m_n_u<mode>, mve_vcmpeqq_m_n_<supf><mode>) - (mve_vcmpgeq_m_n_s<mode>, mve_vcmpgtq_m_n_s<mode>) - (mve_vcmphiq_m_n_u<mode>, mve_vcmpleq_m_n_s<mode>) - (mve_vcmpltq_m_n_s<mode>, mve_vcmpneq_m_n_<supf><mode>): Merge - into ... - (@mve_vcmp<mve_cmp_op1>q_m_n_<supf><mode>): ... this. - (mve_vcmpeqq_m_n_f<mode>, mve_vcmpgeq_m_n_f<mode>) - (mve_vcmpgtq_m_n_f<mode>, mve_vcmpleq_m_n_f<mode>) - (mve_vcmpltq_m_n_f<mode>, mve_vcmpneq_m_n_f<mode>): Merge into ... - (@mve_vcmp<mve_cmp_op1>q_m_n_f<mode>): ... this. - -2023-05-11 Roger Sayle <roger@nextmovesoftware.com> - - * match.pd <popcount optimizations>: Simplify popcount(X|Y) + - popcount(X&Y) as popcount(X)+popcount(Y). Likewise, simplify - popcount(X)+popcount(Y)-popcount(X&Y) as popcount(X|Y), and - vice versa. - -2023-05-11 Roger Sayle <roger@nextmovesoftware.com> - - * match.pd <popcount optimizations>: Simplify popcount(bswap(x)) - as popcount(x). Simplify popcount(rotate(x,y)) as popcount(x). - <parity optimizations>: Simplify parity(bswap(x)) as parity(x). - Simplify parity(rotate(x,y)) as parity(x). - -2023-05-11 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/autovec.md (@vec_series<mode>): New pattern - * config/riscv/riscv-protos.h (expand_vec_series): New function. - * config/riscv/riscv-v.cc (emit_binop): Ditto. - (emit_index_op): Ditto. - (expand_vec_series): Ditto. - (expand_const_vector): Add series vector handling. - * config/riscv/riscv.cc (riscv_const_insns): Enable series vector for testing. - -2023-05-10 Roger Sayle <roger@nextmovesoftware.com> - - * config/i386/i386.md (*concat<mode><dwi>3_1): Use preferred - [(const_int 0)] idiom, instead of [(clobber (const_int 0))]. - (*concat<mode><dwi>3_2): Likewise. - (*concat<mode><dwi>3_3): Likewise. - (*concat<mode><dwi>3_4): Likewise. - (*concat<mode><dwi>3_5): Likewise. - (*concat<mode><dwi>3_6): Likewise. - (*concat<mode><dwi>3_7): Likewise. - -2023-05-10 Uros Bizjak <ubizjak@gmail.com> - - PR target/92658 - * config/i386/mmx.md (sse4_1_<code>v2qiv2si2): New insn pattern. - (<insn>v4qiv4hi2): New expander. - (<insn>v2hiv2si2): Ditto. - (<insn>v2qiv2si2): Ditto. - (<insn>v2qiv2hi2): Ditto. - -2023-05-10 Jeff Law <jlaw@ventanamicro> - - * config/h8300/constraints.md (Q): Make this a special memory - constraint. - (Zz): Similarly. - -2023-05-10 Jakub Jelinek <jakub@redhat.com> - - PR fortran/109788 - * ipa-prop.cc (ipa_get_callee_param_type): Don't return TREE_VALUE (t) - if t is void_list_node. - -2023-05-10 Kyrylo Tkachov <kyrylo.tkachov@arm.com> - - * config/aarch64/aarch64-simd.md (aarch64_sqmovun<mode>_insn_le): Delete. - (aarch64_sqmovun<mode>_insn_be): Delete. - (aarch64_sqmovun<mode><vczle><vczbe>): New define_insn. - (aarch64_sqmovun<mode>): Delete expander. - -2023-05-10 Kyrylo Tkachov <kyrylo.tkachov@arm.com> - - PR target/99195 - * config/aarch64/aarch64-simd.md (aarch64_<PERMUTE:perm_insn><mode>): - Rename to... - (aarch64_<PERMUTE:perm_insn><mode><vczle><vczbe>): ... This. - (aarch64_rev<REVERSE:rev_op><mode>): Rename to... - (aarch64_rev<REVERSE:rev_op><mode><vczle><vczbe>): ... This. - -2023-05-10 Kyrylo Tkachov <kyrylo.tkachov@arm.com> - - PR target/99195 - * config/aarch64/aarch64-simd.md (aarch64_<su_optab>q<addsub><mode>): - Rename to... - (aarch64_<su_optab>q<addsub><mode><vczle><vczbe>): ... This. - (aarch64_<sur>qadd<mode>): Rename to... - (aarch64_<sur>qadd<mode><vczle><vczbe>): ... This. - -2023-05-10 Kyrylo Tkachov <kyrylo.tkachov@arm.com> - - * config/aarch64/aarch64-simd.md - (aarch64_<sur>q<r>shr<u>n_n<mode>_insn_le): Delete. - (aarch64_<sur>q<r>shr<u>n_n<mode>_insn_be): Delete. - (aarch64_<sur>q<r>shr<u>n_n<mode>_insn<vczle><vczbe>): New define_insn. - (aarch64_<sur>q<r>shr<u>n_n<mode>): Simplify expander. - -2023-05-10 Kyrylo Tkachov <kyrylo.tkachov@arm.com> - - PR target/99195 - * config/aarch64/aarch64-simd.md (aarch64_xtn<mode>_insn_le): Delete. - (aarch64_xtn<mode>_insn_be): Likewise. - (trunc<mode><Vnarrowq>2): Rename to... - (trunc<mode><Vnarrowq>2<vczle><vczbe>): ... This. - (aarch64_xtn<mode>): Move under the above. Just emit the truncate RTL. - (aarch64_<su>qmovn<mode>): Likewise. - (aarch64_<su>qmovn<mode><vczle><vczbe>): New define_insn. - (aarch64_<su>qmovn<mode>_insn_le): Delete. - (aarch64_<su>qmovn<mode>_insn_be): Likewise. - -2023-05-10 Li Xu <xuli1@eswincomputing.com> - - * config/riscv/riscv-vsetvl.cc (gen_vsetvl_pat): For vfmv.f.s/vmv.x.s - intruction replace null avl with (const_int 0). - -2023-05-10 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv.cc (riscv_support_vector_misalignment): Fix - incorrect codes. - -2023-05-10 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - PR target/109773 - * config/riscv/riscv-vsetvl.cc (avl_source_has_vsetvl_p): New function. - (source_equal_p): Fix dead loop in vsetvl avl checking. - -2023-05-10 Hans-Peter Nilsson <hp@axis.com> - - * config/cris/cris.cc (cris_postdbr_cmpelim): Correct mode - of modeadjusted_dccr. - -2023-05-09 Christophe Lyon <christophe.lyon@arm.com> - - * config/arm/arm-mve-builtins-base.cc (vmaxaq, vminaq): New. - * config/arm/arm-mve-builtins-base.def (vmaxaq, vminaq): New. - * config/arm/arm-mve-builtins-base.h (vmaxaq, vminaq): New. - * config/arm/arm-mve-builtins.cc - (function_instance::has_inactive_argument): Handle vmaxaq and - vminaq. - * config/arm/arm_mve.h (vminaq): Remove. - (vmaxaq): Remove. - (vminaq_m): Remove. - (vmaxaq_m): Remove. - (vminaq_s8): Remove. - (vmaxaq_s8): Remove. - (vminaq_s16): Remove. - (vmaxaq_s16): Remove. - (vminaq_s32): Remove. - (vmaxaq_s32): Remove. - (vminaq_m_s8): Remove. - (vmaxaq_m_s8): Remove. - (vminaq_m_s16): Remove. - (vmaxaq_m_s16): Remove. - (vminaq_m_s32): Remove. - (vmaxaq_m_s32): Remove. - (__arm_vminaq_s8): Remove. - (__arm_vmaxaq_s8): Remove. - (__arm_vminaq_s16): Remove. - (__arm_vmaxaq_s16): Remove. - (__arm_vminaq_s32): Remove. - (__arm_vmaxaq_s32): Remove. - (__arm_vminaq_m_s8): Remove. - (__arm_vmaxaq_m_s8): Remove. - (__arm_vminaq_m_s16): Remove. - (__arm_vmaxaq_m_s16): Remove. - (__arm_vminaq_m_s32): Remove. - (__arm_vmaxaq_m_s32): Remove. - (__arm_vminaq): Remove. - (__arm_vmaxaq): Remove. - (__arm_vminaq_m): Remove. - (__arm_vmaxaq_m): Remove. - -2023-05-09 Christophe Lyon <christophe.lyon@arm.com> - - * config/arm/iterators.md (MVE_VMAXAVMINAQ, MVE_VMAXAVMINAQ_M): - New. - (mve_insn): Add vmaxa, vmina. - (supf): Add VMAXAQ_S, VMAXAQ_M_S, VMINAQ_S, VMINAQ_M_S. - * config/arm/mve.md (mve_vmaxaq_s<mode>, mve_vminaq_s<mode>): - Merge into ... - (@mve_<mve_insn>q_<supf><mode>): ... this. - (mve_vmaxaq_m_s<mode>, mve_vminaq_m_s<mode>): Merge into ... - (@mve_<mve_insn>q_m_<supf><mode>): ... this. - -2023-05-09 Christophe Lyon <christophe.lyon@arm.com> - - * config/arm/arm-mve-builtins-shapes.cc (binary_maxamina): New. - * config/arm/arm-mve-builtins-shapes.h (binary_maxamina): New. - -2023-05-09 Christophe Lyon <christophe.lyon@arm.com> - - * config/arm/arm-mve-builtins-base.cc (vmaxnmaq, vminnmaq): New. - * config/arm/arm-mve-builtins-base.def (vmaxnmaq, vminnmaq): New. - * config/arm/arm-mve-builtins-base.h (vmaxnmaq, vminnmaq): New. - * config/arm/arm-mve-builtins.cc - (function_instance::has_inactive_argument): Handle vmaxnmaq and - vminnmaq. - * config/arm/arm_mve.h (vminnmaq): Remove. - (vmaxnmaq): Remove. - (vmaxnmaq_m): Remove. - (vminnmaq_m): Remove. - (vminnmaq_f16): Remove. - (vmaxnmaq_f16): Remove. - (vminnmaq_f32): Remove. - (vmaxnmaq_f32): Remove. - (vmaxnmaq_m_f16): Remove. - (vminnmaq_m_f16): Remove. - (vmaxnmaq_m_f32): Remove. - (vminnmaq_m_f32): Remove. - (__arm_vminnmaq_f16): Remove. - (__arm_vmaxnmaq_f16): Remove. - (__arm_vminnmaq_f32): Remove. - (__arm_vmaxnmaq_f32): Remove. - (__arm_vmaxnmaq_m_f16): Remove. - (__arm_vminnmaq_m_f16): Remove. - (__arm_vmaxnmaq_m_f32): Remove. - (__arm_vminnmaq_m_f32): Remove. - (__arm_vminnmaq): Remove. - (__arm_vmaxnmaq): Remove. - (__arm_vmaxnmaq_m): Remove. - (__arm_vminnmaq_m): Remove. - -2023-05-09 Christophe Lyon <christophe.lyon@arm.com> - - * config/arm/iterators.md (MVE_VMAXNMA_VMINNMAQ) - (MVE_VMAXNMA_VMINNMAQ_M): New. - (mve_insn): Add vmaxnma, vminnma. - * config/arm/mve.md (mve_vmaxnmaq_f<mode>, mve_vminnmaq_f<mode>): - Merge into ... - (@mve_<mve_insn>q_f<mode>): ... this. - (mve_vmaxnmaq_m_f<mode>, mve_vminnmaq_m_f<mode>): Merge into ... - (@mve_<mve_insn>q_m_f<mode>): ... this. - -2023-05-09 Christophe Lyon <christophe.lyon@arm.com> - - * config/arm/arm-mve-builtins-base.cc (FUNCTION_PRED_P_F): New. - (vmaxnmavq, vmaxnmvq, vminnmavq, vminnmvq): New. - * config/arm/arm-mve-builtins-base.def (vmaxnmavq, vmaxnmvq) - (vminnmavq, vminnmvq): New. - * config/arm/arm-mve-builtins-base.h (vmaxnmavq, vmaxnmvq) - (vminnmavq, vminnmvq): New. - * config/arm/arm_mve.h (vminnmvq): Remove. - (vminnmavq): Remove. - (vmaxnmvq): Remove. - (vmaxnmavq): Remove. - (vmaxnmavq_p): Remove. - (vmaxnmvq_p): Remove. - (vminnmavq_p): Remove. - (vminnmvq_p): Remove. - (vminnmvq_f16): Remove. - (vminnmavq_f16): Remove. - (vmaxnmvq_f16): Remove. - (vmaxnmavq_f16): Remove. - (vminnmvq_f32): Remove. - (vminnmavq_f32): Remove. - (vmaxnmvq_f32): Remove. - (vmaxnmavq_f32): Remove. - (vmaxnmavq_p_f16): Remove. - (vmaxnmvq_p_f16): Remove. - (vminnmavq_p_f16): Remove. - (vminnmvq_p_f16): Remove. - (vmaxnmavq_p_f32): Remove. - (vmaxnmvq_p_f32): Remove. - (vminnmavq_p_f32): Remove. - (vminnmvq_p_f32): Remove. - (__arm_vminnmvq_f16): Remove. - (__arm_vminnmavq_f16): Remove. - (__arm_vmaxnmvq_f16): Remove. - (__arm_vmaxnmavq_f16): Remove. - (__arm_vminnmvq_f32): Remove. - (__arm_vminnmavq_f32): Remove. - (__arm_vmaxnmvq_f32): Remove. - (__arm_vmaxnmavq_f32): Remove. - (__arm_vmaxnmavq_p_f16): Remove. - (__arm_vmaxnmvq_p_f16): Remove. - (__arm_vminnmavq_p_f16): Remove. - (__arm_vminnmvq_p_f16): Remove. - (__arm_vmaxnmavq_p_f32): Remove. - (__arm_vmaxnmvq_p_f32): Remove. - (__arm_vminnmavq_p_f32): Remove. - (__arm_vminnmvq_p_f32): Remove. - (__arm_vminnmvq): Remove. - (__arm_vminnmavq): Remove. - (__arm_vmaxnmvq): Remove. - (__arm_vmaxnmavq): Remove. - (__arm_vmaxnmavq_p): Remove. - (__arm_vmaxnmvq_p): Remove. - (__arm_vminnmavq_p): Remove. - (__arm_vminnmvq_p): Remove. - (__arm_vmaxnmavq_m): Remove. - (__arm_vmaxnmvq_m): Remove. - -2023-05-09 Christophe Lyon <christophe.lyon@arm.com> - - * config/arm/arm-mve-builtins-functions.h - (unspec_mve_function_exact_insn_pred_p): Use code_for_mve_q_p_f. - -2023-05-09 Christophe Lyon <christophe.lyon@arm.com> - - * config/arm/iterators.md (MVE_VMAXNMxV_MINNMxVQ) - (MVE_VMAXNMxV_MINNMxVQ_P): New. - (mve_insn): Add vmaxnmav, vmaxnmv, vminnmav, vminnmv. - * config/arm/mve.md (mve_vmaxnmavq_f<mode>, mve_vmaxnmvq_f<mode>) - (mve_vminnmavq_f<mode>, mve_vminnmvq_f<mode>): Merge into ... - (@mve_<mve_insn>q_f<mode>): ... this. - (mve_vmaxnmavq_p_f<mode>, mve_vmaxnmvq_p_f<mode>) - (mve_vminnmavq_p_f<mode>, mve_vminnmvq_p_f<mode>): Merge into ... - (@mve_<mve_insn>q_p_f<mode>): ... this. - -2023-05-09 Christophe Lyon <christophe.lyon@arm.com> - - * config/arm/arm-mve-builtins-base.cc (vmaxnmq, vminnmq): New. - * config/arm/arm-mve-builtins-base.def (vmaxnmq, vminnmq): New. - * config/arm/arm-mve-builtins-base.h (vmaxnmq, vminnmq): New. - * config/arm/arm_mve.h (vminnmq): Remove. - (vmaxnmq): Remove. - (vmaxnmq_m): Remove. - (vminnmq_m): Remove. - (vminnmq_x): Remove. - (vmaxnmq_x): Remove. - (vminnmq_f16): Remove. - (vmaxnmq_f16): Remove. - (vminnmq_f32): Remove. - (vmaxnmq_f32): Remove. - (vmaxnmq_m_f32): Remove. - (vmaxnmq_m_f16): Remove. - (vminnmq_m_f32): Remove. - (vminnmq_m_f16): Remove. - (vminnmq_x_f16): Remove. - (vminnmq_x_f32): Remove. - (vmaxnmq_x_f16): Remove. - (vmaxnmq_x_f32): Remove. - (__arm_vminnmq_f16): Remove. - (__arm_vmaxnmq_f16): Remove. - (__arm_vminnmq_f32): Remove. - (__arm_vmaxnmq_f32): Remove. - (__arm_vmaxnmq_m_f32): Remove. - (__arm_vmaxnmq_m_f16): Remove. - (__arm_vminnmq_m_f32): Remove. - (__arm_vminnmq_m_f16): Remove. - (__arm_vminnmq_x_f16): Remove. - (__arm_vminnmq_x_f32): Remove. - (__arm_vmaxnmq_x_f16): Remove. - (__arm_vmaxnmq_x_f32): Remove. - (__arm_vminnmq): Remove. - (__arm_vmaxnmq): Remove. - (__arm_vmaxnmq_m): Remove. - (__arm_vminnmq_m): Remove. - (__arm_vminnmq_x): Remove. - (__arm_vmaxnmq_x): Remove. - -2023-05-09 Christophe Lyon <christophe.lyon@arm.com> - - * config/arm/iterators.md (MAX_MIN_F): New. - (MVE_FP_M_BINARY): Add VMAXNMQ_M_F, VMINNMQ_M_F. - (mve_insn): Add vmaxnm, vminnm. - (max_min_f_str): New. - * config/arm/mve.md (mve_vmaxnmq_f<mode>, mve_vminnmq_f<mode>): - Merge into ... - (@mve_<max_min_f_str>q_f<mode>): ... this. - (mve_vmaxnmq_m_f<mode>, mve_vminnmq_m_f<mode>): Merge into ... - (@mve_<mve_insn>q_m_f<mode>): ... this. - -2023-05-09 Christophe Lyon <christophe.lyon@arm.com> - - * config/arm/vec-common.md (smin<mode>3): Use VDQWH iterator. - (smax<mode>3): Likewise. - -2023-05-09 Christophe Lyon <christophe.lyon@arm.com> - - * config/arm/arm-mve-builtins-base.cc (FUNCTION_PRED_P_S_U) - (FUNCTION_PRED_P_S): New. - (vmaxavq, vminavq, vmaxvq, vminvq): New. - * config/arm/arm-mve-builtins-base.def (vmaxavq, vminavq, vmaxvq) - (vminvq): New. - * config/arm/arm-mve-builtins-base.h (vmaxavq, vminavq, vmaxvq) - (vminvq): New. - * config/arm/arm_mve.h (vminvq): Remove. - (vmaxvq): Remove. - (vminvq_p): Remove. - (vmaxvq_p): Remove. - (vminvq_u8): Remove. - (vmaxvq_u8): Remove. - (vminvq_s8): Remove. - (vmaxvq_s8): Remove. - (vminvq_u16): Remove. - (vmaxvq_u16): Remove. - (vminvq_s16): Remove. - (vmaxvq_s16): Remove. - (vminvq_u32): Remove. - (vmaxvq_u32): Remove. - (vminvq_s32): Remove. - (vmaxvq_s32): Remove. - (vminvq_p_u8): Remove. - (vmaxvq_p_u8): Remove. - (vminvq_p_s8): Remove. - (vmaxvq_p_s8): Remove. - (vminvq_p_u16): Remove. - (vmaxvq_p_u16): Remove. - (vminvq_p_s16): Remove. - (vmaxvq_p_s16): Remove. - (vminvq_p_u32): Remove. - (vmaxvq_p_u32): Remove. - (vminvq_p_s32): Remove. - (vmaxvq_p_s32): Remove. - (__arm_vminvq_u8): Remove. - (__arm_vmaxvq_u8): Remove. - (__arm_vminvq_s8): Remove. - (__arm_vmaxvq_s8): Remove. - (__arm_vminvq_u16): Remove. - (__arm_vmaxvq_u16): Remove. - (__arm_vminvq_s16): Remove. - (__arm_vmaxvq_s16): Remove. - (__arm_vminvq_u32): Remove. - (__arm_vmaxvq_u32): Remove. - (__arm_vminvq_s32): Remove. - (__arm_vmaxvq_s32): Remove. - (__arm_vminvq_p_u8): Remove. - (__arm_vmaxvq_p_u8): Remove. - (__arm_vminvq_p_s8): Remove. - (__arm_vmaxvq_p_s8): Remove. - (__arm_vminvq_p_u16): Remove. - (__arm_vmaxvq_p_u16): Remove. - (__arm_vminvq_p_s16): Remove. - (__arm_vmaxvq_p_s16): Remove. - (__arm_vminvq_p_u32): Remove. - (__arm_vmaxvq_p_u32): Remove. - (__arm_vminvq_p_s32): Remove. - (__arm_vmaxvq_p_s32): Remove. - (__arm_vminvq): Remove. - (__arm_vmaxvq): Remove. - (__arm_vminvq_p): Remove. - (__arm_vmaxvq_p): Remove. - (vminavq): Remove. - (vmaxavq): Remove. - (vminavq_p): Remove. - (vmaxavq_p): Remove. - (vminavq_s8): Remove. - (vmaxavq_s8): Remove. - (vminavq_s16): Remove. - (vmaxavq_s16): Remove. - (vminavq_s32): Remove. - (vmaxavq_s32): Remove. - (vminavq_p_s8): Remove. - (vmaxavq_p_s8): Remove. - (vminavq_p_s16): Remove. - (vmaxavq_p_s16): Remove. - (vminavq_p_s32): Remove. - (vmaxavq_p_s32): Remove. - (__arm_vminavq_s8): Remove. - (__arm_vmaxavq_s8): Remove. - (__arm_vminavq_s16): Remove. - (__arm_vmaxavq_s16): Remove. - (__arm_vminavq_s32): Remove. - (__arm_vmaxavq_s32): Remove. - (__arm_vminavq_p_s8): Remove. - (__arm_vmaxavq_p_s8): Remove. - (__arm_vminavq_p_s16): Remove. - (__arm_vmaxavq_p_s16): Remove. - (__arm_vminavq_p_s32): Remove. - (__arm_vmaxavq_p_s32): Remove. - (__arm_vminavq): Remove. - (__arm_vmaxavq): Remove. - (__arm_vminavq_p): Remove. - (__arm_vmaxavq_p): Remove. - -2023-05-09 Christophe Lyon <christophe.lyon@arm.com> - - * config/arm/iterators.md (MVE_VMAXVQ_VMINVQ, MVE_VMAXVQ_VMINVQ_P): New. - (mve_insn): Add vmaxav, vmaxv, vminav, vminv. - (supf): Add VMAXAVQ_S, VMAXAVQ_P_S, VMINAVQ_S, VMINAVQ_P_S. - * config/arm/mve.md (mve_vmaxavq_s<mode>, mve_vmaxvq_<supf><mode>) - (mve_vminavq_s<mode>, mve_vminvq_<supf><mode>): Merge into ... - (@mve_<mve_insn>q_<supf><mode>): ... this. - (mve_vmaxavq_p_s<mode>, mve_vmaxvq_p_<supf><mode>) - (mve_vminavq_p_s<mode>, mve_vminvq_p_<supf><mode>): Merge into ... - (@mve_<mve_insn>q_p_<supf><mode>): ... this. - -2023-05-09 Christophe Lyon <christophe.lyon@arm.com> - - * config/arm/arm-mve-builtins-functions.h (class - unspec_mve_function_exact_insn_pred_p): New. - -2023-05-09 Christophe Lyon <christophe.lyon@arm.com> - - * config/arm/arm-mve-builtins-shapes.cc (binary_maxavminav): New. - * config/arm/arm-mve-builtins-shapes.h (binary_maxavminav): New. - -2023-05-09 Christophe Lyon <christophe.lyon@arm.com> - - * config/arm/arm-mve-builtins-shapes.cc (binary_maxvminv): New. - * config/arm/arm-mve-builtins-shapes.h (binary_maxvminv): New. - -2023-05-09 Richard Sandiford <richard.sandiford@arm.com> - - * config/aarch64/aarch64-protos.h (aarch64_adjust_reg_alloc_order): - Declare. - * config/aarch64/aarch64.h (REG_ALLOC_ORDER): Define. - (ADJUST_REG_ALLOC_ORDER): Likewise. - * config/aarch64/aarch64.cc (aarch64_adjust_reg_alloc_order): New - function. - * config/aarch64/aarch64-sve.md (*vcond_mask_<mode><vpred>): Use - Upa rather than Upl for unpredicated movprfx alternatives. - -2023-05-09 Jeff Law <jlaw@ventanamicro> - - * config/h8300/testcompare.md: Add peephole2 which uses a memory - load to set flags, thus eliminating a compare against zero. - -2023-05-09 Christophe Lyon <christophe.lyon@arm.com> - - * config/arm/arm-mve-builtins-base.cc (vshllbq, vshlltq): New. - * config/arm/arm-mve-builtins-base.def (vshllbq, vshlltq): New. - * config/arm/arm-mve-builtins-base.h (vshllbq, vshlltq): New. - * config/arm/arm_mve.h (vshlltq): Remove. - (vshllbq): Remove. - (vshllbq_m): Remove. - (vshlltq_m): Remove. - (vshllbq_x): Remove. - (vshlltq_x): Remove. - (vshlltq_n_u8): Remove. - (vshllbq_n_u8): Remove. - (vshlltq_n_s8): Remove. - (vshllbq_n_s8): Remove. - (vshlltq_n_u16): Remove. - (vshllbq_n_u16): Remove. - (vshlltq_n_s16): Remove. - (vshllbq_n_s16): Remove. - (vshllbq_m_n_s8): Remove. - (vshllbq_m_n_s16): Remove. - (vshllbq_m_n_u8): Remove. - (vshllbq_m_n_u16): Remove. - (vshlltq_m_n_s8): Remove. - (vshlltq_m_n_s16): Remove. - (vshlltq_m_n_u8): Remove. - (vshlltq_m_n_u16): Remove. - (vshllbq_x_n_s8): Remove. - (vshllbq_x_n_s16): Remove. - (vshllbq_x_n_u8): Remove. - (vshllbq_x_n_u16): Remove. - (vshlltq_x_n_s8): Remove. - (vshlltq_x_n_s16): Remove. - (vshlltq_x_n_u8): Remove. - (vshlltq_x_n_u16): Remove. - (__arm_vshlltq_n_u8): Remove. - (__arm_vshllbq_n_u8): Remove. - (__arm_vshlltq_n_s8): Remove. - (__arm_vshllbq_n_s8): Remove. - (__arm_vshlltq_n_u16): Remove. - (__arm_vshllbq_n_u16): Remove. - (__arm_vshlltq_n_s16): Remove. - (__arm_vshllbq_n_s16): Remove. - (__arm_vshllbq_m_n_s8): Remove. - (__arm_vshllbq_m_n_s16): Remove. - (__arm_vshllbq_m_n_u8): Remove. - (__arm_vshllbq_m_n_u16): Remove. - (__arm_vshlltq_m_n_s8): Remove. - (__arm_vshlltq_m_n_s16): Remove. - (__arm_vshlltq_m_n_u8): Remove. - (__arm_vshlltq_m_n_u16): Remove. - (__arm_vshllbq_x_n_s8): Remove. - (__arm_vshllbq_x_n_s16): Remove. - (__arm_vshllbq_x_n_u8): Remove. - (__arm_vshllbq_x_n_u16): Remove. - (__arm_vshlltq_x_n_s8): Remove. - (__arm_vshlltq_x_n_s16): Remove. - (__arm_vshlltq_x_n_u8): Remove. - (__arm_vshlltq_x_n_u16): Remove. - (__arm_vshlltq): Remove. - (__arm_vshllbq): Remove. - (__arm_vshllbq_m): Remove. - (__arm_vshlltq_m): Remove. - (__arm_vshllbq_x): Remove. - (__arm_vshlltq_x): Remove. - -2023-05-09 Christophe Lyon <christophe.lyon@arm.com> - - * config/arm/iterators.md (mve_insn): Add vshllb, vshllt. - (VSHLLBQ_N, VSHLLTQ_N): Remove. - (VSHLLxQ_N): New. - (VSHLLBQ_M_N, VSHLLTQ_M_N): Remove. - (VSHLLxQ_M_N): New. - * config/arm/mve.md (mve_vshllbq_n_<supf><mode>) - (mve_vshlltq_n_<supf><mode>): Merge into ... - (@mve_<mve_insn>q_n_<supf><mode>): ... this. - (mve_vshllbq_m_n_<supf><mode>, mve_vshlltq_m_n_<supf><mode>): - Merge into ... - (@mve_<mve_insn>q_m_n_<supf><mode>): ... this. - -2023-05-09 Christophe Lyon <christophe.lyon@arm.com> - - * config/arm/arm-mve-builtins-shapes.cc (binary_widen_n): New. - * config/arm/arm-mve-builtins-shapes.h (binary_widen_n): New. - -2023-05-09 Christophe Lyon <christophe.lyon@arm.com> - - * config/arm/arm-mve-builtins-base.cc (vmovnbq, vmovntq, vqmovnbq) - (vqmovntq, vqmovunbq, vqmovuntq): New. - * config/arm/arm-mve-builtins-base.def (vmovnbq, vmovntq) - (vqmovnbq, vqmovntq, vqmovunbq, vqmovuntq): New. - * config/arm/arm-mve-builtins-base.h (vmovnbq, vmovntq, vqmovnbq) - (vqmovntq, vqmovunbq, vqmovuntq): New. - * config/arm/arm-mve-builtins.cc - (function_instance::has_inactive_argument): Handle vmovnbq, - vmovntq, vqmovnbq, vqmovntq, vqmovunbq, vqmovuntq. - * config/arm/arm_mve.h (vqmovntq): Remove. - (vqmovnbq): Remove. - (vqmovnbq_m): Remove. - (vqmovntq_m): Remove. - (vqmovntq_u16): Remove. - (vqmovnbq_u16): Remove. - (vqmovntq_s16): Remove. - (vqmovnbq_s16): Remove. - (vqmovntq_u32): Remove. - (vqmovnbq_u32): Remove. - (vqmovntq_s32): Remove. - (vqmovnbq_s32): Remove. - (vqmovnbq_m_s16): Remove. - (vqmovntq_m_s16): Remove. - (vqmovnbq_m_u16): Remove. - (vqmovntq_m_u16): Remove. - (vqmovnbq_m_s32): Remove. - (vqmovntq_m_s32): Remove. - (vqmovnbq_m_u32): Remove. - (vqmovntq_m_u32): Remove. - (__arm_vqmovntq_u16): Remove. - (__arm_vqmovnbq_u16): Remove. - (__arm_vqmovntq_s16): Remove. - (__arm_vqmovnbq_s16): Remove. - (__arm_vqmovntq_u32): Remove. - (__arm_vqmovnbq_u32): Remove. - (__arm_vqmovntq_s32): Remove. - (__arm_vqmovnbq_s32): Remove. - (__arm_vqmovnbq_m_s16): Remove. - (__arm_vqmovntq_m_s16): Remove. - (__arm_vqmovnbq_m_u16): Remove. - (__arm_vqmovntq_m_u16): Remove. - (__arm_vqmovnbq_m_s32): Remove. - (__arm_vqmovntq_m_s32): Remove. - (__arm_vqmovnbq_m_u32): Remove. - (__arm_vqmovntq_m_u32): Remove. - (__arm_vqmovntq): Remove. - (__arm_vqmovnbq): Remove. - (__arm_vqmovnbq_m): Remove. - (__arm_vqmovntq_m): Remove. - (vmovntq): Remove. - (vmovnbq): Remove. - (vmovnbq_m): Remove. - (vmovntq_m): Remove. - (vmovntq_u16): Remove. - (vmovnbq_u16): Remove. - (vmovntq_s16): Remove. - (vmovnbq_s16): Remove. - (vmovntq_u32): Remove. - (vmovnbq_u32): Remove. - (vmovntq_s32): Remove. - (vmovnbq_s32): Remove. - (vmovnbq_m_s16): Remove. - (vmovntq_m_s16): Remove. - (vmovnbq_m_u16): Remove. - (vmovntq_m_u16): Remove. - (vmovnbq_m_s32): Remove. - (vmovntq_m_s32): Remove. - (vmovnbq_m_u32): Remove. - (vmovntq_m_u32): Remove. - (__arm_vmovntq_u16): Remove. - (__arm_vmovnbq_u16): Remove. - (__arm_vmovntq_s16): Remove. - (__arm_vmovnbq_s16): Remove. - (__arm_vmovntq_u32): Remove. - (__arm_vmovnbq_u32): Remove. - (__arm_vmovntq_s32): Remove. - (__arm_vmovnbq_s32): Remove. - (__arm_vmovnbq_m_s16): Remove. - (__arm_vmovntq_m_s16): Remove. - (__arm_vmovnbq_m_u16): Remove. - (__arm_vmovntq_m_u16): Remove. - (__arm_vmovnbq_m_s32): Remove. - (__arm_vmovntq_m_s32): Remove. - (__arm_vmovnbq_m_u32): Remove. - (__arm_vmovntq_m_u32): Remove. - (__arm_vmovntq): Remove. - (__arm_vmovnbq): Remove. - (__arm_vmovnbq_m): Remove. - (__arm_vmovntq_m): Remove. - (vqmovuntq): Remove. - (vqmovunbq): Remove. - (vqmovunbq_m): Remove. - (vqmovuntq_m): Remove. - (vqmovuntq_s16): Remove. - (vqmovunbq_s16): Remove. - (vqmovuntq_s32): Remove. - (vqmovunbq_s32): Remove. - (vqmovunbq_m_s16): Remove. - (vqmovuntq_m_s16): Remove. - (vqmovunbq_m_s32): Remove. - (vqmovuntq_m_s32): Remove. - (__arm_vqmovuntq_s16): Remove. - (__arm_vqmovunbq_s16): Remove. - (__arm_vqmovuntq_s32): Remove. - (__arm_vqmovunbq_s32): Remove. - (__arm_vqmovunbq_m_s16): Remove. - (__arm_vqmovuntq_m_s16): Remove. - (__arm_vqmovunbq_m_s32): Remove. - (__arm_vqmovuntq_m_s32): Remove. - (__arm_vqmovuntq): Remove. - (__arm_vqmovunbq): Remove. - (__arm_vqmovunbq_m): Remove. - (__arm_vqmovuntq_m): Remove. - -2023-05-09 Christophe Lyon <christophe.lyon@arm.com> - - * config/arm/iterators.md (MVE_MOVN, MVE_MOVN_M): New. - (mve_insn): Add vmovnb, vmovnt, vqmovnb, vqmovnt, vqmovunb, - vqmovunt. - (isu): Likewise. - (supf): Add VQMOVUNBQ_M_S, VQMOVUNBQ_S, VQMOVUNTQ_M_S, - VQMOVUNTQ_S. - * config/arm/mve.md (mve_vmovnbq_<supf><mode>) - (mve_vmovntq_<supf><mode>, mve_vqmovnbq_<supf><mode>) - (mve_vqmovntq_<supf><mode>, mve_vqmovunbq_s<mode>) - (mve_vqmovuntq_s<mode>): Merge into ... - (@mve_<mve_insn>q_<supf><mode>): ... this. - (mve_vmovnbq_m_<supf><mode>, mve_vmovntq_m_<supf><mode>) - (mve_vqmovnbq_m_<supf><mode>, mve_vqmovntq_m_<supf><mode>) - (mve_vqmovunbq_m_s<mode>, mve_vqmovuntq_m_s<mode>): Merge into ... - (@mve_<mve_insn>q_m_<supf><mode>): ... this. - -2023-05-09 Christophe Lyon <christophe.lyon@arm.com> - - * config/arm/arm-mve-builtins-shapes.cc (binary_move_narrow): New. - (binary_move_narrow_unsigned): New. - * config/arm/arm-mve-builtins-shapes.h (binary_move_narrow): New. - (binary_move_narrow_unsigned): New. - -2023-05-09 Christophe Lyon <christophe.lyon@arm.com> - - * config/arm/arm-mve-builtins-base.cc (FUNCTION_ONLY_F): New. - (vrndaq, vrndmq, vrndnq, vrndpq, vrndq, vrndxq): New. - * config/arm/arm-mve-builtins-base.def (vrndaq, vrndmq, vrndnq) - (vrndpq, vrndq, vrndxq): New. - * config/arm/arm-mve-builtins-base.h (vrndaq, vrndmq, vrndnq) - (vrndpq, vrndq, vrndxq): New. - * config/arm/arm_mve.h (vrndxq): Remove. - (vrndq): Remove. - (vrndpq): Remove. - (vrndnq): Remove. - (vrndmq): Remove. - (vrndaq): Remove. - (vrndaq_m): Remove. - (vrndmq_m): Remove. - (vrndnq_m): Remove. - (vrndpq_m): Remove. - (vrndq_m): Remove. - (vrndxq_m): Remove. - (vrndq_x): Remove. - (vrndnq_x): Remove. - (vrndmq_x): Remove. - (vrndpq_x): Remove. - (vrndaq_x): Remove. - (vrndxq_x): Remove. - (vrndxq_f16): Remove. - (vrndxq_f32): Remove. - (vrndq_f16): Remove. - (vrndq_f32): Remove. - (vrndpq_f16): Remove. - (vrndpq_f32): Remove. - (vrndnq_f16): Remove. - (vrndnq_f32): Remove. - (vrndmq_f16): Remove. - (vrndmq_f32): Remove. - (vrndaq_f16): Remove. - (vrndaq_f32): Remove. - (vrndaq_m_f16): Remove. - (vrndmq_m_f16): Remove. - (vrndnq_m_f16): Remove. - (vrndpq_m_f16): Remove. - (vrndq_m_f16): Remove. - (vrndxq_m_f16): Remove. - (vrndaq_m_f32): Remove. - (vrndmq_m_f32): Remove. - (vrndnq_m_f32): Remove. - (vrndpq_m_f32): Remove. - (vrndq_m_f32): Remove. - (vrndxq_m_f32): Remove. - (vrndq_x_f16): Remove. - (vrndq_x_f32): Remove. - (vrndnq_x_f16): Remove. - (vrndnq_x_f32): Remove. - (vrndmq_x_f16): Remove. - (vrndmq_x_f32): Remove. - (vrndpq_x_f16): Remove. - (vrndpq_x_f32): Remove. - (vrndaq_x_f16): Remove. - (vrndaq_x_f32): Remove. - (vrndxq_x_f16): Remove. - (vrndxq_x_f32): Remove. - (__arm_vrndxq_f16): Remove. - (__arm_vrndxq_f32): Remove. - (__arm_vrndq_f16): Remove. - (__arm_vrndq_f32): Remove. - (__arm_vrndpq_f16): Remove. - (__arm_vrndpq_f32): Remove. - (__arm_vrndnq_f16): Remove. - (__arm_vrndnq_f32): Remove. - (__arm_vrndmq_f16): Remove. - (__arm_vrndmq_f32): Remove. - (__arm_vrndaq_f16): Remove. - (__arm_vrndaq_f32): Remove. - (__arm_vrndaq_m_f16): Remove. - (__arm_vrndmq_m_f16): Remove. - (__arm_vrndnq_m_f16): Remove. - (__arm_vrndpq_m_f16): Remove. - (__arm_vrndq_m_f16): Remove. - (__arm_vrndxq_m_f16): Remove. - (__arm_vrndaq_m_f32): Remove. - (__arm_vrndmq_m_f32): Remove. - (__arm_vrndnq_m_f32): Remove. - (__arm_vrndpq_m_f32): Remove. - (__arm_vrndq_m_f32): Remove. - (__arm_vrndxq_m_f32): Remove. - (__arm_vrndq_x_f16): Remove. - (__arm_vrndq_x_f32): Remove. - (__arm_vrndnq_x_f16): Remove. - (__arm_vrndnq_x_f32): Remove. - (__arm_vrndmq_x_f16): Remove. - (__arm_vrndmq_x_f32): Remove. - (__arm_vrndpq_x_f16): Remove. - (__arm_vrndpq_x_f32): Remove. - (__arm_vrndaq_x_f16): Remove. - (__arm_vrndaq_x_f32): Remove. - (__arm_vrndxq_x_f16): Remove. - (__arm_vrndxq_x_f32): Remove. - (__arm_vrndxq): Remove. - (__arm_vrndq): Remove. - (__arm_vrndpq): Remove. - (__arm_vrndnq): Remove. - (__arm_vrndmq): Remove. - (__arm_vrndaq): Remove. - (__arm_vrndaq_m): Remove. - (__arm_vrndmq_m): Remove. - (__arm_vrndnq_m): Remove. - (__arm_vrndpq_m): Remove. - (__arm_vrndq_m): Remove. - (__arm_vrndxq_m): Remove. - (__arm_vrndq_x): Remove. - (__arm_vrndnq_x): Remove. - (__arm_vrndmq_x): Remove. - (__arm_vrndpq_x): Remove. - (__arm_vrndaq_x): Remove. - (__arm_vrndxq_x): Remove. - -2023-05-09 Christophe Lyon <christophe.lyon@arm.com> - - * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITHOUT_N_NO_U_F): New. - (vabsq, vnegq, vclsq, vclzq, vqabsq, vqnegq): New. - * config/arm/arm-mve-builtins-base.def (vabsq, vnegq, vclsq) - (vclzq, vqabsq, vqnegq): New. - * config/arm/arm-mve-builtins-base.h (vabsq, vnegq, vclsq, vclzq) - (vqabsq, vqnegq): New. - * config/arm/arm_mve.h (vabsq): Remove. - (vabsq_m): Remove. - (vabsq_x): Remove. - (vabsq_f16): Remove. - (vabsq_f32): Remove. - (vabsq_s8): Remove. - (vabsq_s16): Remove. - (vabsq_s32): Remove. - (vabsq_m_s8): Remove. - (vabsq_m_s16): Remove. - (vabsq_m_s32): Remove. - (vabsq_m_f16): Remove. - (vabsq_m_f32): Remove. - (vabsq_x_s8): Remove. - (vabsq_x_s16): Remove. - (vabsq_x_s32): Remove. - (vabsq_x_f16): Remove. - (vabsq_x_f32): Remove. - (__arm_vabsq_s8): Remove. - (__arm_vabsq_s16): Remove. - (__arm_vabsq_s32): Remove. - (__arm_vabsq_m_s8): Remove. - (__arm_vabsq_m_s16): Remove. - (__arm_vabsq_m_s32): Remove. - (__arm_vabsq_x_s8): Remove. - (__arm_vabsq_x_s16): Remove. - (__arm_vabsq_x_s32): Remove. - (__arm_vabsq_f16): Remove. - (__arm_vabsq_f32): Remove. - (__arm_vabsq_m_f16): Remove. - (__arm_vabsq_m_f32): Remove. - (__arm_vabsq_x_f16): Remove. - (__arm_vabsq_x_f32): Remove. - (__arm_vabsq): Remove. - (__arm_vabsq_m): Remove. - (__arm_vabsq_x): Remove. - (vnegq): Remove. - (vnegq_m): Remove. - (vnegq_x): Remove. - (vnegq_f16): Remove. - (vnegq_f32): Remove. - (vnegq_s8): Remove. - (vnegq_s16): Remove. - (vnegq_s32): Remove. - (vnegq_m_s8): Remove. - (vnegq_m_s16): Remove. - (vnegq_m_s32): Remove. - (vnegq_m_f16): Remove. - (vnegq_m_f32): Remove. - (vnegq_x_s8): Remove. - (vnegq_x_s16): Remove. - (vnegq_x_s32): Remove. - (vnegq_x_f16): Remove. - (vnegq_x_f32): Remove. - (__arm_vnegq_s8): Remove. - (__arm_vnegq_s16): Remove. - (__arm_vnegq_s32): Remove. - (__arm_vnegq_m_s8): Remove. - (__arm_vnegq_m_s16): Remove. - (__arm_vnegq_m_s32): Remove. - (__arm_vnegq_x_s8): Remove. - (__arm_vnegq_x_s16): Remove. - (__arm_vnegq_x_s32): Remove. - (__arm_vnegq_f16): Remove. - (__arm_vnegq_f32): Remove. - (__arm_vnegq_m_f16): Remove. - (__arm_vnegq_m_f32): Remove. - (__arm_vnegq_x_f16): Remove. - (__arm_vnegq_x_f32): Remove. - (__arm_vnegq): Remove. - (__arm_vnegq_m): Remove. - (__arm_vnegq_x): Remove. - (vclsq): Remove. - (vclsq_m): Remove. - (vclsq_x): Remove. - (vclsq_s8): Remove. - (vclsq_s16): Remove. - (vclsq_s32): Remove. - (vclsq_m_s8): Remove. - (vclsq_m_s16): Remove. - (vclsq_m_s32): Remove. - (vclsq_x_s8): Remove. - (vclsq_x_s16): Remove. - (vclsq_x_s32): Remove. - (__arm_vclsq_s8): Remove. - (__arm_vclsq_s16): Remove. - (__arm_vclsq_s32): Remove. - (__arm_vclsq_m_s8): Remove. - (__arm_vclsq_m_s16): Remove. - (__arm_vclsq_m_s32): Remove. - (__arm_vclsq_x_s8): Remove. - (__arm_vclsq_x_s16): Remove. - (__arm_vclsq_x_s32): Remove. - (__arm_vclsq): Remove. - (__arm_vclsq_m): Remove. - (__arm_vclsq_x): Remove. - (vclzq): Remove. - (vclzq_m): Remove. - (vclzq_x): Remove. - (vclzq_s8): Remove. - (vclzq_s16): Remove. - (vclzq_s32): Remove. - (vclzq_u8): Remove. - (vclzq_u16): Remove. - (vclzq_u32): Remove. - (vclzq_m_u8): Remove. - (vclzq_m_s8): Remove. - (vclzq_m_u16): Remove. - (vclzq_m_s16): Remove. - (vclzq_m_u32): Remove. - (vclzq_m_s32): Remove. - (vclzq_x_s8): Remove. - (vclzq_x_s16): Remove. - (vclzq_x_s32): Remove. - (vclzq_x_u8): Remove. - (vclzq_x_u16): Remove. - (vclzq_x_u32): Remove. - (__arm_vclzq_s8): Remove. - (__arm_vclzq_s16): Remove. - (__arm_vclzq_s32): Remove. - (__arm_vclzq_u8): Remove. - (__arm_vclzq_u16): Remove. - (__arm_vclzq_u32): Remove. - (__arm_vclzq_m_u8): Remove. - (__arm_vclzq_m_s8): Remove. - (__arm_vclzq_m_u16): Remove. - (__arm_vclzq_m_s16): Remove. - (__arm_vclzq_m_u32): Remove. - (__arm_vclzq_m_s32): Remove. - (__arm_vclzq_x_s8): Remove. - (__arm_vclzq_x_s16): Remove. - (__arm_vclzq_x_s32): Remove. - (__arm_vclzq_x_u8): Remove. - (__arm_vclzq_x_u16): Remove. - (__arm_vclzq_x_u32): Remove. - (__arm_vclzq): Remove. - (__arm_vclzq_m): Remove. - (__arm_vclzq_x): Remove. - (vqabsq): Remove. - (vqnegq): Remove. - (vqnegq_m): Remove. - (vqabsq_m): Remove. - (vqabsq_s8): Remove. - (vqabsq_s16): Remove. - (vqabsq_s32): Remove. - (vqnegq_s8): Remove. - (vqnegq_s16): Remove. - (vqnegq_s32): Remove. - (vqnegq_m_s8): Remove. - (vqabsq_m_s8): Remove. - (vqnegq_m_s16): Remove. - (vqabsq_m_s16): Remove. - (vqnegq_m_s32): Remove. - (vqabsq_m_s32): Remove. - (__arm_vqabsq_s8): Remove. - (__arm_vqabsq_s16): Remove. - (__arm_vqabsq_s32): Remove. - (__arm_vqnegq_s8): Remove. - (__arm_vqnegq_s16): Remove. - (__arm_vqnegq_s32): Remove. - (__arm_vqnegq_m_s8): Remove. - (__arm_vqabsq_m_s8): Remove. - (__arm_vqnegq_m_s16): Remove. - (__arm_vqabsq_m_s16): Remove. - (__arm_vqnegq_m_s32): Remove. - (__arm_vqabsq_m_s32): Remove. - (__arm_vqabsq): Remove. - (__arm_vqnegq): Remove. - (__arm_vqnegq_m): Remove. - (__arm_vqabsq_m): Remove. - -2023-05-09 Christophe Lyon <christophe.lyon@arm.com> - - * config/arm/iterators.md (MVE_INT_M_UNARY, MVE_INT_UNARY) - (MVE_FP_UNARY, MVE_FP_M_UNARY): New. - (mve_insn): Add vabs, vcls, vclz, vneg, vqabs, vqneg, vrnda, - vrndm, vrndn, vrndp, vrnd, vrndx. - (isu): Add VABSQ_M_S, VCLSQ_M_S, VCLZQ_M_S, VCLZQ_M_U, VNEGQ_M_S, - VQABSQ_M_S, VQNEGQ_M_S. - (mve_mnemo): New. - * config/arm/mve.md (mve_vrndq_m_f<mode>, mve_vrndxq_f<mode>) - (mve_vrndq_f<mode>, mve_vrndpq_f<mode>, mve_vrndnq_f<mode>) - (mve_vrndmq_f<mode>, mve_vrndaq_f<mode>): Merge into ... - (@mve_<mve_insn>q_f<mode>): ... this. - (mve_vnegq_f<mode>, mve_vabsq_f<mode>): Merge into ... - (mve_v<absneg_str>q_f<mode>): ... this. - (mve_vnegq_s<mode>, mve_vabsq_s<mode>): Merge into ... - (mve_v<absneg_str>q_s<mode>): ... this. - (mve_vclsq_s<mode>, mve_vqnegq_s<mode>, mve_vqabsq_s<mode>): Merge into ... - (@mve_<mve_insn>q_<supf><mode>): ... this. - (mve_vabsq_m_s<mode>, mve_vclsq_m_s<mode>) - (mve_vclzq_m_<supf><mode>, mve_vnegq_m_s<mode>) - (mve_vqabsq_m_s<mode>, mve_vqnegq_m_s<mode>): Merge into ... - (@mve_<mve_insn>q_m_<supf><mode>): ... this. - (mve_vabsq_m_f<mode>, mve_vnegq_m_f<mode>, mve_vrndaq_m_f<mode>) - (mve_vrndmq_m_f<mode>, mve_vrndnq_m_f<mode>, mve_vrndpq_m_f<mode>) - (mve_vrndxq_m_f<mode>): Merge into ... - (@mve_<mve_insn>q_m_f<mode>): ... this. - -2023-05-09 Christophe Lyon <christophe.lyon@arm.com> - - * config/arm/arm-mve-builtins-shapes.cc (unary): New. - * config/arm/arm-mve-builtins-shapes.h (unary): New. - -2023-05-09 Jakub Jelinek <jakub@redhat.com> - - * mux-utils.h: Fix comment typo, avoides -> avoids. - -2023-05-09 Jakub Jelinek <jakub@redhat.com> - - PR tree-optimization/109778 - * wide-int.h (wi::lrotate, wi::rrotate): Call wi::lrshift on - wi::zext (x, width) rather than x if width != precision, rather - than using wi::zext (right, width) after the shift. - * tree-ssa-ccp.cc (bit_value_binop): Call wi::ext on the results - of wi::lrotate or wi::rrotate. - -2023-05-09 Alexander Monakov <amonakov@ispras.ru> - - * genmatch.cc (get_out_file): Make static and rename to ... - (choose_output): ... this. Reimplement. Update all uses ... - (decision_tree::gen): ... here and ... - (main): ... here. - -2023-05-09 Alexander Monakov <amonakov@ispras.ru> - - * genmatch.cc (showUsage): Reimplement as ... - (usage): ...this. Adjust all uses. - (main): Print usage when no arguments. Add missing 'return 1'. - -2023-05-09 Alexander Monakov <amonakov@ispras.ru> - - * genmatch.cc (header_file): Make static. - (emit_func): Rename to... - (fp_decl): ... this. Adjust all uses. - (fp_decl_done): New function. Use it... - (decision_tree::gen): ... here and... - (write_predicate): ... here. - (main): Adjust. - -2023-05-09 Richard Sandiford <richard.sandiford@arm.com> - - * ira-conflicts.cc (can_use_same_reg_p): Skip over non-matching - earlyclobbers. - -2023-05-08 Roger Sayle <roger@nextmovesoftware.com> - Uros Bizjak <ubizjak@gmail.com> - - * config/i386/i386.md (any_or_plus): Move definition earlier. - (*insvti_highpart_1): New define_insn_and_split to overwrite - (insv) the highpart of a TImode register/memory. - -2023-05-08 Eugene Rozenfeld <erozen@microsoft.com> - - * auto-profile.cc (auto_profile): Check todo from early_inline - to see if cleanup_tree_vfg needs to be called. - (early_inline): Return todo from early_inliner. - -2023-05-08 Kito Cheng <kito.cheng@sifive.com> - - * config/riscv/riscv-vsetvl.cc (pass_vsetvl::get_vector_info): - New. - (pass_vsetvl::get_block_info): New. - (pass_vsetvl::update_vector_info): New. - (pass_vsetvl::simple_vsetvl): Use get_vector_info. - (pass_vsetvl::compute_local_backward_infos): Ditto. - (pass_vsetvl::transfer_before): Ditto. - (pass_vsetvl::transfer_after): Ditto. - (pass_vsetvl::emit_local_forward_vsetvls): Ditto. - (pass_vsetvl::local_eliminate_vsetvl_insn): Ditto. - (pass_vsetvl::cleanup_insns): Ditto. - (pass_vsetvl::compute_local_backward_infos): Use - update_vector_info. - -2023-05-08 Jeff Law <jlaw@ventanamicro> - - * config/stormy16/stormy16.md (zero_extendhisi2): Fix length. - -2023-05-08 Richard Biener <rguenther@suse.de> - Michael Meissner <meissner@linux.ibm.com> - - PR middle-end/108623 - * tree-core.h (tree_type_common): Bump up precision field to 16 bits. - Align bit fields > 1 bit to at least an 8-bit boundary. - -2023-05-08 Andrew Pinski <apinski@marvell.com> - - PR tree-optimization/109424 - PR tree-optimization/59424 - * tree-ssa-phiopt.cc (factor_out_conditional_conversion): Rename to ... - (factor_out_conditional_operation): This and add support for all unary - operations. - (pass_phiopt::execute): Update call to factor_out_conditional_conversion - to call factor_out_conditional_operation instead. - -2023-05-08 Andrew Pinski <apinski@marvell.com> - - * tree-ssa-phiopt.cc (pass_phiopt::execute): Loop - over factor_out_conditional_conversion. - -2023-05-08 Andrew Pinski <apinski@marvell.com> - - PR tree-optimization/49959 - PR tree-optimization/103771 - * tree-ssa-phiopt.cc (pass_phiopt::execute): Support - Diamond shapped bb form for factor_out_conditional_conversion. - -2023-05-08 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/autovec.md (movmisalign<mode>): New pattern. - * config/riscv/riscv-protos.h (riscv_vector_mask_mode_p): Delete. - (riscv_vector_get_mask_mode): Ditto. - (get_mask_policy_no_pred): Ditto. - (get_tail_policy_no_pred): Ditto. - (get_mask_mode): New function. - * config/riscv/riscv-v.cc (get_mask_policy_no_pred): Delete. - (get_tail_policy_no_pred): Ditto. - (riscv_vector_mask_mode_p): Ditto. - (riscv_vector_get_mask_mode): Ditto. - (get_mask_mode): New function. - * config/riscv/riscv-vector-builtins.cc (use_real_merge_p): Remove - global extern. - (get_tail_policy_for_pred): Ditto. - * config/riscv/riscv-vector-builtins.h (get_tail_policy_for_pred): Ditto. - (get_mask_policy_for_pred): Ditto - * config/riscv/riscv.cc (riscv_get_mask_mode): Refine codes. - -2023-05-08 Kito Cheng <kito.cheng@sifive.com> - - * common/config/riscv/riscv-common.cc (riscv_select_multilib_by_abi): New. - (riscv_select_multilib): New. - (riscv_compute_multilib): Extract logic to riscv_select_multilib and - also handle select_by_abi. - * config/riscv/elf.h (RISCV_USE_CUSTOMISED_MULTI_LIB): Change it - to select_by_abi_arch_cmodel from 1. - * config/riscv/linux.h (RISCV_USE_CUSTOMISED_MULTI_LIB): Define. - * config/riscv/riscv-opts.h (enum riscv_multilib_select_kind): New. - -2023-05-08 Alexander Monakov <amonakov@ispras.ru> - - * Makefile.in: (gimple-match-head.o-warn): Remove. - (GIMPLE_MATCH_PD_SEQ_SRC): Do not depend on - gimple-match-exports.cc. - (gimple-match-auto.h): Only depend on s-gimple-match. - (generic-match-auto.h): Likewise. - -2023-05-08 Andrew Pinski <apinski@marvell.com> - - PR tree-optimization/109691 - * tree-ssa-dce.cc (simple_dce_from_worklist): Add need_eh_cleanup - argument. - If the removed statement can throw, have need_eh_cleanup - include the bb of that statement. - * tree-ssa-dce.h (simple_dce_from_worklist): Update declaration. - * tree-ssa-propagate.cc (struct prop_stats_d): Remove - num_dce. - (substitute_and_fold_dom_walker::substitute_and_fold_dom_walker): - Initialize dceworklist instead of stmts_to_remove. - (substitute_and_fold_dom_walker::~substitute_and_fold_dom_walker): - Destore dceworklist instead of stmts_to_remove. - (substitute_and_fold_dom_walker::before_dom_children): - Set dceworklist instead of adding to stmts_to_remove. - (substitute_and_fold_engine::substitute_and_fold): - Call simple_dce_from_worklist instead of poping - from the list. - Don't update the stat on removal statements. - -2023-05-07 Andrew Pinski <apinski@marvell.com> - - PR target/109762 - * config/aarch64/aarch64-builtins.cc (aarch64_simd_switcher::aarch64_simd_switcher): - Change argument type to aarch64_feature_flags. - * config/aarch64/aarch64-protos.h (aarch64_simd_switcher): Change - constructor argument type to aarch64_feature_flags. - Change m_old_asm_isa_flags to be aarch64_feature_flags. - -2023-05-07 Jiufu Guo <guojiufu@linux.ibm.com> - - * config/rs6000/rs6000.cc (rs6000_emit_set_long_const): Generate - more parallel code if can_create_pseudo_p. - -2023-05-07 Roger Sayle <roger@nextmovesoftware.com> - - PR target/43644 - * lower-subreg.cc (resolve_simple_move): Don't emit a clobber - immediately before moving a multi-word register by parts. - -2023-05-06 Jeff Law <jlaw@ventanamicro> - - * config/riscv/riscv-v.cc (riscv_vector_preferred_simd_mode): Delete. - -2023-05-06 Michael Collison <collison@rivosinc.com> - - * tree-vect-slp.cc (can_duplicate_and_interleave_p): - Check that GET_MODE_NUNITS is a multiple of 2. - -2023-05-06 Michael Collison <collison@rivosinc.com> - - * config/riscv/riscv.cc - (riscv_estimated_poly_value): Implement - TARGET_ESTIMATED_POLY_VALUE. - (riscv_preferred_simd_mode): Implement - TARGET_VECTORIZE_PREFERRED_SIMD_MODE. - (riscv_get_mask_mode): Implement TARGET_VECTORIZE_GET_MASK_MODE. - (riscv_empty_mask_is_expensive): Implement - TARGET_VECTORIZE_EMPTY_MASK_IS_EXPENSIVE. - (riscv_vectorize_create_costs): Implement - TARGET_VECTORIZE_CREATE_COSTS. - (riscv_support_vector_misalignment): Implement - TARGET_VECTORIZE_SUPPORT_VECTOR_MISALIGNMENT. - (TARGET_ESTIMATED_POLY_VALUE): Register target macro. - (TARGET_VECTORIZE_GET_MASK_MODE): Ditto. - (TARGET_VECTORIZE_EMPTY_MASK_IS_EXPENSIVE): Ditto. - (TARGET_VECTORIZE_SUPPORT_VECTOR_MISALIGNMENT): Ditto. - -2023-05-06 Jeff Law <jlaw@ventanamicro> - - * config/riscv/riscv-v.cc (autovec_use_vlmax_p): Remove - duplicate definition. - -2023-05-06 Michael Collison <collison@rivosinc.com> - - * config/riscv/riscv-v.cc (autovec_use_vlmax_p): New function. - (riscv_vector_preferred_simd_mode): Ditto. - (get_mask_policy_no_pred): Ditto. - (get_tail_policy_no_pred): Ditto. - (riscv_vector_mask_mode_p): Ditto. - (riscv_vector_get_mask_mode): Ditto. - -2023-05-06 Michael Collison <collison@rivosinc.com> - - * config/riscv/riscv-vector-builtins.cc (get_tail_policy_for_pred): - Remove static declaration to to make externally visible. - (get_mask_policy_for_pred): Ditto. - * config/riscv/riscv-vector-builtins.h (get_tail_policy_for_pred): - New external declaration. - (get_mask_policy_for_pred): Ditto. - -2023-05-06 Michael Collison <collison@rivosinc.com> - - * config/riscv/riscv-protos.h (riscv_vector_mask_mode_p): New. - (riscv_vector_get_mask_mode): Ditto. - (get_mask_policy_no_pred): Ditto. - (get_tail_policy_no_pred): Ditto. - -2023-05-06 Xi Ruoyao <xry111@xry111.site> - - * config/loongarch/loongarch.h (struct machine_function): Add - reg_is_wrapped_separately array for register wrapping - information. - * config/loongarch/loongarch.cc - (loongarch_get_separate_components): New function. - (loongarch_components_for_bb): Likewise. - (loongarch_disqualify_components): Likewise. - (loongarch_process_components): Likewise. - (loongarch_emit_prologue_components): Likewise. - (loongarch_emit_epilogue_components): Likewise. - (loongarch_set_handled_components): Likewise. - (TARGET_SHRINK_WRAP_GET_SEPARATE_COMPONENTS): Define. - (TARGET_SHRINK_WRAP_COMPONENTS_FOR_BB): Likewise. - (TARGET_SHRINK_WRAP_DISQUALIFY_COMPONENTS): Likewise. - (TARGET_SHRINK_WRAP_EMIT_PROLOGUE_COMPONENTS): Likewise. - (TARGET_SHRINK_WRAP_EMIT_EPILOGUE_COMPONENTS): Likewise. - (TARGET_SHRINK_WRAP_SET_HANDLED_COMPONENTS): Likewise. - (loongarch_for_each_saved_reg): Skip registers that are wrapped - separately. - -2023-05-06 Xi Ruoyao <xry111@xry111.site> - - PR other/109522 - * Makefile.in (s-macro_list): Pass -nostdinc to - $(GCC_FOR_TARGET). - -2023-05-06 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv-protos.h (preferred_simd_mode): New function. - * config/riscv/riscv-v.cc (autovec_use_vlmax_p): Ditto. - (preferred_simd_mode): Ditto. - * config/riscv/riscv.cc (riscv_get_arg_info): Handle RVV type in function arg. - (riscv_convert_vector_bits): Adjust for RVV auto-vectorization. - (riscv_preferred_simd_mode): New function. - (TARGET_VECTORIZE_PREFERRED_SIMD_MODE): New target hook support. - * config/riscv/vector.md: Add autovec.md. - * config/riscv/autovec.md: New file. - -2023-05-06 Jakub Jelinek <jakub@redhat.com> - - * real.h (dconst_pi): Define. - (dconst_e_ptr): Formatting fix. - (dconst_pi_ptr): Declare. - * real.cc (dconst_pi_ptr): New function. - * gimple-range-op.cc (cfn_sincos::fold_range): Intersect the generic - boundaries range with range computed from sin/cos of the particular - bounds if the argument range is shorter than 2*pi. - (cfn_sincos::op1_range): Take bulps into account when determining - which result ranges are always invalid or behave like known NAN. - -2023-05-06 Aldy Hernandez <aldyh@redhat.com> - - * gimple-range-cache.cc (sbr_sparse_bitmap::set_bb_range): Do not - pass type to vrange_storage::equal_p. - * value-range-storage.cc (vrange_storage::equal_p): Remove type. - (irange_storage::equal_p): Same. - (frange_storage::equal_p): Same. - * value-range-storage.h (class frange_storage): Same. - -2023-05-06 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - PR target/109748 - * config/riscv/riscv-vsetvl.cc (local_eliminate_vsetvl_insn): Remove it. - (pass_vsetvl::local_eliminate_vsetvl_insn): New function. - -2023-05-06 liuhongt <hongtao.liu@intel.com> - - * combine.cc (maybe_swap_commutative_operands): Canonicalize - vec_merge when mask is constant. - * doc/md.texi: Document vec_merge canonicalization. - -2023-05-06 Jakub Jelinek <jakub@redhat.com> - - * value-range.h (frange_arithmetic): Declare. - * range-op-float.cc (frange_arithmetic): No longer static. - * gimple-range-op.cc (frange_mpfr_arg1): New function. - (cfn_sqrt::fold_range): Intersect the generic boundaries range - with range computed from sqrt of the particular bounds. - (cfn_sqrt::op1_range): Intersect the generic boundaries range - with range computed from squared particular bounds. - -2023-05-06 Jakub Jelinek <jakub@redhat.com> - - * Makefile.in (check_p_numbers): Rename to one_to_9999, move - earlier with helper variables also renamed. - (MATCH_SPLUT_SEQ): Use $(wordlist 1,$(NUM_MATCH_SPLITS),$(one_to_9999)) - instead of $(shell seq 1 $(NUM_MATCH_SPLITS)). - (check_p_subdirs): Use $(one_to_9999) instead of $(check_p_numbers). - -2023-05-06 Hans-Peter Nilsson <hp@axis.com> - - * config/cris/cris.md (splitop): Add PLUS. - * config/cris/cris.cc (cris_split_constant): Also handle - PLUS when a split into two insns may be useful. - -2023-05-05 Hans-Peter Nilsson <hp@axis.com> - - * config/cris/cris.md (movandsplit1): New define_peephole2. - -2023-05-05 Hans-Peter Nilsson <hp@axis.com> - - * config/cris/cris.md (lsrandsplit1): New define_peephole2. - -2023-05-05 Hans-Peter Nilsson <hp@axis.com> - - * doc/md.texi (define_peephole2): Document order of scanning. - -2023-05-05 Pan Li <pan2.li@intel.com> - Ju-Zhe Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/vector.md: Allow const as the operand of RVV - indexed load/store. - -2023-05-05 Pan Li <pan2.li@intel.com> - - * config/riscv/riscv.h (VECTOR_STORE_FLAG_VALUE): Add new macro - consumed by simplify_rtx. - -2023-05-05 Christophe Lyon <christophe.lyon@arm.com> - - * config/arm/arm-mve-builtins-base.cc (vrshrq, vshrq): New. - * config/arm/arm-mve-builtins-base.def (vrshrq, vshrq): New. - * config/arm/arm-mve-builtins-base.h (vrshrq, vshrq): New. - * config/arm/arm_mve.h (vshrq): Remove. - (vrshrq): Remove. - (vrshrq_m): Remove. - (vshrq_m): Remove. - (vrshrq_x): Remove. - (vshrq_x): Remove. - (vshrq_n_s8): Remove. - (vshrq_n_s16): Remove. - (vshrq_n_s32): Remove. - (vshrq_n_u8): Remove. - (vshrq_n_u16): Remove. - (vshrq_n_u32): Remove. - (vrshrq_n_u8): Remove. - (vrshrq_n_s8): Remove. - (vrshrq_n_u16): Remove. - (vrshrq_n_s16): Remove. - (vrshrq_n_u32): Remove. - (vrshrq_n_s32): Remove. - (vrshrq_m_n_s8): Remove. - (vrshrq_m_n_s32): Remove. - (vrshrq_m_n_s16): Remove. - (vrshrq_m_n_u8): Remove. - (vrshrq_m_n_u32): Remove. - (vrshrq_m_n_u16): Remove. - (vshrq_m_n_s8): Remove. - (vshrq_m_n_s32): Remove. - (vshrq_m_n_s16): Remove. - (vshrq_m_n_u8): Remove. - (vshrq_m_n_u32): Remove. - (vshrq_m_n_u16): Remove. - (vrshrq_x_n_s8): Remove. - (vrshrq_x_n_s16): Remove. - (vrshrq_x_n_s32): Remove. - (vrshrq_x_n_u8): Remove. - (vrshrq_x_n_u16): Remove. - (vrshrq_x_n_u32): Remove. - (vshrq_x_n_s8): Remove. - (vshrq_x_n_s16): Remove. - (vshrq_x_n_s32): Remove. - (vshrq_x_n_u8): Remove. - (vshrq_x_n_u16): Remove. - (vshrq_x_n_u32): Remove. - (__arm_vshrq_n_s8): Remove. - (__arm_vshrq_n_s16): Remove. - (__arm_vshrq_n_s32): Remove. - (__arm_vshrq_n_u8): Remove. - (__arm_vshrq_n_u16): Remove. - (__arm_vshrq_n_u32): Remove. - (__arm_vrshrq_n_u8): Remove. - (__arm_vrshrq_n_s8): Remove. - (__arm_vrshrq_n_u16): Remove. - (__arm_vrshrq_n_s16): Remove. - (__arm_vrshrq_n_u32): Remove. - (__arm_vrshrq_n_s32): Remove. - (__arm_vrshrq_m_n_s8): Remove. - (__arm_vrshrq_m_n_s32): Remove. - (__arm_vrshrq_m_n_s16): Remove. - (__arm_vrshrq_m_n_u8): Remove. - (__arm_vrshrq_m_n_u32): Remove. - (__arm_vrshrq_m_n_u16): Remove. - (__arm_vshrq_m_n_s8): Remove. - (__arm_vshrq_m_n_s32): Remove. - (__arm_vshrq_m_n_s16): Remove. - (__arm_vshrq_m_n_u8): Remove. - (__arm_vshrq_m_n_u32): Remove. - (__arm_vshrq_m_n_u16): Remove. - (__arm_vrshrq_x_n_s8): Remove. - (__arm_vrshrq_x_n_s16): Remove. - (__arm_vrshrq_x_n_s32): Remove. - (__arm_vrshrq_x_n_u8): Remove. - (__arm_vrshrq_x_n_u16): Remove. - (__arm_vrshrq_x_n_u32): Remove. - (__arm_vshrq_x_n_s8): Remove. - (__arm_vshrq_x_n_s16): Remove. - (__arm_vshrq_x_n_s32): Remove. - (__arm_vshrq_x_n_u8): Remove. - (__arm_vshrq_x_n_u16): Remove. - (__arm_vshrq_x_n_u32): Remove. - (__arm_vshrq): Remove. - (__arm_vrshrq): Remove. - (__arm_vrshrq_m): Remove. - (__arm_vshrq_m): Remove. - (__arm_vrshrq_x): Remove. - (__arm_vshrq_x): Remove. - -2023-05-05 Christophe Lyon <christophe.lyon@arm.com> - - * config/arm/iterators.md (MVE_VSHRQ_M_N, MVE_VSHRQ_N): New. - (mve_insn): Add vrshr, vshr. - * config/arm/mve.md (mve_vshrq_n_<supf><mode>) - (mve_vrshrq_n_<supf><mode>): Merge into ... - (@mve_<mve_insn>q_n_<supf><mode>): ... this. - (mve_vrshrq_m_n_<supf><mode>, mve_vshrq_m_n_<supf><mode>): Merge - into ... - (@mve_<mve_insn>q_m_n_<supf><mode>): ... this. - -2023-05-05 Christophe Lyon <christophe.lyon@arm.com> - - * config/arm/arm-mve-builtins-shapes.cc (binary_rshift): New. - * config/arm/arm-mve-builtins-shapes.h (binary_rshift): New. - -2023-05-05 Christophe Lyon <christophe.lyon@arm.com> - - * config/arm/arm-mve-builtins-base.cc (FUNCTION_ONLY_N_NO_U_F): New. - (vqshrunbq, vqshruntq, vqrshrunbq, vqrshruntq): New. - * config/arm/arm-mve-builtins-base.def (vqshrunbq, vqshruntq) - (vqrshrunbq, vqrshruntq): New. - * config/arm/arm-mve-builtins-base.h (vqshrunbq, vqshruntq) - (vqrshrunbq, vqrshruntq): New. - * config/arm/arm-mve-builtins.cc - (function_instance::has_inactive_argument): Handle vqshrunbq, - vqshruntq, vqrshrunbq, vqrshruntq. - * config/arm/arm_mve.h (vqrshrunbq): Remove. - (vqrshruntq): Remove. - (vqrshrunbq_m): Remove. - (vqrshruntq_m): Remove. - (vqrshrunbq_n_s16): Remove. - (vqrshrunbq_n_s32): Remove. - (vqrshruntq_n_s16): Remove. - (vqrshruntq_n_s32): Remove. - (vqrshrunbq_m_n_s32): Remove. - (vqrshrunbq_m_n_s16): Remove. - (vqrshruntq_m_n_s32): Remove. - (vqrshruntq_m_n_s16): Remove. - (__arm_vqrshrunbq_n_s16): Remove. - (__arm_vqrshrunbq_n_s32): Remove. - (__arm_vqrshruntq_n_s16): Remove. - (__arm_vqrshruntq_n_s32): Remove. - (__arm_vqrshrunbq_m_n_s32): Remove. - (__arm_vqrshrunbq_m_n_s16): Remove. - (__arm_vqrshruntq_m_n_s32): Remove. - (__arm_vqrshruntq_m_n_s16): Remove. - (__arm_vqrshrunbq): Remove. - (__arm_vqrshruntq): Remove. - (__arm_vqrshrunbq_m): Remove. - (__arm_vqrshruntq_m): Remove. - (vqshrunbq): Remove. - (vqshruntq): Remove. - (vqshrunbq_m): Remove. - (vqshruntq_m): Remove. - (vqshrunbq_n_s16): Remove. - (vqshruntq_n_s16): Remove. - (vqshrunbq_n_s32): Remove. - (vqshruntq_n_s32): Remove. - (vqshrunbq_m_n_s32): Remove. - (vqshrunbq_m_n_s16): Remove. - (vqshruntq_m_n_s32): Remove. - (vqshruntq_m_n_s16): Remove. - (__arm_vqshrunbq_n_s16): Remove. - (__arm_vqshruntq_n_s16): Remove. - (__arm_vqshrunbq_n_s32): Remove. - (__arm_vqshruntq_n_s32): Remove. - (__arm_vqshrunbq_m_n_s32): Remove. - (__arm_vqshrunbq_m_n_s16): Remove. - (__arm_vqshruntq_m_n_s32): Remove. - (__arm_vqshruntq_m_n_s16): Remove. - (__arm_vqshrunbq): Remove. - (__arm_vqshruntq): Remove. - (__arm_vqshrunbq_m): Remove. - (__arm_vqshruntq_m): Remove. - -2023-05-05 Christophe Lyon <christophe.lyon@arm.com> - - * config/arm/iterators.md (MVE_SHRN_N): Add VQRSHRUNBQ, - VQRSHRUNTQ, VQSHRUNBQ, VQSHRUNTQ. - (MVE_SHRN_M_N): Likewise. - (mve_insn): Add vqrshrunb, vqrshrunt, vqshrunb, vqshrunt. - (isu): Add VQRSHRUNBQ, VQRSHRUNTQ, VQSHRUNBQ, VQSHRUNTQ. - (supf): Likewise. - * config/arm/mve.md (mve_vqrshrunbq_n_s<mode>): Remove. - (mve_vqrshruntq_n_s<mode>): Remove. - (mve_vqshrunbq_n_s<mode>): Remove. - (mve_vqshruntq_n_s<mode>): Remove. - (mve_vqrshrunbq_m_n_s<mode>): Remove. - (mve_vqrshruntq_m_n_s<mode>): Remove. - (mve_vqshrunbq_m_n_s<mode>): Remove. - (mve_vqshruntq_m_n_s<mode>): Remove. - -2023-05-05 Christophe Lyon <christophe.lyon@arm.com> - - * config/arm/arm-mve-builtins-shapes.cc - (binary_rshift_narrow_unsigned): New. - * config/arm/arm-mve-builtins-shapes.h - (binary_rshift_narrow_unsigned): New. - -2023-05-05 Christophe Lyon <christophe.lyon@arm.com> - - * config/arm/arm-mve-builtins-base.cc (FUNCTION_ONLY_N_NO_F): New. - (vshrnbq, vshrntq, vrshrnbq, vrshrntq, vqshrnbq, vqshrntq) - (vqrshrnbq, vqrshrntq): New. - * config/arm/arm-mve-builtins-base.def (vshrnbq, vshrntq) - (vrshrnbq, vrshrntq, vqshrnbq, vqshrntq, vqrshrnbq, vqrshrntq): - New. - * config/arm/arm-mve-builtins-base.h (vshrnbq, vshrntq, vrshrnbq) - (vrshrntq, vqshrnbq, vqshrntq, vqrshrnbq, vqrshrntq): New. - * config/arm/arm-mve-builtins.cc - (function_instance::has_inactive_argument): Handle vshrnbq, - vshrntq, vrshrnbq, vrshrntq, vqshrnbq, vqshrntq, vqrshrnbq, - vqrshrntq. - * config/arm/arm_mve.h (vshrnbq): Remove. - (vshrntq): Remove. - (vshrnbq_m): Remove. - (vshrntq_m): Remove. - (vshrnbq_n_s16): Remove. - (vshrntq_n_s16): Remove. - (vshrnbq_n_u16): Remove. - (vshrntq_n_u16): Remove. - (vshrnbq_n_s32): Remove. - (vshrntq_n_s32): Remove. - (vshrnbq_n_u32): Remove. - (vshrntq_n_u32): Remove. - (vshrnbq_m_n_s32): Remove. - (vshrnbq_m_n_s16): Remove. - (vshrnbq_m_n_u32): Remove. - (vshrnbq_m_n_u16): Remove. - (vshrntq_m_n_s32): Remove. - (vshrntq_m_n_s16): Remove. - (vshrntq_m_n_u32): Remove. - (vshrntq_m_n_u16): Remove. - (__arm_vshrnbq_n_s16): Remove. - (__arm_vshrntq_n_s16): Remove. - (__arm_vshrnbq_n_u16): Remove. - (__arm_vshrntq_n_u16): Remove. - (__arm_vshrnbq_n_s32): Remove. - (__arm_vshrntq_n_s32): Remove. - (__arm_vshrnbq_n_u32): Remove. - (__arm_vshrntq_n_u32): Remove. - (__arm_vshrnbq_m_n_s32): Remove. - (__arm_vshrnbq_m_n_s16): Remove. - (__arm_vshrnbq_m_n_u32): Remove. - (__arm_vshrnbq_m_n_u16): Remove. - (__arm_vshrntq_m_n_s32): Remove. - (__arm_vshrntq_m_n_s16): Remove. - (__arm_vshrntq_m_n_u32): Remove. - (__arm_vshrntq_m_n_u16): Remove. - (__arm_vshrnbq): Remove. - (__arm_vshrntq): Remove. - (__arm_vshrnbq_m): Remove. - (__arm_vshrntq_m): Remove. - (vrshrnbq): Remove. - (vrshrntq): Remove. - (vrshrnbq_m): Remove. - (vrshrntq_m): Remove. - (vrshrnbq_n_s16): Remove. - (vrshrntq_n_s16): Remove. - (vrshrnbq_n_u16): Remove. - (vrshrntq_n_u16): Remove. - (vrshrnbq_n_s32): Remove. - (vrshrntq_n_s32): Remove. - (vrshrnbq_n_u32): Remove. - (vrshrntq_n_u32): Remove. - (vrshrnbq_m_n_s32): Remove. - (vrshrnbq_m_n_s16): Remove. - (vrshrnbq_m_n_u32): Remove. - (vrshrnbq_m_n_u16): Remove. - (vrshrntq_m_n_s32): Remove. - (vrshrntq_m_n_s16): Remove. - (vrshrntq_m_n_u32): Remove. - (vrshrntq_m_n_u16): Remove. - (__arm_vrshrnbq_n_s16): Remove. - (__arm_vrshrntq_n_s16): Remove. - (__arm_vrshrnbq_n_u16): Remove. - (__arm_vrshrntq_n_u16): Remove. - (__arm_vrshrnbq_n_s32): Remove. - (__arm_vrshrntq_n_s32): Remove. - (__arm_vrshrnbq_n_u32): Remove. - (__arm_vrshrntq_n_u32): Remove. - (__arm_vrshrnbq_m_n_s32): Remove. - (__arm_vrshrnbq_m_n_s16): Remove. - (__arm_vrshrnbq_m_n_u32): Remove. - (__arm_vrshrnbq_m_n_u16): Remove. - (__arm_vrshrntq_m_n_s32): Remove. - (__arm_vrshrntq_m_n_s16): Remove. - (__arm_vrshrntq_m_n_u32): Remove. - (__arm_vrshrntq_m_n_u16): Remove. - (__arm_vrshrnbq): Remove. - (__arm_vrshrntq): Remove. - (__arm_vrshrnbq_m): Remove. - (__arm_vrshrntq_m): Remove. - (vqshrnbq): Remove. - (vqshrntq): Remove. - (vqshrnbq_m): Remove. - (vqshrntq_m): Remove. - (vqshrnbq_n_s16): Remove. - (vqshrntq_n_s16): Remove. - (vqshrnbq_n_u16): Remove. - (vqshrntq_n_u16): Remove. - (vqshrnbq_n_s32): Remove. - (vqshrntq_n_s32): Remove. - (vqshrnbq_n_u32): Remove. - (vqshrntq_n_u32): Remove. - (vqshrnbq_m_n_s32): Remove. - (vqshrnbq_m_n_s16): Remove. - (vqshrnbq_m_n_u32): Remove. - (vqshrnbq_m_n_u16): Remove. - (vqshrntq_m_n_s32): Remove. - (vqshrntq_m_n_s16): Remove. - (vqshrntq_m_n_u32): Remove. - (vqshrntq_m_n_u16): Remove. - (__arm_vqshrnbq_n_s16): Remove. - (__arm_vqshrntq_n_s16): Remove. - (__arm_vqshrnbq_n_u16): Remove. - (__arm_vqshrntq_n_u16): Remove. - (__arm_vqshrnbq_n_s32): Remove. - (__arm_vqshrntq_n_s32): Remove. - (__arm_vqshrnbq_n_u32): Remove. - (__arm_vqshrntq_n_u32): Remove. - (__arm_vqshrnbq_m_n_s32): Remove. - (__arm_vqshrnbq_m_n_s16): Remove. - (__arm_vqshrnbq_m_n_u32): Remove. - (__arm_vqshrnbq_m_n_u16): Remove. - (__arm_vqshrntq_m_n_s32): Remove. - (__arm_vqshrntq_m_n_s16): Remove. - (__arm_vqshrntq_m_n_u32): Remove. - (__arm_vqshrntq_m_n_u16): Remove. - (__arm_vqshrnbq): Remove. - (__arm_vqshrntq): Remove. - (__arm_vqshrnbq_m): Remove. - (__arm_vqshrntq_m): Remove. - (vqrshrnbq): Remove. - (vqrshrntq): Remove. - (vqrshrnbq_m): Remove. - (vqrshrntq_m): Remove. - (vqrshrnbq_n_s16): Remove. - (vqrshrnbq_n_u16): Remove. - (vqrshrnbq_n_s32): Remove. - (vqrshrnbq_n_u32): Remove. - (vqrshrntq_n_s16): Remove. - (vqrshrntq_n_u16): Remove. - (vqrshrntq_n_s32): Remove. - (vqrshrntq_n_u32): Remove. - (vqrshrnbq_m_n_s32): Remove. - (vqrshrnbq_m_n_s16): Remove. - (vqrshrnbq_m_n_u32): Remove. - (vqrshrnbq_m_n_u16): Remove. - (vqrshrntq_m_n_s32): Remove. - (vqrshrntq_m_n_s16): Remove. - (vqrshrntq_m_n_u32): Remove. - (vqrshrntq_m_n_u16): Remove. - (__arm_vqrshrnbq_n_s16): Remove. - (__arm_vqrshrnbq_n_u16): Remove. - (__arm_vqrshrnbq_n_s32): Remove. - (__arm_vqrshrnbq_n_u32): Remove. - (__arm_vqrshrntq_n_s16): Remove. - (__arm_vqrshrntq_n_u16): Remove. - (__arm_vqrshrntq_n_s32): Remove. - (__arm_vqrshrntq_n_u32): Remove. - (__arm_vqrshrnbq_m_n_s32): Remove. - (__arm_vqrshrnbq_m_n_s16): Remove. - (__arm_vqrshrnbq_m_n_u32): Remove. - (__arm_vqrshrnbq_m_n_u16): Remove. - (__arm_vqrshrntq_m_n_s32): Remove. - (__arm_vqrshrntq_m_n_s16): Remove. - (__arm_vqrshrntq_m_n_u32): Remove. - (__arm_vqrshrntq_m_n_u16): Remove. - (__arm_vqrshrnbq): Remove. - (__arm_vqrshrntq): Remove. - (__arm_vqrshrnbq_m): Remove. - (__arm_vqrshrntq_m): Remove. - -2023-05-05 Christophe Lyon <christophe.lyon@arm.com> - - * config/arm/iterators.md (MVE_SHRN_N, MVE_SHRN_M_N): New. - (mve_insn): Add vqrshrnb, vqrshrnt, vqshrnb, vqshrnt, vrshrnb, - vrshrnt, vshrnb, vshrnt. - (isu): New. - * config/arm/mve.md (mve_vqrshrnbq_n_<supf><mode>) - (mve_vqrshrntq_n_<supf><mode>, mve_vqshrnbq_n_<supf><mode>) - (mve_vqshrntq_n_<supf><mode>, mve_vrshrnbq_n_<supf><mode>) - (mve_vrshrntq_n_<supf><mode>, mve_vshrnbq_n_<supf><mode>) - (mve_vshrntq_n_<supf><mode>): Merge into ... - (@mve_<mve_insn>q_n_<supf><mode>): ... this. - (mve_vqrshrnbq_m_n_<supf><mode>, mve_vqrshrntq_m_n_<supf><mode>) - (mve_vqshrnbq_m_n_<supf><mode>, mve_vqshrntq_m_n_<supf><mode>) - (mve_vrshrnbq_m_n_<supf><mode>, mve_vrshrntq_m_n_<supf><mode>) - (mve_vshrnbq_m_n_<supf><mode>, mve_vshrntq_m_n_<supf><mode>): - Merge into ... - (@mve_<mve_insn>q_m_n_<supf><mode>): ... this. - -2023-05-05 Christophe Lyon <christophe.lyon@arm.com> - - * config/arm/arm-mve-builtins-shapes.cc (binary_rshift_narrow): - New. - * config/arm/arm-mve-builtins-shapes.h (binary_rshift_narrow): New. - -2023-05-05 Christophe Lyon <christophe.lyon@arm.com> - - * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITH_RTX_M_NO_F): New. - (vmaxq, vminq): New. - * config/arm/arm-mve-builtins-base.def (vmaxq, vminq): New. - * config/arm/arm-mve-builtins-base.h (vmaxq, vminq): New. - * config/arm/arm_mve.h (vminq): Remove. - (vmaxq): Remove. - (vmaxq_m): Remove. - (vminq_m): Remove. - (vminq_x): Remove. - (vmaxq_x): Remove. - (vminq_u8): Remove. - (vmaxq_u8): Remove. - (vminq_s8): Remove. - (vmaxq_s8): Remove. - (vminq_u16): Remove. - (vmaxq_u16): Remove. - (vminq_s16): Remove. - (vmaxq_s16): Remove. - (vminq_u32): Remove. - (vmaxq_u32): Remove. - (vminq_s32): Remove. - (vmaxq_s32): Remove. - (vmaxq_m_s8): Remove. - (vmaxq_m_s32): Remove. - (vmaxq_m_s16): Remove. - (vmaxq_m_u8): Remove. - (vmaxq_m_u32): Remove. - (vmaxq_m_u16): Remove. - (vminq_m_s8): Remove. - (vminq_m_s32): Remove. - (vminq_m_s16): Remove. - (vminq_m_u8): Remove. - (vminq_m_u32): Remove. - (vminq_m_u16): Remove. - (vminq_x_s8): Remove. - (vminq_x_s16): Remove. - (vminq_x_s32): Remove. - (vminq_x_u8): Remove. - (vminq_x_u16): Remove. - (vminq_x_u32): Remove. - (vmaxq_x_s8): Remove. - (vmaxq_x_s16): Remove. - (vmaxq_x_s32): Remove. - (vmaxq_x_u8): Remove. - (vmaxq_x_u16): Remove. - (vmaxq_x_u32): Remove. - (__arm_vminq_u8): Remove. - (__arm_vmaxq_u8): Remove. - (__arm_vminq_s8): Remove. - (__arm_vmaxq_s8): Remove. - (__arm_vminq_u16): Remove. - (__arm_vmaxq_u16): Remove. - (__arm_vminq_s16): Remove. - (__arm_vmaxq_s16): Remove. - (__arm_vminq_u32): Remove. - (__arm_vmaxq_u32): Remove. - (__arm_vminq_s32): Remove. - (__arm_vmaxq_s32): Remove. - (__arm_vmaxq_m_s8): Remove. - (__arm_vmaxq_m_s32): Remove. - (__arm_vmaxq_m_s16): Remove. - (__arm_vmaxq_m_u8): Remove. - (__arm_vmaxq_m_u32): Remove. - (__arm_vmaxq_m_u16): Remove. - (__arm_vminq_m_s8): Remove. - (__arm_vminq_m_s32): Remove. - (__arm_vminq_m_s16): Remove. - (__arm_vminq_m_u8): Remove. - (__arm_vminq_m_u32): Remove. - (__arm_vminq_m_u16): Remove. - (__arm_vminq_x_s8): Remove. - (__arm_vminq_x_s16): Remove. - (__arm_vminq_x_s32): Remove. - (__arm_vminq_x_u8): Remove. - (__arm_vminq_x_u16): Remove. - (__arm_vminq_x_u32): Remove. - (__arm_vmaxq_x_s8): Remove. - (__arm_vmaxq_x_s16): Remove. - (__arm_vmaxq_x_s32): Remove. - (__arm_vmaxq_x_u8): Remove. - (__arm_vmaxq_x_u16): Remove. - (__arm_vmaxq_x_u32): Remove. - (__arm_vminq): Remove. - (__arm_vmaxq): Remove. - (__arm_vmaxq_m): Remove. - (__arm_vminq_m): Remove. - (__arm_vminq_x): Remove. - (__arm_vmaxq_x): Remove. - -2023-05-05 Christophe Lyon <christophe.lyon@arm.com> - - * config/arm/iterators.md (MAX_MIN_SU): New. - (max_min_su_str): New. - (max_min_supf): New. - * config/arm/mve.md (mve_vmaxq_s<mode>, mve_vmaxq_u<mode>) - (mve_vminq_s<mode>, mve_vminq_u<mode>): Merge into ... - (mve_<max_min_su_str>q_<max_min_supf><mode>): ... this. - -2023-05-05 Christophe Lyon <christophe.lyon@arm.com> - - * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITH_M_N_R): New. - (vqshlq, vshlq): New. - * config/arm/arm-mve-builtins-base.def (vqshlq, vshlq): New. - * config/arm/arm-mve-builtins-base.h (vqshlq, vshlq): New. - * config/arm/arm_mve.h (vshlq): Remove. - (vshlq_r): Remove. - (vshlq_n): Remove. - (vshlq_m_r): Remove. - (vshlq_m): Remove. - (vshlq_m_n): Remove. - (vshlq_x): Remove. - (vshlq_x_n): Remove. - (vshlq_s8): Remove. - (vshlq_s16): Remove. - (vshlq_s32): Remove. - (vshlq_u8): Remove. - (vshlq_u16): Remove. - (vshlq_u32): Remove. - (vshlq_r_u8): Remove. - (vshlq_n_u8): Remove. - (vshlq_r_s8): Remove. - (vshlq_n_s8): Remove. - (vshlq_r_u16): Remove. - (vshlq_n_u16): Remove. - (vshlq_r_s16): Remove. - (vshlq_n_s16): Remove. - (vshlq_r_u32): Remove. - (vshlq_n_u32): Remove. - (vshlq_r_s32): Remove. - (vshlq_n_s32): Remove. - (vshlq_m_r_u8): Remove. - (vshlq_m_r_s8): Remove. - (vshlq_m_r_u16): Remove. - (vshlq_m_r_s16): Remove. - (vshlq_m_r_u32): Remove. - (vshlq_m_r_s32): Remove. - (vshlq_m_u8): Remove. - (vshlq_m_s8): Remove. - (vshlq_m_u16): Remove. - (vshlq_m_s16): Remove. - (vshlq_m_u32): Remove. - (vshlq_m_s32): Remove. - (vshlq_m_n_s8): Remove. - (vshlq_m_n_s32): Remove. - (vshlq_m_n_s16): Remove. - (vshlq_m_n_u8): Remove. - (vshlq_m_n_u32): Remove. - (vshlq_m_n_u16): Remove. - (vshlq_x_s8): Remove. - (vshlq_x_s16): Remove. - (vshlq_x_s32): Remove. - (vshlq_x_u8): Remove. - (vshlq_x_u16): Remove. - (vshlq_x_u32): Remove. - (vshlq_x_n_s8): Remove. - (vshlq_x_n_s16): Remove. - (vshlq_x_n_s32): Remove. - (vshlq_x_n_u8): Remove. - (vshlq_x_n_u16): Remove. - (vshlq_x_n_u32): Remove. - (__arm_vshlq_s8): Remove. - (__arm_vshlq_s16): Remove. - (__arm_vshlq_s32): Remove. - (__arm_vshlq_u8): Remove. - (__arm_vshlq_u16): Remove. - (__arm_vshlq_u32): Remove. - (__arm_vshlq_r_u8): Remove. - (__arm_vshlq_n_u8): Remove. - (__arm_vshlq_r_s8): Remove. - (__arm_vshlq_n_s8): Remove. - (__arm_vshlq_r_u16): Remove. - (__arm_vshlq_n_u16): Remove. - (__arm_vshlq_r_s16): Remove. - (__arm_vshlq_n_s16): Remove. - (__arm_vshlq_r_u32): Remove. - (__arm_vshlq_n_u32): Remove. - (__arm_vshlq_r_s32): Remove. - (__arm_vshlq_n_s32): Remove. - (__arm_vshlq_m_r_u8): Remove. - (__arm_vshlq_m_r_s8): Remove. - (__arm_vshlq_m_r_u16): Remove. - (__arm_vshlq_m_r_s16): Remove. - (__arm_vshlq_m_r_u32): Remove. - (__arm_vshlq_m_r_s32): Remove. - (__arm_vshlq_m_u8): Remove. - (__arm_vshlq_m_s8): Remove. - (__arm_vshlq_m_u16): Remove. - (__arm_vshlq_m_s16): Remove. - (__arm_vshlq_m_u32): Remove. - (__arm_vshlq_m_s32): Remove. - (__arm_vshlq_m_n_s8): Remove. - (__arm_vshlq_m_n_s32): Remove. - (__arm_vshlq_m_n_s16): Remove. - (__arm_vshlq_m_n_u8): Remove. - (__arm_vshlq_m_n_u32): Remove. - (__arm_vshlq_m_n_u16): Remove. - (__arm_vshlq_x_s8): Remove. - (__arm_vshlq_x_s16): Remove. - (__arm_vshlq_x_s32): Remove. - (__arm_vshlq_x_u8): Remove. - (__arm_vshlq_x_u16): Remove. - (__arm_vshlq_x_u32): Remove. - (__arm_vshlq_x_n_s8): Remove. - (__arm_vshlq_x_n_s16): Remove. - (__arm_vshlq_x_n_s32): Remove. - (__arm_vshlq_x_n_u8): Remove. - (__arm_vshlq_x_n_u16): Remove. - (__arm_vshlq_x_n_u32): Remove. - (__arm_vshlq): Remove. - (__arm_vshlq_r): Remove. - (__arm_vshlq_n): Remove. - (__arm_vshlq_m_r): Remove. - (__arm_vshlq_m): Remove. - (__arm_vshlq_m_n): Remove. - (__arm_vshlq_x): Remove. - (__arm_vshlq_x_n): Remove. - (vqshlq): Remove. - (vqshlq_r): Remove. - (vqshlq_n): Remove. - (vqshlq_m_r): Remove. - (vqshlq_m_n): Remove. - (vqshlq_m): Remove. - (vqshlq_u8): Remove. - (vqshlq_r_u8): Remove. - (vqshlq_n_u8): Remove. - (vqshlq_s8): Remove. - (vqshlq_r_s8): Remove. - (vqshlq_n_s8): Remove. - (vqshlq_u16): Remove. - (vqshlq_r_u16): Remove. - (vqshlq_n_u16): Remove. - (vqshlq_s16): Remove. - (vqshlq_r_s16): Remove. - (vqshlq_n_s16): Remove. - (vqshlq_u32): Remove. - (vqshlq_r_u32): Remove. - (vqshlq_n_u32): Remove. - (vqshlq_s32): Remove. - (vqshlq_r_s32): Remove. - (vqshlq_n_s32): Remove. - (vqshlq_m_r_u8): Remove. - (vqshlq_m_r_s8): Remove. - (vqshlq_m_r_u16): Remove. - (vqshlq_m_r_s16): Remove. - (vqshlq_m_r_u32): Remove. - (vqshlq_m_r_s32): Remove. - (vqshlq_m_n_s8): Remove. - (vqshlq_m_n_s32): Remove. - (vqshlq_m_n_s16): Remove. - (vqshlq_m_n_u8): Remove. - (vqshlq_m_n_u32): Remove. - (vqshlq_m_n_u16): Remove. - (vqshlq_m_s8): Remove. - (vqshlq_m_s32): Remove. - (vqshlq_m_s16): Remove. - (vqshlq_m_u8): Remove. - (vqshlq_m_u32): Remove. - (vqshlq_m_u16): Remove. - (__arm_vqshlq_u8): Remove. - (__arm_vqshlq_r_u8): Remove. - (__arm_vqshlq_n_u8): Remove. - (__arm_vqshlq_s8): Remove. - (__arm_vqshlq_r_s8): Remove. - (__arm_vqshlq_n_s8): Remove. - (__arm_vqshlq_u16): Remove. - (__arm_vqshlq_r_u16): Remove. - (__arm_vqshlq_n_u16): Remove. - (__arm_vqshlq_s16): Remove. - (__arm_vqshlq_r_s16): Remove. - (__arm_vqshlq_n_s16): Remove. - (__arm_vqshlq_u32): Remove. - (__arm_vqshlq_r_u32): Remove. - (__arm_vqshlq_n_u32): Remove. - (__arm_vqshlq_s32): Remove. - (__arm_vqshlq_r_s32): Remove. - (__arm_vqshlq_n_s32): Remove. - (__arm_vqshlq_m_r_u8): Remove. - (__arm_vqshlq_m_r_s8): Remove. - (__arm_vqshlq_m_r_u16): Remove. - (__arm_vqshlq_m_r_s16): Remove. - (__arm_vqshlq_m_r_u32): Remove. - (__arm_vqshlq_m_r_s32): Remove. - (__arm_vqshlq_m_n_s8): Remove. - (__arm_vqshlq_m_n_s32): Remove. - (__arm_vqshlq_m_n_s16): Remove. - (__arm_vqshlq_m_n_u8): Remove. - (__arm_vqshlq_m_n_u32): Remove. - (__arm_vqshlq_m_n_u16): Remove. - (__arm_vqshlq_m_s8): Remove. - (__arm_vqshlq_m_s32): Remove. - (__arm_vqshlq_m_s16): Remove. - (__arm_vqshlq_m_u8): Remove. - (__arm_vqshlq_m_u32): Remove. - (__arm_vqshlq_m_u16): Remove. - (__arm_vqshlq): Remove. - (__arm_vqshlq_r): Remove. - (__arm_vqshlq_n): Remove. - (__arm_vqshlq_m_r): Remove. - (__arm_vqshlq_m_n): Remove. - (__arm_vqshlq_m): Remove. - -2023-05-05 Christophe Lyon <christophe.lyon@arm.com> - - * config/arm/arm-mve-builtins-functions.h (class - unspec_mve_function_exact_insn_vshl): New. - -2023-05-05 Christophe Lyon <christophe.lyon@arm.com> - - * config/arm/arm-mve-builtins-shapes.cc (binary_lshift_r): New. - * config/arm/arm-mve-builtins-shapes.h (binary_lshift_r): New. - -2023-05-05 Christophe Lyon <christophe.lyon@arm.com> - - * config/arm/arm-mve-builtins.cc (has_inactive_argument) - (finish_opt_n_resolution): Handle MODE_r. - * config/arm/arm-mve-builtins.def (r): New mode. - -2023-05-05 Christophe Lyon <christophe.lyon@arm.com> - - * config/arm/arm-mve-builtins-shapes.cc (binary_lshift): New. - * config/arm/arm-mve-builtins-shapes.h (binary_lshift): New. - -2023-05-05 Christophe Lyon <christophe.lyon@arm.com> - - * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITHOUT_N): New. - (vabdq): New. - * config/arm/arm-mve-builtins-base.def (vabdq): New. - * config/arm/arm-mve-builtins-base.h (vabdq): New. - * config/arm/arm_mve.h (vabdq): Remove. - (vabdq_m): Remove. - (vabdq_x): Remove. - (vabdq_u8): Remove. - (vabdq_s8): Remove. - (vabdq_u16): Remove. - (vabdq_s16): Remove. - (vabdq_u32): Remove. - (vabdq_s32): Remove. - (vabdq_f16): Remove. - (vabdq_f32): Remove. - (vabdq_m_s8): Remove. - (vabdq_m_s32): Remove. - (vabdq_m_s16): Remove. - (vabdq_m_u8): Remove. - (vabdq_m_u32): Remove. - (vabdq_m_u16): Remove. - (vabdq_m_f32): Remove. - (vabdq_m_f16): Remove. - (vabdq_x_s8): Remove. - (vabdq_x_s16): Remove. - (vabdq_x_s32): Remove. - (vabdq_x_u8): Remove. - (vabdq_x_u16): Remove. - (vabdq_x_u32): Remove. - (vabdq_x_f16): Remove. - (vabdq_x_f32): Remove. - (__arm_vabdq_u8): Remove. - (__arm_vabdq_s8): Remove. - (__arm_vabdq_u16): Remove. - (__arm_vabdq_s16): Remove. - (__arm_vabdq_u32): Remove. - (__arm_vabdq_s32): Remove. - (__arm_vabdq_m_s8): Remove. - (__arm_vabdq_m_s32): Remove. - (__arm_vabdq_m_s16): Remove. - (__arm_vabdq_m_u8): Remove. - (__arm_vabdq_m_u32): Remove. - (__arm_vabdq_m_u16): Remove. - (__arm_vabdq_x_s8): Remove. - (__arm_vabdq_x_s16): Remove. - (__arm_vabdq_x_s32): Remove. - (__arm_vabdq_x_u8): Remove. - (__arm_vabdq_x_u16): Remove. - (__arm_vabdq_x_u32): Remove. - (__arm_vabdq_f16): Remove. - (__arm_vabdq_f32): Remove. - (__arm_vabdq_m_f32): Remove. - (__arm_vabdq_m_f16): Remove. - (__arm_vabdq_x_f16): Remove. - (__arm_vabdq_x_f32): Remove. - (__arm_vabdq): Remove. - (__arm_vabdq_m): Remove. - (__arm_vabdq_x): Remove. - -2023-05-05 Christophe Lyon <christophe.lyon@arm.com> - - * config/arm/iterators.md (MVE_FP_M_BINARY): Add vabdq. - (MVE_FP_VABDQ_ONLY): New. - (mve_insn): Add vabd. - * config/arm/mve.md (mve_vabdq_f<mode>): Move into ... - (@mve_<mve_insn>q_f<mode>): ... this. - (mve_vabdq_m_f<mode>): Remove. - -2023-05-05 Christophe Lyon <christophe.lyon@arm.com> - - * config/arm/arm-mve-builtins-base.cc (vqrdmulhq): New. - * config/arm/arm-mve-builtins-base.def (vqrdmulhq): New. - * config/arm/arm-mve-builtins-base.h (vqrdmulhq): New. - * config/arm/arm_mve.h (vqrdmulhq): Remove. - (vqrdmulhq_m): Remove. - (vqrdmulhq_s8): Remove. - (vqrdmulhq_n_s8): Remove. - (vqrdmulhq_s16): Remove. - (vqrdmulhq_n_s16): Remove. - (vqrdmulhq_s32): Remove. - (vqrdmulhq_n_s32): Remove. - (vqrdmulhq_m_n_s8): Remove. - (vqrdmulhq_m_n_s32): Remove. - (vqrdmulhq_m_n_s16): Remove. - (vqrdmulhq_m_s8): Remove. - (vqrdmulhq_m_s32): Remove. - (vqrdmulhq_m_s16): Remove. - (__arm_vqrdmulhq_s8): Remove. - (__arm_vqrdmulhq_n_s8): Remove. - (__arm_vqrdmulhq_s16): Remove. - (__arm_vqrdmulhq_n_s16): Remove. - (__arm_vqrdmulhq_s32): Remove. - (__arm_vqrdmulhq_n_s32): Remove. - (__arm_vqrdmulhq_m_n_s8): Remove. - (__arm_vqrdmulhq_m_n_s32): Remove. - (__arm_vqrdmulhq_m_n_s16): Remove. - (__arm_vqrdmulhq_m_s8): Remove. - (__arm_vqrdmulhq_m_s32): Remove. - (__arm_vqrdmulhq_m_s16): Remove. - (__arm_vqrdmulhq): Remove. - (__arm_vqrdmulhq_m): Remove. - -2023-05-05 Christophe Lyon <christophe.lyon@arm.com> - - * config/arm/iterators.md (MVE_SHIFT_M_R, MVE_SHIFT_M_N) - (MVE_SHIFT_N, MVE_SHIFT_R): New. - (mve_insn): Add vqshl, vshl. - * config/arm/mve.md (mve_vqshlq_n_<supf><mode>) - (mve_vshlq_n_<supf><mode>): Merge into ... - (@mve_<mve_insn>q_n_<supf><mode>): ... this. - (mve_vqshlq_r_<supf><mode>, mve_vshlq_r_<supf><mode>): Merge into - ... - (@mve_<mve_insn>q_r_<supf><mode>): ... this. - (mve_vqshlq_m_r_<supf><mode>, mve_vshlq_m_r_<supf><mode>): Merge - into ... - (@mve_<mve_insn>q_m_r_<supf><mode>): ... this. - (mve_vqshlq_m_n_<supf><mode>, mve_vshlq_m_n_<supf><mode>): Merge - into ... - (@mve_<mve_insn>q_m_n_<supf><mode>): ... this. - * config/arm/vec-common.md (mve_vshlq_<supf><mode>): Transform - into ... - (@mve_<mve_insn>q_<supf><mode>): ... this. - -2023-05-05 Christophe Lyon <christophe.lyon@arm.com> - - * config/arm/arm-mve-builtins-base.cc (vqrshlq, vrshlq): New. - * config/arm/arm-mve-builtins-base.def (vqrshlq, vrshlq): New. - * config/arm/arm-mve-builtins-base.h (vqrshlq, vrshlq): New. - * config/arm/arm-mve-builtins.cc (has_inactive_argument): Handle - vqrshlq, vrshlq. - * config/arm/arm_mve.h (vrshlq): Remove. - (vrshlq_m_n): Remove. - (vrshlq_m): Remove. - (vrshlq_x): Remove. - (vrshlq_u8): Remove. - (vrshlq_n_u8): Remove. - (vrshlq_s8): Remove. - (vrshlq_n_s8): Remove. - (vrshlq_u16): Remove. - (vrshlq_n_u16): Remove. - (vrshlq_s16): Remove. - (vrshlq_n_s16): Remove. - (vrshlq_u32): Remove. - (vrshlq_n_u32): Remove. - (vrshlq_s32): Remove. - (vrshlq_n_s32): Remove. - (vrshlq_m_n_u8): Remove. - (vrshlq_m_n_s8): Remove. - (vrshlq_m_n_u16): Remove. - (vrshlq_m_n_s16): Remove. - (vrshlq_m_n_u32): Remove. - (vrshlq_m_n_s32): Remove. - (vrshlq_m_s8): Remove. - (vrshlq_m_s32): Remove. - (vrshlq_m_s16): Remove. - (vrshlq_m_u8): Remove. - (vrshlq_m_u32): Remove. - (vrshlq_m_u16): Remove. - (vrshlq_x_s8): Remove. - (vrshlq_x_s16): Remove. - (vrshlq_x_s32): Remove. - (vrshlq_x_u8): Remove. - (vrshlq_x_u16): Remove. - (vrshlq_x_u32): Remove. - (__arm_vrshlq_u8): Remove. - (__arm_vrshlq_n_u8): Remove. - (__arm_vrshlq_s8): Remove. - (__arm_vrshlq_n_s8): Remove. - (__arm_vrshlq_u16): Remove. - (__arm_vrshlq_n_u16): Remove. - (__arm_vrshlq_s16): Remove. - (__arm_vrshlq_n_s16): Remove. - (__arm_vrshlq_u32): Remove. - (__arm_vrshlq_n_u32): Remove. - (__arm_vrshlq_s32): Remove. - (__arm_vrshlq_n_s32): Remove. - (__arm_vrshlq_m_n_u8): Remove. - (__arm_vrshlq_m_n_s8): Remove. - (__arm_vrshlq_m_n_u16): Remove. - (__arm_vrshlq_m_n_s16): Remove. - (__arm_vrshlq_m_n_u32): Remove. - (__arm_vrshlq_m_n_s32): Remove. - (__arm_vrshlq_m_s8): Remove. - (__arm_vrshlq_m_s32): Remove. - (__arm_vrshlq_m_s16): Remove. - (__arm_vrshlq_m_u8): Remove. - (__arm_vrshlq_m_u32): Remove. - (__arm_vrshlq_m_u16): Remove. - (__arm_vrshlq_x_s8): Remove. - (__arm_vrshlq_x_s16): Remove. - (__arm_vrshlq_x_s32): Remove. - (__arm_vrshlq_x_u8): Remove. - (__arm_vrshlq_x_u16): Remove. - (__arm_vrshlq_x_u32): Remove. - (__arm_vrshlq): Remove. - (__arm_vrshlq_m_n): Remove. - (__arm_vrshlq_m): Remove. - (__arm_vrshlq_x): Remove. - (vqrshlq): Remove. - (vqrshlq_m_n): Remove. - (vqrshlq_m): Remove. - (vqrshlq_u8): Remove. - (vqrshlq_n_u8): Remove. - (vqrshlq_s8): Remove. - (vqrshlq_n_s8): Remove. - (vqrshlq_u16): Remove. - (vqrshlq_n_u16): Remove. - (vqrshlq_s16): Remove. - (vqrshlq_n_s16): Remove. - (vqrshlq_u32): Remove. - (vqrshlq_n_u32): Remove. - (vqrshlq_s32): Remove. - (vqrshlq_n_s32): Remove. - (vqrshlq_m_n_u8): Remove. - (vqrshlq_m_n_s8): Remove. - (vqrshlq_m_n_u16): Remove. - (vqrshlq_m_n_s16): Remove. - (vqrshlq_m_n_u32): Remove. - (vqrshlq_m_n_s32): Remove. - (vqrshlq_m_s8): Remove. - (vqrshlq_m_s32): Remove. - (vqrshlq_m_s16): Remove. - (vqrshlq_m_u8): Remove. - (vqrshlq_m_u32): Remove. - (vqrshlq_m_u16): Remove. - (__arm_vqrshlq_u8): Remove. - (__arm_vqrshlq_n_u8): Remove. - (__arm_vqrshlq_s8): Remove. - (__arm_vqrshlq_n_s8): Remove. - (__arm_vqrshlq_u16): Remove. - (__arm_vqrshlq_n_u16): Remove. - (__arm_vqrshlq_s16): Remove. - (__arm_vqrshlq_n_s16): Remove. - (__arm_vqrshlq_u32): Remove. - (__arm_vqrshlq_n_u32): Remove. - (__arm_vqrshlq_s32): Remove. - (__arm_vqrshlq_n_s32): Remove. - (__arm_vqrshlq_m_n_u8): Remove. - (__arm_vqrshlq_m_n_s8): Remove. - (__arm_vqrshlq_m_n_u16): Remove. - (__arm_vqrshlq_m_n_s16): Remove. - (__arm_vqrshlq_m_n_u32): Remove. - (__arm_vqrshlq_m_n_s32): Remove. - (__arm_vqrshlq_m_s8): Remove. - (__arm_vqrshlq_m_s32): Remove. - (__arm_vqrshlq_m_s16): Remove. - (__arm_vqrshlq_m_u8): Remove. - (__arm_vqrshlq_m_u32): Remove. - (__arm_vqrshlq_m_u16): Remove. - (__arm_vqrshlq): Remove. - (__arm_vqrshlq_m_n): Remove. - (__arm_vqrshlq_m): Remove. - -2023-05-05 Christophe Lyon <christophe.lyon@arm.com> - - * config/arm/iterators.md (MVE_RSHIFT_M_N, MVE_RSHIFT_N): New. - (mve_insn): Add vqrshl, vrshl. - * config/arm/mve.md (mve_vqrshlq_n_<supf><mode>) - (mve_vrshlq_n_<supf><mode>): Merge into ... - (@mve_<mve_insn>q_n_<supf><mode>): ... this. - (mve_vqrshlq_m_n_<supf><mode>, mve_vrshlq_m_n_<supf><mode>): Merge - into ... - (@mve_<mve_insn>q_m_n_<supf><mode>): ... this. - -2023-05-05 Christophe Lyon <christophe.lyon@arm.com> - - * config/arm/arm-mve-builtins-shapes.cc (binary_round_lshift): New. - * config/arm/arm-mve-builtins-shapes.h (binary_round_lshift): New. - -2023-05-05 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - PR target/109615 - * config/riscv/riscv-vsetvl.cc (avl_info::multiple_source_equal_p): Add - denegrate PHI optmization. - -2023-05-05 Uros Bizjak <ubizjak@gmail.com> - - * config/i386/predicates.md (register_no_SP_operand): - Rename from index_register_operand. - (call_register_operand): Update for rename. - * config/i386/i386.md (*lea<mode>_general_[1234]): Update for rename. - -2023-05-05 Tamar Christina <tamar.christina@arm.com> - - PR bootstrap/84402 - * Makefile.in (NUM_MATCH_SPLITS, MATCH_SPLITS_SEQ, - GIMPLE_MATCH_PD_SEQ_SRC, GIMPLE_MATCH_PD_SEQ_O, - GENERIC_MATCH_PD_SEQ_SRC, GENERIC_MATCH_PD_SEQ_O): New. - (OBJS, MOSTLYCLEANFILES, .PRECIOUS): Use them. - (s-match): Split into s-generic-match and s-gimple-match. - * configure.ac (with-matchpd-partitions, - DEFAULT_MATCHPD_PARTITIONS): New. - * configure: Regenerate. - -2023-05-05 Tamar Christina <tamar.christina@arm.com> - - PR bootstrap/84402 - * genmatch.cc (emit_func, SIZED_BASED_CHUNKS, get_out_file): New. - (decision_tree::gen): Accept list of files instead of single and update - to write function definition to header and main file. - (write_predicate): Likewise. - (write_header): Emit pragmas and new includes. - (main): Create file buffers and cleanup. - (showUsage, write_header_includes): New. - -2023-05-05 Tamar Christina <tamar.christina@arm.com> - - PR bootstrap/84402 - * Makefile.in (OBJS): Add gimple-match-exports.o. - * genmatch.cc (decision_tree::gen): Export gimple_gimplify helpers. - * gimple-match-head.cc (gimple_simplify, gimple_resimplify1, - gimple_resimplify2, gimple_resimplify3, gimple_resimplify4, - gimple_resimplify5, constant_for_folding, convert_conditional_op, - maybe_resimplify_conditional_op, gimple_match_op::resimplify, - maybe_build_generic_op, build_call_internal, maybe_push_res_to_seq, - do_valueize, try_conditional_simplification, gimple_extract, - gimple_extract_op, canonicalize_code, commutative_binary_op_p, - commutative_ternary_op_p, first_commutative_argument, - associative_binary_op_p, directly_supported_p, - get_conditional_internal_fn): Moved to gimple-match-exports.cc - * gimple-match-exports.cc: New file. - -2023-05-05 Tamar Christina <tamar.christina@arm.com> - - PR bootstrap/84402 - * genmatch.cc (decision_tree::gen, write_predicate): Generate new - debug_dump var. - (dt_simplify::gen_1): Use it. - -2023-05-05 Tamar Christina <tamar.christina@arm.com> - - PR bootstrap/84402 - * genmatch.cc (output_line_directive): Only emit commented directive - when -vv. - -2023-05-05 Tamar Christina <tamar.christina@arm.com> - - PR bootstrap/84402 - * genmatch.cc (dt_simplify::gen_1): Only emit labels if used. - -2023-05-05 Tobias Burnus <tobias@codesourcery.com> - - * config/gcn/gcn.cc (gcn_vectorize_builtin_vectorized_function): Remove - unused in_mode/in_n variables. - -2023-05-05 Richard Biener <rguenther@suse.de> - - PR tree-optimization/109735 - * tree-vect-stmts.cc (vectorizable_operation): Perform - conversion for POINTER_DIFF_EXPR unconditionally. - -2023-05-05 Uros Bizjak <ubizjak@gmail.com> - - * config/i386/mmx.md (mulv2si3): New expander. - (*mulv2si3): New insn pattern. - -2023-05-05 Tobias Burnus <tobias@codesourcery.com> - Thomas Schwinge <thomas@codesourcery.com> - - PR libgomp/108098 - * config/nvptx/mkoffload.cc (process): Emit dummy procedure - alongside reverse-offload function table to prevent NULL values - of the function addresses. - -2023-05-05 Jakub Jelinek <jakub@redhat.com> - - * builtins.cc (do_mpfr_ckconv, do_mpc_ckconv): Fix comment typo, - mpft_t -> mpfr_t. - * fold-const-call.cc (do_mpfr_ckconv, do_mpc_ckconv): Likewise. - -2023-05-05 Andrew Pinski <apinski@marvell.com> - - PR tree-optimization/109732 - * tree-ssa-phiopt.cc (match_simplify_replacement): Fix the selection - of the argtrue/argfalse. - -2023-05-05 Andrew Pinski <apinski@marvell.com> - - PR tree-optimization/109722 - * match.pd: Extend the `ABS<a> == 0` pattern - to cover `ABSU<a> == 0` too. - -2023-05-04 Uros Bizjak <ubizjak@gmail.com> - - PR target/109733 - * config/i386/predicates.md (index_reg_operand): New predicate. - * config/i386/i386.md (ashift to lea spliter): Use - general_reg_operand and index_reg_operand predicates. - -2023-05-04 Kyrylo Tkachov <kyrylo.tkachov@arm.com> - - * config/aarch64/aarch64-simd.md (aarch64_<sur><addsub>hn2<mode>_insn_le): - Rename and reimplement with RTL codes to... - (aarch64_<optab>hn2<mode>_insn_le): .. This. - (aarch64_r<optab>hn2<mode>_insn_le): New pattern. - (aarch64_<sur><addsub>hn2<mode>_insn_be): Rename and reimplement with RTL - codes to... - (aarch64_<optab>hn2<mode>_insn_be): ... This. - (aarch64_r<optab>hn2<mode>_insn_be): New pattern. - (aarch64_<sur><addsub>hn2<mode>): Rename and adjust expander to... - (aarch64_<optab>hn2<mode>): ... This. - (aarch64_r<optab>hn2<mode>): New expander. - * config/aarch64/iterators.md (UNSPEC_ADDHN, UNSPEC_RADDHN, - UNSPEC_SUBHN, UNSPEC_RSUBHN): Delete unspecs. - (ADDSUBHN): Delete. - (sur): Remove handling of the above. - (addsub): Likewise. - -2023-05-04 Kyrylo Tkachov <kyrylo.tkachov@arm.com> - - * config/aarch64/aarch64-simd.md (aarch64_<sur><addsub>hn<mode>_insn_le): - Delete. - (aarch64_<optab>hn<mode>_insn<vczle><vczbe>): New define_insn. - (aarch64_<sur><addsub>hn<mode>_insn_be): Delete. - (aarch64_r<optab>hn<mode>_insn<vczle><vczbe>): New define_insn. - (aarch64_<sur><addsub>hn<mode>): Delete. - (aarch64_<optab>hn<mode>): New define_expand. - (aarch64_r<optab>hn<mode>): Likewise. - * config/aarch64/predicates.md (aarch64_simd_raddsubhn_imm_vec): - New predicate. - -2023-05-04 Andrew Pinski <apinski@marvell.com> - - * tree-ssa-phiopt.cc (replace_phi_edge_with_variable): Handle - diamond form bb with forwarder only empty blocks better. - -2023-05-04 Andrew Pinski <apinski@marvell.com> - - * tree-ssa-threadupdate.cc (copy_phi_arg_into_existing_phi): Move to ... - * tree-cfg.cc (copy_phi_arg_into_existing_phi): Here and remove static. - (gimple_duplicate_sese_tail): Use copy_phi_arg_into_existing_phi instead - of an inline version of it. - * tree-cfgcleanup.cc (remove_forwarder_block): Likewise. - * tree-cfg.h (copy_phi_arg_into_existing_phi): New declaration. - -2023-05-04 Andrew Pinski <apinski@marvell.com> - - * tree-ssa-phiopt.cc (replace_phi_edge_with_variable): Change - the default argument value for dce_ssa_names to nullptr. - Check to make sure dce_ssa_names is a non-nullptr before - calling simple_dce_from_worklist. - -2023-05-04 Uros Bizjak <ubizjak@gmail.com> - - * config/i386/predicates.md (index_register_operand): Reject - arg_pointer_rtx, frame_pointer_rtx, stack_pointer_rtx and - VIRTUAL_REGISTER_P operands. Allow subregs of memory before reload. - (call_register_no_elim_operand): Rewrite as ... - (call_register_operand): ... this. - (call_insn_operand): Use call_register_operand predicate. - -2023-05-04 Richard Biener <rguenther@suse.de> - - PR tree-optimization/109721 - * tree-vect-stmts.cc (vectorizable_operation): Make sure - to test word_mode for all !target_support_p operations. - -2023-05-04 Kyrylo Tkachov <kyrylo.tkachov@arm.com> - - PR target/99195 - * config/aarch64/aarch64-simd.md (aarch64_<su>aba<mode>): Rename to... - (aarch64_<su>aba<mode><vczle><vczbe>): ... This. - (aarch64_mla<mode>): Rename to... - (aarch64_mla<mode><vczle><vczbe>): ... This. - (*aarch64_mla_elt<mode>): Rename to... - (*aarch64_mla_elt<mode><vczle><vczbe>): ... This. - (*aarch64_mla_elt_<vswap_width_name><mode>): Rename to... - (*aarch64_mla_elt_<vswap_width_name><mode><vczle><vczbe>): ... This. - (aarch64_mla_n<mode>): Rename to... - (aarch64_mla_n<mode><vczle><vczbe>): ... This. - (aarch64_mls<mode>): Rename to... - (aarch64_mls<mode><vczle><vczbe>): ... This. - (*aarch64_mls_elt<mode>): Rename to... - (*aarch64_mls_elt<mode><vczle><vczbe>): ... This. - (*aarch64_mls_elt_<vswap_width_name><mode>): Rename to... - (*aarch64_mls_elt_<vswap_width_name><mode><vczle><vczbe>): ... This. - (aarch64_mls_n<mode>): Rename to... - (aarch64_mls_n<mode><vczle><vczbe>): ... This. - (fma<mode>4): Rename to... - (fma<mode>4<vczle><vczbe>): ... This. - (*aarch64_fma4_elt<mode>): Rename to... - (*aarch64_fma4_elt<mode><vczle><vczbe>): ... This. - (*aarch64_fma4_elt_<vswap_width_name><mode>): Rename to... - (*aarch64_fma4_elt_<vswap_width_name><mode><vczle><vczbe>): ... This. - (*aarch64_fma4_elt_from_dup<mode>): Rename to... - (*aarch64_fma4_elt_from_dup<mode><vczle><vczbe>): ... This. - (fnma<mode>4): Rename to... - (fnma<mode>4<vczle><vczbe>): ... This. - (*aarch64_fnma4_elt<mode>): Rename to... - (*aarch64_fnma4_elt<mode><vczle><vczbe>): ... This. - (*aarch64_fnma4_elt_<vswap_width_name><mode>): Rename to... - (*aarch64_fnma4_elt_<vswap_width_name><mode><vczle><vczbe>): ... This. - (*aarch64_fnma4_elt_from_dup<mode>): Rename to... - (*aarch64_fnma4_elt_from_dup<mode><vczle><vczbe>): ... This. - (aarch64_simd_bsl<mode>_internal): Rename to... - (aarch64_simd_bsl<mode>_internal<vczle><vczbe>): ... This. - (*aarch64_simd_bsl<mode>_alt): Rename to... - (*aarch64_simd_bsl<mode>_alt<vczle><vczbe>): ... This. - -2023-05-04 Kyrylo Tkachov <kyrylo.tkachov@arm.com> - - PR target/99195 - * config/aarch64/aarch64-simd.md (aarch64_<su>abd<mode>): Rename to... - (aarch64_<su>abd<mode><vczle><vczbe>): ... This. - (fabd<mode>3): Rename to... - (fabd<mode>3<vczle><vczbe>): ... This. - (aarch64_<optab>p<mode>): Rename to... - (aarch64_<optab>p<mode><vczle><vczbe>): ... This. - (aarch64_faddp<mode>): Rename to... - (aarch64_faddp<mode><vczle><vczbe>): ... This. - -2023-05-04 Martin Liska <mliska@suse.cz> - - * gcov.cc (GCOV_JSON_FORMAT_VERSION): New definition. - (print_version): Use it. - (generate_results): Likewise. - -2023-05-04 Richard Biener <rguenther@suse.de> - - * tree-cfg.h (last_stmt): Rename to ... - (last_nondebug_stmt): ... this. - * tree-cfg.cc (last_stmt): Rename to ... - (last_nondebug_stmt): ... this. - (assign_discriminators): Adjust. - (group_case_labels_stmt): Likewise. - (gimple_can_duplicate_bb_p): Likewise. - (execute_fixup_cfg): Likewise. - * auto-profile.cc (afdo_propagate_circuit): Likewise. - * gimple-range.cc (gimple_ranger::range_on_exit): Likewise. - * omp-expand.cc (workshare_safe_to_combine_p): Likewise. - (determine_parallel_type): Likewise. - (adjust_context_and_scope): Likewise. - (expand_task_call): Likewise. - (remove_exit_barrier): Likewise. - (expand_omp_taskreg): Likewise. - (expand_omp_for_init_counts): Likewise. - (expand_omp_for_init_vars): Likewise. - (expand_omp_for_static_chunk): Likewise. - (expand_omp_simd): Likewise. - (expand_oacc_for): Likewise. - (expand_omp_for): Likewise. - (expand_omp_sections): Likewise. - (expand_omp_atomic_fetch_op): Likewise. - (expand_omp_atomic_cas): Likewise. - (expand_omp_atomic): Likewise. - (expand_omp_target): Likewise. - (expand_omp): Likewise. - (omp_make_gimple_edges): Likewise. - * trans-mem.cc (tm_region_init): Likewise. - * tree-inline.cc (redirect_all_calls): Likewise. - * tree-parloops.cc (gen_parallel_loop): Likewise. - * tree-ssa-loop-ch.cc (do_while_loop_p): Likewise. - * tree-ssa-loop-ivcanon.cc (canonicalize_loop_induction_variables): - Likewise. - * tree-ssa-loop-ivopts.cc (stmt_after_ip_normal_pos): Likewise. - (may_eliminate_iv): Likewise. - * tree-ssa-loop-manip.cc (standard_iv_increment_position): Likewise. - * tree-ssa-loop-niter.cc (do_warn_aggressive_loop_optimizations): - Likewise. - (estimate_numbers_of_iterations): Likewise. - * tree-ssa-loop-split.cc (compute_added_num_insns): Likewise. - * tree-ssa-loop-unswitch.cc (get_predicates_for_bb): Likewise. - (set_predicates_for_bb): Likewise. - (init_loop_unswitch_info): Likewise. - (hoist_guard): Likewise. - * tree-ssa-phiopt.cc (match_simplify_replacement): Likewise. - (minmax_replacement): Likewise. - * tree-ssa-reassoc.cc (update_range_test): Likewise. - (optimize_range_tests_to_bit_test): Likewise. - (optimize_range_tests_var_bound): Likewise. - (optimize_range_tests): Likewise. - (no_side_effect_bb): Likewise. - (suitable_cond_bb): Likewise. - (maybe_optimize_range_tests): Likewise. - (reassociate_bb): Likewise. - * tree-vrp.cc (rvrp_folder::pre_fold_bb): Likewise. - -2023-05-04 Jakub Jelinek <jakub@redhat.com> - - PR debug/109676 - * config/i386/i386-features.cc (timode_scalar_chain::convert_insn): - If src is REG, change its mode to V1TImode and call fix_debug_reg_uses - for it only if it still has TImode. Don't decide whether to call - fix_debug_reg_uses based on whether SRC is ever set or not. - -2023-05-04 Hans-Peter Nilsson <hp@axis.com> - - * config/cris/cris.cc (cris_split_constant): New function. - * config/cris/cris.md (splitop): New iterator. - (opsplit1): New define_peephole2. - * config/cris/cris-protos.h (cris_split_constant): Declare. - (cris_splittable_constant_p): New macro. - -2023-05-04 Hans-Peter Nilsson <hp@axis.com> - - * config/cris/cris.cc (TARGET_SPILL_CLASS): Define - to ALL_REGS. - -2023-05-04 Hans-Peter Nilsson <hp@axis.com> - - * config/cris/cris.cc (cris_side_effect_mode_ok): Use - lra_in_progress, not reload_in_progress. - * config/cris/cris.md ("movdi", "*addi_reload"): Ditto. - * config/cris/constraints.md ("Q"): Ditto. - -2023-05-03 Andrew Pinski <apinski@marvell.com> - - * tree-ssa-dce.cc (simple_dce_from_worklist): Record - stats on removed number of statements and phis. - -2023-05-03 Aldy Hernandez <aldyh@redhat.com> - - PR tree-optimization/109711 - * value-range.cc (irange::verify_range): Allow types of - error_mark_node. - -2023-05-03 Alexander Monakov <amonakov@ispras.ru> - - PR sanitizer/90746 - * calls.cc (can_implement_as_sibling_call_p): Reject calls - to __sanitizer_cov_trace_pc. - -2023-05-03 Richard Sandiford <richard.sandiford@arm.com> - - PR target/109661 - * config/aarch64/aarch64.cc (aarch64_function_arg_alignment): Add - a new ABI break parameter for GCC 14. Set it to the alignment - of enums that have an underlying type. Take the true alignment - of such enums from the TYPE_ALIGN of the underlying type's - TYPE_MAIN_VARIANT. - (aarch64_function_arg_boundary): Update accordingly. - (aarch64_layout_arg, aarch64_gimplify_va_arg_expr): Likewise. - Warn about ABI differences. - -2023-05-03 Richard Sandiford <richard.sandiford@arm.com> - - PR target/109661 - * config/aarch64/aarch64.cc (aarch64_function_arg_alignment): Rename - ABI break variables to abi_break_gcc_9 and abi_break_gcc_13. - (aarch64_layout_arg, aarch64_function_arg_boundary): Likewise. - (aarch64_gimplify_va_arg_expr): Likewise. - -2023-05-03 Christophe Lyon <christophe.lyon@arm.com> - - * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITH_M_N_NO_F) - (FUNCTION_WITHOUT_N_NO_F, FUNCTION_WITH_M_N_NO_U_F): New. - (vhaddq, vhsubq, vmulhq, vqaddq, vqsubq, vqdmulhq, vrhaddq) - (vrmulhq): New. - * config/arm/arm-mve-builtins-base.def (vhaddq, vhsubq, vmulhq) - (vqaddq, vqsubq, vqdmulhq, vrhaddq, vrmulhq): New. - * config/arm/arm-mve-builtins-base.h (vhaddq, vhsubq, vmulhq) - (vqaddq, vqsubq, vqdmulhq, vrhaddq, vrmulhq): New. - * config/arm/arm_mve.h (vhsubq): Remove. - (vhaddq): Remove. - (vhaddq_m): Remove. - (vhsubq_m): Remove. - (vhaddq_x): Remove. - (vhsubq_x): Remove. - (vhsubq_u8): Remove. - (vhsubq_n_u8): Remove. - (vhaddq_u8): Remove. - (vhaddq_n_u8): Remove. - (vhsubq_s8): Remove. - (vhsubq_n_s8): Remove. - (vhaddq_s8): Remove. - (vhaddq_n_s8): Remove. - (vhsubq_u16): Remove. - (vhsubq_n_u16): Remove. - (vhaddq_u16): Remove. - (vhaddq_n_u16): Remove. - (vhsubq_s16): Remove. - (vhsubq_n_s16): Remove. - (vhaddq_s16): Remove. - (vhaddq_n_s16): Remove. - (vhsubq_u32): Remove. - (vhsubq_n_u32): Remove. - (vhaddq_u32): Remove. - (vhaddq_n_u32): Remove. - (vhsubq_s32): Remove. - (vhsubq_n_s32): Remove. - (vhaddq_s32): Remove. - (vhaddq_n_s32): Remove. - (vhaddq_m_n_s8): Remove. - (vhaddq_m_n_s32): Remove. - (vhaddq_m_n_s16): Remove. - (vhaddq_m_n_u8): Remove. - (vhaddq_m_n_u32): Remove. - (vhaddq_m_n_u16): Remove. - (vhaddq_m_s8): Remove. - (vhaddq_m_s32): Remove. - (vhaddq_m_s16): Remove. - (vhaddq_m_u8): Remove. - (vhaddq_m_u32): Remove. - (vhaddq_m_u16): Remove. - (vhsubq_m_n_s8): Remove. - (vhsubq_m_n_s32): Remove. - (vhsubq_m_n_s16): Remove. - (vhsubq_m_n_u8): Remove. - (vhsubq_m_n_u32): Remove. - (vhsubq_m_n_u16): Remove. - (vhsubq_m_s8): Remove. - (vhsubq_m_s32): Remove. - (vhsubq_m_s16): Remove. - (vhsubq_m_u8): Remove. - (vhsubq_m_u32): Remove. - (vhsubq_m_u16): Remove. - (vhaddq_x_n_s8): Remove. - (vhaddq_x_n_s16): Remove. - (vhaddq_x_n_s32): Remove. - (vhaddq_x_n_u8): Remove. - (vhaddq_x_n_u16): Remove. - (vhaddq_x_n_u32): Remove. - (vhaddq_x_s8): Remove. - (vhaddq_x_s16): Remove. - (vhaddq_x_s32): Remove. - (vhaddq_x_u8): Remove. - (vhaddq_x_u16): Remove. - (vhaddq_x_u32): Remove. - (vhsubq_x_n_s8): Remove. - (vhsubq_x_n_s16): Remove. - (vhsubq_x_n_s32): Remove. - (vhsubq_x_n_u8): Remove. - (vhsubq_x_n_u16): Remove. - (vhsubq_x_n_u32): Remove. - (vhsubq_x_s8): Remove. - (vhsubq_x_s16): Remove. - (vhsubq_x_s32): Remove. - (vhsubq_x_u8): Remove. - (vhsubq_x_u16): Remove. - (vhsubq_x_u32): Remove. - (__arm_vhsubq_u8): Remove. - (__arm_vhsubq_n_u8): Remove. - (__arm_vhaddq_u8): Remove. - (__arm_vhaddq_n_u8): Remove. - (__arm_vhsubq_s8): Remove. - (__arm_vhsubq_n_s8): Remove. - (__arm_vhaddq_s8): Remove. - (__arm_vhaddq_n_s8): Remove. - (__arm_vhsubq_u16): Remove. - (__arm_vhsubq_n_u16): Remove. - (__arm_vhaddq_u16): Remove. - (__arm_vhaddq_n_u16): Remove. - (__arm_vhsubq_s16): Remove. - (__arm_vhsubq_n_s16): Remove. - (__arm_vhaddq_s16): Remove. - (__arm_vhaddq_n_s16): Remove. - (__arm_vhsubq_u32): Remove. - (__arm_vhsubq_n_u32): Remove. - (__arm_vhaddq_u32): Remove. - (__arm_vhaddq_n_u32): Remove. - (__arm_vhsubq_s32): Remove. - (__arm_vhsubq_n_s32): Remove. - (__arm_vhaddq_s32): Remove. - (__arm_vhaddq_n_s32): Remove. - (__arm_vhaddq_m_n_s8): Remove. - (__arm_vhaddq_m_n_s32): Remove. - (__arm_vhaddq_m_n_s16): Remove. - (__arm_vhaddq_m_n_u8): Remove. - (__arm_vhaddq_m_n_u32): Remove. - (__arm_vhaddq_m_n_u16): Remove. - (__arm_vhaddq_m_s8): Remove. - (__arm_vhaddq_m_s32): Remove. - (__arm_vhaddq_m_s16): Remove. - (__arm_vhaddq_m_u8): Remove. - (__arm_vhaddq_m_u32): Remove. - (__arm_vhaddq_m_u16): Remove. - (__arm_vhsubq_m_n_s8): Remove. - (__arm_vhsubq_m_n_s32): Remove. - (__arm_vhsubq_m_n_s16): Remove. - (__arm_vhsubq_m_n_u8): Remove. - (__arm_vhsubq_m_n_u32): Remove. - (__arm_vhsubq_m_n_u16): Remove. - (__arm_vhsubq_m_s8): Remove. - (__arm_vhsubq_m_s32): Remove. - (__arm_vhsubq_m_s16): Remove. - (__arm_vhsubq_m_u8): Remove. - (__arm_vhsubq_m_u32): Remove. - (__arm_vhsubq_m_u16): Remove. - (__arm_vhaddq_x_n_s8): Remove. - (__arm_vhaddq_x_n_s16): Remove. - (__arm_vhaddq_x_n_s32): Remove. - (__arm_vhaddq_x_n_u8): Remove. - (__arm_vhaddq_x_n_u16): Remove. - (__arm_vhaddq_x_n_u32): Remove. - (__arm_vhaddq_x_s8): Remove. - (__arm_vhaddq_x_s16): Remove. - (__arm_vhaddq_x_s32): Remove. - (__arm_vhaddq_x_u8): Remove. - (__arm_vhaddq_x_u16): Remove. - (__arm_vhaddq_x_u32): Remove. - (__arm_vhsubq_x_n_s8): Remove. - (__arm_vhsubq_x_n_s16): Remove. - (__arm_vhsubq_x_n_s32): Remove. - (__arm_vhsubq_x_n_u8): Remove. - (__arm_vhsubq_x_n_u16): Remove. - (__arm_vhsubq_x_n_u32): Remove. - (__arm_vhsubq_x_s8): Remove. - (__arm_vhsubq_x_s16): Remove. - (__arm_vhsubq_x_s32): Remove. - (__arm_vhsubq_x_u8): Remove. - (__arm_vhsubq_x_u16): Remove. - (__arm_vhsubq_x_u32): Remove. - (__arm_vhsubq): Remove. - (__arm_vhaddq): Remove. - (__arm_vhaddq_m): Remove. - (__arm_vhsubq_m): Remove. - (__arm_vhaddq_x): Remove. - (__arm_vhsubq_x): Remove. - (vmulhq): Remove. - (vmulhq_m): Remove. - (vmulhq_x): Remove. - (vmulhq_u8): Remove. - (vmulhq_s8): Remove. - (vmulhq_u16): Remove. - (vmulhq_s16): Remove. - (vmulhq_u32): Remove. - (vmulhq_s32): Remove. - (vmulhq_m_s8): Remove. - (vmulhq_m_s32): Remove. - (vmulhq_m_s16): Remove. - (vmulhq_m_u8): Remove. - (vmulhq_m_u32): Remove. - (vmulhq_m_u16): Remove. - (vmulhq_x_s8): Remove. - (vmulhq_x_s16): Remove. - (vmulhq_x_s32): Remove. - (vmulhq_x_u8): Remove. - (vmulhq_x_u16): Remove. - (vmulhq_x_u32): Remove. - (__arm_vmulhq_u8): Remove. - (__arm_vmulhq_s8): Remove. - (__arm_vmulhq_u16): Remove. - (__arm_vmulhq_s16): Remove. - (__arm_vmulhq_u32): Remove. - (__arm_vmulhq_s32): Remove. - (__arm_vmulhq_m_s8): Remove. - (__arm_vmulhq_m_s32): Remove. - (__arm_vmulhq_m_s16): Remove. - (__arm_vmulhq_m_u8): Remove. - (__arm_vmulhq_m_u32): Remove. - (__arm_vmulhq_m_u16): Remove. - (__arm_vmulhq_x_s8): Remove. - (__arm_vmulhq_x_s16): Remove. - (__arm_vmulhq_x_s32): Remove. - (__arm_vmulhq_x_u8): Remove. - (__arm_vmulhq_x_u16): Remove. - (__arm_vmulhq_x_u32): Remove. - (__arm_vmulhq): Remove. - (__arm_vmulhq_m): Remove. - (__arm_vmulhq_x): Remove. - (vqsubq): Remove. - (vqaddq): Remove. - (vqaddq_m): Remove. - (vqsubq_m): Remove. - (vqsubq_u8): Remove. - (vqsubq_n_u8): Remove. - (vqaddq_u8): Remove. - (vqaddq_n_u8): Remove. - (vqsubq_s8): Remove. - (vqsubq_n_s8): Remove. - (vqaddq_s8): Remove. - (vqaddq_n_s8): Remove. - (vqsubq_u16): Remove. - (vqsubq_n_u16): Remove. - (vqaddq_u16): Remove. - (vqaddq_n_u16): Remove. - (vqsubq_s16): Remove. - (vqsubq_n_s16): Remove. - (vqaddq_s16): Remove. - (vqaddq_n_s16): Remove. - (vqsubq_u32): Remove. - (vqsubq_n_u32): Remove. - (vqaddq_u32): Remove. - (vqaddq_n_u32): Remove. - (vqsubq_s32): Remove. - (vqsubq_n_s32): Remove. - (vqaddq_s32): Remove. - (vqaddq_n_s32): Remove. - (vqaddq_m_n_s8): Remove. - (vqaddq_m_n_s32): Remove. - (vqaddq_m_n_s16): Remove. - (vqaddq_m_n_u8): Remove. - (vqaddq_m_n_u32): Remove. - (vqaddq_m_n_u16): Remove. - (vqaddq_m_s8): Remove. - (vqaddq_m_s32): Remove. - (vqaddq_m_s16): Remove. - (vqaddq_m_u8): Remove. - (vqaddq_m_u32): Remove. - (vqaddq_m_u16): Remove. - (vqsubq_m_n_s8): Remove. - (vqsubq_m_n_s32): Remove. - (vqsubq_m_n_s16): Remove. - (vqsubq_m_n_u8): Remove. - (vqsubq_m_n_u32): Remove. - (vqsubq_m_n_u16): Remove. - (vqsubq_m_s8): Remove. - (vqsubq_m_s32): Remove. - (vqsubq_m_s16): Remove. - (vqsubq_m_u8): Remove. - (vqsubq_m_u32): Remove. - (vqsubq_m_u16): Remove. - (__arm_vqsubq_u8): Remove. - (__arm_vqsubq_n_u8): Remove. - (__arm_vqaddq_u8): Remove. - (__arm_vqaddq_n_u8): Remove. - (__arm_vqsubq_s8): Remove. - (__arm_vqsubq_n_s8): Remove. - (__arm_vqaddq_s8): Remove. - (__arm_vqaddq_n_s8): Remove. - (__arm_vqsubq_u16): Remove. - (__arm_vqsubq_n_u16): Remove. - (__arm_vqaddq_u16): Remove. - (__arm_vqaddq_n_u16): Remove. - (__arm_vqsubq_s16): Remove. - (__arm_vqsubq_n_s16): Remove. - (__arm_vqaddq_s16): Remove. - (__arm_vqaddq_n_s16): Remove. - (__arm_vqsubq_u32): Remove. - (__arm_vqsubq_n_u32): Remove. - (__arm_vqaddq_u32): Remove. - (__arm_vqaddq_n_u32): Remove. - (__arm_vqsubq_s32): Remove. - (__arm_vqsubq_n_s32): Remove. - (__arm_vqaddq_s32): Remove. - (__arm_vqaddq_n_s32): Remove. - (__arm_vqaddq_m_n_s8): Remove. - (__arm_vqaddq_m_n_s32): Remove. - (__arm_vqaddq_m_n_s16): Remove. - (__arm_vqaddq_m_n_u8): Remove. - (__arm_vqaddq_m_n_u32): Remove. - (__arm_vqaddq_m_n_u16): Remove. - (__arm_vqaddq_m_s8): Remove. - (__arm_vqaddq_m_s32): Remove. - (__arm_vqaddq_m_s16): Remove. - (__arm_vqaddq_m_u8): Remove. - (__arm_vqaddq_m_u32): Remove. - (__arm_vqaddq_m_u16): Remove. - (__arm_vqsubq_m_n_s8): Remove. - (__arm_vqsubq_m_n_s32): Remove. - (__arm_vqsubq_m_n_s16): Remove. - (__arm_vqsubq_m_n_u8): Remove. - (__arm_vqsubq_m_n_u32): Remove. - (__arm_vqsubq_m_n_u16): Remove. - (__arm_vqsubq_m_s8): Remove. - (__arm_vqsubq_m_s32): Remove. - (__arm_vqsubq_m_s16): Remove. - (__arm_vqsubq_m_u8): Remove. - (__arm_vqsubq_m_u32): Remove. - (__arm_vqsubq_m_u16): Remove. - (__arm_vqsubq): Remove. - (__arm_vqaddq): Remove. - (__arm_vqaddq_m): Remove. - (__arm_vqsubq_m): Remove. - (vqdmulhq): Remove. - (vqdmulhq_m): Remove. - (vqdmulhq_s8): Remove. - (vqdmulhq_n_s8): Remove. - (vqdmulhq_s16): Remove. - (vqdmulhq_n_s16): Remove. - (vqdmulhq_s32): Remove. - (vqdmulhq_n_s32): Remove. - (vqdmulhq_m_n_s8): Remove. - (vqdmulhq_m_n_s32): Remove. - (vqdmulhq_m_n_s16): Remove. - (vqdmulhq_m_s8): Remove. - (vqdmulhq_m_s32): Remove. - (vqdmulhq_m_s16): Remove. - (__arm_vqdmulhq_s8): Remove. - (__arm_vqdmulhq_n_s8): Remove. - (__arm_vqdmulhq_s16): Remove. - (__arm_vqdmulhq_n_s16): Remove. - (__arm_vqdmulhq_s32): Remove. - (__arm_vqdmulhq_n_s32): Remove. - (__arm_vqdmulhq_m_n_s8): Remove. - (__arm_vqdmulhq_m_n_s32): Remove. - (__arm_vqdmulhq_m_n_s16): Remove. - (__arm_vqdmulhq_m_s8): Remove. - (__arm_vqdmulhq_m_s32): Remove. - (__arm_vqdmulhq_m_s16): Remove. - (__arm_vqdmulhq): Remove. - (__arm_vqdmulhq_m): Remove. - (vrhaddq): Remove. - (vrhaddq_m): Remove. - (vrhaddq_x): Remove. - (vrhaddq_u8): Remove. - (vrhaddq_s8): Remove. - (vrhaddq_u16): Remove. - (vrhaddq_s16): Remove. - (vrhaddq_u32): Remove. - (vrhaddq_s32): Remove. - (vrhaddq_m_s8): Remove. - (vrhaddq_m_s32): Remove. - (vrhaddq_m_s16): Remove. - (vrhaddq_m_u8): Remove. - (vrhaddq_m_u32): Remove. - (vrhaddq_m_u16): Remove. - (vrhaddq_x_s8): Remove. - (vrhaddq_x_s16): Remove. - (vrhaddq_x_s32): Remove. - (vrhaddq_x_u8): Remove. - (vrhaddq_x_u16): Remove. - (vrhaddq_x_u32): Remove. - (__arm_vrhaddq_u8): Remove. - (__arm_vrhaddq_s8): Remove. - (__arm_vrhaddq_u16): Remove. - (__arm_vrhaddq_s16): Remove. - (__arm_vrhaddq_u32): Remove. - (__arm_vrhaddq_s32): Remove. - (__arm_vrhaddq_m_s8): Remove. - (__arm_vrhaddq_m_s32): Remove. - (__arm_vrhaddq_m_s16): Remove. - (__arm_vrhaddq_m_u8): Remove. - (__arm_vrhaddq_m_u32): Remove. - (__arm_vrhaddq_m_u16): Remove. - (__arm_vrhaddq_x_s8): Remove. - (__arm_vrhaddq_x_s16): Remove. - (__arm_vrhaddq_x_s32): Remove. - (__arm_vrhaddq_x_u8): Remove. - (__arm_vrhaddq_x_u16): Remove. - (__arm_vrhaddq_x_u32): Remove. - (__arm_vrhaddq): Remove. - (__arm_vrhaddq_m): Remove. - (__arm_vrhaddq_x): Remove. - (vrmulhq): Remove. - (vrmulhq_m): Remove. - (vrmulhq_x): Remove. - (vrmulhq_u8): Remove. - (vrmulhq_s8): Remove. - (vrmulhq_u16): Remove. - (vrmulhq_s16): Remove. - (vrmulhq_u32): Remove. - (vrmulhq_s32): Remove. - (vrmulhq_m_s8): Remove. - (vrmulhq_m_s32): Remove. - (vrmulhq_m_s16): Remove. - (vrmulhq_m_u8): Remove. - (vrmulhq_m_u32): Remove. - (vrmulhq_m_u16): Remove. - (vrmulhq_x_s8): Remove. - (vrmulhq_x_s16): Remove. - (vrmulhq_x_s32): Remove. - (vrmulhq_x_u8): Remove. - (vrmulhq_x_u16): Remove. - (vrmulhq_x_u32): Remove. - (__arm_vrmulhq_u8): Remove. - (__arm_vrmulhq_s8): Remove. - (__arm_vrmulhq_u16): Remove. - (__arm_vrmulhq_s16): Remove. - (__arm_vrmulhq_u32): Remove. - (__arm_vrmulhq_s32): Remove. - (__arm_vrmulhq_m_s8): Remove. - (__arm_vrmulhq_m_s32): Remove. - (__arm_vrmulhq_m_s16): Remove. - (__arm_vrmulhq_m_u8): Remove. - (__arm_vrmulhq_m_u32): Remove. - (__arm_vrmulhq_m_u16): Remove. - (__arm_vrmulhq_x_s8): Remove. - (__arm_vrmulhq_x_s16): Remove. - (__arm_vrmulhq_x_s32): Remove. - (__arm_vrmulhq_x_u8): Remove. - (__arm_vrmulhq_x_u16): Remove. - (__arm_vrmulhq_x_u32): Remove. - (__arm_vrmulhq): Remove. - (__arm_vrmulhq_m): Remove. - (__arm_vrmulhq_x): Remove. - -2023-05-03 Christophe Lyon <christophe.lyon@arm.com> - - * config/arm/iterators.md (MVE_INT_SU_BINARY): New. - (mve_insn): Add vabdq, vhaddq, vhsubq, vmulhq, vqaddq, vqdmulhq, - vqrdmulhq, vqrshlq, vqshlq, vqsubq, vrhaddq, vrmulhq, vrshlq. - (supf): Add VQDMULHQ_S, VQRDMULHQ_S. - * config/arm/mve.md (mve_vabdq_<supf><mode>) - (@mve_vhaddq_<supf><mode>, mve_vhsubq_<supf><mode>) - (mve_vmulhq_<supf><mode>, mve_vqaddq_<supf><mode>) - (mve_vqdmulhq_s<mode>, mve_vqrdmulhq_s<mode>) - (mve_vqrshlq_<supf><mode>, mve_vqshlq_<supf><mode>) - (mve_vqsubq_<supf><mode>, @mve_vrhaddq_<supf><mode>) - (mve_vrmulhq_<supf><mode>, mve_vrshlq_<supf><mode>): Merge into - ... - (@mve_<mve_insn>q_<supf><mode>): ... this. - * config/arm/vec-common.md (avg<mode>3_floor, uavg<mode>3_floor) - (avg<mode>3_ceil, uavg<mode>3_ceil): Use gen_mve_q instead of - gen_mve_vhaddq / gen_mve_vrhaddq. - -2023-05-03 Christophe Lyon <christophe.lyon@arm.com> - - * config/arm/iterators.md (MVE_INT_SU_M_N_BINARY): New. - (mve_insn): Add vhaddq, vhsubq, vmlaq, vmlasq, vqaddq, vqdmlahq, - vqdmlashq, vqdmulhq, vqrdmlahq, vqrdmlashq, vqrdmulhq, vqsubq. - (supf): Add VQDMLAHQ_M_N_S, VQDMLASHQ_M_N_S, VQRDMLAHQ_M_N_S, - VQRDMLASHQ_M_N_S, VQDMULHQ_M_N_S, VQRDMULHQ_M_N_S. - * config/arm/mve.md (mve_vhaddq_m_n_<supf><mode>) - (mve_vhsubq_m_n_<supf><mode>, mve_vmlaq_m_n_<supf><mode>) - (mve_vmlasq_m_n_<supf><mode>, mve_vqaddq_m_n_<supf><mode>) - (mve_vqdmlahq_m_n_s<mode>, mve_vqdmlashq_m_n_s<mode>) - (mve_vqrdmlahq_m_n_s<mode>, mve_vqrdmlashq_m_n_s<mode>) - (mve_vqsubq_m_n_<supf><mode>, mve_vqdmulhq_m_n_s<mode>) - (mve_vqrdmulhq_m_n_s<mode>): Merge into ... - (@mve_<mve_insn>q_m_n_<supf><mode>): ... this. - -2023-05-03 Christophe Lyon <christophe.lyon@arm.com> - - * config/arm/iterators.md (MVE_INT_SU_N_BINARY): New. - (mve_insn): Add vhaddq, vhsubq, vqaddq, vqdmulhq, vqrdmulhq, - vqsubq. - (supf): Add VQDMULHQ_N_S, VQRDMULHQ_N_S. - * config/arm/mve.md (mve_vhaddq_n_<supf><mode>) - (mve_vhsubq_n_<supf><mode>, mve_vqaddq_n_<supf><mode>) - (mve_vqdmulhq_n_s<mode>, mve_vqrdmulhq_n_s<mode>) - (mve_vqsubq_n_<supf><mode>): Merge into ... - (@mve_<mve_insn>q_n_<supf><mode>): ... this. - -2023-05-03 Christophe Lyon <christophe.lyon@arm.com> - - * config/arm/iterators.md (MVE_INT_SU_M_BINARY): New. - (mve_insn): Add vabdq, vhaddq, vhsubq, vmaxq, vminq, vmulhq, - vqaddq, vqdmladhq, vqdmladhxq, vqdmlsdhq, vqdmlsdhxq, vqdmulhq, - vqrdmladhq, vqrdmladhxq, vqrdmlsdhq, vqrdmlsdhxq, vqrdmulhq, - vqrshlq, vqshlq, vqsubq, vrhaddq, vrmulhq, vrshlq, vshlq. - (supf): Add VQDMLADHQ_M_S, VQDMLADHXQ_M_S, VQDMLSDHQ_M_S, - VQDMLSDHXQ_M_S, VQDMULHQ_M_S, VQRDMLADHQ_M_S, VQRDMLADHXQ_M_S, - VQRDMLSDHQ_M_S, VQRDMLSDHXQ_M_S, VQRDMULHQ_M_S. - * config/arm/mve.md (@mve_<mve_insn>q_m_<supf><mode>): New. - (mve_vshlq_m_<supf><mode>): Merged into - @mve_<mve_insn>q_m_<supf><mode>. - (mve_vabdq_m_<supf><mode>): Likewise. - (mve_vhaddq_m_<supf><mode>): Likewise. - (mve_vhsubq_m_<supf><mode>): Likewise. - (mve_vmaxq_m_<supf><mode>): Likewise. - (mve_vminq_m_<supf><mode>): Likewise. - (mve_vmulhq_m_<supf><mode>): Likewise. - (mve_vqaddq_m_<supf><mode>): Likewise. - (mve_vqrshlq_m_<supf><mode>): Likewise. - (mve_vqshlq_m_<supf><mode>): Likewise. - (mve_vqsubq_m_<supf><mode>): Likewise. - (mve_vrhaddq_m_<supf><mode>): Likewise. - (mve_vrmulhq_m_<supf><mode>): Likewise. - (mve_vrshlq_m_<supf><mode>): Likewise. - (mve_vqdmladhq_m_s<mode>): Likewise. - (mve_vqdmladhxq_m_s<mode>): Likewise. - (mve_vqdmlsdhq_m_s<mode>): Likewise. - (mve_vqdmlsdhxq_m_s<mode>): Likewise. - (mve_vqdmulhq_m_s<mode>): Likewise. - (mve_vqrdmladhq_m_s<mode>): Likewise. - (mve_vqrdmladhxq_m_s<mode>): Likewise. - (mve_vqrdmlsdhq_m_s<mode>): Likewise. - (mve_vqrdmlsdhxq_m_s<mode>): Likewise. - (mve_vqrdmulhq_m_s<mode>): Likewise. - -2023-05-03 Christophe Lyon <christophe.lyon@arm.com> - - * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITHOUT_M_N): New. (vcreateq): New. - * config/arm/arm-mve-builtins-base.def (vcreateq): New. - * config/arm/arm-mve-builtins-base.h (vcreateq): New. - * config/arm/arm_mve.h (vcreateq_f16): Remove. - (vcreateq_f32): Remove. - (vcreateq_u8): Remove. - (vcreateq_u16): Remove. - (vcreateq_u32): Remove. - (vcreateq_u64): Remove. - (vcreateq_s8): Remove. - (vcreateq_s16): Remove. - (vcreateq_s32): Remove. - (vcreateq_s64): Remove. - (__arm_vcreateq_u8): Remove. - (__arm_vcreateq_u16): Remove. - (__arm_vcreateq_u32): Remove. - (__arm_vcreateq_u64): Remove. - (__arm_vcreateq_s8): Remove. - (__arm_vcreateq_s16): Remove. - (__arm_vcreateq_s32): Remove. - (__arm_vcreateq_s64): Remove. - (__arm_vcreateq_f16): Remove. - (__arm_vcreateq_f32): Remove. - -2023-05-03 Christophe Lyon <christophe.lyon@arm.com> - - * config/arm/iterators.md (MVE_FP_CREATE_ONLY): New. - (mve_insn): Add VCREATEQ_S, VCREATEQ_U, VCREATEQ_F. - * config/arm/mve.md (mve_vcreateq_f<mode>): Rename into ... - (@mve_<mve_insn>q_f<mode>): ... this. - (mve_vcreateq_<supf><mode>): Rename into ... - (@mve_<mve_insn>q_<supf><mode>): ... this. - -2023-05-03 Christophe Lyon <christophe.lyon@arm.com> - - * config/arm/arm-mve-builtins-shapes.cc (create): New. - * config/arm/arm-mve-builtins-shapes.h: (create): New. - -2023-05-03 Christophe Lyon <christophe.lyon@arm.com> - - * config/arm/arm-mve-builtins-functions.h (class - unspec_mve_function_exact_insn): New. - -2023-05-03 Christophe Lyon <christophe.lyon@arm.com> - - * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITH_RTX_M_N_NO_N_F): New. - (vorrq): New. - * config/arm/arm-mve-builtins-base.def (vorrq): New. - * config/arm/arm-mve-builtins-base.h (vorrq): New. - * config/arm/arm-mve-builtins.cc - (function_instance::has_inactive_argument): Handle vorrq. - * config/arm/arm_mve.h (vorrq): Remove. - (vorrq_m_n): Remove. - (vorrq_m): Remove. - (vorrq_x): Remove. - (vorrq_u8): Remove. - (vorrq_s8): Remove. - (vorrq_u16): Remove. - (vorrq_s16): Remove. - (vorrq_u32): Remove. - (vorrq_s32): Remove. - (vorrq_n_u16): Remove. - (vorrq_f16): Remove. - (vorrq_n_s16): Remove. - (vorrq_n_u32): Remove. - (vorrq_f32): Remove. - (vorrq_n_s32): Remove. - (vorrq_m_n_s16): Remove. - (vorrq_m_n_u16): Remove. - (vorrq_m_n_s32): Remove. - (vorrq_m_n_u32): Remove. - (vorrq_m_s8): Remove. - (vorrq_m_s32): Remove. - (vorrq_m_s16): Remove. - (vorrq_m_u8): Remove. - (vorrq_m_u32): Remove. - (vorrq_m_u16): Remove. - (vorrq_m_f32): Remove. - (vorrq_m_f16): Remove. - (vorrq_x_s8): Remove. - (vorrq_x_s16): Remove. - (vorrq_x_s32): Remove. - (vorrq_x_u8): Remove. - (vorrq_x_u16): Remove. - (vorrq_x_u32): Remove. - (vorrq_x_f16): Remove. - (vorrq_x_f32): Remove. - (__arm_vorrq_u8): Remove. - (__arm_vorrq_s8): Remove. - (__arm_vorrq_u16): Remove. - (__arm_vorrq_s16): Remove. - (__arm_vorrq_u32): Remove. - (__arm_vorrq_s32): Remove. - (__arm_vorrq_n_u16): Remove. - (__arm_vorrq_n_s16): Remove. - (__arm_vorrq_n_u32): Remove. - (__arm_vorrq_n_s32): Remove. - (__arm_vorrq_m_n_s16): Remove. - (__arm_vorrq_m_n_u16): Remove. - (__arm_vorrq_m_n_s32): Remove. - (__arm_vorrq_m_n_u32): Remove. - (__arm_vorrq_m_s8): Remove. - (__arm_vorrq_m_s32): Remove. - (__arm_vorrq_m_s16): Remove. - (__arm_vorrq_m_u8): Remove. - (__arm_vorrq_m_u32): Remove. - (__arm_vorrq_m_u16): Remove. - (__arm_vorrq_x_s8): Remove. - (__arm_vorrq_x_s16): Remove. - (__arm_vorrq_x_s32): Remove. - (__arm_vorrq_x_u8): Remove. - (__arm_vorrq_x_u16): Remove. - (__arm_vorrq_x_u32): Remove. - (__arm_vorrq_f16): Remove. - (__arm_vorrq_f32): Remove. - (__arm_vorrq_m_f32): Remove. - (__arm_vorrq_m_f16): Remove. - (__arm_vorrq_x_f16): Remove. - (__arm_vorrq_x_f32): Remove. - (__arm_vorrq): Remove. - (__arm_vorrq_m_n): Remove. - (__arm_vorrq_m): Remove. - (__arm_vorrq_x): Remove. - -2023-05-03 Christophe Lyon <christophe.lyon@arm.com> - - * config/arm/arm-mve-builtins-shapes.cc (binary_orrq): New. - * config/arm/arm-mve-builtins-shapes.h (binary_orrq): New. - * config/arm/arm-mve-builtins.cc (preds_m_or_none): Remove static. - * config/arm/arm-mve-builtins.h (preds_m_or_none): Declare. - -2023-05-03 Christophe Lyon <christophe.lyon@arm.com> - - * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITH_RTX_M): New. - (vandq,veorq): New. - * config/arm/arm-mve-builtins-base.def (vandq, veorq): New. - * config/arm/arm-mve-builtins-base.h (vandq, veorq): New. - * config/arm/arm_mve.h (vandq): Remove. - (vandq_m): Remove. - (vandq_x): Remove. - (vandq_u8): Remove. - (vandq_s8): Remove. - (vandq_u16): Remove. - (vandq_s16): Remove. - (vandq_u32): Remove. - (vandq_s32): Remove. - (vandq_f16): Remove. - (vandq_f32): Remove. - (vandq_m_s8): Remove. - (vandq_m_s32): Remove. - (vandq_m_s16): Remove. - (vandq_m_u8): Remove. - (vandq_m_u32): Remove. - (vandq_m_u16): Remove. - (vandq_m_f32): Remove. - (vandq_m_f16): Remove. - (vandq_x_s8): Remove. - (vandq_x_s16): Remove. - (vandq_x_s32): Remove. - (vandq_x_u8): Remove. - (vandq_x_u16): Remove. - (vandq_x_u32): Remove. - (vandq_x_f16): Remove. - (vandq_x_f32): Remove. - (__arm_vandq_u8): Remove. - (__arm_vandq_s8): Remove. - (__arm_vandq_u16): Remove. - (__arm_vandq_s16): Remove. - (__arm_vandq_u32): Remove. - (__arm_vandq_s32): Remove. - (__arm_vandq_m_s8): Remove. - (__arm_vandq_m_s32): Remove. - (__arm_vandq_m_s16): Remove. - (__arm_vandq_m_u8): Remove. - (__arm_vandq_m_u32): Remove. - (__arm_vandq_m_u16): Remove. - (__arm_vandq_x_s8): Remove. - (__arm_vandq_x_s16): Remove. - (__arm_vandq_x_s32): Remove. - (__arm_vandq_x_u8): Remove. - (__arm_vandq_x_u16): Remove. - (__arm_vandq_x_u32): Remove. - (__arm_vandq_f16): Remove. - (__arm_vandq_f32): Remove. - (__arm_vandq_m_f32): Remove. - (__arm_vandq_m_f16): Remove. - (__arm_vandq_x_f16): Remove. - (__arm_vandq_x_f32): Remove. - (__arm_vandq): Remove. - (__arm_vandq_m): Remove. - (__arm_vandq_x): Remove. - (veorq_m): Remove. - (veorq_x): Remove. - (veorq_u8): Remove. - (veorq_s8): Remove. - (veorq_u16): Remove. - (veorq_s16): Remove. - (veorq_u32): Remove. - (veorq_s32): Remove. - (veorq_f16): Remove. - (veorq_f32): Remove. - (veorq_m_s8): Remove. - (veorq_m_s32): Remove. - (veorq_m_s16): Remove. - (veorq_m_u8): Remove. - (veorq_m_u32): Remove. - (veorq_m_u16): Remove. - (veorq_m_f32): Remove. - (veorq_m_f16): Remove. - (veorq_x_s8): Remove. - (veorq_x_s16): Remove. - (veorq_x_s32): Remove. - (veorq_x_u8): Remove. - (veorq_x_u16): Remove. - (veorq_x_u32): Remove. - (veorq_x_f16): Remove. - (veorq_x_f32): Remove. - (__arm_veorq_u8): Remove. - (__arm_veorq_s8): Remove. - (__arm_veorq_u16): Remove. - (__arm_veorq_s16): Remove. - (__arm_veorq_u32): Remove. - (__arm_veorq_s32): Remove. - (__arm_veorq_m_s8): Remove. - (__arm_veorq_m_s32): Remove. - (__arm_veorq_m_s16): Remove. - (__arm_veorq_m_u8): Remove. - (__arm_veorq_m_u32): Remove. - (__arm_veorq_m_u16): Remove. - (__arm_veorq_x_s8): Remove. - (__arm_veorq_x_s16): Remove. - (__arm_veorq_x_s32): Remove. - (__arm_veorq_x_u8): Remove. - (__arm_veorq_x_u16): Remove. - (__arm_veorq_x_u32): Remove. - (__arm_veorq_f16): Remove. - (__arm_veorq_f32): Remove. - (__arm_veorq_m_f32): Remove. - (__arm_veorq_m_f16): Remove. - (__arm_veorq_x_f16): Remove. - (__arm_veorq_x_f32): Remove. - (__arm_veorq): Remove. - (__arm_veorq_m): Remove. - (__arm_veorq_x): Remove. - -2023-05-03 Christophe Lyon <christophe.lyon@arm.com> - - * config/arm/iterators.md (MVE_INT_M_BINARY_LOGIC) - (MVE_FP_M_BINARY_LOGIC): New. - (MVE_INT_M_N_BINARY_LOGIC): New. - (MVE_INT_N_BINARY_LOGIC): New. - (mve_insn): Add vand, veor, vorr, vbic. - * config/arm/mve.md (mve_vandq_m_<supf><mode>) - (mve_veorq_m_<supf><mode>, mve_vorrq_m_<supf><mode>) - (mve_vbicq_m_<supf><mode>): Merge into ... - (@mve_<mve_insn>q_m_<supf><mode>): ... this. - (mve_vandq_m_f<mode>, mve_veorq_m_f<mode>, mve_vorrq_m_f<mode>) - (mve_vbicq_m_f<mode>): Merge into ... - (@mve_<mve_insn>q_m_f<mode>): ... this. - (mve_vorrq_n_<supf><mode>) - (mve_vbicq_n_<supf><mode>): Merge into ... - (@mve_<mve_insn>q_n_<supf><mode>): ... this. - (mve_vorrq_m_n_<supf><mode>, mve_vbicq_m_n_<supf><mode>): Merge - into ... - (@mve_<mve_insn>q_m_n_<supf><mode>): ... this. - -2023-05-03 Christophe Lyon <christophe.lyon@arm.com> - - * config/arm/arm-mve-builtins-shapes.cc (binary): New. - * config/arm/arm-mve-builtins-shapes.h (binary): New. - -2023-05-03 Christophe Lyon <christophe.lyon@arm.com> - - * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITH_RTX_M_N): - New. - (vaddq, vmulq, vsubq): New. - * config/arm/arm-mve-builtins-base.def (vaddq, vmulq, vsubq): New. - * config/arm/arm-mve-builtins-base.h (vaddq, vmulq, vsubq): New. - * config/arm/arm_mve.h (vaddq): Remove. - (vaddq_m): Remove. - (vaddq_x): Remove. - (vaddq_n_u8): Remove. - (vaddq_n_s8): Remove. - (vaddq_n_u16): Remove. - (vaddq_n_s16): Remove. - (vaddq_n_u32): Remove. - (vaddq_n_s32): Remove. - (vaddq_n_f16): Remove. - (vaddq_n_f32): Remove. - (vaddq_m_n_s8): Remove. - (vaddq_m_n_s32): Remove. - (vaddq_m_n_s16): Remove. - (vaddq_m_n_u8): Remove. - (vaddq_m_n_u32): Remove. - (vaddq_m_n_u16): Remove. - (vaddq_m_s8): Remove. - (vaddq_m_s32): Remove. - (vaddq_m_s16): Remove. - (vaddq_m_u8): Remove. - (vaddq_m_u32): Remove. - (vaddq_m_u16): Remove. - (vaddq_m_f32): Remove. - (vaddq_m_f16): Remove. - (vaddq_m_n_f32): Remove. - (vaddq_m_n_f16): Remove. - (vaddq_s8): Remove. - (vaddq_s16): Remove. - (vaddq_s32): Remove. - (vaddq_u8): Remove. - (vaddq_u16): Remove. - (vaddq_u32): Remove. - (vaddq_f16): Remove. - (vaddq_f32): Remove. - (vaddq_x_s8): Remove. - (vaddq_x_s16): Remove. - (vaddq_x_s32): Remove. - (vaddq_x_n_s8): Remove. - (vaddq_x_n_s16): Remove. - (vaddq_x_n_s32): Remove. - (vaddq_x_u8): Remove. - (vaddq_x_u16): Remove. - (vaddq_x_u32): Remove. - (vaddq_x_n_u8): Remove. - (vaddq_x_n_u16): Remove. - (vaddq_x_n_u32): Remove. - (vaddq_x_f16): Remove. - (vaddq_x_f32): Remove. - (vaddq_x_n_f16): Remove. - (vaddq_x_n_f32): Remove. - (__arm_vaddq_n_u8): Remove. - (__arm_vaddq_n_s8): Remove. - (__arm_vaddq_n_u16): Remove. - (__arm_vaddq_n_s16): Remove. - (__arm_vaddq_n_u32): Remove. - (__arm_vaddq_n_s32): Remove. - (__arm_vaddq_m_n_s8): Remove. - (__arm_vaddq_m_n_s32): Remove. - (__arm_vaddq_m_n_s16): Remove. - (__arm_vaddq_m_n_u8): Remove. - (__arm_vaddq_m_n_u32): Remove. - (__arm_vaddq_m_n_u16): Remove. - (__arm_vaddq_m_s8): Remove. - (__arm_vaddq_m_s32): Remove. - (__arm_vaddq_m_s16): Remove. - (__arm_vaddq_m_u8): Remove. - (__arm_vaddq_m_u32): Remove. - (__arm_vaddq_m_u16): Remove. - (__arm_vaddq_s8): Remove. - (__arm_vaddq_s16): Remove. - (__arm_vaddq_s32): Remove. - (__arm_vaddq_u8): Remove. - (__arm_vaddq_u16): Remove. - (__arm_vaddq_u32): Remove. - (__arm_vaddq_x_s8): Remove. - (__arm_vaddq_x_s16): Remove. - (__arm_vaddq_x_s32): Remove. - (__arm_vaddq_x_n_s8): Remove. - (__arm_vaddq_x_n_s16): Remove. - (__arm_vaddq_x_n_s32): Remove. - (__arm_vaddq_x_u8): Remove. - (__arm_vaddq_x_u16): Remove. - (__arm_vaddq_x_u32): Remove. - (__arm_vaddq_x_n_u8): Remove. - (__arm_vaddq_x_n_u16): Remove. - (__arm_vaddq_x_n_u32): Remove. - (__arm_vaddq_n_f16): Remove. - (__arm_vaddq_n_f32): Remove. - (__arm_vaddq_m_f32): Remove. - (__arm_vaddq_m_f16): Remove. - (__arm_vaddq_m_n_f32): Remove. - (__arm_vaddq_m_n_f16): Remove. - (__arm_vaddq_f16): Remove. - (__arm_vaddq_f32): Remove. - (__arm_vaddq_x_f16): Remove. - (__arm_vaddq_x_f32): Remove. - (__arm_vaddq_x_n_f16): Remove. - (__arm_vaddq_x_n_f32): Remove. - (__arm_vaddq): Remove. - (__arm_vaddq_m): Remove. - (__arm_vaddq_x): Remove. - (vmulq): Remove. - (vmulq_m): Remove. - (vmulq_x): Remove. - (vmulq_u8): Remove. - (vmulq_n_u8): Remove. - (vmulq_s8): Remove. - (vmulq_n_s8): Remove. - (vmulq_u16): Remove. - (vmulq_n_u16): Remove. - (vmulq_s16): Remove. - (vmulq_n_s16): Remove. - (vmulq_u32): Remove. - (vmulq_n_u32): Remove. - (vmulq_s32): Remove. - (vmulq_n_s32): Remove. - (vmulq_n_f16): Remove. - (vmulq_f16): Remove. - (vmulq_n_f32): Remove. - (vmulq_f32): Remove. - (vmulq_m_n_s8): Remove. - (vmulq_m_n_s32): Remove. - (vmulq_m_n_s16): Remove. - (vmulq_m_n_u8): Remove. - (vmulq_m_n_u32): Remove. - (vmulq_m_n_u16): Remove. - (vmulq_m_s8): Remove. - (vmulq_m_s32): Remove. - (vmulq_m_s16): Remove. - (vmulq_m_u8): Remove. - (vmulq_m_u32): Remove. - (vmulq_m_u16): Remove. - (vmulq_m_f32): Remove. - (vmulq_m_f16): Remove. - (vmulq_m_n_f32): Remove. - (vmulq_m_n_f16): Remove. - (vmulq_x_s8): Remove. - (vmulq_x_s16): Remove. - (vmulq_x_s32): Remove. - (vmulq_x_n_s8): Remove. - (vmulq_x_n_s16): Remove. - (vmulq_x_n_s32): Remove. - (vmulq_x_u8): Remove. - (vmulq_x_u16): Remove. - (vmulq_x_u32): Remove. - (vmulq_x_n_u8): Remove. - (vmulq_x_n_u16): Remove. - (vmulq_x_n_u32): Remove. - (vmulq_x_f16): Remove. - (vmulq_x_f32): Remove. - (vmulq_x_n_f16): Remove. - (vmulq_x_n_f32): Remove. - (__arm_vmulq_u8): Remove. - (__arm_vmulq_n_u8): Remove. - (__arm_vmulq_s8): Remove. - (__arm_vmulq_n_s8): Remove. - (__arm_vmulq_u16): Remove. - (__arm_vmulq_n_u16): Remove. - (__arm_vmulq_s16): Remove. - (__arm_vmulq_n_s16): Remove. - (__arm_vmulq_u32): Remove. - (__arm_vmulq_n_u32): Remove. - (__arm_vmulq_s32): Remove. - (__arm_vmulq_n_s32): Remove. - (__arm_vmulq_m_n_s8): Remove. - (__arm_vmulq_m_n_s32): Remove. - (__arm_vmulq_m_n_s16): Remove. - (__arm_vmulq_m_n_u8): Remove. - (__arm_vmulq_m_n_u32): Remove. - (__arm_vmulq_m_n_u16): Remove. - (__arm_vmulq_m_s8): Remove. - (__arm_vmulq_m_s32): Remove. - (__arm_vmulq_m_s16): Remove. - (__arm_vmulq_m_u8): Remove. - (__arm_vmulq_m_u32): Remove. - (__arm_vmulq_m_u16): Remove. - (__arm_vmulq_x_s8): Remove. - (__arm_vmulq_x_s16): Remove. - (__arm_vmulq_x_s32): Remove. - (__arm_vmulq_x_n_s8): Remove. - (__arm_vmulq_x_n_s16): Remove. - (__arm_vmulq_x_n_s32): Remove. - (__arm_vmulq_x_u8): Remove. - (__arm_vmulq_x_u16): Remove. - (__arm_vmulq_x_u32): Remove. - (__arm_vmulq_x_n_u8): Remove. - (__arm_vmulq_x_n_u16): Remove. - (__arm_vmulq_x_n_u32): Remove. - (__arm_vmulq_n_f16): Remove. - (__arm_vmulq_f16): Remove. - (__arm_vmulq_n_f32): Remove. - (__arm_vmulq_f32): Remove. - (__arm_vmulq_m_f32): Remove. - (__arm_vmulq_m_f16): Remove. - (__arm_vmulq_m_n_f32): Remove. - (__arm_vmulq_m_n_f16): Remove. - (__arm_vmulq_x_f16): Remove. - (__arm_vmulq_x_f32): Remove. - (__arm_vmulq_x_n_f16): Remove. - (__arm_vmulq_x_n_f32): Remove. - (__arm_vmulq): Remove. - (__arm_vmulq_m): Remove. - (__arm_vmulq_x): Remove. - (vsubq): Remove. - (vsubq_m): Remove. - (vsubq_x): Remove. - (vsubq_n_f16): Remove. - (vsubq_n_f32): Remove. - (vsubq_u8): Remove. - (vsubq_n_u8): Remove. - (vsubq_s8): Remove. - (vsubq_n_s8): Remove. - (vsubq_u16): Remove. - (vsubq_n_u16): Remove. - (vsubq_s16): Remove. - (vsubq_n_s16): Remove. - (vsubq_u32): Remove. - (vsubq_n_u32): Remove. - (vsubq_s32): Remove. - (vsubq_n_s32): Remove. - (vsubq_f16): Remove. - (vsubq_f32): Remove. - (vsubq_m_s8): Remove. - (vsubq_m_u8): Remove. - (vsubq_m_s16): Remove. - (vsubq_m_u16): Remove. - (vsubq_m_s32): Remove. - (vsubq_m_u32): Remove. - (vsubq_m_n_s8): Remove. - (vsubq_m_n_s32): Remove. - (vsubq_m_n_s16): Remove. - (vsubq_m_n_u8): Remove. - (vsubq_m_n_u32): Remove. - (vsubq_m_n_u16): Remove. - (vsubq_m_f32): Remove. - (vsubq_m_f16): Remove. - (vsubq_m_n_f32): Remove. - (vsubq_m_n_f16): Remove. - (vsubq_x_s8): Remove. - (vsubq_x_s16): Remove. - (vsubq_x_s32): Remove. - (vsubq_x_n_s8): Remove. - (vsubq_x_n_s16): Remove. - (vsubq_x_n_s32): Remove. - (vsubq_x_u8): Remove. - (vsubq_x_u16): Remove. - (vsubq_x_u32): Remove. - (vsubq_x_n_u8): Remove. - (vsubq_x_n_u16): Remove. - (vsubq_x_n_u32): Remove. - (vsubq_x_f16): Remove. - (vsubq_x_f32): Remove. - (vsubq_x_n_f16): Remove. - (vsubq_x_n_f32): Remove. - (__arm_vsubq_u8): Remove. - (__arm_vsubq_n_u8): Remove. - (__arm_vsubq_s8): Remove. - (__arm_vsubq_n_s8): Remove. - (__arm_vsubq_u16): Remove. - (__arm_vsubq_n_u16): Remove. - (__arm_vsubq_s16): Remove. - (__arm_vsubq_n_s16): Remove. - (__arm_vsubq_u32): Remove. - (__arm_vsubq_n_u32): Remove. - (__arm_vsubq_s32): Remove. - (__arm_vsubq_n_s32): Remove. - (__arm_vsubq_m_s8): Remove. - (__arm_vsubq_m_u8): Remove. - (__arm_vsubq_m_s16): Remove. - (__arm_vsubq_m_u16): Remove. - (__arm_vsubq_m_s32): Remove. - (__arm_vsubq_m_u32): Remove. - (__arm_vsubq_m_n_s8): Remove. - (__arm_vsubq_m_n_s32): Remove. - (__arm_vsubq_m_n_s16): Remove. - (__arm_vsubq_m_n_u8): Remove. - (__arm_vsubq_m_n_u32): Remove. - (__arm_vsubq_m_n_u16): Remove. - (__arm_vsubq_x_s8): Remove. - (__arm_vsubq_x_s16): Remove. - (__arm_vsubq_x_s32): Remove. - (__arm_vsubq_x_n_s8): Remove. - (__arm_vsubq_x_n_s16): Remove. - (__arm_vsubq_x_n_s32): Remove. - (__arm_vsubq_x_u8): Remove. - (__arm_vsubq_x_u16): Remove. - (__arm_vsubq_x_u32): Remove. - (__arm_vsubq_x_n_u8): Remove. - (__arm_vsubq_x_n_u16): Remove. - (__arm_vsubq_x_n_u32): Remove. - (__arm_vsubq_n_f16): Remove. - (__arm_vsubq_n_f32): Remove. - (__arm_vsubq_f16): Remove. - (__arm_vsubq_f32): Remove. - (__arm_vsubq_m_f32): Remove. - (__arm_vsubq_m_f16): Remove. - (__arm_vsubq_m_n_f32): Remove. - (__arm_vsubq_m_n_f16): Remove. - (__arm_vsubq_x_f16): Remove. - (__arm_vsubq_x_f32): Remove. - (__arm_vsubq_x_n_f16): Remove. - (__arm_vsubq_x_n_f32): Remove. - (__arm_vsubq): Remove. - (__arm_vsubq_m): Remove. - (__arm_vsubq_x): Remove. - * config/arm/arm_mve_builtins.def (vsubq_u, vsubq_s, vsubq_f): - Remove. - (vmulq_u, vmulq_s, vmulq_f): Remove. - * config/arm/mve.md (mve_vsubq_<supf><mode>): Remove. - (mve_vmulq_<supf><mode>): Remove. - -2023-05-03 Christophe Lyon <christophe.lyon@arm.com> - - * config/arm/iterators.md (MVE_INT_BINARY_RTX, MVE_INT_M_BINARY) - (MVE_INT_M_N_BINARY, MVE_INT_N_BINARY, MVE_FP_M_BINARY) - (MVE_FP_M_N_BINARY, MVE_FP_N_BINARY, mve_addsubmul, mve_insn): New - iterators. - * config/arm/mve.md - (mve_vsubq_n_f<mode>, mve_vaddq_n_f<mode>, mve_vmulq_n_f<mode>): - Factorize into ... - (@mve_<mve_insn>q_n_f<mode>): ... this. - (mve_vaddq_n_<supf><mode>, mve_vmulq_n_<supf><mode>) - (mve_vsubq_n_<supf><mode>): Factorize into ... - (@mve_<mve_insn>q_n_<supf><mode>): ... this. - (mve_vaddq<mode>, mve_vmulq<mode>, mve_vsubq<mode>): Factorize - into ... - (mve_<mve_addsubmul>q<mode>): ... this. - (mve_vaddq_f<mode>, mve_vmulq_f<mode>, mve_vsubq_f<mode>): - Factorize into ... - (mve_<mve_addsubmul>q_f<mode>): ... this. - (mve_vaddq_m_<supf><mode>, mve_vmulq_m_<supf><mode>) - (mve_vsubq_m_<supf><mode>): Factorize into ... - (@mve_<mve_insn>q_m_<supf><mode>): ... this, - (mve_vaddq_m_n_<supf><mode>, mve_vmulq_m_n_<supf><mode>) - (mve_vsubq_m_n_<supf><mode>): Factorize into ... - (@mve_<mve_insn>q_m_n_<supf><mode>): ... this. - (mve_vaddq_m_f<mode>, mve_vmulq_m_f<mode>, mve_vsubq_m_f<mode>): - Factorize into ... - (@mve_<mve_insn>q_m_f<mode>): ... this. - (mve_vaddq_m_n_f<mode>, mve_vmulq_m_n_f<mode>) - (mve_vsubq_m_n_f<mode>): Factorize into ... - (@mve_<mve_insn>q_m_n_f<mode>): ... this. - -2023-05-03 Christophe Lyon <christophe.lyon@arm.com> - - * config/arm/arm-mve-builtins-functions.h (class - unspec_based_mve_function_base): New. - (class unspec_based_mve_function_exact_insn): New. - -2023-05-03 Christophe Lyon <christophe.lyon@arm.com> - - * config/arm/arm-mve-builtins-shapes.cc (binary_opt_n): New. - * config/arm/arm-mve-builtins-shapes.h (binary_opt_n): New. - -2023-05-03 Murray Steele <murray.steele@arm.com> - Christophe Lyon <christophe.lyon@arm.com> - - * config/arm/arm-mve-builtins-base.cc (class - vuninitializedq_impl): New. - * config/arm/arm-mve-builtins-base.def (vuninitializedq): New. - * config/arm/arm-mve-builtins-base.h (vuninitializedq): New - declaration. - * config/arm/arm-mve-builtins-shapes.cc (inherent): New. - * config/arm/arm-mve-builtins-shapes.h (inherent): New - declaration. - * config/arm/arm_mve_types.h (__arm_vuninitializedq): Move to ... - * config/arm/arm_mve.h (__arm_vuninitializedq): ... here. - (__arm_vuninitializedq_u8): Remove. - (__arm_vuninitializedq_u16): Remove. - (__arm_vuninitializedq_u32): Remove. - (__arm_vuninitializedq_u64): Remove. - (__arm_vuninitializedq_s8): Remove. - (__arm_vuninitializedq_s16): Remove. - (__arm_vuninitializedq_s32): Remove. - (__arm_vuninitializedq_s64): Remove. - (__arm_vuninitializedq_f16): Remove. - (__arm_vuninitializedq_f32): Remove. - -2023-05-03 Murray Steele <murray.steele@arm.com> - Christophe Lyon <christophe.lyon@arm.com> - - * config/arm/arm-mve-builtins-base.cc (vreinterpretq_impl): New class. - * config/arm/arm-mve-builtins-base.def: Define vreinterpretq. - * config/arm/arm-mve-builtins-base.h (vreinterpretq): New declaration. - * config/arm/arm-mve-builtins-shapes.cc (parse_element_type): New function. - (parse_type): Likewise. - (parse_signature): Likewise. - (build_one): Likewise. - (build_all): Likewise. - (overloaded_base): New struct. - (unary_convert_def): Likewise. - * config/arm/arm-mve-builtins-shapes.h (unary_convert): Declare. - * config/arm/arm-mve-builtins.cc (TYPES_reinterpret_signed1): New - macro. - (TYPES_reinterpret_unsigned1): Likewise. - (TYPES_reinterpret_integer): Likewise. - (TYPES_reinterpret_integer1): Likewise. - (TYPES_reinterpret_float1): Likewise. - (TYPES_reinterpret_float): Likewise. - (reinterpret_integer): New. - (reinterpret_float): New. - (handle_arm_mve_h): Register builtins. - * config/arm/arm_mve.h (vreinterpretq_s16): Remove. - (vreinterpretq_s32): Likewise. - (vreinterpretq_s64): Likewise. - (vreinterpretq_s8): Likewise. - (vreinterpretq_u16): Likewise. - (vreinterpretq_u32): Likewise. - (vreinterpretq_u64): Likewise. - (vreinterpretq_u8): Likewise. - (vreinterpretq_f16): Likewise. - (vreinterpretq_f32): Likewise. - (vreinterpretq_s16_s32): Likewise. - (vreinterpretq_s16_s64): Likewise. - (vreinterpretq_s16_s8): Likewise. - (vreinterpretq_s16_u16): Likewise. - (vreinterpretq_s16_u32): Likewise. - (vreinterpretq_s16_u64): Likewise. - (vreinterpretq_s16_u8): Likewise. - (vreinterpretq_s32_s16): Likewise. - (vreinterpretq_s32_s64): Likewise. - (vreinterpretq_s32_s8): Likewise. - (vreinterpretq_s32_u16): Likewise. - (vreinterpretq_s32_u32): Likewise. - (vreinterpretq_s32_u64): Likewise. - (vreinterpretq_s32_u8): Likewise. - (vreinterpretq_s64_s16): Likewise. - (vreinterpretq_s64_s32): Likewise. - (vreinterpretq_s64_s8): Likewise. - (vreinterpretq_s64_u16): Likewise. - (vreinterpretq_s64_u32): Likewise. - (vreinterpretq_s64_u64): Likewise. - (vreinterpretq_s64_u8): Likewise. - (vreinterpretq_s8_s16): Likewise. - (vreinterpretq_s8_s32): Likewise. - (vreinterpretq_s8_s64): Likewise. - (vreinterpretq_s8_u16): Likewise. - (vreinterpretq_s8_u32): Likewise. - (vreinterpretq_s8_u64): Likewise. - (vreinterpretq_s8_u8): Likewise. - (vreinterpretq_u16_s16): Likewise. - (vreinterpretq_u16_s32): Likewise. - (vreinterpretq_u16_s64): Likewise. - (vreinterpretq_u16_s8): Likewise. - (vreinterpretq_u16_u32): Likewise. - (vreinterpretq_u16_u64): Likewise. - (vreinterpretq_u16_u8): Likewise. - (vreinterpretq_u32_s16): Likewise. - (vreinterpretq_u32_s32): Likewise. - (vreinterpretq_u32_s64): Likewise. - (vreinterpretq_u32_s8): Likewise. - (vreinterpretq_u32_u16): Likewise. - (vreinterpretq_u32_u64): Likewise. - (vreinterpretq_u32_u8): Likewise. - (vreinterpretq_u64_s16): Likewise. - (vreinterpretq_u64_s32): Likewise. - (vreinterpretq_u64_s64): Likewise. - (vreinterpretq_u64_s8): Likewise. - (vreinterpretq_u64_u16): Likewise. - (vreinterpretq_u64_u32): Likewise. - (vreinterpretq_u64_u8): Likewise. - (vreinterpretq_u8_s16): Likewise. - (vreinterpretq_u8_s32): Likewise. - (vreinterpretq_u8_s64): Likewise. - (vreinterpretq_u8_s8): Likewise. - (vreinterpretq_u8_u16): Likewise. - (vreinterpretq_u8_u32): Likewise. - (vreinterpretq_u8_u64): Likewise. - (vreinterpretq_s32_f16): Likewise. - (vreinterpretq_s32_f32): Likewise. - (vreinterpretq_u16_f16): Likewise. - (vreinterpretq_u16_f32): Likewise. - (vreinterpretq_u32_f16): Likewise. - (vreinterpretq_u32_f32): Likewise. - (vreinterpretq_u64_f16): Likewise. - (vreinterpretq_u64_f32): Likewise. - (vreinterpretq_u8_f16): Likewise. - (vreinterpretq_u8_f32): Likewise. - (vreinterpretq_f16_f32): Likewise. - (vreinterpretq_f16_s16): Likewise. - (vreinterpretq_f16_s32): Likewise. - (vreinterpretq_f16_s64): Likewise. - (vreinterpretq_f16_s8): Likewise. - (vreinterpretq_f16_u16): Likewise. - (vreinterpretq_f16_u32): Likewise. - (vreinterpretq_f16_u64): Likewise. - (vreinterpretq_f16_u8): Likewise. - (vreinterpretq_f32_f16): Likewise. - (vreinterpretq_f32_s16): Likewise. - (vreinterpretq_f32_s32): Likewise. - (vreinterpretq_f32_s64): Likewise. - (vreinterpretq_f32_s8): Likewise. - (vreinterpretq_f32_u16): Likewise. - (vreinterpretq_f32_u32): Likewise. - (vreinterpretq_f32_u64): Likewise. - (vreinterpretq_f32_u8): Likewise. - (vreinterpretq_s16_f16): Likewise. - (vreinterpretq_s16_f32): Likewise. - (vreinterpretq_s64_f16): Likewise. - (vreinterpretq_s64_f32): Likewise. - (vreinterpretq_s8_f16): Likewise. - (vreinterpretq_s8_f32): Likewise. - (__arm_vreinterpretq_f16): Likewise. - (__arm_vreinterpretq_f32): Likewise. - (__arm_vreinterpretq_s16): Likewise. - (__arm_vreinterpretq_s32): Likewise. - (__arm_vreinterpretq_s64): Likewise. - (__arm_vreinterpretq_s8): Likewise. - (__arm_vreinterpretq_u16): Likewise. - (__arm_vreinterpretq_u32): Likewise. - (__arm_vreinterpretq_u64): Likewise. - (__arm_vreinterpretq_u8): Likewise. - * config/arm/arm_mve_types.h (__arm_vreinterpretq_s16_s32): Remove. - (__arm_vreinterpretq_s16_s64): Likewise. - (__arm_vreinterpretq_s16_s8): Likewise. - (__arm_vreinterpretq_s16_u16): Likewise. - (__arm_vreinterpretq_s16_u32): Likewise. - (__arm_vreinterpretq_s16_u64): Likewise. - (__arm_vreinterpretq_s16_u8): Likewise. - (__arm_vreinterpretq_s32_s16): Likewise. - (__arm_vreinterpretq_s32_s64): Likewise. - (__arm_vreinterpretq_s32_s8): Likewise. - (__arm_vreinterpretq_s32_u16): Likewise. - (__arm_vreinterpretq_s32_u32): Likewise. - (__arm_vreinterpretq_s32_u64): Likewise. - (__arm_vreinterpretq_s32_u8): Likewise. - (__arm_vreinterpretq_s64_s16): Likewise. - (__arm_vreinterpretq_s64_s32): Likewise. - (__arm_vreinterpretq_s64_s8): Likewise. - (__arm_vreinterpretq_s64_u16): Likewise. - (__arm_vreinterpretq_s64_u32): Likewise. - (__arm_vreinterpretq_s64_u64): Likewise. - (__arm_vreinterpretq_s64_u8): Likewise. - (__arm_vreinterpretq_s8_s16): Likewise. - (__arm_vreinterpretq_s8_s32): Likewise. - (__arm_vreinterpretq_s8_s64): Likewise. - (__arm_vreinterpretq_s8_u16): Likewise. - (__arm_vreinterpretq_s8_u32): Likewise. - (__arm_vreinterpretq_s8_u64): Likewise. - (__arm_vreinterpretq_s8_u8): Likewise. - (__arm_vreinterpretq_u16_s16): Likewise. - (__arm_vreinterpretq_u16_s32): Likewise. - (__arm_vreinterpretq_u16_s64): Likewise. - (__arm_vreinterpretq_u16_s8): Likewise. - (__arm_vreinterpretq_u16_u32): Likewise. - (__arm_vreinterpretq_u16_u64): Likewise. - (__arm_vreinterpretq_u16_u8): Likewise. - (__arm_vreinterpretq_u32_s16): Likewise. - (__arm_vreinterpretq_u32_s32): Likewise. - (__arm_vreinterpretq_u32_s64): Likewise. - (__arm_vreinterpretq_u32_s8): Likewise. - (__arm_vreinterpretq_u32_u16): Likewise. - (__arm_vreinterpretq_u32_u64): Likewise. - (__arm_vreinterpretq_u32_u8): Likewise. - (__arm_vreinterpretq_u64_s16): Likewise. - (__arm_vreinterpretq_u64_s32): Likewise. - (__arm_vreinterpretq_u64_s64): Likewise. - (__arm_vreinterpretq_u64_s8): Likewise. - (__arm_vreinterpretq_u64_u16): Likewise. - (__arm_vreinterpretq_u64_u32): Likewise. - (__arm_vreinterpretq_u64_u8): Likewise. - (__arm_vreinterpretq_u8_s16): Likewise. - (__arm_vreinterpretq_u8_s32): Likewise. - (__arm_vreinterpretq_u8_s64): Likewise. - (__arm_vreinterpretq_u8_s8): Likewise. - (__arm_vreinterpretq_u8_u16): Likewise. - (__arm_vreinterpretq_u8_u32): Likewise. - (__arm_vreinterpretq_u8_u64): Likewise. - (__arm_vreinterpretq_s32_f16): Likewise. - (__arm_vreinterpretq_s32_f32): Likewise. - (__arm_vreinterpretq_s16_f16): Likewise. - (__arm_vreinterpretq_s16_f32): Likewise. - (__arm_vreinterpretq_s64_f16): Likewise. - (__arm_vreinterpretq_s64_f32): Likewise. - (__arm_vreinterpretq_s8_f16): Likewise. - (__arm_vreinterpretq_s8_f32): Likewise. - (__arm_vreinterpretq_u16_f16): Likewise. - (__arm_vreinterpretq_u16_f32): Likewise. - (__arm_vreinterpretq_u32_f16): Likewise. - (__arm_vreinterpretq_u32_f32): Likewise. - (__arm_vreinterpretq_u64_f16): Likewise. - (__arm_vreinterpretq_u64_f32): Likewise. - (__arm_vreinterpretq_u8_f16): Likewise. - (__arm_vreinterpretq_u8_f32): Likewise. - (__arm_vreinterpretq_f16_f32): Likewise. - (__arm_vreinterpretq_f16_s16): Likewise. - (__arm_vreinterpretq_f16_s32): Likewise. - (__arm_vreinterpretq_f16_s64): Likewise. - (__arm_vreinterpretq_f16_s8): Likewise. - (__arm_vreinterpretq_f16_u16): Likewise. - (__arm_vreinterpretq_f16_u32): Likewise. - (__arm_vreinterpretq_f16_u64): Likewise. - (__arm_vreinterpretq_f16_u8): Likewise. - (__arm_vreinterpretq_f32_f16): Likewise. - (__arm_vreinterpretq_f32_s16): Likewise. - (__arm_vreinterpretq_f32_s32): Likewise. - (__arm_vreinterpretq_f32_s64): Likewise. - (__arm_vreinterpretq_f32_s8): Likewise. - (__arm_vreinterpretq_f32_u16): Likewise. - (__arm_vreinterpretq_f32_u32): Likewise. - (__arm_vreinterpretq_f32_u64): Likewise. - (__arm_vreinterpretq_f32_u8): Likewise. - (__arm_vreinterpretq_s16): Likewise. - (__arm_vreinterpretq_s32): Likewise. - (__arm_vreinterpretq_s64): Likewise. - (__arm_vreinterpretq_s8): Likewise. - (__arm_vreinterpretq_u16): Likewise. - (__arm_vreinterpretq_u32): Likewise. - (__arm_vreinterpretq_u64): Likewise. - (__arm_vreinterpretq_u8): Likewise. - (__arm_vreinterpretq_f16): Likewise. - (__arm_vreinterpretq_f32): Likewise. - * config/arm/mve.md (@arm_mve_reinterpret<mode>): New pattern. - * config/arm/unspecs.md: (REINTERPRET): New unspec. - -2023-05-03 Murray Steele <murray.steele@arm.com> - Christophe Lyon <christophe.lyon@arm.com> - Christophe Lyon <christophe.lyon@arm.com - - * config.gcc: Add arm-mve-builtins-base.o and - arm-mve-builtins-shapes.o to extra_objs. - * config/arm/arm-builtins.cc (arm_builtin_decl): Handle MVE builtin - numberspace. - (arm_expand_builtin): Likewise - (arm_check_builtin_call): Likewise - (arm_describe_resolver): Likewise. - * config/arm/arm-builtins.h (enum resolver_ident): Add - arm_mve_resolver. - * config/arm/arm-c.cc (arm_pragma_arm): Handle new pragma. - (arm_resolve_overloaded_builtin): Handle MVE builtins. - (arm_register_target_pragmas): Register arm_check_builtin_call. - * config/arm/arm-mve-builtins.cc (class registered_function): New - class. - (struct registered_function_hasher): New struct. - (pred_suffixes): New table. - (mode_suffixes): New table. - (type_suffix_info): New table. - (TYPES_float16): New. - (TYPES_all_float): New. - (TYPES_integer_8): New. - (TYPES_integer_8_16): New. - (TYPES_integer_16_32): New. - (TYPES_integer_32): New. - (TYPES_signed_16_32): New. - (TYPES_signed_32): New. - (TYPES_all_signed): New. - (TYPES_all_unsigned): New. - (TYPES_all_integer): New. - (TYPES_all_integer_with_64): New. - (DEF_VECTOR_TYPE): New. - (DEF_DOUBLE_TYPE): New. - (DEF_MVE_TYPES_ARRAY): New. - (all_integer): New. - (all_integer_with_64): New. - (float16): New. - (all_float): New. - (all_signed): New. - (all_unsigned): New. - (integer_8): New. - (integer_8_16): New. - (integer_16_32): New. - (integer_32): New. - (signed_16_32): New. - (signed_32): New. - (register_vector_type): Use void_type_node for mve.fp-only types when - mve.fp is not enabled. - (register_builtin_tuple_types): Likewise. - (handle_arm_mve_h): New function.. - (matches_type_p): Likewise.. - (report_out_of_range): Likewise. - (report_not_enum): Likewise. - (report_missing_float): Likewise. - (report_non_ice): Likewise. - (check_requires_float): Likewise. - (function_instance::hash): Likewise - (function_instance::call_properties): Likewise. - (function_instance::reads_global_state_p): Likewise. - (function_instance::modifies_global_state_p): Likewise. - (function_instance::could_trap_p): Likewise. - (function_instance::has_inactive_argument): Likewise. - (registered_function_hasher::hash): Likewise. - (registered_function_hasher::equal): Likewise. - (function_builder::function_builder): Likewise. - (function_builder::~function_builder): Likewise. - (function_builder::append_name): Likewise. - (function_builder::finish_name): Likewise. - (function_builder::get_name): Likewise. - (add_attribute): Likewise. - (function_builder::get_attributes): Likewise. - (function_builder::add_function): Likewise. - (function_builder::add_unique_function): Likewise. - (function_builder::add_overloaded_function): Likewise. - (function_builder::add_overloaded_functions): Likewise. - (function_builder::register_function_group): Likewise. - (function_call_info::function_call_info): Likewise. - (function_resolver::function_resolver): Likewise. - (function_resolver::get_vector_type): Likewise. - (function_resolver::get_scalar_type_name): Likewise. - (function_resolver::get_argument_type): Likewise. - (function_resolver::scalar_argument_p): Likewise. - (function_resolver::report_no_such_form): Likewise. - (function_resolver::lookup_form): Likewise. - (function_resolver::resolve_to): Likewise. - (function_resolver::infer_vector_or_tuple_type): Likewise. - (function_resolver::infer_vector_type): Likewise. - (function_resolver::require_vector_or_scalar_type): Likewise. - (function_resolver::require_vector_type): Likewise. - (function_resolver::require_matching_vector_type): Likewise. - (function_resolver::require_derived_vector_type): Likewise. - (function_resolver::require_derived_scalar_type): Likewise. - (function_resolver::require_integer_immediate): Likewise. - (function_resolver::require_scalar_type): Likewise. - (function_resolver::check_num_arguments): Likewise. - (function_resolver::check_gp_argument): Likewise. - (function_resolver::finish_opt_n_resolution): Likewise. - (function_resolver::resolve_unary): Likewise. - (function_resolver::resolve_unary_n): Likewise. - (function_resolver::resolve_uniform): Likewise. - (function_resolver::resolve_uniform_opt_n): Likewise. - (function_resolver::resolve): Likewise. - (function_checker::function_checker): Likewise. - (function_checker::argument_exists_p): Likewise. - (function_checker::require_immediate): Likewise. - (function_checker::require_immediate_enum): Likewise. - (function_checker::require_immediate_range): Likewise. - (function_checker::check): Likewise. - (gimple_folder::gimple_folder): Likewise. - (gimple_folder::fold): Likewise. - (function_expander::function_expander): Likewise. - (function_expander::direct_optab_handler): Likewise. - (function_expander::get_fallback_value): Likewise. - (function_expander::get_reg_target): Likewise. - (function_expander::add_output_operand): Likewise. - (function_expander::add_input_operand): Likewise. - (function_expander::add_integer_operand): Likewise. - (function_expander::generate_insn): Likewise. - (function_expander::use_exact_insn): Likewise. - (function_expander::use_unpred_insn): Likewise. - (function_expander::use_pred_x_insn): Likewise. - (function_expander::use_cond_insn): Likewise. - (function_expander::map_to_rtx_codes): Likewise. - (function_expander::expand): Likewise. - (resolve_overloaded_builtin): Likewise. - (check_builtin_call): Likewise. - (gimple_fold_builtin): Likewise. - (expand_builtin): Likewise. - (gt_ggc_mx): Likewise. - (gt_pch_nx): Likewise. - (gt_pch_nx): Likewise. - * config/arm/arm-mve-builtins.def(s8): Define new type suffix. - (s16): Likewise. - (s32): Likewise. - (s64): Likewise. - (u8): Likewise. - (u16): Likewise. - (u32): Likewise. - (u64): Likewise. - (f16): Likewise. - (f32): Likewise. - (n): New mode. - (offset): New mode. - * config/arm/arm-mve-builtins.h (MAX_TUPLE_SIZE): New constant. - (CP_READ_FPCR): Likewise. - (CP_RAISE_FP_EXCEPTIONS): Likewise. - (CP_READ_MEMORY): Likewise. - (CP_WRITE_MEMORY): Likewise. - (enum units_index): New enum. - (enum predication_index): New. - (enum type_class_index): New. - (enum mode_suffix_index): New enum. - (enum type_suffix_index): New. - (struct mode_suffix_info): New struct. - (struct type_suffix_info): New. - (struct function_group_info): Likewise. - (class function_instance): Likewise. - (class registered_function): Likewise. - (class function_builder): Likewise. - (class function_call_info): Likewise. - (class function_resolver): Likewise. - (class function_checker): Likewise. - (class gimple_folder): Likewise. - (class function_expander): Likewise. - (get_mve_pred16_t): Likewise. - (find_mode_suffix): New function. - (class function_base): Likewise. - (class function_shape): Likewise. - (function_instance::operator==): New function. - (function_instance::operator!=): Likewise. - (function_instance::vectors_per_tuple): Likewise. - (function_instance::mode_suffix): Likewise. - (function_instance::type_suffix): Likewise. - (function_instance::scalar_type): Likewise. - (function_instance::vector_type): Likewise. - (function_instance::tuple_type): Likewise. - (function_instance::vector_mode): Likewise. - (function_call_info::function_returns_void_p): Likewise. - (function_base::call_properties): Likewise. - * config/arm/arm-protos.h (enum arm_builtin_class): Add - ARM_BUILTIN_MVE. - (handle_arm_mve_h): New. - (resolve_overloaded_builtin): New. - (check_builtin_call): New. - (gimple_fold_builtin): New. - (expand_builtin): New. - * config/arm/arm.cc (TARGET_GIMPLE_FOLD_BUILTIN): Define as - arm_gimple_fold_builtin. - (arm_gimple_fold_builtin): New function. - * config/arm/arm_mve.h: Use new arm_mve.h pragma. - * config/arm/predicates.md (arm_any_register_operand): New predicate. - * config/arm/t-arm: (arm-mve-builtins.o): Add includes. - (arm-mve-builtins-shapes.o): New target. - (arm-mve-builtins-base.o): New target. - * config/arm/arm-mve-builtins-base.cc: New file. - * config/arm/arm-mve-builtins-base.def: New file. - * config/arm/arm-mve-builtins-base.h: New file. - * config/arm/arm-mve-builtins-functions.h: New file. - * config/arm/arm-mve-builtins-shapes.cc: New file. - * config/arm/arm-mve-builtins-shapes.h: New file. - -2023-05-03 Murray Steele <murray.steele@arm.com> - Christophe Lyon <christophe.lyon@arm.com> - Christophe Lyon <christophe.lyon@arm.com> - - * config/arm/arm-builtins.cc (arm_general_add_builtin_function): - New function. - (arm_init_builtin): Use arm_general_add_builtin_function instead - of arm_add_builtin_function. - (arm_init_acle_builtins): Likewise. - (arm_init_mve_builtins): Likewise. - (arm_init_crypto_builtins): Likewise. - (arm_init_builtins): Likewise. - (arm_general_builtin_decl): New function. - (arm_builtin_decl): Defer to numberspace-specialized functions. - (arm_expand_builtin_args): Rename into arm_general_expand_builtin_args. - (arm_expand_builtin_1): Rename into arm_general_expand_builtin_1 and ... - (arm_general_expand_builtin_1): ... specialize for general builtins. - (arm_expand_acle_builtin): Use arm_general_expand_builtin - instead of arm_expand_builtin. - (arm_expand_mve_builtin): Likewise. - (arm_expand_neon_builtin): Likewise. - (arm_expand_vfp_builtin): Likewise. - (arm_general_expand_builtin): New function. - (arm_expand_builtin): Specialize for general builtins. - (arm_general_check_builtin_call): New function. - (arm_check_builtin_call): Specialize for general builtins. - (arm_describe_resolver): Validate numberspace. - (arm_cde_end_args): Likewise. - * config/arm/arm-protos.h (enum arm_builtin_class): New enum. - (ARM_BUILTIN_SHIFT, ARM_BUILTIN_CLASS): New constants. - -2023-05-03 Martin Liska <mliska@suse.cz> - - PR target/109713 - * config/riscv/sync.md: Add gcc_unreachable to a switch. - -2023-05-03 Richard Biener <rguenther@suse.de> - - * tree-ssa-loop-split.cc (split_at_bb_p): Avoid last_stmt. - (patch_loop_exit): Likewise. - (connect_loops): Likewise. - (split_loop): Likewise. - (control_dep_semi_invariant_p): Likewise. - (do_split_loop_on_cond): Likewise. - (split_loop_on_cond): Likewise. - * tree-ssa-loop-unswitch.cc (find_unswitching_predicates_for_bb): - Likewise. - (simplify_loop_version): Likewise. - (evaluate_bbs): Likewise. - (find_loop_guard): Likewise. - (clean_up_after_unswitching): Likewise. - * tree-ssa-math-opts.cc (maybe_optimize_guarding_check): - Likewise. - (optimize_spaceship): Take a gcond * argument, avoid - last_stmt. - (math_opts_dom_walker::after_dom_children): Adjust call to - optimize_spaceship. - * tree-vrp.cc (maybe_set_nonzero_bits): Avoid last_stmt. - * value-pointer-equiv.cc (pointer_equiv_analyzer::visit_edge): - Likewise. - -2023-05-03 Andreas Schwab <schwab@suse.de> - - * config/riscv/linux.h (LIB_SPEC): Don't redefine. - -2023-05-03 Ju-Zhe Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv-vector-builtins-bases.cc (fold_fault_load): - New function. - (class vlseg): New class. - (class vsseg): Ditto. - (class vlsseg): Ditto. - (class vssseg): Ditto. - (class seg_indexed_load): Ditto. - (class seg_indexed_store): Ditto. - (class vlsegff): Ditto. - (BASE): Ditto. - * config/riscv/riscv-vector-builtins-bases.h: Ditto. - * config/riscv/riscv-vector-builtins-functions.def (vlseg): - Ditto. - (vsseg): Ditto. - (vlsseg): Ditto. - (vssseg): Ditto. - (vluxseg): Ditto. - (vloxseg): Ditto. - (vsuxseg): Ditto. - (vsoxseg): Ditto. - (vlsegff): Ditto. - * config/riscv/riscv-vector-builtins-shapes.cc (struct - seg_loadstore_def): Ditto. - (struct seg_indexed_loadstore_def): Ditto. - (struct seg_fault_load_def): Ditto. - (SHAPE): Ditto. - * config/riscv/riscv-vector-builtins-shapes.h: Ditto. - * config/riscv/riscv-vector-builtins.cc - (function_builder::append_nf): New function. - * config/riscv/riscv-vector-builtins.def (vfloat32m1x2_t): - Change ptr from double into float. - (vfloat32m1x3_t): Ditto. - (vfloat32m1x4_t): Ditto. - (vfloat32m1x5_t): Ditto. - (vfloat32m1x6_t): Ditto. - (vfloat32m1x7_t): Ditto. - (vfloat32m1x8_t): Ditto. - (vfloat32m2x2_t): Ditto. - (vfloat32m2x3_t): Ditto. - (vfloat32m2x4_t): Ditto. - (vfloat32m4x2_t): Ditto. - * config/riscv/riscv-vector-builtins.h: Add segment intrinsics. - * config/riscv/riscv-vsetvl.cc (fault_first_load_p): Adapt for - segment ff load. - * config/riscv/riscv.md: Add segment instructions. - * config/riscv/vector-iterators.md: Support segment intrinsics. - * config/riscv/vector.md (@pred_unit_strided_load<mode>): New - pattern. - (@pred_unit_strided_store<mode>): Ditto. - (@pred_strided_load<mode>): Ditto. - (@pred_strided_store<mode>): Ditto. - (@pred_fault_load<mode>): Ditto. - (@pred_indexed_<order>load<V1T:mode><V1I:mode>): Ditto. - (@pred_indexed_<order>load<V2T:mode><V2I:mode>): Ditto. - (@pred_indexed_<order>load<V4T:mode><V4I:mode>): Ditto. - (@pred_indexed_<order>load<V8T:mode><V8I:mode>): Ditto. - (@pred_indexed_<order>load<V16T:mode><V16I:mode>): Ditto. - (@pred_indexed_<order>load<V32T:mode><V32I:mode>): Ditto. - (@pred_indexed_<order>load<V64T:mode><V64I:mode>): Ditto. - (@pred_indexed_<order>store<V1T:mode><V1I:mode>): Ditto. - (@pred_indexed_<order>store<V2T:mode><V2I:mode>): Ditto. - (@pred_indexed_<order>store<V4T:mode><V4I:mode>): Ditto. - (@pred_indexed_<order>store<V8T:mode><V8I:mode>): Ditto. - (@pred_indexed_<order>store<V16T:mode><V16I:mode>): Ditto. - (@pred_indexed_<order>store<V32T:mode><V32I:mode>): Ditto. - (@pred_indexed_<order>store<V64T:mode><V64I:mode>): Ditto. - -2023-05-03 Ju-Zhe Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/genrvv-type-indexer.cc (valid_type): Adapt for - tuple type support. - (inttype): Ditto. - (floattype): Ditto. - (main): Ditto. - * config/riscv/riscv-vector-builtins-bases.cc: Ditto. - * config/riscv/riscv-vector-builtins-functions.def (vset): Add - tuple type vset. - (vget): Add tuple type vget. - * config/riscv/riscv-vector-builtins-types.def - (DEF_RVV_TUPLE_OPS): New macro. - (vint8mf8x2_t): Ditto. - (vuint8mf8x2_t): Ditto. - (vint8mf8x3_t): Ditto. - (vuint8mf8x3_t): Ditto. - (vint8mf8x4_t): Ditto. - (vuint8mf8x4_t): Ditto. - (vint8mf8x5_t): Ditto. - (vuint8mf8x5_t): Ditto. - (vint8mf8x6_t): Ditto. - (vuint8mf8x6_t): Ditto. - (vint8mf8x7_t): Ditto. - (vuint8mf8x7_t): Ditto. - (vint8mf8x8_t): Ditto. - (vuint8mf8x8_t): Ditto. - (vint8mf4x2_t): Ditto. - (vuint8mf4x2_t): Ditto. - (vint8mf4x3_t): Ditto. - (vuint8mf4x3_t): Ditto. - (vint8mf4x4_t): Ditto. - (vuint8mf4x4_t): Ditto. - (vint8mf4x5_t): Ditto. - (vuint8mf4x5_t): Ditto. - (vint8mf4x6_t): Ditto. - (vuint8mf4x6_t): Ditto. - (vint8mf4x7_t): Ditto. - (vuint8mf4x7_t): Ditto. - (vint8mf4x8_t): Ditto. - (vuint8mf4x8_t): Ditto. - (vint8mf2x2_t): Ditto. - (vuint8mf2x2_t): Ditto. - (vint8mf2x3_t): Ditto. - (vuint8mf2x3_t): Ditto. - (vint8mf2x4_t): Ditto. - (vuint8mf2x4_t): Ditto. - (vint8mf2x5_t): Ditto. - (vuint8mf2x5_t): Ditto. - (vint8mf2x6_t): Ditto. - (vuint8mf2x6_t): Ditto. - (vint8mf2x7_t): Ditto. - (vuint8mf2x7_t): Ditto. - (vint8mf2x8_t): Ditto. - (vuint8mf2x8_t): Ditto. - (vint8m1x2_t): Ditto. - (vuint8m1x2_t): Ditto. - (vint8m1x3_t): Ditto. - (vuint8m1x3_t): Ditto. - (vint8m1x4_t): Ditto. - (vuint8m1x4_t): Ditto. - (vint8m1x5_t): Ditto. - (vuint8m1x5_t): Ditto. - (vint8m1x6_t): Ditto. - (vuint8m1x6_t): Ditto. - (vint8m1x7_t): Ditto. - (vuint8m1x7_t): Ditto. - (vint8m1x8_t): Ditto. - (vuint8m1x8_t): Ditto. - (vint8m2x2_t): Ditto. - (vuint8m2x2_t): Ditto. - (vint8m2x3_t): Ditto. - (vuint8m2x3_t): Ditto. - (vint8m2x4_t): Ditto. - (vuint8m2x4_t): Ditto. - (vint8m4x2_t): Ditto. - (vuint8m4x2_t): Ditto. - (vint16mf4x2_t): Ditto. - (vuint16mf4x2_t): Ditto. - (vint16mf4x3_t): Ditto. - (vuint16mf4x3_t): Ditto. - (vint16mf4x4_t): Ditto. - (vuint16mf4x4_t): Ditto. - (vint16mf4x5_t): Ditto. - (vuint16mf4x5_t): Ditto. - (vint16mf4x6_t): Ditto. - (vuint16mf4x6_t): Ditto. - (vint16mf4x7_t): Ditto. - (vuint16mf4x7_t): Ditto. - (vint16mf4x8_t): Ditto. - (vuint16mf4x8_t): Ditto. - (vint16mf2x2_t): Ditto. - (vuint16mf2x2_t): Ditto. - (vint16mf2x3_t): Ditto. - (vuint16mf2x3_t): Ditto. - (vint16mf2x4_t): Ditto. - (vuint16mf2x4_t): Ditto. - (vint16mf2x5_t): Ditto. - (vuint16mf2x5_t): Ditto. - (vint16mf2x6_t): Ditto. - (vuint16mf2x6_t): Ditto. - (vint16mf2x7_t): Ditto. - (vuint16mf2x7_t): Ditto. - (vint16mf2x8_t): Ditto. - (vuint16mf2x8_t): Ditto. - (vint16m1x2_t): Ditto. - (vuint16m1x2_t): Ditto. - (vint16m1x3_t): Ditto. - (vuint16m1x3_t): Ditto. - (vint16m1x4_t): Ditto. - (vuint16m1x4_t): Ditto. - (vint16m1x5_t): Ditto. - (vuint16m1x5_t): Ditto. - (vint16m1x6_t): Ditto. - (vuint16m1x6_t): Ditto. - (vint16m1x7_t): Ditto. - (vuint16m1x7_t): Ditto. - (vint16m1x8_t): Ditto. - (vuint16m1x8_t): Ditto. - (vint16m2x2_t): Ditto. - (vuint16m2x2_t): Ditto. - (vint16m2x3_t): Ditto. - (vuint16m2x3_t): Ditto. - (vint16m2x4_t): Ditto. - (vuint16m2x4_t): Ditto. - (vint16m4x2_t): Ditto. - (vuint16m4x2_t): Ditto. - (vint32mf2x2_t): Ditto. - (vuint32mf2x2_t): Ditto. - (vint32mf2x3_t): Ditto. - (vuint32mf2x3_t): Ditto. - (vint32mf2x4_t): Ditto. - (vuint32mf2x4_t): Ditto. - (vint32mf2x5_t): Ditto. - (vuint32mf2x5_t): Ditto. - (vint32mf2x6_t): Ditto. - (vuint32mf2x6_t): Ditto. - (vint32mf2x7_t): Ditto. - (vuint32mf2x7_t): Ditto. - (vint32mf2x8_t): Ditto. - (vuint32mf2x8_t): Ditto. - (vint32m1x2_t): Ditto. - (vuint32m1x2_t): Ditto. - (vint32m1x3_t): Ditto. - (vuint32m1x3_t): Ditto. - (vint32m1x4_t): Ditto. - (vuint32m1x4_t): Ditto. - (vint32m1x5_t): Ditto. - (vuint32m1x5_t): Ditto. - (vint32m1x6_t): Ditto. - (vuint32m1x6_t): Ditto. - (vint32m1x7_t): Ditto. - (vuint32m1x7_t): Ditto. - (vint32m1x8_t): Ditto. - (vuint32m1x8_t): Ditto. - (vint32m2x2_t): Ditto. - (vuint32m2x2_t): Ditto. - (vint32m2x3_t): Ditto. - (vuint32m2x3_t): Ditto. - (vint32m2x4_t): Ditto. - (vuint32m2x4_t): Ditto. - (vint32m4x2_t): Ditto. - (vuint32m4x2_t): Ditto. - (vint64m1x2_t): Ditto. - (vuint64m1x2_t): Ditto. - (vint64m1x3_t): Ditto. - (vuint64m1x3_t): Ditto. - (vint64m1x4_t): Ditto. - (vuint64m1x4_t): Ditto. - (vint64m1x5_t): Ditto. - (vuint64m1x5_t): Ditto. - (vint64m1x6_t): Ditto. - (vuint64m1x6_t): Ditto. - (vint64m1x7_t): Ditto. - (vuint64m1x7_t): Ditto. - (vint64m1x8_t): Ditto. - (vuint64m1x8_t): Ditto. - (vint64m2x2_t): Ditto. - (vuint64m2x2_t): Ditto. - (vint64m2x3_t): Ditto. - (vuint64m2x3_t): Ditto. - (vint64m2x4_t): Ditto. - (vuint64m2x4_t): Ditto. - (vint64m4x2_t): Ditto. - (vuint64m4x2_t): Ditto. - (vfloat32mf2x2_t): Ditto. - (vfloat32mf2x3_t): Ditto. - (vfloat32mf2x4_t): Ditto. - (vfloat32mf2x5_t): Ditto. - (vfloat32mf2x6_t): Ditto. - (vfloat32mf2x7_t): Ditto. - (vfloat32mf2x8_t): Ditto. - (vfloat32m1x2_t): Ditto. - (vfloat32m1x3_t): Ditto. - (vfloat32m1x4_t): Ditto. - (vfloat32m1x5_t): Ditto. - (vfloat32m1x6_t): Ditto. - (vfloat32m1x7_t): Ditto. - (vfloat32m1x8_t): Ditto. - (vfloat32m2x2_t): Ditto. - (vfloat32m2x3_t): Ditto. - (vfloat32m2x4_t): Ditto. - (vfloat32m4x2_t): Ditto. - (vfloat64m1x2_t): Ditto. - (vfloat64m1x3_t): Ditto. - (vfloat64m1x4_t): Ditto. - (vfloat64m1x5_t): Ditto. - (vfloat64m1x6_t): Ditto. - (vfloat64m1x7_t): Ditto. - (vfloat64m1x8_t): Ditto. - (vfloat64m2x2_t): Ditto. - (vfloat64m2x3_t): Ditto. - (vfloat64m2x4_t): Ditto. - (vfloat64m4x2_t): Ditto. - * config/riscv/riscv-vector-builtins.cc (DEF_RVV_TUPLE_OPS): - Ditto. - (DEF_RVV_TYPE_INDEX): Ditto. - (rvv_arg_type_info::get_tuple_subpart_type): New function. - (DEF_RVV_TUPLE_TYPE): New macro. - * config/riscv/riscv-vector-builtins.def (DEF_RVV_TYPE_INDEX): - Adapt for tuple vget/vset support. - (vint8mf4_t): Ditto. - (vuint8mf4_t): Ditto. - (vint8mf2_t): Ditto. - (vuint8mf2_t): Ditto. - (vint8m1_t): Ditto. - (vuint8m1_t): Ditto. - (vint8m2_t): Ditto. - (vuint8m2_t): Ditto. - (vint8m4_t): Ditto. - (vuint8m4_t): Ditto. - (vint8m8_t): Ditto. - (vuint8m8_t): Ditto. - (vint16mf4_t): Ditto. - (vuint16mf4_t): Ditto. - (vint16mf2_t): Ditto. - (vuint16mf2_t): Ditto. - (vint16m1_t): Ditto. - (vuint16m1_t): Ditto. - (vint16m2_t): Ditto. - (vuint16m2_t): Ditto. - (vint16m4_t): Ditto. - (vuint16m4_t): Ditto. - (vint16m8_t): Ditto. - (vuint16m8_t): Ditto. - (vint32mf2_t): Ditto. - (vuint32mf2_t): Ditto. - (vint32m1_t): Ditto. - (vuint32m1_t): Ditto. - (vint32m2_t): Ditto. - (vuint32m2_t): Ditto. - (vint32m4_t): Ditto. - (vuint32m4_t): Ditto. - (vint32m8_t): Ditto. - (vuint32m8_t): Ditto. - (vint64m1_t): Ditto. - (vuint64m1_t): Ditto. - (vint64m2_t): Ditto. - (vuint64m2_t): Ditto. - (vint64m4_t): Ditto. - (vuint64m4_t): Ditto. - (vint64m8_t): Ditto. - (vuint64m8_t): Ditto. - (vfloat32mf2_t): Ditto. - (vfloat32m1_t): Ditto. - (vfloat32m2_t): Ditto. - (vfloat32m4_t): Ditto. - (vfloat32m8_t): Ditto. - (vfloat64m1_t): Ditto. - (vfloat64m2_t): Ditto. - (vfloat64m4_t): Ditto. - (vfloat64m8_t): Ditto. - (tuple_subpart): Add tuple subpart base type. - * config/riscv/riscv-vector-builtins.h (struct - rvv_arg_type_info): Ditto. - (tuple_type_field): New function. - -2023-05-03 Ju-Zhe Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv-modes.def (RVV_TUPLE_MODES): New macro. - (RVV_TUPLE_PARTIAL_MODES): Ditto. - * config/riscv/riscv-protos.h (riscv_v_ext_tuple_mode_p): New - function. - (get_nf): Ditto. - (get_subpart_mode): Ditto. - (get_tuple_mode): Ditto. - (expand_tuple_move): Ditto. - * config/riscv/riscv-v.cc (ENTRY): New macro. - (TUPLE_ENTRY): Ditto. - (get_nf): New function. - (get_subpart_mode): Ditto. - (get_tuple_mode): Ditto. - (expand_tuple_move): Ditto. - * config/riscv/riscv-vector-builtins.cc (DEF_RVV_TUPLE_TYPE): - New macro. - (register_tuple_type): New function - * config/riscv/riscv-vector-builtins.def (DEF_RVV_TUPLE_TYPE): - New macro. - (vint8mf8x2_t): New macro. - (vuint8mf8x2_t): Ditto. - (vint8mf8x3_t): Ditto. - (vuint8mf8x3_t): Ditto. - (vint8mf8x4_t): Ditto. - (vuint8mf8x4_t): Ditto. - (vint8mf8x5_t): Ditto. - (vuint8mf8x5_t): Ditto. - (vint8mf8x6_t): Ditto. - (vuint8mf8x6_t): Ditto. - (vint8mf8x7_t): Ditto. - (vuint8mf8x7_t): Ditto. - (vint8mf8x8_t): Ditto. - (vuint8mf8x8_t): Ditto. - (vint8mf4x2_t): Ditto. - (vuint8mf4x2_t): Ditto. - (vint8mf4x3_t): Ditto. - (vuint8mf4x3_t): Ditto. - (vint8mf4x4_t): Ditto. - (vuint8mf4x4_t): Ditto. - (vint8mf4x5_t): Ditto. - (vuint8mf4x5_t): Ditto. - (vint8mf4x6_t): Ditto. - (vuint8mf4x6_t): Ditto. - (vint8mf4x7_t): Ditto. - (vuint8mf4x7_t): Ditto. - (vint8mf4x8_t): Ditto. - (vuint8mf4x8_t): Ditto. - (vint8mf2x2_t): Ditto. - (vuint8mf2x2_t): Ditto. - (vint8mf2x3_t): Ditto. - (vuint8mf2x3_t): Ditto. - (vint8mf2x4_t): Ditto. - (vuint8mf2x4_t): Ditto. - (vint8mf2x5_t): Ditto. - (vuint8mf2x5_t): Ditto. - (vint8mf2x6_t): Ditto. - (vuint8mf2x6_t): Ditto. - (vint8mf2x7_t): Ditto. - (vuint8mf2x7_t): Ditto. - (vint8mf2x8_t): Ditto. - (vuint8mf2x8_t): Ditto. - (vint8m1x2_t): Ditto. - (vuint8m1x2_t): Ditto. - (vint8m1x3_t): Ditto. - (vuint8m1x3_t): Ditto. - (vint8m1x4_t): Ditto. - (vuint8m1x4_t): Ditto. - (vint8m1x5_t): Ditto. - (vuint8m1x5_t): Ditto. - (vint8m1x6_t): Ditto. - (vuint8m1x6_t): Ditto. - (vint8m1x7_t): Ditto. - (vuint8m1x7_t): Ditto. - (vint8m1x8_t): Ditto. - (vuint8m1x8_t): Ditto. - (vint8m2x2_t): Ditto. - (vuint8m2x2_t): Ditto. - (vint8m2x3_t): Ditto. - (vuint8m2x3_t): Ditto. - (vint8m2x4_t): Ditto. - (vuint8m2x4_t): Ditto. - (vint8m4x2_t): Ditto. - (vuint8m4x2_t): Ditto. - (vint16mf4x2_t): Ditto. - (vuint16mf4x2_t): Ditto. - (vint16mf4x3_t): Ditto. - (vuint16mf4x3_t): Ditto. - (vint16mf4x4_t): Ditto. - (vuint16mf4x4_t): Ditto. - (vint16mf4x5_t): Ditto. - (vuint16mf4x5_t): Ditto. - (vint16mf4x6_t): Ditto. - (vuint16mf4x6_t): Ditto. - (vint16mf4x7_t): Ditto. - (vuint16mf4x7_t): Ditto. - (vint16mf4x8_t): Ditto. - (vuint16mf4x8_t): Ditto. - (vint16mf2x2_t): Ditto. - (vuint16mf2x2_t): Ditto. - (vint16mf2x3_t): Ditto. - (vuint16mf2x3_t): Ditto. - (vint16mf2x4_t): Ditto. - (vuint16mf2x4_t): Ditto. - (vint16mf2x5_t): Ditto. - (vuint16mf2x5_t): Ditto. - (vint16mf2x6_t): Ditto. - (vuint16mf2x6_t): Ditto. - (vint16mf2x7_t): Ditto. - (vuint16mf2x7_t): Ditto. - (vint16mf2x8_t): Ditto. - (vuint16mf2x8_t): Ditto. - (vint16m1x2_t): Ditto. - (vuint16m1x2_t): Ditto. - (vint16m1x3_t): Ditto. - (vuint16m1x3_t): Ditto. - (vint16m1x4_t): Ditto. - (vuint16m1x4_t): Ditto. - (vint16m1x5_t): Ditto. - (vuint16m1x5_t): Ditto. - (vint16m1x6_t): Ditto. - (vuint16m1x6_t): Ditto. - (vint16m1x7_t): Ditto. - (vuint16m1x7_t): Ditto. - (vint16m1x8_t): Ditto. - (vuint16m1x8_t): Ditto. - (vint16m2x2_t): Ditto. - (vuint16m2x2_t): Ditto. - (vint16m2x3_t): Ditto. - (vuint16m2x3_t): Ditto. - (vint16m2x4_t): Ditto. - (vuint16m2x4_t): Ditto. - (vint16m4x2_t): Ditto. - (vuint16m4x2_t): Ditto. - (vint32mf2x2_t): Ditto. - (vuint32mf2x2_t): Ditto. - (vint32mf2x3_t): Ditto. - (vuint32mf2x3_t): Ditto. - (vint32mf2x4_t): Ditto. - (vuint32mf2x4_t): Ditto. - (vint32mf2x5_t): Ditto. - (vuint32mf2x5_t): Ditto. - (vint32mf2x6_t): Ditto. - (vuint32mf2x6_t): Ditto. - (vint32mf2x7_t): Ditto. - (vuint32mf2x7_t): Ditto. - (vint32mf2x8_t): Ditto. - (vuint32mf2x8_t): Ditto. - (vint32m1x2_t): Ditto. - (vuint32m1x2_t): Ditto. - (vint32m1x3_t): Ditto. - (vuint32m1x3_t): Ditto. - (vint32m1x4_t): Ditto. - (vuint32m1x4_t): Ditto. - (vint32m1x5_t): Ditto. - (vuint32m1x5_t): Ditto. - (vint32m1x6_t): Ditto. - (vuint32m1x6_t): Ditto. - (vint32m1x7_t): Ditto. - (vuint32m1x7_t): Ditto. - (vint32m1x8_t): Ditto. - (vuint32m1x8_t): Ditto. - (vint32m2x2_t): Ditto. - (vuint32m2x2_t): Ditto. - (vint32m2x3_t): Ditto. - (vuint32m2x3_t): Ditto. - (vint32m2x4_t): Ditto. - (vuint32m2x4_t): Ditto. - (vint32m4x2_t): Ditto. - (vuint32m4x2_t): Ditto. - (vint64m1x2_t): Ditto. - (vuint64m1x2_t): Ditto. - (vint64m1x3_t): Ditto. - (vuint64m1x3_t): Ditto. - (vint64m1x4_t): Ditto. - (vuint64m1x4_t): Ditto. - (vint64m1x5_t): Ditto. - (vuint64m1x5_t): Ditto. - (vint64m1x6_t): Ditto. - (vuint64m1x6_t): Ditto. - (vint64m1x7_t): Ditto. - (vuint64m1x7_t): Ditto. - (vint64m1x8_t): Ditto. - (vuint64m1x8_t): Ditto. - (vint64m2x2_t): Ditto. - (vuint64m2x2_t): Ditto. - (vint64m2x3_t): Ditto. - (vuint64m2x3_t): Ditto. - (vint64m2x4_t): Ditto. - (vuint64m2x4_t): Ditto. - (vint64m4x2_t): Ditto. - (vuint64m4x2_t): Ditto. - (vfloat32mf2x2_t): Ditto. - (vfloat32mf2x3_t): Ditto. - (vfloat32mf2x4_t): Ditto. - (vfloat32mf2x5_t): Ditto. - (vfloat32mf2x6_t): Ditto. - (vfloat32mf2x7_t): Ditto. - (vfloat32mf2x8_t): Ditto. - (vfloat32m1x2_t): Ditto. - (vfloat32m1x3_t): Ditto. - (vfloat32m1x4_t): Ditto. - (vfloat32m1x5_t): Ditto. - (vfloat32m1x6_t): Ditto. - (vfloat32m1x7_t): Ditto. - (vfloat32m1x8_t): Ditto. - (vfloat32m2x2_t): Ditto. - (vfloat32m2x3_t): Ditto. - (vfloat32m2x4_t): Ditto. - (vfloat32m4x2_t): Ditto. - (vfloat64m1x2_t): Ditto. - (vfloat64m1x3_t): Ditto. - (vfloat64m1x4_t): Ditto. - (vfloat64m1x5_t): Ditto. - (vfloat64m1x6_t): Ditto. - (vfloat64m1x7_t): Ditto. - (vfloat64m1x8_t): Ditto. - (vfloat64m2x2_t): Ditto. - (vfloat64m2x3_t): Ditto. - (vfloat64m2x4_t): Ditto. - (vfloat64m4x2_t): Ditto. - * config/riscv/riscv-vector-builtins.h (DEF_RVV_TUPLE_TYPE): - Ditto. - * config/riscv/riscv-vector-switch.def (TUPLE_ENTRY): Ditto. - * config/riscv/riscv.cc (riscv_v_ext_tuple_mode_p): New - function. - (TUPLE_ENTRY): Ditto. - (riscv_v_ext_mode_p): New function. - (riscv_v_adjust_nunits): Add tuple mode adjustment. - (riscv_classify_address): Ditto. - (riscv_binary_cost): Ditto. - (riscv_rtx_costs): Ditto. - (riscv_secondary_memory_needed): Ditto. - (riscv_hard_regno_nregs): Ditto. - (riscv_hard_regno_mode_ok): Ditto. - (riscv_vector_mode_supported_p): Ditto. - (riscv_regmode_natural_size): Ditto. - (riscv_array_mode): New function. - (TARGET_ARRAY_MODE): New target hook. - * config/riscv/riscv.md: Add tuple modes. - * config/riscv/vector-iterators.md: Ditto. - * config/riscv/vector.md (mov<mode>): Add tuple modes data - movement. - (*mov<VT:mode>_<P:mode>): Ditto. - -2023-05-03 Richard Biener <rguenther@suse.de> - - * cse.cc (cse_insn): Track an equivalence to the destination - separately and delay using src_related for it. - -2023-05-03 Richard Biener <rguenther@suse.de> - - * cse.cc (HASH): Turn into inline function and mix - in another HASH_SHIFT bits. - (SAFE_HASH): Likewise. - -2023-05-03 Kyrylo Tkachov <kyrylo.tkachov@arm.com> - - PR target/99195 - * config/aarch64/aarch64-simd.md (aarch64_<sur>h<addsub><mode>): Rename to... - (aarch64_<sur>h<addsub><mode><vczle><vczbe>): ... This. - -2023-05-03 Kyrylo Tkachov <kyrylo.tkachov@arm.com> - - PR target/99195 - * config/aarch64/aarch64-simd.md (add<mode>3): Rename to... - (add<mode>3<vczle><vczbe>): ... This. - (sub<mode>3): Rename to... - (sub<mode>3<vczle><vczbe>): ... This. - (mul<mode>3): Rename to... - (mul<mode>3<vczle><vczbe>): ... This. - (*div<mode>3): Rename to... - (*div<mode>3<vczle><vczbe>): ... This. - (neg<mode>2): Rename to... - (neg<mode>2<vczle><vczbe>): ... This. - (abs<mode>2): Rename to... - (abs<mode>2<vczle><vczbe>): ... This. - (<frint_pattern><mode>2): Rename to... - (<frint_pattern><mode>2<vczle><vczbe>): ... This. - (<fmaxmin><mode>3): Rename to... - (<fmaxmin><mode>3<vczle><vczbe>): ... This. - (*sqrt<mode>2): Rename to... - (*sqrt<mode>2<vczle><vczbe>): ... This. - -2023-05-03 Kito Cheng <kito.cheng@sifive.com> - - * doc/md.texi (RISC-V): Add vr, vm, vd constarint. - -2023-05-03 Martin Liska <mliska@suse.cz> - - PR tree-optimization/109693 - * value-range-storage.cc (vrange_allocator::vrange_allocator): - Remove unused field. - * value-range-storage.h: Likewise. - -2023-05-02 Andrew Pinski <apinski@marvell.com> - - * tree-ssa-phiopt.cc (move_stmt): New function. - (match_simplify_replacement): Use move_stmt instead - of the inlined version. - -2023-05-02 Andrew Pinski <apinski@marvell.com> - - * match.pd (a != 0 ? CLRSB(a) : CST -> CLRSB(a)): New - pattern. - -2023-05-02 Andrew Pinski <apinski@marvell.com> - - PR tree-optimization/109702 - * match.pd: Fix "a != 0 ? FUNC(a) : CST" patterns - for FUNC of POPCOUNT BSWAP FFS PARITY CLZ and CTZ. - -2023-05-02 Andrew Pinski <apinski@marvell.com> - - PR target/109657 - * config/aarch64/aarch64.md (*cmov<mode>_insn_m1): New - insn_and_split pattern. - -2023-05-02 Patrick O'Neill <patrick@rivosinc.com> - - * config/riscv/sync.md (atomic_load<mode>): Implement atomic - load mapping. - -2023-05-02 Patrick O'Neill <patrick@rivosinc.com> - - * config/riscv/sync.md (mem_thread_fence_1): Change fence - depending on the given memory model. - -2023-05-02 Patrick O'Neill <patrick@rivosinc.com> - - * config/riscv/riscv-protos.h (riscv_union_memmodels): Expose - riscv_union_memmodels function to sync.md. - * config/riscv/riscv.cc (riscv_union_memmodels): Add function to - get the union of two memmodels in sync.md. - (riscv_print_operand): Add %I and %J flags that output the - optimal LR/SC flag bits for a given memory model. - * config/riscv/sync.md: Remove static .aqrl bits on LR op/.rl - bits on SC op and replace with optimized %I, %J flags. - -2023-05-02 Patrick O'Neill <patrick@rivosinc.com> - - * config/riscv/riscv.cc - (riscv_memmodel_needs_amo_release): Change function name. - (riscv_print_operand): Remove unneeded %F case. - * config/riscv/sync.md: Remove unneeded fences. - -2023-05-02 Patrick O'Neill <patrick@rivosinc.com> - - PR target/89835 - * config/riscv/sync.md (atomic_store<mode>): Use simple store - instruction in combination with fence(s). - -2023-05-02 Patrick O'Neill <patrick@rivosinc.com> - - * config/riscv/riscv.cc (riscv_print_operand): Change behavior - of %A to include release bits. - -2023-05-02 Patrick O'Neill <patrick@rivosinc.com> - - * config/riscv/sync.md (atomic_cas_value_strong<mode>): Change - FENCE/LR.aq/SC.aq into sequentially consistent LR.aqrl/SC.rl - pair. - -2023-05-02 Patrick O'Neill <patrick@rivosinc.com> - - * config/riscv/sync.md: Change LR.aq/SC.rl pairs into - sequentially consistent LR.aqrl/SC.rl pairs. - -2023-05-02 Patrick O'Neill <patrick@rivosinc.com> - - * config/riscv/riscv.cc: Remove MEMMODEL_SYNC_* cases and - sanitize memmodel input with memmodel_base. - -2023-05-02 Yanzhang Wang <yanzhang.wang@intel.com> - Pan Li <pan2.li@intel.com> - - PR target/109617 - * config/riscv/vector-iterators.md: Support VNx2HI and VNX4DI when MIN_VLEN >= 128. - -2023-05-02 Romain Naour <romain.naour@gmail.com> - - * config/riscv/genrvv-type-indexer.cc: Use log2 from the C header, without - the namespace. - -2023-05-02 Martin Liska <mliska@suse.cz> - - * doc/invoke.texi: Update documentation based on param.opt file. - -2023-05-02 Richard Biener <rguenther@suse.de> - - PR tree-optimization/109672 - * tree-vect-stmts.cc (vectorizable_operation): For plus, - minus and negate always check the vector mode is word mode. - -2023-05-01 Andrew Pinski <apinski@marvell.com> - - * tree-ssa-phiopt.cc: Update comment about - how the transformation are implemented. - -2023-05-01 Jeff Law <jlaw@ventanamicro> - - * config/stormy16/stormy16.cc (TARGET_LRA_P): Remove defintion. - -2023-05-01 Jeff Law <jlaw@ventanamicro> - - * config/cris/cris.cc (TARGET_LRA_P): Remove. - * config/epiphany/epiphany.cc (TARGET_LRA_P): Remove. - * config/iq2000/iq2000.cc (TARGET_LRA_P): Remove. - * config/m32r/m32r.cc (TARGET_LRA_P): Remove. - * config/microblaze/microblaze.cc (TARGET_LRA_P): Remove. - * config/mmix/mmix.cc (TARGET_LRA_P): Remove. - -2023-05-01 Rasmus Villemoes <rasmus.villemoes@prevas.dk> - - * print-tree.h (PRINT_DECL_REMAP_DEBUG): New flag. - * print-tree.cc (print_decl_identifier): Implement it. - * toplev.cc (output_stack_usage_1): Use it. - -2023-05-01 Aldy Hernandez <aldyh@redhat.com> - - * value-range.h (class int_range): Remove gt_ggc_mx and gt_pch_nx - friends. - -2023-05-01 Aldy Hernandez <aldyh@redhat.com> - - * value-range.h (irange::set_nonzero): Inline. - -2023-05-01 Aldy Hernandez <aldyh@redhat.com> - - * gimple-range-op.cc (cfn_ffs::fold_range): Use the correct - precision. - * gimple-ssa-warn-alloca.cc (alloca_call_type): Use <2> for - invalid_range, as it is an inverse range. - * tree-vrp.cc (find_case_label_range): Avoid trees. - * value-range.cc (irange::irange_set): Delete. - (irange::irange_set_1bit_anti_range): Delete. - (irange::irange_set_anti_range): Delete. - (irange::set): Cleanup. - * value-range.h (class irange): Remove irange_set, - irange_set_anti_range, irange_set_1bit_anti_range. - (irange::set_undefined): Remove set to m_type. - -2023-05-01 Aldy Hernandez <aldyh@redhat.com> - - * range-op.cc (update_known_bitmask): Adjust for irange containing - wide_ints internally. - * tree-ssanames.cc (set_nonzero_bits): Same. - * tree-ssanames.h (set_nonzero_bits): Same. - * value-range-storage.cc (irange_storage::set_irange): Same. - (irange_storage::get_irange): Same. - * value-range.cc (irange::operator=): Same. - (irange::irange_set): Same. - (irange::irange_set_1bit_anti_range): Same. - (irange::irange_set_anti_range): Same. - (irange::set): Same. - (irange::verify_range): Same. - (irange::contains_p): Same. - (irange::irange_single_pair_union): Same. - (irange::union_): Same. - (irange::irange_contains_p): Same. - (irange::intersect): Same. - (irange::invert): Same. - (irange::set_range_from_nonzero_bits): Same. - (irange::set_nonzero_bits): Same. - (mask_to_wi): Same. - (irange::intersect_nonzero_bits): Same. - (irange::union_nonzero_bits): Same. - (gt_ggc_mx): Same. - (gt_pch_nx): Same. - (tree_range): Same. - (range_tests_strict_enum): Same. - (range_tests_misc): Same. - (range_tests_nonzero_bits): Same. - * value-range.h (irange::type): Same. - (irange::varying_compatible_p): Same. - (irange::irange): Same. - (int_range::int_range): Same. - (irange::set_undefined): Same. - (irange::set_varying): Same. - (irange::lower_bound): Same. - (irange::upper_bound): Same. - -2023-05-01 Aldy Hernandez <aldyh@redhat.com> - - * gimple-range-fold.cc (tree_lower_bound): Delete. - (tree_upper_bound): Delete. - (vrp_val_max): Delete. - (vrp_val_min): Delete. - (fold_using_range::range_of_ssa_name_with_loop_info): Call - range_of_var_in_loop. - * vr-values.cc (valid_value_p): Delete. - (fix_overflow): Delete. - (get_scev_info): New. - (bounds_of_var_in_loop): Refactor into... - (induction_variable_may_overflow_p): ...this, - (range_from_loop_direction): ...and this, - (range_of_var_in_loop): ...and this. - * vr-values.h (bounds_of_var_in_loop): Delete. - (range_of_var_in_loop): New. - -2023-05-01 Aldy Hernandez <aldyh@redhat.com> - - * gimple-range-fold.cc (adjust_pointer_diff_expr): Rewrite with - irange_val*. - (vrp_val_max): New. - (vrp_val_min): New. - * gimple-range-op.cc (cfn_strlen::fold_range): Use irange_val_*. - * range-op.cc (max_limit): Same. - (min_limit): Same. - (plus_minus_ranges): Same. - (operator_rshift::op1_range): Same. - (operator_cast::inside_domain_p): Same. - * value-range.cc (vrp_val_is_max): Delete. - (vrp_val_is_min): Delete. - (range_tests_misc): Use irange_val_*. - * value-range.h (vrp_val_is_min): Delete. - (vrp_val_is_max): Delete. - (vrp_val_max): Delete. - (irange_val_min): New. - (vrp_val_min): Delete. - (irange_val_max): New. - * vr-values.cc (check_for_binary_op_overflow): Use irange_val_*. - -2023-05-01 Aldy Hernandez <aldyh@redhat.com> - - * fold-const.cc (expr_not_equal_to): Convert to irange wide_int API. - * gimple-fold.cc (size_must_be_zero_p): Same. - * gimple-loop-versioning.cc - (loop_versioning::prune_loop_conditions): Same. - * gimple-range-edge.cc (gcond_edge_range): Same. - (gimple_outgoing_range::calc_switch_ranges): Same. - * gimple-range-fold.cc (adjust_imagpart_expr): Same. - (adjust_realpart_expr): Same. - (fold_using_range::range_of_address): Same. - (fold_using_range::relation_fold_and_or): Same. - * gimple-range-gori.cc (gori_compute::gori_compute): Same. - (range_is_either_true_or_false): Same. - * gimple-range-op.cc (cfn_toupper_tolower::get_letter_range): Same. - (cfn_clz::fold_range): Same. - (cfn_ctz::fold_range): Same. - * gimple-range-tests.cc (class test_expr_eval): Same. - * gimple-ssa-warn-alloca.cc (alloca_call_type): Same. - * ipa-cp.cc (ipa_value_range_from_jfunc): Same. - (propagate_vr_across_jump_function): Same. - (decide_whether_version_node): Same. - * ipa-prop.cc (ipa_get_value_range): Same. - * ipa-prop.h (ipa_range_set_and_normalize): Same. - * range-op.cc (get_shift_range): Same. - (value_range_from_overflowed_bounds): Same. - (value_range_with_overflow): Same. - (create_possibly_reversed_range): Same. - (equal_op1_op2_relation): Same. - (not_equal_op1_op2_relation): Same. - (lt_op1_op2_relation): Same. - (le_op1_op2_relation): Same. - (gt_op1_op2_relation): Same. - (ge_op1_op2_relation): Same. - (operator_mult::op1_range): Same. - (operator_exact_divide::op1_range): Same. - (operator_lshift::op1_range): Same. - (operator_rshift::op1_range): Same. - (operator_cast::op1_range): Same. - (operator_logical_and::fold_range): Same. - (set_nonzero_range_from_mask): Same. - (operator_bitwise_or::op1_range): Same. - (operator_bitwise_xor::op1_range): Same. - (operator_addr_expr::fold_range): Same. - (pointer_plus_operator::wi_fold): Same. - (pointer_or_operator::op1_range): Same. - (INT): Same. - (UINT): Same. - (INT16): Same. - (UINT16): Same. - (SCHAR): Same. - (UCHAR): Same. - (range_op_cast_tests): Same. - (range_op_lshift_tests): Same. - (range_op_rshift_tests): Same. - (range_op_bitwise_and_tests): Same. - (range_relational_tests): Same. - * range.cc (range_zero): Same. - (range_nonzero): Same. - * range.h (range_true): Same. - (range_false): Same. - (range_true_and_false): Same. - * tree-data-ref.cc (split_constant_offset_1): Same. - * tree-ssa-loop-ch.cc (entry_loop_condition_is_static): Same. - * tree-ssa-loop-unswitch.cc (struct unswitch_predicate): Same. - (find_unswitching_predicates_for_bb): Same. - * tree-ssa-phiopt.cc (value_replacement): Same. - * tree-ssa-threadbackward.cc - (back_threader::find_taken_edge_cond): Same. - * tree-ssanames.cc (ssa_name_has_boolean_range): Same. - * tree-vrp.cc (find_case_label_range): Same. - * value-query.cc (range_query::get_tree_range): Same. - * value-range.cc (irange::set_nonnegative): Same. - (frange::contains_p): Same. - (frange::singleton_p): Same. - (frange::internal_singleton_p): Same. - (irange::irange_set): Same. - (irange::irange_set_1bit_anti_range): Same. - (irange::irange_set_anti_range): Same. - (irange::set): Same. - (irange::operator==): Same. - (irange::singleton_p): Same. - (irange::contains_p): Same. - (irange::set_range_from_nonzero_bits): Same. - (DEFINE_INT_RANGE_INSTANCE): Same. - (INT): Same. - (UINT): Same. - (SCHAR): Same. - (UINT128): Same. - (UCHAR): Same. - (range): New. - (tree_range): New. - (range_int): New. - (range_uint): New. - (range_uint128): New. - (range_uchar): New. - (range_char): New. - (build_range3): Convert to irange wide_int API. - (range_tests_irange3): Same. - (range_tests_int_range_max): Same. - (range_tests_strict_enum): Same. - (range_tests_misc): Same. - (range_tests_nonzero_bits): Same. - (range_tests_nan): Same. - (range_tests_signed_zeros): Same. - * value-range.h (Value_Range::Value_Range): Same. - (irange::set): Same. - (irange::nonzero_p): Same. - (irange::contains_p): Same. - (range_includes_zero_p): Same. - (irange::set_nonzero): Same. - (irange::set_zero): Same. - (contains_zero_p): Same. - (frange::contains_p): Same. - * vr-values.cc - (simplify_using_ranges::op_with_boolean_value_range_p): Same. - (bounds_of_var_in_loop): Same. - (simplify_using_ranges::legacy_fold_cond_overflow): Same. - -2023-05-01 Aldy Hernandez <aldyh@redhat.com> - - * value-range.cc (irange::irange_union): Rename to... - (irange::union_): ...this. - (irange::irange_intersect): Rename to... - (irange::intersect): ...this. - * value-range.h (irange::union_): Delete. - (irange::intersect): Delete. - -2023-05-01 Aldy Hernandez <aldyh@redhat.com> - - * vr-values.cc (bounds_of_var_in_loop): Convert to irange API. - -2023-05-01 Aldy Hernandez <aldyh@redhat.com> - - * vr-values.cc (check_for_binary_op_overflow): Tidy up by using - ranger API. - (compare_ranges): Delete. - (compare_range_with_value): Delete. - (bounds_of_var_in_loop): Tidy up by using ranger API. - (simplify_using_ranges::fold_cond_with_ops): Cleanup and rename - from vrp_evaluate_conditional_warnv_with_ops_using_ranges. - (simplify_using_ranges::legacy_fold_cond_overflow): Remove - strict_overflow_p and only_ranges. - (simplify_using_ranges::legacy_fold_cond): Adjust call to - legacy_fold_cond_overflow. - (simplify_using_ranges::simplify_abs_using_ranges): Adjust for - rename. - (range_fits_type_p): Rename value_range to irange. - * vr-values.h (range_fits_type_p): Adjust prototype. - -2023-05-01 Aldy Hernandez <aldyh@redhat.com> - - * value-range.cc (irange::irange_set_anti_range): Remove uses of - tree_lower_bound and tree_upper_bound. - (irange::verify_range): Same. - (irange::operator==): Same. - (irange::singleton_p): Same. - * value-range.h (irange::tree_lower_bound): Delete. - (irange::tree_upper_bound): Delete. - (irange::lower_bound): Delete. - (irange::upper_bound): Delete. - (irange::zero_p): Remove uses of tree_lower_bound and - tree_upper_bound. - -2023-05-01 Aldy Hernandez <aldyh@redhat.com> - - * tree-ssa-loop-niter.cc (refine_value_range_using_guard): Remove - kind() call. - (determine_value_range): Same. - (record_nonwrapping_iv): Same. - (infer_loop_bounds_from_signedness): Same. - (scev_var_range_cant_overflow): Same. - * tree-vrp.cc (operand_less_p): Delete. - * tree-vrp.h (operand_less_p): Delete. - * value-range.cc (get_legacy_range): Remove uses of deprecated API. - (irange::value_inside_range): Delete. - * value-range.h (vrange::kind): Delete. - (irange::num_pairs): Remove check of m_kind. - (irange::min): Delete. - (irange::max): Delete. - -2023-05-01 Aldy Hernandez <aldyh@redhat.com> - - * gimple-fold.cc (maybe_fold_comparisons_from_match_pd): Adjust - for vrange_storage. - * gimple-range-cache.cc (sbr_vector::sbr_vector): Same. - (sbr_vector::grow): Same. - (sbr_vector::set_bb_range): Same. - (sbr_vector::get_bb_range): Same. - (sbr_sparse_bitmap::sbr_sparse_bitmap): Same. - (sbr_sparse_bitmap::set_bb_range): Same. - (sbr_sparse_bitmap::get_bb_range): Same. - (block_range_cache::block_range_cache): Same. - (ssa_global_cache::ssa_global_cache): Same. - (ssa_global_cache::get_global_range): Same. - (ssa_global_cache::set_global_range): Same. - * gimple-range-cache.h: Same. - * gimple-range-edge.cc - (gimple_outgoing_range::gimple_outgoing_range): Same. - (gimple_outgoing_range::switch_edge_range): Same. - (gimple_outgoing_range::calc_switch_ranges): Same. - * gimple-range-edge.h: Same. - * gimple-range-infer.cc - (infer_range_manager::infer_range_manager): Same. - (infer_range_manager::get_nonzero): Same. - (infer_range_manager::maybe_adjust_range): Same. - (infer_range_manager::add_range): Same. - * gimple-range-infer.h: Rename obstack_vrange_allocator to - vrange_allocator. - * tree-core.h (struct irange_storage_slot): Remove. - (struct tree_ssa_name): Remove irange_info and frange_info. Make - range_info a pointer to vrange_storage. - * tree-ssanames.cc (range_info_fits_p): Adjust for vrange_storage. - (range_info_alloc): Same. - (range_info_free): Same. - (range_info_get_range): Same. - (range_info_set_range): Same. - (get_nonzero_bits): Same. - * value-query.cc (get_ssa_name_range_info): Same. - * value-range-storage.cc (class vrange_internal_alloc): New. - (class vrange_obstack_alloc): New. - (class vrange_ggc_alloc): New. - (vrange_allocator::vrange_allocator): New. - (vrange_allocator::~vrange_allocator): New. - (vrange_storage::alloc_slot): New. - (vrange_allocator::alloc): New. - (vrange_allocator::free): New. - (vrange_allocator::clone): New. - (vrange_allocator::clone_varying): New. - (vrange_allocator::clone_undefined): New. - (vrange_storage::alloc): New. - (vrange_storage::set_vrange): Remove slot argument. - (vrange_storage::get_vrange): Same. - (vrange_storage::fits_p): Same. - (vrange_storage::equal_p): New. - (irange_storage::write_lengths_address): New. - (irange_storage::lengths_address): New. - (irange_storage_slot::alloc_slot): Remove. - (irange_storage::alloc): New. - (irange_storage_slot::irange_storage_slot): Remove. - (irange_storage::irange_storage): New. - (write_wide_int): New. - (irange_storage_slot::set_irange): Remove. - (irange_storage::set_irange): New. - (read_wide_int): New. - (irange_storage_slot::get_irange): Remove. - (irange_storage::get_irange): New. - (irange_storage_slot::size): Remove. - (irange_storage::equal_p): New. - (irange_storage_slot::num_wide_ints_needed): Remove. - (irange_storage::size): New. - (irange_storage_slot::fits_p): Remove. - (irange_storage::fits_p): New. - (irange_storage_slot::dump): Remove. - (irange_storage::dump): New. - (frange_storage_slot::alloc_slot): Remove. - (frange_storage::alloc): New. - (frange_storage_slot::set_frange): Remove. - (frange_storage::set_frange): New. - (frange_storage_slot::get_frange): Remove. - (frange_storage::get_frange): New. - (frange_storage_slot::fits_p): Remove. - (frange_storage::equal_p): New. - (frange_storage::fits_p): New. - (ggc_vrange_allocator): New. - (ggc_alloc_vrange_storage): New. - * value-range-storage.h (class vrange_storage): Rewrite. - (class irange_storage): Rewrite. - (class frange_storage): Rewrite. - (class obstack_vrange_allocator): Remove. - (class ggc_vrange_allocator): Remove. - (vrange_allocator::alloc_vrange): Remove. - (vrange_allocator::alloc_irange): Remove. - (vrange_allocator::alloc_frange): Remove. - (ggc_alloc_vrange_storage): New. - * value-range.h (class irange): Rename vrange_allocator to - irange_storage. - (class frange): Same. - -2023-04-30 Roger Sayle <roger@nextmovesoftware.com> - - * config/stormy16/stormy16.md (neghi2): Rewrite pattern using - inc to avoid clobbering the carry flag. - -2023-04-30 Andrew Pinski <apinski@marvell.com> - - * match.pd: Add patterns for "a != 0 ? FUNC(a) : CST" - for FUNC of POPCOUNT BSWAP FFS PARITY CLZ and CTZ. - -2023-04-30 Andrew Pinski <apinski@marvell.com> - - * tree-ssa-phiopt.cc (empty_bb_or_one_feeding_into_p): - Allow some builtin/internal function calls which - are known not to trap/throw. - (phiopt_worker::match_simplify_replacement): - Use name instead of getting the lhs again. - -2023-04-30 Joakim Nohlgård <joakim@nohlgard.se> - - * configure: Regenerate. - * configure.ac: Use ld -r in the check for HAVE_LD_RO_RW_SECTION_MIXING - -2023-04-29 Hans-Peter Nilsson <hp@axis.com> - - * reload1.cc (emit_insn_if_valid_for_reload_1): Rename from - emit_insn_if_valid_for_reload. - (emit_insn_if_valid_for_reload): Call new helper, and if a SET fails - to be recognized, also try emitting a parallel that clobbers - TARGET_FLAGS_REGNUM, as applicable. - -2023-04-29 Roger Sayle <roger@nextmovesoftware.com> - - * config/stormy16/stormy16.md (neghi2): Convert from a define_expand - to a define_insn. - (*rotatehi_1): New define_insn for efficient 2 insn sequence. - (*rotatehi_8, *rotaterthi_8): New define_insn to emit a swpb. - -2023-04-29 Roger Sayle <roger@nextmovesoftware.com> - - * config/stormy16/stormy16.md (any_lshift): New code iterator. - (any_or_plus): Likewise. - (any_rotate): Likewise. - (*<any_lshift>_and_internal): New define_insn_and_split to - recognize a logical shift followed by an AND, and split it - again after reload. - (*swpn): New define_insn matching xstormy16's swpn. - (*swpn_zext): New define_insn recognizing swpn followed by - zero_extendqihi2, i.e. with the high byte set to zero. - (*swpn_sext): Likewise, for swpn followed by cbw. - (*swpn_sext_2): Likewise, for an alternate RTL form. - (*swpn_zext_ior): A pre-reload splitter so that an swpn+zext+ior - sequence is split in the correct place to recognize the *swpn_zext - followed by any_or_plus (ior, xor or plus) instruction. - -2023-04-29 Mikael Pettersson <mikpelinux@gmail.com> - - PR target/105525 - * config.gcc (vax-*-linux*): Add glibc-stdint.h. - (lm32-*-uclinux*): Likewise. - -2023-04-29 Fei Gao <gaofei@eswincomputing.com> - - * config/riscv/riscv.cc (riscv_avoid_save_libcall): helper function - for riscv_use_save_libcall. - (riscv_use_save_libcall): call riscv_avoid_save_libcall. - (riscv_compute_frame_info): restructure to decouple stack allocation - for rv32e w/o save-restore. - -2023-04-28 Eugene Rozenfeld <erozen@microsoft.com> - - * doc/install.texi: Fix documentation typo - -2023-04-28 Matevos Mehrabyan <matevosmehrabyan@gmail.com> - - * config/riscv/iterators.md (only_div, paired_mod): New iterators. - (u): Add div/udiv cases. - * config/riscv/riscv-protos.h (riscv_use_divmod_expander): Prototype. - * config/riscv/riscv.cc (struct riscv_tune_param): Add field for - divmod expansion. - (rocket_tune_info, sifive_7_tune_info): Initialize new field. - (thead_c906_tune_info): Likewise. - (optimize_size_tune_info): Likewise. - (riscv_use_divmod_expander): New function. - * config/riscv/riscv.md (<u>divmod<mode>4): New expander. - -2023-04-28 Karen Sargsyan <karen1999411@gmail.com> - - * config/riscv/bitmanip.md: Added clmulr instruction. - * config/riscv/riscv-builtins.cc (AVAIL): Add new. - * config/riscv/riscv.md: (UNSPEC_CLMULR): Add new unspec type. - (type): Add clmul - * config/riscv/riscv-cmo.def: Added built-in function for clmulr. - * config/riscv/crypto.md: Move clmul[h] instructions to bitmanip.md. - * config/riscv/riscv-scalar-crypto.def: Move clmul[h] built-in - functions to riscv-cmo.def. - * config/riscv/generic.md: Add clmul to list of instructions - using the generic_imul reservation. - -2023-04-28 Jivan Hakobyan <jivanhakobyan9@gmail.com> - - * config/riscv/bitmanip.md: Added expanders for minu/maxu instructions - -2023-04-28 Andrew Pinski <apinski@marvell.com> - - PR tree-optimization/100958 - * tree-ssa-phiopt.cc (two_value_replacement): Remove. - (pass_phiopt::execute): Don't call two_value_replacement. - * match.pd (a !=/== CST1 ? CST2 : CST3): Add pattern to - handle what two_value_replacement did. - -2023-04-28 Andrew Pinski <apinski@marvell.com> - - * match.pd: Add patterns for - "(A CMP B) ? MIN/MAX<A, C> : MIN/MAX <B, C>". - -2023-04-28 Andrew Pinski <apinski@marvell.com> - - * match.pd: Factor out the deciding the min/max from - the "(cond (cmp (convert1? x) c1) (convert2? x) c2)" - pattern to ... - * fold-const.cc (minmax_from_comparison): this new function. - * fold-const.h (minmax_from_comparison): New prototype. - -2023-04-28 Roger Sayle <roger@nextmovesoftware.com> - - PR rtl-optimization/109476 - * lower-subreg.cc: Include explow.h for force_reg. - (find_decomposable_shift_zext): Pass an additional SPEED_P argument. - If decomposing a suitable LSHIFTRT and we're not splitting - ZERO_EXTEND (based on the current SPEED_P), then use a ZERO_EXTEND - instead of setting a high part SUBREG to zero, which helps combine. - (decompose_multiword_subregs): Update call to resolve_shift_zext. - -2023-04-28 Richard Biener <rguenther@suse.de> - - * tree-vect-data-refs.cc (vect_analyze_data_refs): Always - consider scatters. - * tree-vect-stmts.cc (vect_model_store_cost): Pass in the - gather-scatter info and cost emulated scatters accordingly. - (get_load_store_type): Support emulated scatters. - (vectorizable_store): Likewise. Emulate them by extracting - scalar offsets and data, doing scalar stores. - -2023-04-28 Richard Biener <rguenther@suse.de> - - * config/i386/i386.cc (ix86_vector_costs::add_stmt_cost): - Tame down element extracts and scalar loads for gather/scatter - similar to elementwise strided accesses. - -2023-04-28 Pan Li <pan2.li@intel.com> - kito-cheng <kito.cheng@sifive.com> - - * config/riscv/vector.md: Add new define split to perform - the simplification. - -2023-04-28 Richard Biener <rguenther@suse.de> - - PR ipa/109652 - * ipa-param-manipulation.cc - (ipa_param_body_adjustments::modify_expression): Allow - conversion of a register to a non-register type. Elide - conversions inside BIT_FIELD_REFs. - -2023-04-28 Richard Biener <rguenther@suse.de> - - PR tree-optimization/109644 - * tree-cfg.cc (verify_types_in_gimple_reference): Check - register constraints on the outermost VIEW_CONVERT_EXPR - only. Do not allow register or invariant bases on - multi-level or possibly variable index handled components. - -2023-04-28 Richard Biener <rguenther@suse.de> - - * gimplify.cc (gimplify_compound_lval): When there's a - non-register type produced by one of the handled component - operations make sure we get a non-register base. - -2023-04-28 Richard Biener <rguenther@suse.de> - - PR tree-optimization/108752 - * tree-vect-generic.cc (build_replicated_const): Rename - to build_replicated_int_cst and move to tree.{h,cc}. - (do_plus_minus): Adjust. - (do_negate): Likewise. - * tree-vect-stmts.cc (vectorizable_operation): Emit emulated - arithmetic vector operations in lowered form. - * tree.h (build_replicated_int_cst): Declare. - * tree.cc (build_replicated_int_cst): Moved from - tree-vect-generic.cc build_replicated_const. - -2023-04-28 Kyrylo Tkachov <kyrylo.tkachov@arm.com> - - PR target/99195 - * config/aarch64/aarch64-simd.md (aarch64_rbit<mode>): Rename to... - (aarch64_rbit<mode><vczle><vczbe>): ... This. - (neg<mode>2): Rename to... - (neg<mode>2<vczle><vczbe>): ... This. - (abs<mode>2): Rename to... - (abs<mode>2<vczle><vczbe>): ... This. - (aarch64_abs<mode>): Rename to... - (aarch64_abs<mode><vczle><vczbe>): ... This. - (one_cmpl<mode>2): Rename to... - (one_cmpl<mode>2<vczle><vczbe>): ... This. - (clrsb<mode>2): Rename to... - (clrsb<mode>2<vczle><vczbe>): ... This. - (clz<mode>2): Rename to... - (clz<mode>2<vczle><vczbe>): ... This. - (popcount<mode>2): Rename to... - (popcount<mode>2<vczle><vczbe>): ... This. - -2023-04-28 Jakub Jelinek <jakub@redhat.com> - - * gimple-range-op.cc (class cfn_sqrt): New type. - (op_cfn_sqrt): New variable. - (gimple_range_op_handler::maybe_builtin_call): Handle - CASE_CFN_SQRT{,_FN}. - -2023-04-28 Aldy Hernandez <aldyh@redhat.com> - Jakub Jelinek <jakub@redhat.com> - - * value-range.h (frange_nextafter): Declare. - * gimple-range-op.cc (class cfn_sincos): New. - (op_cfn_sin, op_cfn_cos): New variables. - (gimple_range_op_handler::maybe_builtin_call): Handle - CASE_CFN_{SIN,COS}{,_FN}. - -2023-04-28 Jakub Jelinek <jakub@redhat.com> - - * target.def (libm_function_max_error): New target hook. - * doc/tm.texi.in (TARGET_LIBM_FUNCTION_MAX_ERROR): Add. - * doc/tm.texi: Regenerated. - * targhooks.h (default_libm_function_max_error, - glibc_linux_libm_function_max_error): Declare. - * targhooks.cc: Include case-cfn-macros.h. - (default_libm_function_max_error, - glibc_linux_libm_function_max_error): New functions. - * config/linux.h (TARGET_LIBM_FUNCTION_MAX_ERROR): Redefine. - * config/linux-protos.h (linux_libm_function_max_error): Declare. - * config/linux.cc: Include target.h and targhooks.h. - (linux_libm_function_max_error): New function. - * config/arc/arc.cc: Include targhooks.h and case-cfn-macros.h. - (arc_libm_function_max_error): New function. - (TARGET_LIBM_FUNCTION_MAX_ERROR): Redefine. - * config/i386/i386.cc (ix86_libc_has_fast_function): Formatting fix. - (ix86_libm_function_max_error): New function. - (TARGET_LIBM_FUNCTION_MAX_ERROR): Redefine. - * config/rs6000/rs6000-protos.h - (rs6000_linux_libm_function_max_error): Declare. - * config/rs6000/rs6000-linux.cc: Include target.h, targhooks.h, tree.h - and case-cfn-macros.h. - (rs6000_linux_libm_function_max_error): New function. - * config/rs6000/linux.h (TARGET_LIBM_FUNCTION_MAX_ERROR): Redefine. - * config/rs6000/linux64.h (TARGET_LIBM_FUNCTION_MAX_ERROR): Redefine. - * config/or1k/or1k.cc: Include targhooks.h and case-cfn-macros.h. - (or1k_libm_function_max_error): New function. - (TARGET_LIBM_FUNCTION_MAX_ERROR): Redefine. - -2023-04-28 Alexandre Oliva <oliva@adacore.com> - - * gimple-harden-conditionals.cc (insert_edge_check_and_trap): - Move detach value calls... - (pass_harden_conditional_branches::execute): ... here. - (pass_harden_compares::execute): Detach values before - compares. - -2023-04-27 Andrew Stubbs <ams@codesourcery.com> - - * config/gcn/gcn-valu.md (cmul<conj_op><mode>3): Use gcn_gen_undef. - (cml<addsub_as><mode>4): Likewise. - (vec_addsub<mode>3): Likewise. - (cadd<rot><mode>3): Likewise. - (vec_fmaddsub<mode>4): Likewise. - (vec_fmsubadd<mode>4): Likewise, and use sub for the odd lanes. - -2023-04-27 Andrew Pinski <apinski@marvell.com> - - * tree-ssa-phiopt.cc (phiopt_early_allow): Allow for - up to 2 min/max expressions in the sequence/match code. - -2023-04-27 Andrew Pinski <apinski@marvell.com> - - * rtlanal.cc (may_trap_p_1): Treat SMIN/SMAX similar as - COMPARISON. - * tree-eh.cc (operation_could_trap_helper_p): Treate - MIN_EXPR/MAX_EXPR similar as other comparisons. - -2023-04-27 Andrew Pinski <apinski@marvell.com> - - * tree-ssa-phiopt.cc (cond_store_replacement): Remove - prototype. - (cond_if_else_store_replacement): Likewise. - (get_non_trapping): Likewise. - (store_elim_worker): Move into ... - (pass_cselim::execute): This. - -2023-04-27 Andrew Pinski <apinski@marvell.com> - - * tree-ssa-phiopt.cc (two_value_replacement): Remove - prototype. - (match_simplify_replacement): Likewise. - (factor_out_conditional_conversion): Likewise. - (value_replacement): Likewise. - (minmax_replacement): Likewise. - (spaceship_replacement): Likewise. - (cond_removal_in_builtin_zero_pattern): Likewise. - (hoist_adjacent_loads): Likewise. - (tree_ssa_phiopt_worker): Move into ... - (pass_phiopt::execute): this. - -2023-04-27 Andrew Pinski <apinski@marvell.com> - - * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker): Remove - do_store_elim argument and split that part out to ... - (store_elim_worker): This new function. - (pass_cselim::execute): Call store_elim_worker. - (pass_phiopt::execute): Update call to tree_ssa_phiopt_worker. - -2023-04-27 Jan Hubicka <jh@suse.cz> - - * cfgloopmanip.h (unloop_loops): Export. - * tree-ssa-loop-ch.cc (ch_base::copy_headers): Unloop loops - that no longer loop. - * tree-ssa-loop-ivcanon.cc (unloop_loops): Export; do not free - vectors of loops to unloop. - (canonicalize_induction_variables): Free vectors here. - (tree_unroll_loops_completely): Free vectors here. - -2023-04-27 Richard Biener <rguenther@suse.de> - - PR tree-optimization/109170 - * gimple-range-op.cc (gimple_range_op_handler::maybe_builtin_call): - Handle __builtin_expect and similar via cfn_pass_through_arg1 - and inspecting the calls fnspec. - * builtins.cc (builtin_fnspec): Handle BUILT_IN_EXPECT - and BUILT_IN_EXPECT_WITH_PROBABILITY. - -2023-04-27 Alexandre Oliva <oliva@adacore.com> - - * genmultilib: Use CONFIG_SHELL to run sub-scripts. - -2023-04-27 Aldy Hernandez <aldyh@redhat.com> - - PR tree-optimization/109639 - * ipa-cp.cc (ipa_value_range_from_jfunc): Normalize range. - (propagate_vr_across_jump_function): Same. - * ipa-fnsummary.cc (evaluate_conditions_for_known_args): Same. - * ipa-prop.h (ipa_range_set_and_normalize): New. - * value-range.cc (irange::set): Assert min and max are INTEGER_CST. - -2023-04-27 Richard Biener <rguenther@suse.de> - - * match.pd (BIT_FIELD_REF CONSTRUCTOR@0 @1 @2): Do not - create a CTOR operand in the result when simplifying GIMPLE. - -2023-04-27 Richard Biener <rguenther@suse.de> - - * gimplify.cc (gimplify_compound_lval): When the base - gimplified to a register make sure to split up chains - of operations. - -2023-04-27 Richard Biener <rguenther@suse.de> - - PR ipa/109607 - * ipa-param-manipulation.h - (ipa_param_body_adjustments::modify_expression): Add extra_stmts - argument. - * ipa-param-manipulation.cc - (ipa_param_body_adjustments::modify_expression): Likewise. - When we need a conversion and the replacement is a register - split the conversion out. - (ipa_param_body_adjustments::modify_assignment): Pass - extra_stmts to RHS modify_expression. - -2023-04-27 Jonathan Wakely <jwakely@redhat.com> - - * doc/extend.texi (Zero Length): Describe example. - -2023-04-27 Richard Biener <rguenther@suse.de> - - PR tree-optimization/109594 - * tree-ssa.cc (non_rewritable_mem_ref_base): Constrain - what we rewrite to a register based on the above. - -2023-04-26 Patrick O'Neill <patrick@rivosinc.com> - - * config/riscv/riscv.cc: Fix whitespace. - * config/riscv/sync.md: Fix whitespace. - -2023-04-26 Andrew MacLeod <amacleod@redhat.com> - - PR tree-optimization/108697 - * gimple-range-cache.cc (ssa_global_cache::clear_range): Do - not clear the vector on an out of range query. - (ssa_cache::dump): Use dump_range_query instead of get_range. - (ssa_cache::dump_range_query): New. - (ssa_lazy_cache::dump_range_query): New. - (ssa_lazy_cache::set_range): New. - * gimple-range-cache.h (ssa_cache::dump_range_query): New. - (class ssa_lazy_cache): New. - (ssa_lazy_cache::ssa_lazy_cache): New. - (ssa_lazy_cache::~ssa_lazy_cache): New. - (ssa_lazy_cache::get_range): New. - (ssa_lazy_cache::clear_range): New. - (ssa_lazy_cache::clear): New. - (ssa_lazy_cache::dump): New. - * gimple-range-path.cc (path_range_query::path_range_query): Do - not allocate a ssa_cache object nor has_cache bitmap. - (path_range_query::~path_range_query): Do not free objects. - (path_range_query::clear_cache): Remove. - (path_range_query::get_cache): Adjust. - (path_range_query::set_cache): Remove. - (path_range_query::dump): Don't call through a pointer. - (path_range_query::internal_range_of_expr): Set cache directly. - (path_range_query::reset_path): Clear cache directly. - (path_range_query::ssa_range_in_phi): Fold with globals only. - (path_range_query::compute_ranges_in_phis): Simply set range. - (path_range_query::compute_ranges_in_block): Call cache directly. - * gimple-range-path.h (class path_range_query): Replace bitmap - and cache pointer with lazy cache object. - * gimple-range.h (class assume_query): Use ssa_lazy_cache. - -2023-04-26 Andrew MacLeod <amacleod@redhat.com> - - * gimple-range-cache.cc (ssa_cache::ssa_cache): Rename. - (ssa_cache::~ssa_cache): Rename. - (ssa_cache::has_range): New. - (ssa_cache::get_range): Rename. - (ssa_cache::set_range): Rename. - (ssa_cache::clear_range): Rename. - (ssa_cache::clear): Rename. - (ssa_cache::dump): Rename and use get_range. - (ranger_cache::get_global_range): Use get_range and set_range. - (ranger_cache::range_of_def): Use get_range. - * gimple-range-cache.h (class ssa_cache): Rename class and methods. - (class ranger_cache): Use ssa_cache. - * gimple-range-path.cc (path_range_query::path_range_query): Use - ssa_cache. - (path_range_query::get_cache): Use get_range. - (path_range_query::set_cache): Use set_range. - * gimple-range-path.h (class path_range_query): Use ssa_cache. - * gimple-range.cc (assume_query::assume_range_p): Use get_range. - (assume_query::range_of_expr): Use get_range. - (assume_query::assume_query): Use set_range. - (assume_query::calculate_op): Use get_range and set_range. - * gimple-range.h (class assume_query): Use ssa_cache. - -2023-04-26 Andrew MacLeod <amacleod@redhat.com> - - * gimple-range-cache.cc (sbr_vector::sbr_vector): Add parameter - and local to optionally zero memory. - (br_vector::grow): Only zero memory if flag is set. - (class sbr_lazy_vector): New. - (sbr_lazy_vector::sbr_lazy_vector): New. - (sbr_lazy_vector::set_bb_range): New. - (sbr_lazy_vector::get_bb_range): New. - (sbr_lazy_vector::bb_range_p): New. - (block_range_cache::set_bb_range): Check flags and Use sbr_lazy_vector. - * gimple-range-gori.cc (gori_map::calculate_gori): Use - param_vrp_switch_limit. - (gori_compute::gori_compute): Use param_vrp_switch_limit. - * params.opt (vrp_sparse_threshold): Rename from evrp_sparse_threshold. - (vrp_switch_limit): Rename from evrp_switch_limit. - (vrp_vector_threshold): New. - -2023-04-26 Andrew MacLeod <amacleod@redhat.com> - - * value-relation.cc (dom_oracle::query_relation): Check early for lack - of any relation. - * value-relation.h (equiv_oracle::has_equiv_p): New. - -2023-04-26 Andrew MacLeod <amacleod@redhat.com> - - PR tree-optimization/109417 - * gimple-range-gori.cc (range_def_chain::register_dependency): - Save the ssa version number, not the pointer. - (gori_compute::may_recompute_p): No need to check if a dependency - is in the free list. - * gimple-range-gori.h (class range_def_chain): Change ssa1 and ssa2 - fields to be unsigned int instead of trees. - (ange_def_chain::depend1): Adjust. - (ange_def_chain::depend2): Adjust. - * gimple-range.h: Include "ssa.h" to inline ssa_name(). - -2023-04-26 David Edelsohn <dje.gcc@gmail.com> - - * config/rs6000/aix72.h (TARGET_DEFAULT): Use ISA_2_6_MASKS_SERVER. - * config/rs6000/aix73.h (TARGET_DEFAULT): Use ISA_2_7_MASKS_SERVER. - (PROCESSOR_DEFAULT): Use PROCESSOR_POWER8. - -2023-04-26 Patrick O'Neill <patrick@rivosinc.com> - - PR target/104338 - * config/riscv/riscv-protos.h: Add helper function stubs. - * config/riscv/riscv.cc: Add helper functions for subword masking. - * config/riscv/riscv.opt: Add command-line flags -minline-atomics and - -mno-inline-atomics. - * config/riscv/sync.md: Add masking logic and inline asm for fetch_and_op, - fetch_and_nand, CAS, and exchange ops. - * doc/invoke.texi: Add blurb regarding new command-line flags - -minline-atomics and -mno-inline-atomics. - -2023-04-26 Kyrylo Tkachov <kyrylo.tkachov@arm.com> - - * config/aarch64/aarch64-simd.md (aarch64_rshrn2<mode>_insn_le): - Reimplement using standard RTL codes instead of unspec. - (aarch64_rshrn2<mode>_insn_be): Likewise. - (aarch64_rshrn2<mode>): Adjust for the above. - * config/aarch64/aarch64.md (UNSPEC_RSHRN): Delete. - -2023-04-26 Kyrylo Tkachov <kyrylo.tkachov@arm.com> - - * config/aarch64/aarch64-simd.md (aarch64_rshrn<mode>_insn_le): Reimplement - with standard RTL codes instead of an UNSPEC. - (aarch64_rshrn<mode>_insn_be): Likewise. - (aarch64_rshrn<mode>): Adjust for the above. - * config/aarch64/predicates.md (aarch64_simd_rshrn_imm_vec): Define. - -2023-04-26 Pan Li <pan2.li@intel.com> - Ju-Zhe Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv.cc (riscv_classify_address): Allow - const0_rtx for the RVV load/store. - -2023-04-26 Aldy Hernandez <aldyh@redhat.com> - - * range-op.cc (range_op_cast_tests): Remove legacy support. - * value-range-storage.h (vrange_allocator::alloc_irange): Same. - * value-range.cc (irange::operator=): Same. - (get_legacy_range): Same. - (irange::copy_legacy_to_multi_range): Delete. - (irange::copy_to_legacy): Delete. - (irange::irange_set_anti_range): Delete. - (irange::set): Remove legacy support. - (irange::verify_range): Same. - (irange::legacy_lower_bound): Delete. - (irange::legacy_upper_bound): Delete. - (irange::legacy_equal_p): Delete. - (irange::operator==): Remove legacy support. - (irange::singleton_p): Same. - (irange::value_inside_range): Same. - (irange::contains_p): Same. - (intersect_ranges): Delete. - (irange::legacy_intersect): Delete. - (union_ranges): Delete. - (irange::legacy_union): Delete. - (irange::legacy_verbose_union_): Delete. - (irange::legacy_verbose_intersect): Delete. - (irange::irange_union): Remove legacy support. - (irange::irange_intersect): Same. - (irange::intersect): Same. - (irange::invert): Same. - (ranges_from_anti_range): Delete. - (gt_pch_nx): Adjust for legacy removal. - (gt_ggc_mx): Same. - (range_tests_legacy): Delete. - (range_tests_misc): Adjust for legacy removal. - (range_tests): Same. - * value-range.h (class irange): Same. - (irange::legacy_mode_p): Delete. - (ranges_from_anti_range): Delete. - (irange::nonzero_p): Adjust for legacy removal. - (irange::lower_bound): Same. - (irange::upper_bound): Same. - (irange::union_): Same. - (irange::intersect): Same. - (irange::set_nonzero): Same. - (irange::set_zero): Same. - * vr-values.cc (simplify_using_ranges::legacy_fold_cond_overflow): Same. - -2023-04-26 Aldy Hernandez <aldyh@redhat.com> - - * value-range.cc (irange::copy_legacy_to_multi_range): Rewrite use - of range_has_numeric_bounds_p with irange API. - (range_has_numeric_bounds_p): Delete. - * value-range.h (range_has_numeric_bounds_p): Delete. - -2023-04-26 Aldy Hernandez <aldyh@redhat.com> - - * tree-data-ref.cc (compute_distributive_range): Replace uses of - range_int_cst_p with irange API. - * tree-ssa-strlen.cc (get_range_strlen_dynamic): Same. - * tree-vrp.h (range_int_cst_p): Delete. - * vr-values.cc (check_for_binary_op_overflow): Replace usees of - range_int_cst_p with irange API. - (vr_set_zero_nonzero_bits): Same. - (range_fits_type_p): Same. - (simplify_using_ranges::simplify_casted_cond): Same. - * tree-vrp.cc (range_int_cst_p): Remove. - -2023-04-26 Aldy Hernandez <aldyh@redhat.com> - - * tree-ssa-strlen.cc (compare_nonzero_chars): Convert to wide_ints. - -2023-04-26 Aldy Hernandez <aldyh@redhat.com> - - * builtins.cc (expand_builtin_strnlen): Rewrite deprecated irange - API uses to new API. - * gimple-predicate-analysis.cc (find_var_cmp_const): Same. - * internal-fn.cc (get_min_precision): Same. - * match.pd: Same. - * tree-affine.cc (expr_to_aff_combination): Same. - * tree-data-ref.cc (dr_step_indicator): Same. - * tree-dfa.cc (get_ref_base_and_extent): Same. - * tree-scalar-evolution.cc (iv_can_overflow_p): Same. - * tree-ssa-phiopt.cc (two_value_replacement): Same. - * tree-ssa-pre.cc (insert_into_preds_of_block): Same. - * tree-ssa-reassoc.cc (optimize_range_tests_to_bit_test): Same. - * tree-ssa-strlen.cc (compare_nonzero_chars): Same. - * tree-switch-conversion.cc (bit_test_cluster::emit): Same. - * tree-vect-patterns.cc (vect_recog_divmod_pattern): Same. - * tree.cc (get_range_pos_neg): Same. - -2023-04-26 Aldy Hernandez <aldyh@redhat.com> - - * ipa-prop.cc (ipa_print_node_jump_functions_for_edge): Use - vrange::dump instead of ad-hoc dumper. - * tree-ssa-strlen.cc (dump_strlen_info): Same. - * value-range-pretty-print.cc (visit): Pass TDF_NOUID to - dump_generic_node. - -2023-04-26 Aldy Hernandez <aldyh@redhat.com> - - * range-op.cc (operator_cast::op1_range): Use - create_possibly_reversed_range. - (operator_bitwise_and::simple_op1_range_solver): Same. - * value-range.cc (swap_out_of_order_endpoints): Delete. - (irange::set): Remove call to swap_out_of_order_endpoints. - -2023-04-26 Aldy Hernandez <aldyh@redhat.com> - - * builtins.cc (determine_block_size): Convert use of legacy API to - get_legacy_range. - * gimple-array-bounds.cc (check_out_of_bounds_and_warn): Same. - (array_bounds_checker::check_array_ref): Same. - * gimple-ssa-warn-restrict.cc - (builtin_memref::extend_offset_range): Same. - * ipa-cp.cc (ipcp_store_vr_results): Same. - * ipa-fnsummary.cc (set_switch_stmt_execution_predicate): Same. - * ipa-prop.cc (struct ipa_vr_ggc_hash_traits): Same. - (ipa_write_jump_function): Same. - * pointer-query.cc (get_size_range): Same. - * tree-data-ref.cc (split_constant_offset): Same. - * tree-ssa-strlen.cc (get_range): Same. - (maybe_diag_stxncpy_trunc): Same. - (strlen_pass::get_len_or_size): Same. - (strlen_pass::count_nonzero_bytes_addr): Same. - * tree-vect-patterns.cc (vect_get_range_info): Same. - * value-range.cc (irange::maybe_anti_range): Remove. - (get_legacy_range): New. - (irange::copy_to_legacy): Use get_legacy_range. - (ranges_from_anti_range): Same. - * value-range.h (class irange): Remove maybe_anti_range. - (get_legacy_range): New. - * vr-values.cc (check_for_binary_op_overflow): Convert use of - legacy API to get_legacy_range. - (compare_ranges): Same. - (compare_range_with_value): Same. - (bounds_of_var_in_loop): Same. - (find_case_label_ranges): Same. - (simplify_using_ranges::simplify_switch_using_ranges): Same. - -2023-04-26 Aldy Hernandez <aldyh@redhat.com> - - * value-range-pretty-print.cc (vrange_printer::visit): Remove - constant_p use. - * value-range.cc (irange::constant_p): Remove. - (irange::get_nonzero_bits_from_range): Remove constant_p use. - * value-range.h (class irange): Remove constant_p. - (irange::num_pairs): Remove constant_p use. - -2023-04-26 Aldy Hernandez <aldyh@redhat.com> - - * value-range.cc (irange::copy_legacy_to_multi_range): Remove - symbolics support. - (irange::set): Same. - (irange::legacy_lower_bound): Same. - (irange::legacy_upper_bound): Same. - (irange::contains_p): Same. - (range_tests_legacy): Same. - (irange::normalize_addresses): Remove. - (irange::normalize_symbolics): Remove. - (irange::symbolic_p): Remove. - * value-range.h (class irange): Remove symbolic_p, - normalize_symbolics, and normalize_addresses. - * vr-values.cc (simplify_using_ranges::two_valued_val_range_p): - Remove symbolics support. - -2023-04-26 Aldy Hernandez <aldyh@redhat.com> - - * value-range.cc (irange::may_contain_p): Remove. - * value-range.h (range_includes_zero_p): Rewrite may_contain_p - usage with contains_p. - * vr-values.cc (compare_range_with_value): Same. - -2023-04-26 Aldy Hernandez <aldyh@redhat.com> - - * tree-vrp.cc (supported_types_p): Remove. - (defined_ranges_p): Remove. - (range_fold_binary_expr): Remove. - (range_fold_unary_expr): Remove. - * tree-vrp.h (range_fold_unary_expr): Remove. - (range_fold_binary_expr): Remove. - -2023-04-26 Aldy Hernandez <aldyh@redhat.com> - - * ipa-cp.cc (ipa_vr_operation_and_type_effects): Convert to ranger API. - (ipa_value_range_from_jfunc): Same. - (propagate_vr_across_jump_function): Same. - * ipa-fnsummary.cc (evaluate_conditions_for_known_args): Same. - * ipa-prop.cc (ipa_compute_jump_functions_for_edge): Same. - * vr-values.cc (bounds_of_var_in_loop): Same. - -2023-04-26 Aldy Hernandez <aldyh@redhat.com> - - * gimple-array-bounds.cc (array_bounds_checker::get_value_range): - Add irange argument. - (check_out_of_bounds_and_warn): Remove check for vr. - (array_bounds_checker::check_array_ref): Remove pointer qualifier - for vr and adjust accordingly. - * gimple-array-bounds.h (get_value_range): Add irange argument. - * value-query.cc (class equiv_allocator): Delete. - (range_query::get_value_range): Delete. - (range_query::range_query): Remove allocator access. - (range_query::~range_query): Same. - * value-query.h (get_value_range): Delete. - * vr-values.cc - (simplify_using_ranges::op_with_boolean_value_range_p): Remove - call to get_value_range. - (check_for_binary_op_overflow): Same. - (simplify_using_ranges::legacy_fold_cond_overflow): Same. - (simplify_using_ranges::simplify_abs_using_ranges): Same. - (simplify_using_ranges::simplify_cond_using_ranges_1): Same. - (simplify_using_ranges::simplify_casted_cond): Same. - (simplify_using_ranges::simplify_switch_using_ranges): Same. - (simplify_using_ranges::two_valued_val_range_p): Same. - -2023-04-26 Aldy Hernandez <aldyh@redhat.com> - - * vr-values.cc - (simplify_using_ranges::vrp_evaluate_conditional_warnv_with_ops): - Rename to... - (simplify_using_ranges::legacy_fold_cond_overflow): ...this. - (simplify_using_ranges::vrp_visit_cond_stmt): Rename to... - (simplify_using_ranges::legacy_fold_cond): ...this. - (simplify_using_ranges::fold_cond): Rename - vrp_evaluate_conditional_warnv_with_ops to - legacy_fold_cond_overflow. - * vr-values.h (class vr_values): Replace vrp_visit_cond_stmt and - vrp_evaluate_conditional_warnv_with_ops with legacy_fold_cond and - legacy_fold_cond_overflow respectively. - -2023-04-26 Aldy Hernandez <aldyh@redhat.com> - - * vr-values.cc (get_vr_for_comparison): Remove. - (compare_name_with_value): Same. - (vrp_evaluate_conditional_warnv_with_ops): Remove calls to - compare_name_with_value. - * vr-values.h: Remove compare_name_with_value. - Remove get_vr_for_comparison. - -2023-04-26 Roger Sayle <roger@nextmovesoftware.com> - - * config/stormy16/stormy16.md (bswaphi2): New define_insn. - (bswapsi2): New define_insn. - (swaphi): New define_insn to exchange two registers (swpw). - (define_peephole2): Recognize exchange of registers as swaphi. - -2023-04-26 Richard Biener <rguenther@suse.de> - - * gimple-range-path.cc (path_range_query::compute_outgoing_relations): - Avoid last_stmt. - * ipa-pure-const.cc (pass_nothrow::execute): Likewise. - * predict.cc (apply_return_prediction): Likewise. - * sese.cc (set_ifsese_condition): Likewise. Simplify. - * tree-cfg.cc (assert_unreachable_fallthru_edge_p): Avoid last_stmt. - (make_edges_bb): Likewise. - (make_cond_expr_edges): Likewise. - (end_recording_case_labels): Likewise. - (make_gimple_asm_edges): Likewise. - (cleanup_dead_labels): Likewise. - (group_case_labels): Likewise. - (gimple_can_merge_blocks_p): Likewise. - (gimple_merge_blocks): Likewise. - (find_taken_edge): Likewise. Also handle empty fallthru blocks. - (gimple_duplicate_sese_tail): Avoid last_stmt. - (find_loop_dist_alias): Likewise. - (gimple_block_ends_with_condjump_p): Likewise. - (gimple_purge_dead_eh_edges): Likewise. - (gimple_purge_dead_abnormal_call_edges): Likewise. - (pass_warn_function_return::execute): Likewise. - (execute_fixup_cfg): Likewise. - * tree-eh.cc (redirect_eh_edge_1): Likewise. - (pass_lower_resx::execute): Likewise. - (pass_lower_eh_dispatch::execute): Likewise. - (cleanup_empty_eh): Likewise. - * tree-if-conv.cc (if_convertible_bb_p): Likewise. - (predicate_bbs): Likewise. - (ifcvt_split_critical_edges): Likewise. - * tree-loop-distribution.cc (create_edge_for_control_dependence): - Likewise. - (loop_distribution::transform_reduction_loop): Likewise. - * tree-parloops.cc (transform_to_exit_first_loop_alt): Likewise. - (try_transform_to_exit_first_loop_alt): Likewise. - (transform_to_exit_first_loop): Likewise. - (create_parallel_loop): Likewise. - * tree-scalar-evolution.cc (get_loop_exit_condition): Likewise. - * tree-ssa-dce.cc (mark_last_stmt_necessary): Likewise. - (eliminate_unnecessary_stmts): Likewise. - * tree-ssa-dom.cc - (dom_opt_dom_walker::set_global_ranges_from_unreachable_edges): - Likewise. - * tree-ssa-ifcombine.cc (ifcombine_ifandif): Likewise. - (pass_tree_ifcombine::execute): Likewise. - * tree-ssa-loop-ch.cc (entry_loop_condition_is_static): Likewise. - (should_duplicate_loop_header_p): Likewise. - * tree-ssa-loop-ivcanon.cc (create_canonical_iv): Likewise. - (tree_estimate_loop_size): Likewise. - (try_unroll_loop_completely): Likewise. - * tree-ssa-loop-ivopts.cc (tree_ssa_iv_optimize_loop): Likewise. - * tree-ssa-loop-manip.cc (ip_normal_pos): Likewise. - (canonicalize_loop_ivs): Likewise. - * tree-ssa-loop-niter.cc (determine_value_range): Likewise. - (bound_difference): Likewise. - (number_of_iterations_popcount): Likewise. - (number_of_iterations_cltz): Likewise. - (number_of_iterations_cltz_complement): Likewise. - (simplify_using_initial_conditions): Likewise. - (number_of_iterations_exit_assumptions): Likewise. - (loop_niter_by_eval): Likewise. - (estimate_numbers_of_iterations): Likewise. - -2023-04-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/vector.md: Refine vmadc/vmsbc RA constraint. - -2023-04-26 Kewen Lin <linkw@linux.ibm.com> - - PR target/108758 - * config/rs6000/rs6000-builtins.def - (__builtin_vsx_scalar_cmp_exp_qp_eq, __builtin_vsx_scalar_cmp_exp_qp_gt - __builtin_vsx_scalar_cmp_exp_qp_lt, - __builtin_vsx_scalar_cmp_exp_qp_unordered): Move from stanza ieee128-hw - to power9-vector. - -2023-04-26 Kewen Lin <linkw@linux.ibm.com> - - PR target/109069 - * config/rs6000/altivec.md (sldoi_to_mov<mode>): Replace predicate - easy_vector_constant with const_vector_each_byte_same, add - handlings in preparation for !easy_vector_constant, and update - VECTOR_UNIT_ALTIVEC_OR_VSX_P with VECTOR_MEM_ALTIVEC_OR_VSX_P. - * config/rs6000/predicates.md (const_vector_each_byte_same): New - predicate. - -2023-04-26 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/vector.md (*pred_cmp<mode>_merge_tie_mask): New pattern. - (*pred_ltge<mode>_merge_tie_mask): Ditto. - (*pred_cmp<mode>_scalar_merge_tie_mask): Ditto. - (*pred_eqne<mode>_scalar_merge_tie_mask): Ditto. - (*pred_cmp<mode>_extended_scalar_merge_tie_mask): Ditto. - (*pred_eqne<mode>_extended_scalar_merge_tie_mask): Ditto. - (*pred_cmp<mode>_narrow_merge_tie_mask): Ditto. - -2023-04-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/vector.md: Fix redundant vmv1r.v. - -2023-04-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/vector.md: Fix RA constraint. - -2023-04-26 Pan Li <pan2.li@intel.com> - - PR target/109272 - * tree-ssa-sccvn.cc (vn_reference_eq): add type vector subparts - check for vn_reference equal. - -2023-04-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv-opts.h (enum riscv_autovec_preference_enum): Add enum for - auto-vectorization preference. - (enum riscv_autovec_lmul_enum): Add enum for choosing LMUL of RVV - auto-vectorization. - * config/riscv/riscv.opt: Add compile option for RVV auto-vectorization. - -2023-04-26 Jivan Hakobyan <jivanhakobyan9@gmail.com> - - * config/riscv/bitmanip.md: Updated predicates of bclri<mode>_nottwobits - and bclridisi_nottwobits patterns. - * config/riscv/predicates.md: (not_uimm_extra_bit_or_nottwobits): Adjust - predicate to avoid splitting arith constants. - (const_nottwobits_not_arith_operand): New predicate. - -2023-04-25 Hans-Peter Nilsson <hp@axis.com> - - * recog.cc (peep2_attempt, peep2_update_life): Correct - head-comment description of parameter match_len. - -2023-04-25 Vineet Gupta <vineetg@rivosinc.com> - - * config/riscv/riscv.md: riscv_move_integer() drop in_splitter arg. - riscv_split_symbol() drop in_splitter arg. - * config/riscv/riscv.cc: riscv_move_integer() drop in_splitter arg. - riscv_split_symbol() drop in_splitter arg. - riscv_force_temporary() drop in_splitter arg. - * config/riscv/riscv-protos.h: riscv_move_integer() drop in_splitter arg. - riscv_split_symbol() drop in_splitter arg. - -2023-04-25 Eric Botcazou <ebotcazou@adacore.com> - - * tree-ssa.cc (insert_debug_temp_for_var_def): Do not create - superfluous debug temporaries for single GIMPLE assignments. - -2023-04-25 Richard Biener <rguenther@suse.de> - - PR tree-optimization/109609 - * attr-fnspec.h (arg_max_access_size_given_by_arg_p): - Clarify semantics. - * tree-ssa-alias.cc (check_fnspec): Correctly interpret - the size given by arg_max_access_size_given_by_arg_p as - maximum, not exact, size. - -2023-04-25 Kyrylo Tkachov <kyrylo.tkachov@arm.com> - - PR target/99195 - * config/aarch64/aarch64-simd.md (orn<mode>3): Rename to... - (orn<mode>3<vczle><vczbe>): ... This. - (bic<mode>3): Rename to... - (bic<mode>3<vczle><vczbe>): ... This. - (<su><maxmin><mode>3): Rename to... - (<su><maxmin><mode>3<vczle><vczbe>): ... This. - -2023-04-25 Kyrylo Tkachov <kyrylo.tkachov@arm.com> - - * config/aarch64/aarch64-simd.md (<su_optab>div<mode>3): New define_expand. - * config/aarch64/iterators.md (VQDIV): New mode iterator. - (vnx2di): New mode attribute. - -2023-04-25 Richard Biener <rguenther@suse.de> - - PR rtl-optimization/109585 - * tree-ssa-alias.cc (aliasing_component_refs_p): Fix typo. - -2023-04-25 Jakub Jelinek <jakub@redhat.com> - - PR target/109566 - * config/rs6000/rs6000.cc (rs6000_is_valid_rotate_dot_mask): For - !TARGET_64BIT, don't return true if UINTVAL (mask) << (63 - nb) - is larger than signed int maximum. - -2023-04-25 Martin Liska <mliska@suse.cz> - - * doc/gcov.texi: Document the new "calls" field and document - the API bump. Mention also "block_ids" for lines. - * gcov.cc (output_intermediate_json_line): Output info about - calls and extend branches as well. - (generate_results): Bump version to 2. - (output_line_details): Use block ID instead of a non-sensual - index. - -2023-04-25 Roger Sayle <roger@nextmovesoftware.com> - - * config/stormy16/stormy16.md (zero_extendqihi2): Restore/fix - length attribute for the first (memory operand) alternative. - -2023-04-25 Victor Do Nascimento <victor.donascimento@arm.com> - - * config/aarch64/aarch64-simd.md(aarch64_simd_stp<mode>): New. - * config/aarch64/constraints.md: Make "Umn" relaxed memory - constraint. - * config/aarch64/iterators.md(ldpstp_vel_sz): New. - -2023-04-25 Aldy Hernandez <aldyh@redhat.com> - - * value-range.cc (frange::set): Adjust constructor. - * value-range.h (nan_state::nan_state): Replace default - constructor with one taking an argument. - -2023-04-25 Aldy Hernandez <aldyh@redhat.com> - - * ipa-cp.cc (ipa_range_contains_p): New. - (decide_whether_version_node): Use it. - -2023-04-24 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org> - - * tree-ssa-forwprop.cc (is_combined_permutation_identity): Try to - simplify two successive VEC_PERM_EXPRs with same VLA mask, - where mask chooses elements in reverse order. - -2023-04-24 Andrew Pinski <apinski@marvell.com> - - * tree-ssa-phiopt.cc (match_simplify_replacement): Add new arguments - and support diamond shaped basic block form. - (tree_ssa_phiopt_worker): Update call to match_simplify_replacement - -2023-04-24 Andrew Pinski <apinski@marvell.com> - - * tree-ssa-phiopt.cc (empty_bb_or_one_feeding_into_p): - Instead of calling last_and_only_stmt, look for the last statement - manually. - -2023-04-24 Andrew Pinski <apinski@marvell.com> - - * tree-ssa-phiopt.cc (empty_bb_or_one_feeding_into_p): - New function. - (match_simplify_replacement): Call - empty_bb_or_one_feeding_into_p instead of doing it inline. - -2023-04-24 Andrew Pinski <apinski@marvell.com> - - PR tree-optimization/68894 - * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker): Remove the - continue for the do_hoist_loads diamond case. - -2023-04-24 Andrew Pinski <apinski@marvell.com> - - * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker): Rearrange - code for better code readability. - -2023-04-24 Andrew Pinski <apinski@marvell.com> - - PR tree-optimization/109604 - * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker): Move the - diamond form check from ... - (minmax_replacement): Here. - -2023-04-24 Patrick Palka <ppalka@redhat.com> - - * tree.cc (strip_array_types): Don't define here. - (is_typedef_decl): Don't define here. - (typedef_variant_p): Don't define here. - * tree.h (strip_array_types): Define here. - (is_typedef_decl): Define here. - (typedef_variant_p): Define here. - -2023-04-24 Frederik Harwath <frederik@codesourcery.com> - - * doc/generic.texi (OpenMP): Add != to allowed - conditions and state that vars can be unsigned. - * tree.def (OMP_FOR): Likewise. - -2023-04-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com> - - * config/aarch64/aarch64-simd.md (mulv2di3): New expander. - -2023-04-24 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> - - * doc/install.texi: Consistently use Solaris rather than Solaris 2. - Remove explicit Solaris 11 references. - Markup fixes. - (Options specification, --with-gnu-as): as and gas always differ - on Solaris. - Remove /usr/ccs/bin reference. - (Installing GCC: Binaries, Solaris (SPARC, Intel)): Remove. - (i?86-*-solaris2*): Merge assembler, linker recommendations ... - (*-*-solaris2*): ... here. - Update bundled GCC versions. - Don't refer to pre-built binaries. - Remove /bin/sh warning. - Update assembler, linker recommendations. - Document GNAT bootstrap compiler. - (sparc-sun-solaris2*): Remove non-UltraSPARC reference. - (sparc64-*-solaris2*): Move content... - (sparcv9-*-solaris2*): ...here. - Add GDC for 64-bit bootstrap compilers. - -2023-04-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com> - - PR target/109406 - * config/aarch64/aarch64-sve.md (<optab><mode>3): Handle TARGET_SVE2 MUL - case. - * config/aarch64/aarch64-sve2.md (*aarch64_mul_unpredicated_<mode>): New - pattern. - -2023-04-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com> - - * config/aarch64/aarch64-simd.md (aarch64_<sur>abal2<mode>): Rename to... - (aarch64_<su>abal2<mode>_insn): ... This. Use RTL codes instead of unspec. - (aarch64_<su>abal2<mode>): New define_expand. - * config/aarch64/aarch64.cc (aarch64_abd_rtx_p): New function. - (aarch64_rtx_costs): Handle ABD rtxes. - * config/aarch64/aarch64.md (UNSPEC_SABAL2, UNSPEC_UABAL2): Delete. - * config/aarch64/iterators.md (ABAL2): Delete. - (sur): Remove handling of UNSPEC_UABAL2 and UNSPEC_SABAL2. - -2023-04-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com> - - * config/aarch64/aarch64-simd.md (aarch64_<sur>abal<mode>): Rename to... - (aarch64_<su>abal<mode>): ... This. Use RTL codes instead of unspec. - (<sur>sadv16qi): Rename to... - (<su>sadv16qi): ... This. Adjust for the above. - * config/aarch64/aarch64-sve.md (<sur>sad<vsi2qi>): Rename to... - (<su>sad<vsi2qi>): ... This. Adjust for the above. - * config/aarch64/aarch64.md (UNSPEC_SABAL, UNSPEC_UABAL): Delete. - * config/aarch64/iterators.md (ABAL): Delete. - (sur): Remove handling of UNSPEC_SABAL and UNSPEC_UABAL. - -2023-04-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com> - - * config/aarch64/aarch64-simd.md (aarch64_<sur>abdl2<mode>): Rename to... - (aarch64_<su>abdl2<mode>_insn): ... This. Use RTL codes instead of unspec. - (aarch64_<su>abdl2<mode>): New define_expand. - * config/aarch64/aarch64.md (UNSPEC_SABDL2, UNSPEC_UABDL2): Delete. - * config/aarch64/iterators.md (ABDL2): Delete. - (sur): Remove handling of UNSPEC_SABDL2 and UNSPEC_UABDL2. - -2023-04-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com> - - * config/aarch64/aarch64-simd.md (aarch64_<sur>abdl<mode>): Rename to... - (aarch64_<su>abdl<mode>): ... This. Use standard RTL ops instead of - unspec. - * config/aarch64/aarch64.md (UNSPEC_SABDL, UNSPEC_UABDL): Delete. - * config/aarch64/iterators.md (ABDL): Delete. - (sur): Remove handling of UNSPEC_SABDL and UNSPEC_UABDL. - -2023-04-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com> - - * config/aarch64/aarch64-simd.md - (*aarch64_<su>addlv<VDQV_L:mode>_ze<GPI:mode>): New pattern. - -2023-04-24 Richard Biener <rguenther@suse.de> - - * gimple-ssa-split-paths.cc (is_feasible_trace): Avoid - last_stmt. - * graphite-scop-detection.cc (single_pred_cond_non_loop_exit): - Likewise. - * ipa-fnsummary.cc (set_cond_stmt_execution_predicate): Likewise. - (set_switch_stmt_execution_predicate): Likewise. - (phi_result_unknown_predicate): Likewise. - * ipa-prop.cc (compute_complex_ancestor_jump_func): Likewise. - (ipa_analyze_indirect_call_uses): Likewise. - * predict.cc (predict_iv_comparison): Likewise. - (predict_extra_loop_exits): Likewise. - (predict_loops): Likewise. - (tree_predict_by_opcode): Likewise. - * gimple-predicate-analysis.cc (predicate::init_from_control_deps): - Likewise. - * gimple-pretty-print.cc (dump_implicit_edges): Likewise. - * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker): Likewise. - (replace_phi_edge_with_variable): Likewise. - (two_value_replacement): Likewise. - (value_replacement): Likewise. - (minmax_replacement): Likewise. - (spaceship_replacement): Likewise. - (cond_removal_in_builtin_zero_pattern): Likewise. - * tree-ssa-reassoc.cc (maybe_optimize_range_tests): Likewise. - * tree-ssa-sccvn.cc (vn_phi_eq): Likewise. - (vn_phi_lookup): Likewise. - (vn_phi_insert): Likewise. - * tree-ssa-structalias.cc (compute_points_to_sets): Likewise. - * tree-ssa-threadbackward.cc (back_threader::maybe_thread_block): - Likewise. - (back_threader_profitability::possibly_profitable_path_p): - Likewise. - * tree-ssa-threadedge.cc (jump_threader::thread_outgoing_edges): - Likewise. - * tree-switch-conversion.cc (pass_convert_switch::execute): - Likewise. - (pass_lower_switch<O0>::execute): Likewise. - * tree-tailcall.cc (tree_optimize_tail_calls_1): Likewise. - * tree-vect-loop-manip.cc (vect_loop_versioning): Likewise. - * tree-vect-slp.cc (vect_slp_function): Likewise. - * tree-vect-stmts.cc (cfun_returns): Likewise. - * tree-vectorizer.cc (vect_loop_vectorized_call): Likewise. - (vect_loop_dist_alias_call): Likewise. - -2023-04-24 Richard Biener <rguenther@suse.de> - - * cfgcleanup.cc (outgoing_edges_match): Use FORWARDER_BLOCK_P. - -2023-04-24 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv-vsetvl.cc - (vector_infos_manager::all_avail_in_compatible_p): New function. - (pass_vsetvl::refine_vsetvls): Optimize vsetvls. - * config/riscv/riscv-vsetvl.h: New function. - -2023-04-24 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv-vsetvl.cc (pass_vsetvl::pre_vsetvl): Add function - comment for cleanup_insns. - -2023-04-24 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/vector-iterators.md: New unspec to refine fault first load pattern. - * config/riscv/vector.md: Refine fault first load pattern to erase avl from instructions - with the fault first load property. - -2023-04-23 Kyrylo Tkachov <kyrylo.tkachov@arm.com> - - * config/aarch64/aarch64-simd.md (aarch64_float_truncate_lo_): Rename to... - (aarch64_float_truncate_lo_<mode><vczle><vczbe>): ... This. - -2023-04-23 Kyrylo Tkachov <kyrylo.tkachov@arm.com> - - PR target/99195 - * config/aarch64/aarch64-simd.md (aarch64_addp<mode>): Rename to... - (aarch64_addp<mode><vczle><vczbe>): ... This. - -2023-04-23 Roger Sayle <roger@nextmovesoftware.com> - - * config/stormy16/stormy16.cc (xstormy16_rtx_costs): Rewrite to - provide reasonable values for common arithmetic operations and - immediate operands (in several machine modes). - -2023-04-23 Roger Sayle <roger@nextmovesoftware.com> - - * config/stormy16/stormy16.cc (xstormy16_print_operand): Add %h - format specifier to output high_part register name of SImode reg. - * config/stormy16/stormy16.md (extendhisi2): New define_insn. - (zero_extendqihi2): Fix lengths, consistent formatting and add - "and Rx,#255" alternative, for documentation purposes. - (zero_extendhisi2): New define_insn. - -2023-04-23 Roger Sayle <roger@nextmovesoftware.com> - - * config/stormy16/stormy16.cc (xstormy16_output_shift): Implement - SImode shifts by two by performing a single bit SImode shift twice. - -2023-04-23 Aldy Hernandez <aldyh@redhat.com> - - PR tree-optimization/109593 - * value-range.cc (frange::operator==): Handle NANs. - -2023-04-23 liuhongt <hongtao.liu@intel.com> - - PR rtl-optimization/108707 - * ira-costs.cc (scan_one_insn): Use NO_REGS instead of - GENERAL_REGS when preferred reg_class is not known. - -2023-04-22 Andrew Pinski <apinski@marvell.com> - - * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker): - Change the code around slightly to move diamond - handling for do_store_elim/do_hoist_loads out of - the big if/else. - -2023-04-22 Andrew Pinski <apinski@marvell.com> - - * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker): - Remove check on empty_block_p. - -2023-04-22 Jakub Jelinek <jakub@redhat.com> - - PR bootstrap/109589 - * system.h (class auto_mpz): Workaround PR62101 bug in GCC 4.8 and 4.9. - * realmpfr.h (class auto_mpfr): Likewise. - -2023-04-22 Jakub Jelinek <jakub@redhat.com> - - PR tree-optimization/109583 - * match.pd (fneg/fadd simplify): Don't call related_vector_mode - if vec_mode is not VECTOR_MODE_P. - -2023-04-22 Jan Hubicka <hubicka@ucw.cz> - Ondrej Kubanek <kubanek0ondrej@gmail.com> - - * cfgloopmanip.h (adjust_loop_info_after_peeling): Declare. - * tree-ssa-loop-ch.cc (ch_base::copy_headers): Fix updating of - loop profile and bounds after header duplication. - * tree-ssa-loop-ivcanon.cc (adjust_loop_info_after_peeling): - Break out from try_peel_loop; fix handling of 0 iterations. - (try_peel_loop): Use adjust_loop_info_after_peeling. - -2023-04-21 Andrew MacLeod <amacleod@redhat.com> - - PR tree-optimization/109546 - * tree-vrp.cc (remove_unreachable::remove_and_update_globals): Do - not fold conditions with ADDR_EXPR early. - -2023-04-21 Kyrylo Tkachov <kyrylo.tkachov@arm.com> - - * config/aarch64/aarch64.md (aarch64_umax<mode>3_insn): Delete. - (umax<mode>3): Emit raw UMAX RTL instead of going through gen_ function - for umax. - (<optab><mode>3): New define_expand for MAXMIN_NOUMAX codes. - (*aarch64_<optab><mode>3_zero): Define. - (*aarch64_<optab><mode>3_cssc): Likewise. - * config/aarch64/iterators.md (maxminand): New code attribute. - -2023-04-21 Kyrylo Tkachov <kyrylo.tkachov@arm.com> - - PR target/108779 - * config/aarch64/aarch64-opts.h (enum aarch64_tp_reg): Define. - * config/aarch64/aarch64-protos.h (aarch64_output_load_tp): - Define prototype. - * config/aarch64/aarch64.cc (aarch64_tpidr_register): Declare. - (aarch64_override_options_internal): Handle the above. - (aarch64_output_load_tp): New function. - * config/aarch64/aarch64.md (aarch64_load_tp_hard): Call - aarch64_output_load_tp. - * config/aarch64/aarch64.opt (aarch64_tp_reg): Define enum. - (mtp=): New option. - * doc/invoke.texi (AArch64 Options): Document -mtp=. - -2023-04-21 Kyrylo Tkachov <kyrylo.tkachov@arm.com> - - PR target/99195 - * config/aarch64/aarch64-simd.md (add_vec_concat_subst_le): Define. - (add_vec_concat_subst_be): Likewise. - (vczle): Likewise. - (vczbe): Likewise. - (add<mode>3): Rename to... - (add<mode>3<vczle><vczbe>): ... This. - (sub<mode>3): Rename to... - (sub<mode>3<vczle><vczbe>): ... This. - (mul<mode>3): Rename to... - (mul<mode>3<vczle><vczbe>): ... This. - (and<mode>3): Rename to... - (and<mode>3<vczle><vczbe>): ... This. - (ior<mode>3): Rename to... - (ior<mode>3<vczle><vczbe>): ... This. - (xor<mode>3): Rename to... - (xor<mode>3<vczle><vczbe>): ... This. - * config/aarch64/iterators.md (VDZ): Define. - -2023-04-21 Patrick Palka <ppalka@redhat.com> - - * tree.cc (walk_tree_1): Avoid repeatedly dereferencing tp - and type_p. - -2023-04-21 Jan Hubicka <jh@suse.cz> - - * tree-ssa-loop-ch.cc (ch_base::copy_headers): Fix previous - commit. - -2023-04-21 Vineet Gupta <vineetg@rivosinc.com> - - * expmed.h (x_shift*_cost): convert to int [speed][mode][shift]. - (shift*_cost_ptr ()): Access x_shift*_cost array directly. - -2023-04-21 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org> - - * config/aarch64/aarch64.cc (aarch64_simd_dup_constant): Use - force_reg instead of copy_to_mode_reg. - (aarch64_expand_vector_init): Likewise. - -2023-04-21 Uroš Bizjak <ubizjak@gmail.com> - - * config/i386/i386.h (REG_OK_FOR_INDEX_P, REG_OK_FOR_BASE_P): Remove. - (REG_OK_FOR_INDEX_NONSTRICT_P, REG_OK_FOR_BASE_NONSTRICT_P): Ditto. - (REG_OK_FOR_INDEX_STRICT_P, REG_OK_FOR_BASE_STRICT_P): Ditto. - (FIRST_INDEX_REG, LAST_INDEX_REG): New defines. - (LEGACY_INDEX_REG_P, LEGACY_INDEX_REGNO_P): New macros. - (INDEX_REG_P, INDEX_REGNO_P): Ditto. - (REGNO_OK_FOR_INDEX_P): Use INDEX_REGNO_P predicates. - (REGNO_OK_FOR_INDEX_NONSTRICT_P): New macro. - (EG_OK_FOR_BASE_NONSTRICT_P): Ditto. - * config/i386/predicates.md (index_register_operand): - Use REGNO_OK_FOR_INDEX_P and REGNO_OK_FOR_INDEX_NONSTRICT_P macros. - * config/i386/i386.cc (ix86_legitimate_address_p): Use - REGNO_OK_FOR_BASE_P, REGNO_OK_FOR_BASE_NONSTRICT_P, - REGNO_OK_FOR_INDEX_P and REGNO_OK_FOR_INDEX_NONSTRICT_P macros. - -2023-04-21 Jan Hubicka <hubicka@ucw.cz> - Ondrej Kubanek <kubanek0ondrej@gmail.com> - - * tree-ssa-loop-ch.cc (ch_base::copy_headers): Update loop header and - latch. - -2023-04-21 Richard Biener <rguenther@suse.de> - - * is-a.h (safe_is_a): New. - -2023-04-21 Richard Biener <rguenther@suse.de> - - * gimple-iterator.h (gimple_stmt_iterator::operator*): Add. - (gphi_iterator::operator*): Likewise. - -2023-04-21 Jan Hubicka <hubicka@ucw.cz> - Michal Jires <michal@jires.eu> - - * ipa-inline.cc (class inline_badness): New class. - (edge_heap_t, edge_heap_node_t): Use inline_badness for badness instead - of sreal. - (update_edge_key): Update. - (lookup_recursive_calls): Likewise. - (recursive_inlining): Likewise. - (add_new_edges_to_heap): Likewise. - (inline_small_functions): Likewise. - -2023-04-21 Jan Hubicka <hubicka@ucw.cz> - - * ipa-devirt.cc (odr_types_equivalent_p): Cleanup warned checks. - -2023-04-21 Richard Biener <rguenther@suse.de> - - PR tree-optimization/109573 - * tree-vect-loop.cc (vectorizable_live_operation): Allow - unhandled SSA copy as well. Demote assert to checking only. - -2023-04-21 Richard Biener <rguenther@suse.de> - - * df-core.cc (df_analyze): Compute RPO on the reverse graph - for DF_BACKWARD problems. - (loop_post_order_compute): Rename to ... - (loop_rev_post_order_compute): ... this, compute a RPO. - (loop_inverted_post_order_compute): Rename to ... - (loop_inverted_rev_post_order_compute): ... this, compute a RPO. - (df_analyze_loop): Use RPO on the forward graph for DF_FORWARD - problems, RPO on the inverted graph for DF_BACKWARD. - -2023-04-21 Richard Biener <rguenther@suse.de> - - * cfganal.h (inverted_rev_post_order_compute): Rename - from ... - (inverted_post_order_compute): ... this. Add struct function - argument, change allocation to a C array. - * cfganal.cc (inverted_rev_post_order_compute): Likewise. - * lcm.cc (compute_antinout_edge): Adjust. - * lra-lives.cc (lra_create_live_ranges_1): Likewise. - * tree-ssa-dce.cc (remove_dead_stmt): Likewise. - * tree-ssa-pre.cc (compute_antic): Likewise. - -2023-04-21 Richard Biener <rguenther@suse.de> - - * df.h (df_d::postorder_inverted): Change back to int *, - clarify comments. - * df-core.cc (rest_of_handle_df_finish): Adjust. - (df_analyze_1): Likewise. - (df_analyze): For DF_FORWARD problems use RPO on the forward - graph. Adjust. - (loop_inverted_post_order_compute): Adjust API. - (df_analyze_loop): Adjust. - (df_get_n_blocks): Likewise. - (df_get_postorder): Likewise. - -2023-04-21 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - PR target/108270 - * config/riscv/riscv-vsetvl.cc - (vector_infos_manager::all_empty_predecessor_p): New function. - (pass_vsetvl::backward_demand_fusion): Ditto. - * config/riscv/riscv-vsetvl.h: Ditto. - -2023-04-21 Robin Dapp <rdapp@ventanamicro.com> - - PR target/109582 - * config/riscv/generic.md: Change standard names to insn names. - -2023-04-21 Richard Biener <rguenther@suse.de> - - * lcm.cc (compute_antinout_edge): Use RPO on the inverted graph. - (compute_laterin): Use RPO. - (compute_available): Likewise. - -2023-04-21 Peng Fan <fanpeng@loongson.cn> - - * config/loongarch/gnu-user.h (MUSL_DYNAMIC_LINKER): Redefine. - -2023-04-21 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - PR target/109547 - * config/riscv/riscv-vsetvl.cc (local_eliminate_vsetvl_insn): New function. - (vector_insn_info::skip_avl_compatible_p): Ditto. - (vector_insn_info::merge): Remove default value. - (pass_vsetvl::compute_local_backward_infos): Ditto. - (pass_vsetvl::cleanup_insns): Add local vsetvl elimination. - * config/riscv/riscv-vsetvl.h: Ditto. - -2023-04-20 Alejandro Colomar <alx.manpages@gmail.com> - - * doc/extend.texi (Common Function Attributes): Remove duplicate - word. - -2023-04-20 Andrew MacLeod <amacleod@redhat.com> - - PR tree-optimization/109564 - * gimple-range-fold.cc (fold_using_range::range_of_phi): Do no ignore - UNDEFINED range names when deciding if all PHI arguments are the same, - -2023-04-20 Jakub Jelinek <jakub@redhat.com> - - PR tree-optimization/109011 - * tree-vect-patterns.cc (vect_recog_ctz_ffs_pattern): Use - .CTZ (X) = .POPCOUNT ((X - 1) & ~X) in preference to - .CTZ (X) = PREC - .POPCOUNT (X | -X). - -2023-04-20 Vladimir N. Makarov <vmakarov@redhat.com> - - * lra-constraints.cc (match_reload): Exclude some hard regs for - multi-reg inout reload pseudos used in asm in different mode. - -2023-04-20 Uros Bizjak <ubizjak@gmail.com> - - * config/arm/arm.cc (thumb1_legitimate_address_p): - Use VIRTUAL_REGISTER_P predicate. - (arm_eliminable_register): Ditto. - * config/avr/avr.md (push<mode>_1): Ditto. - * config/bfin/predicates.md (register_no_elim_operand): Ditto. - * config/h8300/predicates.md (register_no_sp_elim_operand): Ditto. - * config/i386/predicates.md (register_no_elim_operand): Ditto. - * config/iq2000/predicates.md (call_insn_operand): Ditto. - * config/microblaze/microblaze.h (CALL_INSN_OP): Ditto. - -2023-04-20 Uros Bizjak <ubizjak@gmail.com> - - PR target/78952 - * config/i386/predicates.md (extract_operator): New predicate. - * config/i386/i386.md (any_extract): Remove code iterator. - (*cmpqi_ext<mode>_1_mem_rex64): Use extract_operator predicate. - (*cmpqi_ext<mode>_1): Ditto. - (*cmpqi_ext<mode>_2): Ditto. - (*cmpqi_ext<mode>_3_mem_rex64): Ditto. - (*cmpqi_ext<mode>_3): Ditto. - (*cmpqi_ext<mode>_4): Ditto. - (*extzvqi_mem_rex64): Ditto. - (*extzvqi): Ditto. - (*insvqi_2): Ditto. - (*extendqi<SWI24:mode>_ext_1): Ditto. - (*addqi_ext<mode>_0): Ditto. - (*addqi_ext<mode>_1): Ditto. - (*addqi_ext<mode>_2): Ditto. - (*subqi_ext<mode>_0): Ditto. - (*subqi_ext<mode>_2): Ditto. - (*testqi_ext<mode>_1): Ditto. - (*testqi_ext<mode>_2): Ditto. - (*andqi_ext<mode>_0): Ditto. - (*andqi_ext<mode>_1): Ditto. - (*andqi_ext<mode>_1_cc): Ditto. - (*andqi_ext<mode>_2): Ditto. - (*<any_or:code>qi_ext<mode>_0): Ditto. - (*<any_or:code>qi_ext<mode>_1): Ditto. - (*<any_or:code>qi_ext<mode>_2): Ditto. - (*xorqi_ext<mode>_1_cc): Ditto. - (*negqi_ext<mode>_2): Ditto. - (*ashlqi_ext<mode>_2): Ditto. - (*<any_shiftrt:insn>qi_ext<mode>_2): Ditto. - -2023-04-20 Raphael Zinsly <rzinsly@ventanamicro.com> - - PR target/108248 - * config/riscv/bitmanip.md (clz, ctz, pcnt, min, max patterns): Use - <bitmanip_insn> as the type to allow for fine grained control of - scheduling these insns. - * config/riscv/generic.md (generic_alu): Add bitmanip, clz, ctz, pcnt, - min, max. - * config/riscv/riscv.md (type attribute): Add types for clz, ctz, - pcnt, signed and unsigned min/max. - -2023-04-20 Juzhe-Zhong <juzhe.zhong@rivai.ai> - kito-cheng <kito.cheng@sifive.com> - - * config/riscv/riscv.h (enum reg_class): Fix RVV register order. - -2023-04-20 Ju-Zhe Zhong <juzhe.zhong@rivai.ai> - kito-cheng <kito.cheng@sifive.com> - - PR target/109535 - * config/riscv/riscv-vsetvl.cc (count_regno_occurrences): New function. - (pass_vsetvl::cleanup_insns): Fix bug. - -2023-04-20 Andrew Stubbs <ams@codesourcery.com> - - * config/gcn/gcn-valu.md (vnsi, VnSI): Add scalar modes. - (ldexp<mode>3): Delete. - (ldexp<mode>3<exec>): Change "B" to "A". - -2023-04-20 Jakub Jelinek <jakub@redhat.com> - Jonathan Wakely <jwakely@redhat.com> - - * tree.h (built_in_function_equal_p): New helper function. - (fndecl_built_in_p): Turn into variadic template to support - 1 or more built_in_function arguments. - * builtins.cc (fold_builtin_expect): Use 3 argument fndecl_built_in_p. - * gimplify.cc (goa_stabilize_expr): Likewise. - * cgraphclones.cc (cgraph_node::create_clone): Likewise. - * ipa-fnsummary.cc (compute_fn_summary): Likewise. - * omp-low.cc (setjmp_or_longjmp_p): Likewise. - * cgraph.cc (cgraph_edge::redirect_call_stmt_to_callee, - cgraph_update_edges_for_call_stmt_node, - cgraph_edge::verify_corresponds_to_fndecl, - cgraph_node::verify_node): Likewise. - * tree-stdarg.cc (optimize_va_list_gpr_fpr_size): Likewise. - * gimple-ssa-warn-access.cc (matching_alloc_calls_p): Likewise. - * ipa-prop.cc (try_make_edge_direct_virtual_call): Likewise. - -2023-04-20 Jakub Jelinek <jakub@redhat.com> - - PR tree-optimization/109011 - * tree-vect-patterns.cc (vect_recog_ctz_ffs_pattern): New function. - (vect_recog_popcount_clz_ctz_ffs_pattern): Move vect_pattern_detected - call later. Don't punt for IFN_CTZ or IFN_FFS if it doesn't have - direct optab support, but has instead IFN_CLZ, IFN_POPCOUNT or - for IFN_FFS IFN_CTZ support, use vect_recog_ctz_ffs_pattern for that - case. - (vect_vect_recog_func_ptrs): Add ctz_ffs entry. - -2023-04-20 Richard Biener <rguenther@suse.de> - - * df-core.cc (rest_of_handle_df_initialize): Remove - computation of df->postorder, df->postorder_inverted and - df->n_blocks. - -2023-04-20 Haochen Jiang <haochen.jiang@intel.com> - - * common/config/i386/i386-common.cc - (OPTION_MASK_ISA2_AVX_UNSET): Add OPTION_MASK_ISA2_VAES_UNSET. - (ix86_handle_option): Set AVX flag for VAES. - * config/i386/i386-builtins.cc (ix86_init_mmx_sse_builtins): - Add OPTION_MASK_ISA2_VAES_UNSET. - (def_builtin): Share builtin between AES and VAES. - * config/i386/i386-expand.cc (ix86_check_builtin_isa_match): - Ditto. - * config/i386/i386.md (aes): New isa attribute. - * config/i386/sse.md (aesenc): Add pattern for VAES with xmm. - (aesenclast): Ditto. - (aesdec): Ditto. - (aesdeclast): Ditto. - * config/i386/vaesintrin.h: Remove redundant avx target push. - * config/i386/wmmintrin.h (_mm_aesdec_si128): Change to macro. - (_mm_aesdeclast_si128): Ditto. - (_mm_aesenc_si128): Ditto. - (_mm_aesenclast_si128): Ditto. - -2023-04-20 Hu, Lin1 <lin1.hu@intel.com> - - * config/i386/avx2intrin.h - (_MM_REDUCE_OPERATOR_BASIC_EPI16): New macro. - (_MM_REDUCE_OPERATOR_MAX_MIN_EP16): Ditto. - (_MM256_REDUCE_OPERATOR_BASIC_EPI16): Ditto. - (_MM256_REDUCE_OPERATOR_MAX_MIN_EP16): Ditto. - (_MM_REDUCE_OPERATOR_BASIC_EPI8): Ditto. - (_MM_REDUCE_OPERATOR_MAX_MIN_EP8): Ditto. - (_MM256_REDUCE_OPERATOR_BASIC_EPI8): Ditto. - (_MM256_REDUCE_OPERATOR_MAX_MIN_EP8): Ditto. - (_mm_reduce_add_epi16): New instrinsics. - (_mm_reduce_mul_epi16): Ditto. - (_mm_reduce_and_epi16): Ditto. - (_mm_reduce_or_epi16): Ditto. - (_mm_reduce_max_epi16): Ditto. - (_mm_reduce_max_epu16): Ditto. - (_mm_reduce_min_epi16): Ditto. - (_mm_reduce_min_epu16): Ditto. - (_mm256_reduce_add_epi16): Ditto. - (_mm256_reduce_mul_epi16): Ditto. - (_mm256_reduce_and_epi16): Ditto. - (_mm256_reduce_or_epi16): Ditto. - (_mm256_reduce_max_epi16): Ditto. - (_mm256_reduce_max_epu16): Ditto. - (_mm256_reduce_min_epi16): Ditto. - (_mm256_reduce_min_epu16): Ditto. - (_mm_reduce_add_epi8): Ditto. - (_mm_reduce_mul_epi8): Ditto. - (_mm_reduce_and_epi8): Ditto. - (_mm_reduce_or_epi8): Ditto. - (_mm_reduce_max_epi8): Ditto. - (_mm_reduce_max_epu8): Ditto. - (_mm_reduce_min_epi8): Ditto. - (_mm_reduce_min_epu8): Ditto. - (_mm256_reduce_add_epi8): Ditto. - (_mm256_reduce_mul_epi8): Ditto. - (_mm256_reduce_and_epi8): Ditto. - (_mm256_reduce_or_epi8): Ditto. - (_mm256_reduce_max_epi8): Ditto. - (_mm256_reduce_max_epu8): Ditto. - (_mm256_reduce_min_epi8): Ditto. - (_mm256_reduce_min_epu8): Ditto. - * config/i386/avx512vlbwintrin.h: - (_mm_mask_reduce_add_epi16): Ditto. - (_mm_mask_reduce_mul_epi16): Ditto. - (_mm_mask_reduce_and_epi16): Ditto. - (_mm_mask_reduce_or_epi16): Ditto. - (_mm_mask_reduce_max_epi16): Ditto. - (_mm_mask_reduce_max_epu16): Ditto. - (_mm_mask_reduce_min_epi16): Ditto. - (_mm_mask_reduce_min_epu16): Ditto. - (_mm256_mask_reduce_add_epi16): Ditto. - (_mm256_mask_reduce_mul_epi16): Ditto. - (_mm256_mask_reduce_and_epi16): Ditto. - (_mm256_mask_reduce_or_epi16): Ditto. - (_mm256_mask_reduce_max_epi16): Ditto. - (_mm256_mask_reduce_max_epu16): Ditto. - (_mm256_mask_reduce_min_epi16): Ditto. - (_mm256_mask_reduce_min_epu16): Ditto. - (_mm_mask_reduce_add_epi8): Ditto. - (_mm_mask_reduce_mul_epi8): Ditto. - (_mm_mask_reduce_and_epi8): Ditto. - (_mm_mask_reduce_or_epi8): Ditto. - (_mm_mask_reduce_max_epi8): Ditto. - (_mm_mask_reduce_max_epu8): Ditto. - (_mm_mask_reduce_min_epi8): Ditto. - (_mm_mask_reduce_min_epu8): Ditto. - (_mm256_mask_reduce_add_epi8): Ditto. - (_mm256_mask_reduce_mul_epi8): Ditto. - (_mm256_mask_reduce_and_epi8): Ditto. - (_mm256_mask_reduce_or_epi8): Ditto. - (_mm256_mask_reduce_max_epi8): Ditto. - (_mm256_mask_reduce_max_epu8): Ditto. - (_mm256_mask_reduce_min_epi8): Ditto. - (_mm256_mask_reduce_min_epu8): Ditto. - -2023-04-20 Haochen Jiang <haochen.jiang@intel.com> - - * common/config/i386/i386-common.cc - (OPTION_MASK_ISA_VPCLMULQDQ_SET): - Add OPTION_MASK_ISA_PCLMUL_SET and OPTION_MASK_ISA_AVX_SET. - (OPTION_MASK_ISA_AVX_UNSET): - Add OPTION_MASK_ISA_VPCLMULQDQ_UNSET. - (OPTION_MASK_ISA_PCLMUL_UNSET): Ditto. - * config/i386/i386.md (vpclmulqdqvl): New. - * config/i386/sse.md (pclmulqdq): Add evex encoding. - * config/i386/vpclmulqdqintrin.h: Remove redudant avx target - push. - -2023-04-20 Haochen Jiang <haochen.jiang@intel.com> - - * config/i386/avx512vlbwintrin.h - (_mm_mask_blend_epi16): Remove __OPTIMIZE__ wrapper. - (_mm_mask_blend_epi8): Ditto. - (_mm256_mask_blend_epi16): Ditto. - (_mm256_mask_blend_epi8): Ditto. - * config/i386/avx512vlintrin.h - (_mm256_mask_blend_pd): Ditto. - (_mm256_mask_blend_ps): Ditto. - (_mm256_mask_blend_epi64): Ditto. - (_mm256_mask_blend_epi32): Ditto. - (_mm_mask_blend_pd): Ditto. - (_mm_mask_blend_ps): Ditto. - (_mm_mask_blend_epi64): Ditto. - (_mm_mask_blend_epi32): Ditto. - * config/i386/sse.md (VF_AVX512BWHFBF16): Removed. - (VF_AVX512HFBFVL): Move it before the first usage. - (<avx512>_blendm<mode>): Change iterator from VF_AVX512BWHFBF16 - to VF_AVX512HFBFVL. - -2023-04-20 Haochen Jiang <haochen.jiang@intel.com> - - * common/config/i386/i386-common.cc - (OPTION_MASK_ISA_AVX512VBMI2_SET): Change OPTION_MASK_ISA_AVX512F_SET - to OPTION_MASK_ISA_AVX512BW_SET. - (OPTION_MASK_ISA_AVX512F_UNSET): - Remove OPTION_MASK_ISA_AVX512VBMI2_UNSET. - (OPTION_MASK_ISA_AVX512BW_UNSET): - Add OPTION_MASK_ISA_AVX512VBMI2_UNSET. - * config/i386/avx512vbmi2intrin.h: Do not push avx512bw. - * config/i386/avx512vbmi2vlintrin.h: Ditto. - * config/i386/i386-builtin.def: Remove OPTION_MASK_ISA_AVX512BW. - * config/i386/sse.md (VI12_AVX512VLBW): Removed. - (VI12_VI48F_AVX512VLBW): Rename to VI12_VI48F_AVX512VL. - (compress<mode>_mask): Change iterator from VI12_AVX512VLBW to - VI12_AVX512VL. - (compressstore<mode>_mask): Ditto. - (expand<mode>_mask): Ditto. - (expand<mode>_maskz): Ditto. - (*expand<mode>_mask): Change iterator from VI12_VI48F_AVX512VLBW to - VI12_VI48F_AVX512VL. - -2023-04-20 Haochen Jiang <haochen.jiang@intel.com> - - * common/config/i386/i386-common.cc - (OPTION_MASK_ISA_AVX512BITALG_SET): - Change OPTION_MASK_ISA_AVX512F_SET - to OPTION_MASK_ISA_AVX512BW_SET. - (OPTION_MASK_ISA_AVX512F_UNSET): - Remove OPTION_MASK_ISA_AVX512BITALG_SET. - (OPTION_MASK_ISA_AVX512BW_UNSET): - Add OPTION_MASK_ISA_AVX512BITALG_SET. - * config/i386/avx512bitalgintrin.h: Do not push avx512bw. - * config/i386/i386-builtin.def: - Remove redundant OPTION_MASK_ISA_AVX512BW. - * config/i386/sse.md (VI1_AVX512VLBW): Removed. - (avx512vl_vpshufbitqmb<mode><mask_scalar_merge_name>): - Change the iterator from VI1_AVX512VLBW to VI1_AVX512VL. - -2023-04-20 Haochen Jiang <haochen.jiang@intel.com> - - * config/i386/i386-expand.cc - (ix86_check_builtin_isa_match): Correct wrong comments. - Add a new macro SHARE_BUILTIN and refactor the current if - clauses to macro. - -2023-04-20 Mo, Zewei <zewei.mo@intel.com> - - * config/i386/cpuid.h: Open a new section for Extended Features - Leaf (%eax == 7, %ecx == 0) and Extended Features Sub-leaf (%eax == 7, - %ecx == 1). - -2023-04-20 Hu, Lin1 <lin1.hu@intel.com> - - * config/i386/sse.md: Modify insn vperm{i,f} - and vshuf{i,f}. - -2023-04-19 Max Filippov <jcmvbkbc@gmail.com> - - * config/xtensa/xtensa-opts.h: New header. - * config/xtensa/xtensa.h (STRICT_ALIGNMENT): Redefine as - xtensa_strict_align. - * config/xtensa/xtensa.cc (xtensa_option_override): When - -m[no-]strict-align is not specified in the command line set - xtensa_strict_align to 0 if the hardware supports both unaligned - loads and stores or to 1 otherwise. - * config/xtensa/xtensa.opt (mstrict-align): New option. - * doc/invoke.texi (Xtensa Options): Document -m[no-]strict-align. - -2023-04-19 Max Filippov <jcmvbkbc@gmail.com> - - * config/xtensa/xtensa-dynconfig.cc (xtensa_get_config_v4): New - function. - -2023-04-19 Andrew Pinski <apinski@marvell.com> - - * config/i386/i386.md (*movsicc_noc_zext_1): New pattern. - -2023-04-19 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv-modes.def (FLOAT_MODE): Add chunk 128 support. - (VECTOR_BOOL_MODE): Ditto. - (ADJUST_NUNITS): Ditto. - (ADJUST_ALIGNMENT): Ditto. - (ADJUST_BYTESIZE): Ditto. - (ADJUST_PRECISION): Ditto. - (RVV_MODES): Ditto. - (VECTOR_MODE_WITH_PREFIX): Ditto. - * config/riscv/riscv-v.cc (ENTRY): Ditto. - (get_vlmul): Ditto. - (get_ratio): Ditto. - * config/riscv/riscv-vector-builtins.cc (DEF_RVV_TYPE): Ditto. - * config/riscv/riscv-vector-builtins.def (DEF_RVV_TYPE): Ditto. - (vbool64_t): Ditto. - (vbool32_t): Ditto. - (vbool16_t): Ditto. - (vbool8_t): Ditto. - (vbool4_t): Ditto. - (vbool2_t): Ditto. - (vbool1_t): Ditto. - (vint8mf8_t): Ditto. - (vuint8mf8_t): Ditto. - (vint8mf4_t): Ditto. - (vuint8mf4_t): Ditto. - (vint8mf2_t): Ditto. - (vuint8mf2_t): Ditto. - (vint8m1_t): Ditto. - (vuint8m1_t): Ditto. - (vint8m2_t): Ditto. - (vuint8m2_t): Ditto. - (vint8m4_t): Ditto. - (vuint8m4_t): Ditto. - (vint8m8_t): Ditto. - (vuint8m8_t): Ditto. - (vint16mf4_t): Ditto. - (vuint16mf4_t): Ditto. - (vint16mf2_t): Ditto. - (vuint16mf2_t): Ditto. - (vint16m1_t): Ditto. - (vuint16m1_t): Ditto. - (vint16m2_t): Ditto. - (vuint16m2_t): Ditto. - (vint16m4_t): Ditto. - (vuint16m4_t): Ditto. - (vint16m8_t): Ditto. - (vuint16m8_t): Ditto. - (vint32mf2_t): Ditto. - (vuint32mf2_t): Ditto. - (vint32m1_t): Ditto. - (vuint32m1_t): Ditto. - (vint32m2_t): Ditto. - (vuint32m2_t): Ditto. - (vint32m4_t): Ditto. - (vuint32m4_t): Ditto. - (vint32m8_t): Ditto. - (vuint32m8_t): Ditto. - (vint64m1_t): Ditto. - (vuint64m1_t): Ditto. - (vint64m2_t): Ditto. - (vuint64m2_t): Ditto. - (vint64m4_t): Ditto. - (vuint64m4_t): Ditto. - (vint64m8_t): Ditto. - (vuint64m8_t): Ditto. - (vfloat32mf2_t): Ditto. - (vfloat32m1_t): Ditto. - (vfloat32m2_t): Ditto. - (vfloat32m4_t): Ditto. - (vfloat32m8_t): Ditto. - (vfloat64m1_t): Ditto. - (vfloat64m2_t): Ditto. - (vfloat64m4_t): Ditto. - (vfloat64m8_t): Ditto. - * config/riscv/riscv-vector-switch.def (ENTRY): Ditto. - * config/riscv/riscv.cc (riscv_legitimize_poly_move): Ditto. - (riscv_convert_vector_bits): Ditto. - * config/riscv/riscv.md: - * config/riscv/vector-iterators.md: - * config/riscv/vector.md - (@pred_indexed_<order>store<VNX32_QH:mode><VNX32_QHI:mode>): Ditto. - (@pred_indexed_<order>store<VNX32_QHS:mode><VNX32_QHSI:mode>): Ditto. - (@pred_indexed_<order>store<VNX64_Q:mode><VNX64_Q:mode>): Ditto. - (@pred_indexed_<order>store<VNX64_QH:mode><VNX64_QHI:mode>): Ditto. - (@pred_indexed_<order>store<VNX128_Q:mode><VNX128_Q:mode>): Ditto. - (@pred_reduc_<reduc><mode><vlmul1_zve64>): Ditto. - (@pred_widen_reduc_plus<v_su><mode><vwlmul1_zve64>): Ditto. - (@pred_reduc_plus<order><mode><vlmul1_zve64>): Ditto. - (@pred_widen_reduc_plus<order><mode><vwlmul1_zve64>): Ditto. - -2023-04-19 Pan Li <pan2.li@intel.com> - - * simplify-rtx.cc (simplify_context::simplify_binary_operation_1): - Align IOR (A | (~A) -> -1) optimization MODE_CLASS condition to AND. - -2023-04-19 Uros Bizjak <ubizjak@gmail.com> - - PR target/78904 - PR target/78952 - * config/i386/i386.md (*cmpqi_ext<mode>_1_mem_rex64): New insn pattern. - (*cmpqi_ext<mode>_1): Use nonimmediate_operand predicate - for operand 0. Use any_extract code iterator. - (*cmpqi_ext<mode>_1 peephole2): New peephole2 pattern. - (*cmpqi_ext<mode>_2): Use any_extract code iterator. - (*cmpqi_ext<mode>_3_mem_rex64): New insn pattern. - (*cmpqi_ext<mode>_1): Use general_operand predicate - for operand 1. Use any_extract code iterator. - (*cmpqi_ext<mode>_3 peephole2): New peephole2 pattern. - (*cmpqi_ext<mode>_4): Use any_extract code iterator. - -2023-04-19 Kyrylo Tkachov <kyrylo.tkachov@arm.com> - - * config/aarch64/aarch64-simd.md (aarch64_saddw2<mode>): Delete. - (aarch64_uaddw2<mode>): Delete. - (aarch64_ssubw2<mode>): Delete. - (aarch64_usubw2<mode>): Delete. - (aarch64_<ANY_EXTEND:su><ADDSUB:optab>w2<mode>): New define_expand. - -2023-04-19 Richard Biener <rguenther@suse.de> - - * tree-ssa-structalias.cc (do_ds_constraint): Use - solve_add_graph_edge. - -2023-04-19 Richard Biener <rguenther@suse.de> - - * tree-ssa-structalias.cc (solve_add_graph_edge): New function, - split out from ... - (do_sd_constraint): ... here. - -2023-04-19 Richard Biener <rguenther@suse.de> - - * tree-cfg.cc (gimple_can_merge_blocks_p): Remove condition - rejecting the merge when A contains only a non-local label. - -2023-04-19 Uros Bizjak <ubizjak@gmail.com> - - * rtl.h (VIRTUAL_REGISTER_P): New predicate. - (VIRTUAL_REGISTER_NUM_P): Ditto. - (REGNO_PTR_FRAME_P): Use VIRTUAL_REGISTER_NUM_P predicate. - * expr.cc (force_operand): Use VIRTUAL_REGISTER_P predicate. - * function.cc (instantiate_decl_rtl): Ditto. - * rtlanal.cc (rtx_addr_can_trap_p_1): Ditto. - (nonzero_address_p): Ditto. - (refers_to_regno_p): Use VIRTUAL_REGISTER_NUM_P predicate. - -2023-04-19 Aldy Hernandez <aldyh@redhat.com> - - * value-range.h (Value_Range::Value_Range): Avoid pointer sharing. - -2023-04-19 Richard Biener <rguenther@suse.de> - - * system.h (auto_mpz::operator->()): New. - * realmpfr.h (auto_mpfr::operator->()): New. - * builtins.cc (do_mpfr_lgamma_r): Use auto_mpfr. - * real.cc (real_from_string): Likewise. - (dconst_e_ptr): Likewise. - (dconst_sqrt2_ptr): Likewise. - * tree-ssa-loop-niter.cc (refine_value_range_using_guard): - Use auto_mpz. - (bound_difference_of_offsetted_base): Likewise. - (number_of_iterations_ne): Likewise. - (number_of_iterations_lt_to_ne): Likewise. - * ubsan.cc: Include realmpfr.h. - (ubsan_instrument_float_cast): Use auto_mpfr. - -2023-04-19 Richard Biener <rguenther@suse.de> - - * tree-ssa-structalias.cc (solve_graph): Remove self-copy - edges, remove edges from escaped after special-casing them. - -2023-04-19 Richard Biener <rguenther@suse.de> - - * tree-ssa-structalias.cc (do_sd_constraint): Fixup escape - special casing. - -2023-04-19 Richard Biener <rguenther@suse.de> - - * tree-ssa-structalias.cc (do_sd_constraint): Do not write - to the LHS varinfo solution member. - -2023-04-19 Richard Biener <rguenther@suse.de> - - * tree-ssa-structalias.cc (topo_visit): Look at the real - destination of edges. - -2023-04-19 Richard Biener <rguenther@suse.de> - - PR tree-optimization/44794 - * tree-ssa-loop-manip.cc (tree_transform_and_unroll_loop): - If an epilogue loop is required set its iteration upper bound. - -2023-04-19 Xi Ruoyao <xry111@xry111.site> - - PR target/109465 - * config/loongarch/loongarch-protos.h - (loongarch_expand_block_move): Add a parameter as alignment RTX. - * config/loongarch/loongarch.h: - (LARCH_MAX_MOVE_BYTES_PER_LOOP_ITER): Remove. - (LARCH_MAX_MOVE_BYTES_STRAIGHT): Remove. - (LARCH_MAX_MOVE_OPS_PER_LOOP_ITER): Define. - (LARCH_MAX_MOVE_OPS_STRAIGHT): Define. - (MOVE_RATIO): Use LARCH_MAX_MOVE_OPS_PER_LOOP_ITER instead of - LARCH_MAX_MOVE_BYTES_PER_LOOP_ITER. - * config/loongarch/loongarch.cc (loongarch_expand_block_move): - Take the alignment from the parameter, but set it to - UNITS_PER_WORD if !TARGET_STRICT_ALIGN. Limit the length of - straight-line implementation with LARCH_MAX_MOVE_OPS_STRAIGHT - instead of LARCH_MAX_MOVE_BYTES_STRAIGHT. - (loongarch_block_move_straight): When there are left-over bytes, - half the mode size instead of falling back to byte mode at once. - (loongarch_block_move_loop): Limit the length of loop body with - LARCH_MAX_MOVE_OPS_PER_LOOP_ITER instead of - LARCH_MAX_MOVE_BYTES_PER_LOOP_ITER. - * config/loongarch/loongarch.md (cpymemsi): Pass the alignment - to loongarch_expand_block_move. - -2023-04-19 Xi Ruoyao <xry111@xry111.site> - - * config/loongarch/loongarch.cc - (loongarch_setup_incoming_varargs): Don't save more GARs than - cfun->va_list_gpr_size / UNITS_PER_WORD. - -2023-04-19 Richard Biener <rguenther@suse.de> - - * tree-ssa-loop-manip.cc (determine_exit_conditions): Fix - no epilogue condition. - -2023-04-19 Richard Biener <rguenther@suse.de> - - * gimple.h (gimple_assign_load): Outline... - * gimple.cc (gimple_assign_load): ... here. Avoid - get_base_address and instead just strip the outermost - handled component, treating a remaining handled component - as load. - -2023-04-19 Kyrylo Tkachov <kyrylo.tkachov@arm.com> - - * config/aarch64/aarch64-simd-builtins.def (neg): Delete builtins - definition. - * config/aarch64/arm_fp16.h (vnegh_f16): Reimplement using normal negation. - -2023-04-19 Jakub Jelinek <jakub@redhat.com> - - PR tree-optimization/109011 - * tree-vect-patterns.cc (vect_recog_popcount_pattern): Rename to ... - (vect_recog_popcount_clz_ctz_ffs_pattern): ... this. Handle also - CLZ, CTZ and FFS. Remove vargs variable, use - gimple_build_call_internal rather than gimple_build_call_internal_vec. - (vect_vect_recog_func_ptrs): Adjust popcount entry. - -2023-04-19 Jakub Jelinek <jakub@redhat.com> - - PR target/109040 - * dse.cc (replace_read): If read_reg is a SUBREG of a word mode - REG, for WORD_REGISTER_OPERATIONS copy SUBREG_REG of it into - a new REG rather than the SUBREG. - -2023-04-19 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org> - - * config/aarch64/aarch64-simd.md (aarch64_simd_vec_set_zero<mode>): - New pattern. - -2023-04-19 Kyrylo Tkachov <kyrylo.tkachov@arm.com> - - PR target/108840 - * config/aarch64/aarch64.cc (aarch64_rtx_costs): Merge ASHIFT and - ROTATE, ROTATERT, LSHIFTRT, ASHIFTRT cases. Handle subregs in op1. - -2023-04-19 Richard Biener <rguenther@suse.de> - - PR rtl-optimization/109237 - * cse.cc (insn_live_p): Remove NEXT_INSN walk, instead check - TREE_VISITED on INSN_VAR_LOCATION_DECL. - (delete_trivially_dead_insns): Maintain TREE_VISITED on - active debug bind INSN_VAR_LOCATION_DECL. - -2023-04-19 Richard Biener <rguenther@suse.de> - - PR rtl-optimization/109237 - * cfgcleanup.cc (bb_is_just_return): Walk insns backwards. - -2023-04-19 Christophe Lyon <christophe.lyon@arm.com> - - * doc/install.texi (enable-decimal-float): Add AArch64. - -2023-04-19 liuhongt <hongtao.liu@intel.com> - - PR rtl-optimization/109351 - * ira.cc (setup_class_subset_and_memory_move_costs): Check - hard_regno_mode_ok before setting lowest memory move cost for - the mode with different reg classes. - -2023-04-18 Jason Merrill <jason@redhat.com> - - * doc/invoke.texi: Remove stray @gol. - -2023-04-18 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp> - - * ifcvt.cc (cond_move_process_if_block): Consider the result of - targetm.noce_conversion_profitable_p() when replacing the original - sequence with the converted one. - -2023-04-18 Mark Harmstone <mark@harmstone.com> - - * common.opt (gcodeview): Add new option. - * gcc.cc (driver_handle_option); Handle OPT_gcodeview. - * opts.cc (command_handle_option): Similarly. - * doc/invoke.texi: Add documentation for -gcodeview. - -2023-04-18 Andrew Pinski <apinski@marvell.com> - - * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker): Remove declaration. - (make_pass_phiopt): Make execute out of line. - (tree_ssa_cs_elim): Move code into ... - (pass_cselim::execute): here. - -2023-04-18 Sam James <sam@gentoo.org> - - * system.h: Drop unused INCLUDE_PTHREAD_H. - -2023-04-18 Kevin Lee <kevinl@rivosinc.com> - - * tree-vect-data-refs.cc (vect_grouped_store_supported): Add new - condition. - -2023-04-18 Sinan Lin <sinan.lin@linux.alibaba.com> - - * config/riscv/bitmanip.md (rotr<mode>3 expander): Enable for ZBKB. - (bswapdi2, bswapsi2): Similarly. - -2023-04-18 Uros Bizjak <ubizjak@gmail.com> - - PR target/94908 - * config/i386/i386-builtin.def (__builtin_ia32_insertps128): - Use CODE_FOR_sse4_1_insertps_v4sf. - * config/i386/i386-expand.cc (expand_vec_perm_insertps): New. - (expand_vec_perm_1): Call expand_vec_per_insertps. - * config/i386/i386.md ("unspec"): Declare UNSPEC_INSERTPS here. - * config/i386/mmx.md (mmxscalarmode): New mode attribute. - (@sse4_1_insertps_<mode>): New insn pattern. - * config/i386/sse.md (@sse4_1_insertps_<mode>): Macroize insn - pattern from sse4_1_insertps using VI4F_128 mode iterator. - -2023-04-18 Aldy Hernandez <aldyh@redhat.com> - - * value-range.cc (gt_ggc_mx): New. - (gt_pch_nx): New. - * value-range.h (class vrange): Add GTY marker. - (class frange): Same. - (gt_ggc_mx): Remove. - (gt_pch_nx): Remove. - -2023-04-18 Victor L. Do Nascimento <victor.donascimento@arm.com> - - * lra-constraints.cc (constraint_unique): New. - (process_address_1): Apply constraint_unique test. - * recog.cc (constrain_operands): Allow relaxed memory - constaints. - -2023-04-18 Kito Cheng <kito.cheng@sifive.com> - - * doc/extend.texi (Target Builtins): Add RISC-V Vector - Intrinsics. - (RISC-V Vector Intrinsics): Document GCC implemented which - version of RISC-V vector intrinsics and its reference. - -2023-04-18 Richard Biener <rguenther@suse.de> - - PR middle-end/108786 - * bitmap.h (bitmap_clear_first_set_bit): New. - * bitmap.cc (bitmap_first_set_bit_worker): Rename from - bitmap_first_set_bit and add optional clearing of the bit. - (bitmap_first_set_bit): Wrap bitmap_first_set_bit_worker. - (bitmap_clear_first_set_bit): Likewise. - * df-core.cc (df_worklist_dataflow_doublequeue): Use - bitmap_clear_first_set_bit. - * graphite-scop-detection.cc (scop_detection::merge_sese): - Likewise. - * sanopt.cc (sanitize_asan_mark_unpoison): Likewise. - (sanitize_asan_mark_poison): Likewise. - * tree-cfgcleanup.cc (cleanup_tree_cfg_noloop): Likewise. - * tree-into-ssa.cc (rewrite_blocks): Likewise. - * tree-ssa-dce.cc (simple_dce_from_worklist): Likewise. - * tree-ssa-sccvn.cc (do_rpo_vn_1): Likewise. - -2023-04-18 Richard Biener <rguenther@suse.de> - - * tree-ssa-structalias.cc (dump_sa_stats): Split out from... - (dump_sa_points_to_info): ... this function. - (compute_points_to_sets): Guard large dumps with TDF_DETAILS, - and call dump_sa_stats guarded with TDF_STATS. - (ipa_pta_execute): Likewise. - (compute_may_aliases): Guard dump_alias_info with - TDF_DETAILS|TDF_ALIAS. - -2023-04-18 Andrew Pinski <apinski@marvell.com> - - * tree-ssa-phiopt.cc (gimple_simplify_phiopt): Dump - the expression that is being tried when TDF_FOLDING - is true. - (phiopt_worker::match_simplify_replacement): Dump - the sequence which was created by gimple_simplify_phiopt - when TDF_FOLDING is true. - -2023-04-18 Andrew Pinski <apinski@marvell.com> - - * tree-ssa-phiopt.cc (match_simplify_replacement): - Simplify code that does the movement slightly. - -2023-04-18 Kyrylo Tkachov <kyrylo.tkachov@arm.com> - - * config/aarch64/aarch64.md (@aarch64_rev16<mode>): Change to - define_expand. - (rev16<mode>2): Rename to... - (aarch64_rev16<mode>2_alt1): ... This. - (rev16<mode>2_alt): Rename to... - (*aarch64_rev16<mode>2_alt2): ... This. - -2023-04-18 Aldy Hernandez <aldyh@redhat.com> - - * emit-rtl.cc (init_emit_once): Initialize dconstm0. - * gimple-range-op.cc (class cfn_signbit): Remove dconstm0 - declaration. - * range-op-float.cc (zero_range): Use dconstm0. - (zero_to_inf_range): Same. - * real.h (dconstm0): New. - * value-range.cc (frange::flush_denormals_to_zero): Use dconstm0. - (frange::set_zero): Do not declare dconstm0. - -2023-04-18 Richard Biener <rguenther@suse.de> - - * system.h (class auto_mpz): New, - * realmpfr.h (class auto_mpfr): Likewise. - * fold-const-call.cc (do_mpfr_arg1): Use auto_mpfr. - (do_mpfr_arg2): Likewise. - * tree-ssa-loop-niter.cc (bound_difference): Use auto_mpz; - -2023-04-18 Kyrylo Tkachov <kyrylo.tkachov@arm.com> - - * config/aarch64/aarch64-builtins.cc (aarch64_init_simd_intrinsics): Take - builtin flags from intrinsic data rather than hardcoded FLAG_AUTO_FP. - -2023-04-18 Aldy Hernandez <aldyh@redhat.com> - - * value-range.cc (frange::operator==): Adjust for NAN. - (range_tests_nan): Remove some NAN tests. - -2023-04-18 Aldy Hernandez <aldyh@redhat.com> - - * inchash.cc (hash::add_real_value): New. - * inchash.h (class hash): Add add_real_value. - * value-range.cc (add_vrange): New. - * value-range.h (inchash::add_vrange): New. - -2023-04-18 Richard Biener <rguenther@suse.de> - - PR tree-optimization/109539 - * gimple-ssa-warn-access.cc (pass_waccess::check_pointer_uses): - Re-implement pointer relatedness for PHIs. - -2023-04-18 Andrew Stubbs <ams@codesourcery.com> - - * config/gcn/gcn-valu.md (SV_SFDF): New iterator. - (SV_FP): New iterator. - (scalar_mode, SCALAR_MODE): Add identity mappings for scalar modes. - (recip<mode>2): Unify the two patterns using SV_FP. - (div_scale<mode><exec_vcc>): New insn. - (div_fmas<mode><exec>): New insn. - (div_fixup<mode><exec>): New insn. - (div<mode>3): Unify the two expanders and rewrite using hardfp. - * config/gcn/gcn.cc (gcn_md_reorg): Support "vccwait" attribute. - * config/gcn/gcn.md (unspec): Add UNSPEC_DIV_SCALE, UNSPEC_DIV_FMAS, - and UNSPEC_DIV_FIXUP. - (vccwait): New attribute. - -2023-04-18 Kyrylo Tkachov <kyrylo.tkachov@arm.com> - - * config/aarch64/aarch64.cc (aarch64_validate_mcpu): Add hint to use -march - if the argument matches that. - -2023-04-18 Kyrylo Tkachov <kyrylo.tkachov@arm.com> - - * config/aarch64/atomics.md - (*aarch64_atomic_load<ALLX:mode>_rcpc_zext): - Use SD_HSDI for destination mode iterator. - -2023-04-18 Jin Ma <jinma@linux.alibaba.com> - - * common/config/riscv/riscv-common.cc (multi_letter_subset_rank): Swap the order - of z-extensions and s-extensions. - (riscv_subset_list::parse): Likewise. - -2023-04-18 Jakub Jelinek <jakub@redhat.com> - - PR tree-optimization/109240 - * match.pd (fneg/fadd): Rewrite such that it handles both plus as - first vec_perm operand and minus as second using fneg/fadd and - minus as first vec_perm operand and plus as second using fneg/fsub. - -2023-04-18 Aldy Hernandez <aldyh@redhat.com> - - * data-streamer.cc (bp_pack_real_value): New. - (bp_unpack_real_value): New. - * data-streamer.h (bp_pack_real_value): New. - (bp_unpack_real_value): New. - * tree-streamer-in.cc (unpack_ts_real_cst_value_fields): Use - bp_unpack_real_value. - * tree-streamer-out.cc (pack_ts_real_cst_value_fields): Use - bp_pack_real_value. - -2023-04-18 Aldy Hernandez <aldyh@redhat.com> - - * wide-int.h (WIDE_INT_MAX_HWIS): New. - (class fixed_wide_int_storage): Use it. - (trailing_wide_ints <N>::set_precision): Use it. - (trailing_wide_ints <N>::extra_size): Use it. - -2023-04-18 Xi Ruoyao <xry111@xry111.site> - - * config/loongarch/loongarch-protos.h - (loongarch_addu16i_imm12_operand_p): New function prototype. - (loongarch_split_plus_constant): Likewise. - * config/loongarch/loongarch.cc - (loongarch_addu16i_imm12_operand_p): New function. - (loongarch_split_plus_constant): Likewise. - * config/loongarch/loongarch.h (ADDU16I_OPERAND): New macro. - (DUAL_IMM12_OPERAND): Likewise. - (DUAL_ADDU16I_OPERAND): Likewise. - * config/loongarch/constraints.md (La, Lb, Lc, Ld, Le): New - constraint. - * config/loongarch/predicates.md (const_dual_imm12_operand): New - predicate. - (const_addu16i_operand): Likewise. - (const_addu16i_imm12_di_operand): Likewise. - (const_addu16i_imm12_si_operand): Likewise. - (plus_di_operand): Likewise. - (plus_si_operand): Likewise. - (plus_si_extend_operand): Likewise. - * config/loongarch/loongarch.md (add<mode>3): Convert to - define_insn_and_split. Use plus_<mode>_operand predicate - instead of arith_operand. Add alternatives for La, Lb, Lc, Ld, - and Le constraints. - (*addsi3_extended): Convert to define_insn_and_split. Use - plus_si_extend_operand instead of arith_operand. Add - alternatives for La and Le alternatives. - -2023-04-18 Aldy Hernandez <aldyh@redhat.com> - - * value-range.h (Value_Range::Value_Range): New. - (Value_Range::contains_p): New. - -2023-04-18 Aldy Hernandez <aldyh@redhat.com> - - * value-range.h (class vrange): Make m_discriminator const. - (class irange): Make m_max_ranges const. Adjust constructors - accordingly. - (class unsupported_range): Construct vrange appropriately. - (class frange): Same. - -2023-04-18 Lulu Cheng <chenglulu@loongson.cn> - - * config/loongarch/loongarch.h (LOGICAL_OP_NON_SHORT_CIRCUIT): Remove the macro - definition. - -2023-04-18 Lulu Cheng <chenglulu@loongson.cn> - - * doc/extend.texi: Add section for LoongArch Base Built-in functions. - -2023-04-18 Fei Gao <gaofei@eswincomputing.com> - - * config/riscv/riscv.cc (riscv_first_stack_step): Make codes more - readable. - (riscv_expand_epilogue): Likewise. - -2023-04-17 Fei Gao <gaofei@eswincomputing.com> - - * config/riscv/riscv.cc (riscv_expand_prologue): Consider save-restore in - stack allocation. - (riscv_expand_epilogue): Consider save-restore in stack deallocation. - -2023-04-17 Andrew Pinski <apinski@marvell.com> - - * tree-ssa-phiopt.cc (gate_hoist_loads): Remove - prototype. - -2023-04-17 Aldy Hernandez <aldyh@redhat.com> - - * gimple-ssa-warn-alloca.cc (pass_walloca::execute): Do not export - global ranges. - -2023-04-17 Fei Gao <gaofei@eswincomputing.com> - - * config/riscv/riscv.cc (riscv_first_stack_step): Add a new function - parameter remaining_size. - (riscv_compute_frame_info): Adapt new riscv_first_stack_step interface. - (riscv_expand_prologue): Likewise. - (riscv_expand_epilogue): Likewise. - -2023-04-17 Feng Wang <wangfeng@eswincomputing.com> - - * config/riscv/bitmanip.md (rotrsi3_sext): Support generating - roriw for constant counts. - * rtl.h (reverse_rotate_by_imm_p): Add function declartion - * simplify-rtx.cc (reverse_rotate_by_imm_p): New function. - (simplify_context::simplify_binary_operation_1): Use it. - * expmed.cc (expand_shift_1): Likewise. - -2023-04-17 Martin Jambor <mjambor@suse.cz> - - PR ipa/107769 - PR ipa/109318 - * cgraph.h (symtab_node::find_reference): Add parameter use_type. - * ipa-prop.h (ipa_pass_through_data): New flag refdesc_decremented. - (ipa_zap_jf_refdesc): New function. - (ipa_get_jf_pass_through_refdesc_decremented): Likewise. - (ipa_set_jf_pass_through_refdesc_decremented): Likewise. - * ipa-cp.cc (ipcp_discover_new_direct_edges): Provide a value for - the new parameter of find_reference. - (adjust_references_in_caller): Likewise. Make sure the constant jump - function is not used to decrement a refdec counter again. Only - decrement refdesc counters when the pass_through jump function allows - it. Added a detailed dump when decrementing refdesc counters. - * ipa-prop.cc (ipa_print_node_jump_functions_for_edge): Dump new flag. - (ipa_set_jf_simple_pass_through): Initialize the new flag. - (ipa_set_jf_unary_pass_through): Likewise. - (ipa_set_jf_arith_pass_through): Likewise. - (remove_described_reference): Provide a value for the new parameter of - find_reference. - (update_jump_functions_after_inlining): Zap refdesc of new jfunc if - the previous pass_through had a flag mandating that we do so. - (propagate_controlled_uses): Likewise. Only decrement refdesc - counters when the pass_through jump function allows it. - (ipa_edge_args_sum_t::duplicate): Provide a value for the new - parameter of find_reference. - (ipa_write_jump_function): Assert the new flag does not have to be - streamed. - * symtab.cc (symtab_node::find_reference): Add parameter use_type, use - it in searching. - -2023-04-17 Philipp Tomsich <philipp.tomsich@vrull.eu> - Di Zhao <di.zhao@amperecomputing.com> - - * config/aarch64/aarch64-tuning-flags.def (AARCH64_EXTRA_TUNING_OPTION): - Add AARCH64_EXTRA_TUNE_NO_LDP_COMBINE. - * config/aarch64/aarch64.cc (aarch64_operands_ok_for_ldpstp): - Check for the above tuning option when processing loads. - -2023-04-17 Richard Biener <rguenther@suse.de> - - PR tree-optimization/109524 - * tree-vrp.cc (remove_unreachable::m_list): Change to a - vector of pairs of block indices. - (remove_unreachable::maybe_register_block): Adjust. - (remove_unreachable::remove_and_update_globals): Likewise. - Deal with removed blocks. - -2023-04-16 Jeff Law <jlaw@ventanamicro> - - PR target/109508 - * config/riscv/riscv.cc (riscv_expand_conditional_move): For - TARGET_SFB_ALU, force the true arm into a register. - -2023-04-15 John David Anglin <danglin@gcc.gnu.org> - - PR target/104989 - * config/pa/pa-protos.h (pa_function_arg_size): Update prototype. - * config/pa/pa.cc (pa_function_arg): Return NULL_RTX if argument - size is zero. - (pa_arg_partial_bytes): Don't call pa_function_arg_size twice. - (pa_function_arg_size): Change return type to int. Return zero - for arguments larger than 1 GB. Update comments. - -2023-04-15 Jakub Jelinek <jakub@redhat.com> - - PR tree-optimization/109154 - * tree-if-conv.cc (predicate_scalar_phi): For complex PHIs, emit just - args_len - 1 COND_EXPRs rather than args_len. Formatting fix. - -2023-04-15 Jason Merrill <jason@redhat.com> - - PR c++/109514 - * gimple-ssa-warn-access.cc (pass_waccess::check_dangling_stores): - Overhaul lhs_ref.ref analysis. - -2023-04-14 Richard Biener <rguenther@suse.de> - - PR tree-optimization/109502 - * tree-vect-stmts.cc (vectorizable_assignment): Fix - check for conversion between mask and non-mask types. - -2023-04-14 Jeff Law <jlaw@ventanamicro.com> - Jakub Jelinek <jakub@redhat.com> - - PR target/108947 - PR target/109040 - * combine.cc (simplify_and_const_int_1): Compute nonzero_bits in - word_mode rather than mode if WORD_REGISTER_OPERATIONS and mode is - smaller than word_mode. - * simplify-rtx.cc (simplify_context::simplify_binary_operation_1) - <case AND>: Likewise. - -2023-04-14 Jakub Jelinek <jakub@redhat.com> - - * loop-iv.cc (iv_number_of_iterations): Use gen_int_mode instead - of GEN_INT. - -2023-04-13 Andrew MacLeod <amacleod@redhat.com> - - PR tree-optimization/108139 - PR tree-optimization/109462 - * gimple-range-cache.cc (ranger_cache::fill_block_cache): Remove - equivalency check for PHI nodes. - * gimple-range-fold.cc (fold_using_range::range_of_phi): Ensure def - does not dominate single-arg equivalency edges. - -2023-04-13 Richard Sandiford <richard.sandiford@arm.com> - - PR target/108910 - * config/aarch64/aarch64.cc (aarch64_function_arg_alignment): Do - not trust TYPE_ALIGN for pointer types; use POINTER_SIZE instead. - -2023-04-13 Richard Biener <rguenther@suse.de> - - PR tree-optimization/109491 - * tree-ssa-sccvn.cc (expressions_equal_p): Restore the - NULL operands test. - -2023-04-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai> - - PR target/109479 - * config/riscv/riscv-vector-builtins-types.def (vint8mf8_t): Fix predicate. - (vint16mf4_t): Ditto. - (vint32mf2_t): Ditto. - (vint64m1_t): Ditto. - (vint64m2_t): Ditto. - (vint64m4_t): Ditto. - (vint64m8_t): Ditto. - (vuint8mf8_t): Ditto. - (vuint16mf4_t): Ditto. - (vuint32mf2_t): Ditto. - (vuint64m1_t): Ditto. - (vuint64m2_t): Ditto. - (vuint64m4_t): Ditto. - (vuint64m8_t): Ditto. - (vfloat32mf2_t): Ditto. - (vbool64_t): Ditto. - * config/riscv/riscv-vector-builtins.cc (register_builtin_type): Add comments. - (register_vector_type): Ditto. - (check_required_extensions): Fix condition. - * config/riscv/riscv-vector-builtins.h (RVV_REQUIRE_ZVE64): Remove it. - (RVV_REQUIRE_ELEN_64): New define. - (RVV_REQUIRE_MIN_VLEN_64): Ditto. - * config/riscv/riscv-vector-switch.def (TARGET_VECTOR_FP32): Remove it. - (TARGET_VECTOR_FP64): Ditto. - (ENTRY): Fix predicate. - * config/riscv/vector-iterators.md: Fix predicate. - -2023-04-12 Jakub Jelinek <jakub@redhat.com> - - PR tree-optimization/109410 - * tree-ssa-reassoc.cc (build_and_add_sum): Split edge from entry - block if first statement of the function is a call to returns_twice - function. - -2023-04-12 Jakub Jelinek <jakub@redhat.com> - - PR target/109458 - * config/i386/i386.cc: Include rtl-error.h. - (ix86_print_operand): For z modifier warning, use warning_for_asm - if this_is_asm_operands. For Z modifier errors, use %c and code - instead of hardcoded Z. - -2023-04-12 Costas Argyris <costas.argyris@gmail.com> - - * config/i386/x-mingw32-utf8: Remove extrataneous $@ - -2023-04-12 Andrew MacLeod <amacleod@redhat.com> - - PR tree-optimization/109462 - * gimple-range-cache.cc (ranger_cache::fill_block_cache): Don't - check for equivalences if NAME is a phi node. - -2023-04-12 Richard Biener <rguenther@suse.de> - - PR tree-optimization/109473 - * tree-vect-loop.cc (vect_create_epilog_for_reduction): - Convert scalar result to the computation type before performing - the reduction adjustment. - -2023-04-12 Richard Biener <rguenther@suse.de> - - PR tree-optimization/109469 - * tree-vect-slp.cc (vect_slp_function): Skip region starts with - a returns-twice call. - -2023-04-12 Richard Biener <rguenther@suse.de> - - PR tree-optimization/109434 - * tree-ssa-dse.cc (initialize_ao_ref_for_dse): Properly - handle possibly throwing calls when processing the LHS - and may-defs are not OK. - -2023-04-11 Lin Sinan <mynameisxiaou@gmail.com> - - * config/riscv/predicates.md (uimm_extra_bit_or_twobits): Adjust - predicate to avoid splitting arith constants. - -2023-04-11 Yanzhang Wang <yanzhang.wang@intel.com> - Pan Li <pan2.li@intel.com> - Ju-Zhe Zhong <juzhe.zhong@rivai.ai> - Kito Cheng <kito.cheng@sifive.com> - - PR target/109104 - * config/riscv/riscv-protos.h (emit_hard_vlmax_vsetvl): New. - * config/riscv/riscv-v.cc (emit_hard_vlmax_vsetvl): New. - (emit_vlmax_vsetvl): Use emit_hard_vlmax_vsetvl. - * config/riscv/riscv.cc (vector_zero_call_used_regs): New. - (riscv_zero_call_used_regs): New. - (TARGET_ZERO_CALL_USED_REGS): New. - -2023-04-11 Martin Liska <mliska@suse.cz> - - PR driver/108241 - * opts.cc (finish_options): Drop also - x_flag_var_tracking_assignments. - -2023-04-11 Andre Vieira <andre.simoesdiasvieira@arm.com> - - PR tree-optimization/108888 - * tree-if-conv.cc (predicate_statements): Fix gimple call check. - -2023-04-11 Haochen Gui <guihaoc@gcc.gnu.org> - - PR target/108812 - * config/rs6000/vsx.md (vsx_sign_extend_qi_<mode>): Rename to... - (vsx_sign_extend_v16qi_<mode>): ... this. - (vsx_sign_extend_hi_<mode>): Rename to... - (vsx_sign_extend_v8hi_<mode>): ... this. - (vsx_sign_extend_si_v2di): Rename to... - (vsx_sign_extend_v4si_v2di): ... this. - (vsignextend_qi_<mode>): Remove. - (vsignextend_hi_<mode>): Remove. - (vsignextend_si_v2di): Remove. - (vsignextend_v2di_v1ti): Remove. - (*xxspltib_<mode>_split): Replace gen_vsx_sign_extend_qi_v2di with - gen_vsx_sign_extend_v16qi_v2di and gen_vsx_sign_extend_qi_v4si - with gen_vsx_sign_extend_v16qi_v4si. - * config/rs6000/rs6000.md (split for DI constant generation): - Replace gen_vsx_sign_extend_qi_si with gen_vsx_sign_extend_v16qi_si. - (split for HSDI constant generation): Replace gen_vsx_sign_extend_qi_di - with gen_vsx_sign_extend_v16qi_di and gen_vsx_sign_extend_qi_si - with gen_vsx_sign_extend_v16qi_si. - * config/rs6000/rs6000-builtins.def (__builtin_altivec_vsignextsb2d): - Set bif-pattern to vsx_sign_extend_v16qi_v2di. - (__builtin_altivec_vsignextsb2w): Set bif-pattern to - vsx_sign_extend_v16qi_v4si. - (__builtin_altivec_visgnextsh2d): Set bif-pattern to - vsx_sign_extend_v8hi_v2di. - (__builtin_altivec_vsignextsh2w): Set bif-pattern to - vsx_sign_extend_v8hi_v4si. - (__builtin_altivec_vsignextsw2d): Set bif-pattern to - vsx_sign_extend_si_v2di. - (__builtin_altivec_vsignext): Set bif-pattern to - vsx_sign_extend_v2di_v1ti. - * config/rs6000/rs6000-builtin.cc (lxvrse_expand_builtin): Replace - gen_vsx_sign_extend_qi_v2di with gen_vsx_sign_extend_v16qi_v2di, - gen_vsx_sign_extend_hi_v2di with gen_vsx_sign_extend_v8hi_v2di and - gen_vsx_sign_extend_si_v2di with gen_vsx_sign_extend_v4si_v2di. - -2023-04-10 Michael Meissner <meissner@linux.ibm.com> - - PR target/70243 - * config/rs6000/vsx.md (vsx_fmav4sf4): Do not generate vmaddfp. - (vsx_nfmsv4sf4): Do not generate vnmsubfp. - -2023-04-10 Haochen Jiang <haochen.jiang@intel.com> - - * config/i386/i386.h (PTA_GRANITERAPIDS): Add PTA_AMX_COMPLEX. - -2023-04-10 Haochen Jiang <haochen.jiang@intel.com> - - * common/config/i386/cpuinfo.h (get_available_features): - Detect AMX-COMPLEX. - * common/config/i386/i386-common.cc - (OPTION_MASK_ISA2_AMX_COMPLEX_SET, - OPTION_MASK_ISA2_AMX_COMPLEX_UNSET): New. - (ix86_handle_option): Handle -mamx-complex. - * common/config/i386/i386-cpuinfo.h (enum processor_features): - Add FEATURE_AMX_COMPLEX. - * common/config/i386/i386-isas.h: Add ISA_NAME_TABLE_ENTRY for - amx-complex. - * config.gcc: Add amxcomplexintrin.h. - * config/i386/cpuid.h (bit_AMX_COMPLEX): New. - * config/i386/i386-c.cc (ix86_target_macros_internal): Define - __AMX_COMPLEX__. - * config/i386/i386-isa.def (AMX_COMPLEX): Add DEF_PTA(AMX_COMPLEX). - * config/i386/i386-options.cc (ix86_valid_target_attribute_inner_p): - Handle amx-complex. - * config/i386/i386.opt: Add option -mamx-complex. - * config/i386/immintrin.h: Include amxcomplexintrin.h. - * doc/extend.texi: Document amx-complex. - * doc/invoke.texi: Document -mamx-complex. - * doc/sourcebuild.texi: Document target amx-complex. - * config/i386/amxcomplexintrin.h: New file. - -2023-04-08 Jakub Jelinek <jakub@redhat.com> - - PR tree-optimization/109392 - * tree-vect-generic.cc (tree_vec_extract): Handle failure - of maybe_push_res_to_seq better. - -2023-04-08 Jakub Jelinek <jakub@redhat.com> - - * Makefile.in (CORETYPES_H): Depend on align.h, poly-int.h and - poly-int-types.h. - (SYSTEM_H): Depend on $(HASHTAB_H). - * config/riscv/t-riscv (build/genrvv-type-indexer.o): Remove unused - dependency on $(RTL_BASE_H), remove redundant dependency on - insn-modes.h. - -2023-04-06 Richard Earnshaw <rearnsha@arm.com> - - PR target/107674 - * config/arm/arm.cc (arm_effective_regno): New function. - (mve_vector_mem_operand): Use it. - -2023-04-06 Andrew MacLeod <amacleod@redhat.com> - - PR tree-optimization/109417 - * gimple-range-gori.cc (gori_compute::may_recompute_p): Check if - dependency is in SSA_NAME_FREE_LIST. - -2023-04-06 Andrew Pinski <apinski@marvell.com> - - PR tree-optimization/109427 - * params.opt (-param=vect-induction-float=): - Fix option attribute typo for IntegerRange. - -2023-04-05 Jeff Law <jlaw@ventanamicro> - - PR target/108892 - * combine.cc (combine_instructions): Force re-recognition when - after restoring the body of an insn to its original form. - -2023-04-05 Martin Jambor <mjambor@suse.cz> - - PR ipa/108959 - * ipa-sra.cc (zap_useless_ipcp_results): New function. - (process_isra_node_results): Call it. - -2023-04-05 Ju-Zhe Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/vector.md: Fix incorrect operand order. - -2023-04-05 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv-vsetvl.cc - (pass_vsetvl::compute_local_backward_infos): Update user vsetvl in local - demand fusion. - -2023-04-05 Li Xu <xuli1@eswincomputing.com> - - * config/riscv/riscv-vector-builtins.def: Fix typo. - * config/riscv/riscv.cc (riscv_dwarf_poly_indeterminate_value): Ditto. - * config/riscv/vector-iterators.md: Ditto. - -2023-04-04 Hans-Peter Nilsson <hp@axis.com> - - * doc/md.texi (Including Patterns): Fix page break. - -2023-04-04 Jakub Jelinek <jakub@redhat.com> - - PR tree-optimization/109386 - * range-op-float.cc (foperator_lt::op1_range, foperator_lt::op2_range, - foperator_le::op1_range, foperator_le::op2_range, - foperator_gt::op1_range, foperator_gt::op2_range, - foperator_ge::op1_range, foperator_ge::op2_range): Make r varying for - BRS_FALSE case even if the other op is maybe_isnan, not just - known_isnan. - (foperator_unordered_lt::op1_range, foperator_unordered_lt::op2_range, - foperator_unordered_le::op1_range, foperator_unordered_le::op2_range, - foperator_unordered_gt::op1_range, foperator_unordered_gt::op2_range, - foperator_unordered_ge::op1_range, foperator_unordered_ge::op2_range): - Make r varying for BRS_TRUE case even if the other op is maybe_isnan, - not just known_isnan. - -2023-04-04 Marek Polacek <polacek@redhat.com> - - PR sanitizer/109107 - * fold-const.cc (fold_binary_loc): Use TYPE_OVERFLOW_SANITIZED - when associating. - * match.pd: Use TYPE_OVERFLOW_SANITIZED. - -2023-04-04 Stam Markianos-Wright <stam.markianos-wright@arm.com> - - * config/arm/mve.md (mve_vcvtq_n_to_f_<supf><mode>): Swap operands. - (mve_vcreateq_f<mode>): Swap operands. - -2023-04-04 Andrew Stubbs <ams@codesourcery.com> - - * config/gcn/gcn-valu.md (one_cmpl<mode>2<exec>): New. - -2023-04-04 Jakub Jelinek <jakub@redhat.com> - - PR target/109384 - * common/config/riscv/riscv-common.cc (riscv_subset_list::parse): - Reword diagnostics about zfinx conflict with f, formatting fixes. - -2023-04-04 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> - - * config/sol2.h (LIB_SPEC): Don't link with -lpthread. - -2023-04-04 Richard Biener <rguenther@suse.de> - - PR tree-optimization/109304 - * tree-profile.cc (tree_profiling): Use symtab node - availability to decide whether to skip adjusting calls. - Do not adjust calls to internal functions. - -2023-04-04 Kewen Lin <linkw@linux.ibm.com> - - PR target/108807 - * config/rs6000/rs6000.cc (rs6000_expand_vector_set_var_p9): Fix gen - function for permutation control vector by considering big endianness. - -2023-04-04 Kewen Lin <linkw@linux.ibm.com> - - PR target/108699 - * config/rs6000/altivec.md (*p9v_parity<mode>2): Rename to ... - (rs6000_vprtyb<mode>2): ... this. - * config/rs6000/rs6000-builtins.def (VPRTYBD): Replace parityv2di2 with - rs6000_vprtybv2di2. - (VPRTYBW): Replace parityv4si2 with rs6000_vprtybv4si2. - (VPRTYBQ): Replace parityv1ti2 with rs6000_vprtybv1ti2. - * config/rs6000/vector.md (parity<mode>2 with VEC_IP): Expand with - popcountv16qi2 and the corresponding rs6000_vprtyb<mode>2. - -2023-04-04 Hans-Peter Nilsson <hp@axis.com> - Sandra Loosemore <sandra@codesourcery.com> - - * doc/md.texi (Insn Splitting): Tweak wording for readability. - -2023-04-03 Martin Jambor <mjambor@suse.cz> - - PR ipa/109303 - * ipa-prop.cc (determine_known_aggregate_parts): Check that the - offset + size will be representable in unsigned int. - -2023-04-03 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> - - * configure.ac (ZSTD_LIB): Move before zstd.h check. - Unset gcc_cv_header_zstd_h without libzstd. - * configure: Regenerate. - -2023-04-03 Martin Liska <mliska@suse.cz> - - * doc/invoke.texi: Document new param. - -2023-04-03 Cupertino Miranda <cupertino.miranda@oracle.com> - - * doc/sourcebuild.texi (const_volatile_readonly_section): Document - new check_effective_target function. - -2023-04-03 Li Xu <xuli1@eswincomputing.com> - - * config/riscv/riscv-vector-builtins.def (vuint32m8_t): Fix typo. - (vfloat32m8_t): Likewise - -2023-04-03 liuhongt <hongtao.liu@intel.com> - - * doc/md.texi: Document signbitm2. - -2023-04-02 Juzhe-Zhong <juzhe.zhong@rivai.ai> - kito-cheng <kito.cheng@sifive.com> - - * config/riscv/vector.md: Fix RA constraint. - -2023-04-02 Juzhe-Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv-protos.h (gen_avl_for_scalar_move): New function. - * config/riscv/riscv-v.cc (gen_avl_for_scalar_move): New function. - * config/riscv/vector.md: Fix scalar move bug. - -2023-04-01 Jakub Jelinek <jakub@redhat.com> - - * range-op-float.cc (foperator_equal::fold_range): If at least - one of the op ranges is not singleton and neither is NaN and all - 4 bounds are zero, return [1, 1]. - (foperator_not_equal::fold_range): In the same case return [0, 0]. - -2023-04-01 Jakub Jelinek <jakub@redhat.com> - - * range-op-float.cc (foperator_equal::fold_range): Perform the - non-singleton handling regardless of maybe_isnan (op1, op2). - (foperator_not_equal::fold_range): Likewise. - (foperator_lt::fold_range, foperator_le::fold_range, - foperator_gt::fold_range, foperator_ge::fold_range): Perform the - real_* comparison check which results in range_false (type) - even if maybe_isnan (op1, op2). Simplify. - (foperator_ltgt): New class. - (fop_ltgt): New variable. - (floating_op_table::floating_op_table): Handle LTGT_EXPR using - fop_ltgt. - -2023-04-01 Jakub Jelinek <jakub@redhat.com> - - PR target/109254 - * builtins.cc (apply_args_size): If targetm.calls.get_raw_arg_mode - returns VOIDmode, handle it like if the register isn't used for - passing arguments at all. - (apply_result_size): If targetm.calls.get_raw_result_mode returns - VOIDmode, handle it like if the register isn't used for returning - results at all. - * target.def (get_raw_result_mode, get_raw_arg_mode): Document what it - means to return VOIDmode. - * doc/tm.texi: Regenerated. - * config/aarch64/aarch64.cc (aarch64_function_value_regno_p): Return - TARGET_SVE for P0_REGNUM. - (aarch64_function_arg_regno_p): Also return true for p0-p3. - (aarch64_get_reg_raw_mode): Return VOIDmode for PR_REGNUM_P regs. - -2023-03-31 Vladimir N. Makarov <vmakarov@redhat.com> - - * lra-constraints.cc: (combine_reload_insn): New function. - -2023-03-31 Jakub Jelinek <jakub@redhat.com> - - PR tree-optimization/91645 - * range-op-float.cc (foperator_unordered_lt::fold_range, - foperator_unordered_le::fold_range, - foperator_unordered_gt::fold_range, - foperator_unordered_ge::fold_range, - foperator_unordered_equal::fold_range): Call the ordered - fold_range on ranges with cleared NaNs. - * value-query.cc (range_query::get_tree_range): Handle also - COMPARISON_CLASS_P trees. - -2023-03-31 Kito Cheng <kito.cheng@sifive.com> - Andrew Pinski <pinskia@gmail.com> - - PR target/109328 - * config/riscv/t-riscv: Add missing dependencies. - -2023-03-31 liuhongt <hongtao.liu@intel.com> - - * config/i386/i386.cc (inline_memory_move_cost): Return 100 - for MASK_REGS when MODE_SIZE > 8. - -2023-03-31 liuhongt <hongtao.liu@intel.com> - - PR target/85048 - * config/i386/i386-builtin.def (BDESC): Adjust icode name from - ufloat/ufix to floatuns/fixuns. - * config/i386/i386-expand.cc - (ix86_expand_vector_convert_uns_vsivsf): Adjust comments. - * config/i386/sse.md - (ufloat<sseintvecmodelower><mode>2<mask_name><round_name>): - Renamed to .. - (<mask_codefor>floatuns<sseintvecmodelower><mode>2<mask_name><round_name>):.. this. - (<mask_codefor><avx512>_ufix_notrunc<sf2simodelower><mode><mask_name><round_name>): - Renamed to .. - (<mask_codefor><avx512>_fixuns_notrunc<sf2simodelower><mode><mask_name><round_name>): - .. this. - (<fixsuffix>fix_truncv16sfv16si2<mask_name><round_saeonly_name>): - Renamed to .. - (fix<fixunssuffix>_truncv16sfv16si2<mask_name><round_saeonly_name>):.. this. - (ufloat<si2dfmodelower><mode>2<mask_name>): Renamed to .. - (floatuns<si2dfmodelower><mode>2<mask_name>): .. this. - (ufloatv2siv2df2<mask_name>): Renamed to .. - (<mask_codefor>floatunsv2siv2df2<mask_name>): .. this. - (ufix_notrunc<mode><si2dfmodelower>2<mask_name><round_name>): - Renamed to .. - (fixuns_notrunc<mode><si2dfmodelower>2<mask_name><round_name>): - .. this. - (ufix_notruncv2dfv2si2): Renamed to .. - (fixuns_notruncv2dfv2si2):.. this. - (ufix_notruncv2dfv2si2_mask): Renamed to .. - (fixuns_notruncv2dfv2si2_mask): .. this. - (*ufix_notruncv2dfv2si2_mask_1): Renamed to .. - (*fixuns_notruncv2dfv2si2_mask_1): .. this. - (ufix_truncv2dfv2si2): Renamed to .. - (*fixuns_truncv2dfv2si2): .. this. - (ufix_truncv2dfv2si2_mask): Renamed to .. - (fixuns_truncv2dfv2si2_mask): .. this. - (*ufix_truncv2dfv2si2_mask_1): Renamed to .. - (*fixuns_truncv2dfv2si2_mask_1): .. this. - (ufix_truncv4dfv4si2<mask_name>): Renamed to .. - (fixuns_truncv4dfv4si2<mask_name>): .. this. - (ufix_notrunc<mode><sseintvecmodelower>2<mask_name><round_name>): - Renamed to .. - (fixuns_notrunc<mode><sseintvecmodelower>2<mask_name><round_name>): - .. this. - (ufix_trunc<mode><sseintvecmodelower>2<mask_name>): Renamed to .. - (<mask_codefor>fixuns_trunc<mode><sseintvecmodelower>2<mask_name>): - .. this. - -2023-03-30 Andrew MacLeod <amacleod@redhat.com> - - PR tree-optimization/109154 - * gimple-range-gori.cc (gori_compute::may_recompute_p): Add depth limit. - * gimple-range-gori.h (may_recompute_p): Add depth param. - * params.opt (ranger-recompute-depth): New param. - -2023-03-30 Jason Merrill <jason@redhat.com> - - PR c++/107897 - PR c++/108887 - * cgraph.h: Move reset() from cgraph_node to symtab_node. - * cgraphunit.cc (symtab_node::reset): Adjust. Also call - remove_from_same_comdat_group. - -2023-03-30 Richard Biener <rguenther@suse.de> - - PR tree-optimization/107561 - * gimple-ssa-warn-access.cc (get_size_range): Add flags - argument and pass it on. - (check_access): When querying for the size range pass - SR_ALLOW_ZERO when the known destination size is zero. - -2023-03-30 Richard Biener <rguenther@suse.de> - - PR tree-optimization/109342 - * tree-ssa-sccvn.cc (vn_nary_op_get_predicated_value): New - overload for edge. When that edge is a backedge use - dominated_by_p directly. - -2023-03-30 liuhongt <hongtao.liu@intel.com> - - * config/i386/i386-expand.cc (expand_vec_perm_blend): Generate - vpblendd instead of vpblendw for V4SI under avx2. - -2023-03-29 Hans-Peter Nilsson <hp@axis.com> - - * config/cris/cris.cc (cris_rtx_costs) [CONST_INT]: Return 0 - for many quick operands, for register-sized modes. - -2023-03-29 Jiawei <jiawei@iscas.ac.cn> - - * common/config/riscv/riscv-common.cc (riscv_subset_list::parse): - New check. - -2023-03-29 Martin Liska <mliska@suse.cz> - - PR bootstrap/109310 - * configure.ac: Emit a warning for deprecated option - --enable-link-mutex. - * configure: Regenerate. - -2023-03-29 Richard Biener <rguenther@suse.de> - - PR tree-optimization/109331 - * tree-ssa-forwprop.cc (pass_forwprop::execute): When we - discover a taken edge make sure to cleanup the CFG. - -2023-03-29 Richard Biener <rguenther@suse.de> - - PR tree-optimization/109327 - * tree-ssa-forwprop.cc (pass_forwprop::execute): Deal with - already removed stmts when draining to_remove. - -2023-03-29 Richard Biener <rguenther@suse.de> - - PR ipa/106124 - * dwarf2out.cc (lookup_type_die): Reset TREE_ASM_WRITTEN - so we can re-create the DIE for the type if required. - -2023-03-29 Jakub Jelinek <jakub@redhat.com> - Richard Biener <rguenther@suse.de> - - PR tree-optimization/109301 - * tree-ssa-math-opts.cc (pass_data_cse_sincos): Change - properties_provided from PROP_gimple_opt_math to 0. - (pass_data_expand_powcabs): Change properties_provided from 0 to - PROP_gimple_opt_math. - -2023-03-29 Richard Biener <rguenther@suse.de> - - PR tree-optimization/109154 - * tree-if-conv.cc (gen_phi_arg_condition): Handle single - inverted condition specially by inverting at the caller. - (gen_phi_arg_condition): Swap COND_EXPR arms if requested. - -2023-03-28 David Malcolm <dmalcolm@redhat.com> - - PR c/107002 - * diagnostic-show-locus.cc (column_range::column_range): Factor - out assertion conditional into... - (column_range::valid_p): ...this new function. - (line_corrections::add_hint): Don't attempt to consolidate hints - if it would lead to invalid column_range instances. - -2023-03-28 Kito Cheng <kito.cheng@sifive.com> - - PR target/109312 - * config/riscv/riscv-c.cc (riscv_ext_version_value): New. - (riscv_cpu_cpp_builtins): Define __riscv_v_intrinsic and - minor refactor. - -2023-03-28 Alexander Monakov <amonakov@ispras.ru> - - PR rtl-optimization/109187 - * haifa-sched.cc (autopref_rank_for_schedule): Avoid use of overflowing - subtraction in three-way comparison. - -2023-03-28 Andrew MacLeod <amacleod@redhat.com> - - PR tree-optimization/109265 - PR tree-optimization/109274 - * gimple-range-gori.cc (gori_compute::compute_operand_range): Do - not create a relation record is op1 and op2 are the same symbol. - (gori_compute::compute_operand1_range): Pass op1 == op2 to the - handler for this stmt, but create a new record only if this statement - generates a relation based on the ranges. - (gori_compute::compute_operand2_range): Ditto. - * value-relation.h (value_relation::set_relation): Always create the - record that is requested. - -2023-03-28 Richard Biener <rguenther@suse.de> - - PR tree-optimization/107087 - * tree-ssa-forwprop.cc (pass_forwprop::execute): Track - executable regions to avoid useless work and to better - propagate degenerate PHIs. - -2023-03-28 Costas Argyris <costas.argyris@gmail.com> - - * config/i386/x-mingw32-utf8: update comments. - -2023-03-28 Richard Sandiford <richard.sandiford@arm.com> - - PR target/109072 - * config/aarch64/aarch64-protos.h (aarch64_vector_load_decl): Declare. - * config/aarch64/aarch64.h (machine_function::vector_load_decls): New - variable. - * config/aarch64/aarch64-builtins.cc (aarch64_record_vector_load_arg): - New function. - (aarch64_general_gimple_fold_builtin): Delay folding of vld1 until - after inlining. Record which decls are loaded from. Fix handling - of vops for loads and stores. - * config/aarch64/aarch64.cc (aarch64_vector_load_decl): New function. - (aarch64_accesses_vector_load_decl_p): Likewise. - (aarch64_vector_costs::m_stores_to_vector_load_decl): New member - variable. - (aarch64_vector_costs::add_stmt_cost): If the function has a vld1 - that loads from a decl, treat vector stores to those decls as - zero cost. - (aarch64_vector_costs::finish_cost): ...and in that case, - if the vector code does nothing more than a store, give the - prologue a zero cost as well. - -2023-03-28 Richard Biener <rguenther@suse.de> - - PR bootstrap/84402 - PR tree-optimization/108129 - * genmatch.cc (lower_for): For (match ...) delay - substituting into the match operator if possible. - (dt_operand::gen_gimple_expr): For user_id look at the - first substitute for determining how to access operands. - (dt_operand::gen_generic_expr): Likewise. - (dt_node::gen_kids): Properly sort user_ids according - to their substitutes. - (dt_node::gen_kids_1): Code-generate user_id matching. - -2023-03-28 Jakub Jelinek <jakub@redhat.com> - Jonathan Wakely <jwakely@redhat.com> - - * gcov-tool.cc (do_merge, do_merge_stream, do_rewrite, do_overlap): - Use subcommand rather than sub-command in function comments. - -2023-03-28 Jakub Jelinek <jakub@redhat.com> - - PR tree-optimization/109154 - * value-range.h (frange::flush_denormals_to_zero): Make it public - rather than private. - * value-range.cc (frange::set): Don't call flush_denormals_to_zero - here. - * range-op-float.cc (range_operator_float::fold_range): Call - flush_denormals_to_zero. - -2023-03-28 Jakub Jelinek <jakub@redhat.com> - - PR middle-end/106190 - * sanopt.cc (pass_sanopt::execute): Return TODO_cleanup_cfg if any - of the IFN_{UB,HWA,A}SAN_* internal fns are lowered. - -2023-03-28 Jakub Jelinek <jakub@redhat.com> - - * range-op-float.cc (float_widen_lhs_range): Use pass get_nan_state - as 4th argument to set to avoid clear_nan and union_ calls. - -2023-03-28 Jakub Jelinek <jakub@redhat.com> - - PR target/109276 - * config/i386/i386.cc (assign_386_stack_local): For DImode - with SLOT_FLOATxFDI_387 and -m32 -mpreferred-stack-boundary=2 pass - align 32 rather than 0 to assign_stack_local. - -2023-03-28 Eric Botcazou <ebotcazou@adacore.com> - - PR target/109140 - * config/sparc/sparc.cc (sparc_expand_vcond): Call signed_condition - on operand #3 to get the final condition code. Use std::swap. - * config/sparc/sparc.md (vcondv8qiv8qi): New VIS 4 expander. - (fucmp<gcond:code>8<P:mode>_vis): Move around. - (fpcmpu<gcond:code><GCM:gcm_name><P:mode>_vis): Likewise. - (vcondu<GCM:mode><GCM:mode>): New VIS 4 expander. - -2023-03-28 Eric Botcazou <ebotcazou@adacore.com> - - * doc/gm2.texi: Add missing Next, Previous and Top fields to most - top-level sections. - -2023-03-28 Costas Argyris <costas.argyris@gmail.com> - - * config.host: Pull in i386/x-mingw32-utf8 Makefile - fragment and reference utf8rc-mingw32.o explicitly - for mingw hosts. - * config/i386/sym-mingw32.cc: prevent name mangling of - stub symbol. - * config/i386/x-mingw32-utf8: Make utf8rc-mingw32.o - depend on manifest file explicitly. - -2023-03-28 Richard Biener <rguenther@suse.de> - - Revert: - 2023-03-27 Richard Biener <rguenther@suse.de> - - PR rtl-optimization/109237 - * cfgcleanup.cc (bb_is_just_return): Walk insns backwards. - -2023-03-28 Richard Biener <rguenther@suse.de> - - * common.opt (gdwarf): Remove Negative(gdwarf-). - -2023-03-28 Richard Biener <rguenther@suse.de> - - * common.opt (gdwarf): Add RejectNegative. - (gdwarf-): Likewise. - (ggdb): Likewise. - (gvms): Likewise. - -2023-03-28 Hans-Peter Nilsson <hp@axis.com> - - * config/cris/constraints.md ("T"): Correct to - define_memory_constraint. - -2023-03-28 Hans-Peter Nilsson <hp@axis.com> - - * config/cris/cris.md (BW2): New mode-iterator. - (lra_szext_decomposed, lra_szext_decomposed_indirect_with_offset): New - peephole2s. - -2023-03-28 Hans-Peter Nilsson <hp@axis.com> - - * config/cris/cris.md ("*add<mode>3_addi"): Improve to bail only - for possible eliminable compares. - -2023-03-28 Hans-Peter Nilsson <hp@axis.com> - - * config/cris/constraints.md ("R"): Remove unused constraint. - -2023-03-27 Jonathan Wakely <jwakely@redhat.com> - - PR gcov-profile/109297 - * gcov-tool.cc (merge_usage): Fix "subcomand" typo. - (merge_stream_usage): Likewise. - (overlap_usage): Likewise. - -2023-03-27 Christoph Müllner <christoph.muellner@vrull.eu> - - PR target/109296 - * config/riscv/thead.md: Add missing mode specifiers. - -2023-03-27 Philipp Tomsich <philipp.tomsich@vrull.eu> - Jiangning Liu <jiangning.liu@amperecomputing.com> - Manolis Tsamis <manolis.tsamis@vrull.eu> - - * config/aarch64/aarch64.cc: Update vector costs for ampere1. - -2023-03-27 Richard Biener <rguenther@suse.de> - - PR rtl-optimization/109237 - * cfgcleanup.cc (bb_is_just_return): Walk insns backwards. - -2023-03-27 Richard Biener <rguenther@suse.de> - - PR lto/109263 - * lto-wrapper.cc (run_gcc): Parse alternate debug options - as well, they always enable debug. - -2023-03-27 Kewen Lin <linkw@linux.ibm.com> - - PR target/109167 - * config/rs6000/emmintrin.h (_mm_bslli_si128): Move the implementation - from ... - (_mm_slli_si128): ... here. Change to call _mm_bslli_si128 directly. - -2023-03-27 Kewen Lin <linkw@linux.ibm.com> - - PR target/109082 - * config/rs6000/emmintrin.h (_mm_bslli_si128): Check __N is not less - than zero when calling vec_sld. - (_mm_bsrli_si128): Return __A if __N is zero, check __N is bigger than - zero when calling vec_sld. - (_mm_slli_si128): Return __A if _imm5 is zero, check _imm5 is bigger - than zero when calling vec_sld. - -2023-03-27 Sandra Loosemore <sandra@codesourcery.com> - - * doc/generic.texi (OpenMP): Document OMP_SIMD, OMP_DISTRIBUTE, - OMP_TASKLOOP, and OMP_LOOP with OMP_FOR. Document how collapsed - loops are represented and which fields are vectors. Add - documentation for OMP_FOR_PRE_BODY field. Document internal - form of non-rectangular loops and OMP_FOR_NON_RECTANGULAR. - * tree.def (OMP_FOR): Make documentation consistent with the - Texinfo manual, to fill some gaps and correct errors. - -2023-03-26 Andreas Schwab <schwab@linux-m68k.org> - - PR target/106282 - * config/m68k/m68k.h (FINAL_PRESCAN_INSN): Define. - * config/m68k/m68k.cc (m68k_final_prescan_insn): Define. - (handle_move_double): Call it before handle_movsi. - * config/m68k/m68k-protos.h: Declare it. - -2023-03-26 Jakub Jelinek <jakub@redhat.com> - - PR tree-optimization/109230 - * match.pd (fneg/fadd simplify): Verify also odd permutation indexes. - -2023-03-26 Jakub Jelinek <jakub@redhat.com> - - PR ipa/105685 - * predict.cc (compute_function_frequency): Don't call - warn_function_cold if function already has cold attribute. - -2023-03-26 Gerald Pfeifer <gerald@pfeifer.com> - - * doc/install.texi: Remove anachronistic note - related to languages built and separate source tarballs. - -2023-03-25 David Malcolm <dmalcolm@redhat.com> - - PR analyzer/109098 - * diagnostic-format-sarif.cc (read_until_eof): Delete. - (maybe_read_file): Delete. - (sarif_builder::maybe_make_artifact_content_object): Use - get_source_file_content rather than maybe_read_file. - Reject it if it's not valid UTF-8. - * input.cc (file_cache_slot::get_full_file_content): New. - (get_source_file_content): New. - (selftest::check_cpp_valid_utf8_p): New. - (selftest::test_cpp_valid_utf8_p): New. - (selftest::input_cc_tests): Call selftest::test_cpp_valid_utf8_p. - * input.h (get_source_file_content): New prototype. - -2023-03-24 David Malcolm <dmalcolm@redhat.com> - - * doc/analyzer.texi (Debugging the Analyzer): Add notes on useful - debugging options. - (Special Functions for Debugging the Analyzer): Convert to a - table, and rewrite in places. - (Other Debugging Techniques): Add notes on how to compare two - different exploded graphs. - -2023-03-24 David Malcolm <dmalcolm@redhat.com> - - PR other/109163 - * json.cc: Update comments to indicate that we now preserve - insertion order of keys within objects. - (object::print): Traverse keys in insertion order. - (object::set): Preserve insertion order of keys. - (selftest::test_writing_objects): Add an additional key to verify - that we preserve insertion order. - * json.h (object::m_keys): New field. - -2023-03-24 Andrew MacLeod <amacleod@redhat.com> - - PR tree-optimization/109238 - * gimple-range-cache.cc (ranger_cache::resolve_dom): Ignore - predecessors which this block dominates. - -2023-03-24 Richard Biener <rguenther@suse.de> - - PR tree-optimization/106912 - * tree-profile.cc (tree_profiling): Update stmts only when - profiling or testing coverage. Make sure to update calls - fntype, stripping 'const' there. - -2023-03-24 Jakub Jelinek <jakub@redhat.com> - - PR middle-end/109258 - * builtins.cc (inline_expand_builtin_bytecmp): Return NULL_RTX early - if target == const0_rtx. - -2023-03-24 Alexandre Oliva <oliva@adacore.com> - - * doc/sourcebuild.texi (weak_undefined, posix_memalign): - Document options and effective targets. - -2023-03-24 Costas Argyris <costas.argyris@gmail.com> - - * config/i386/x-mingw32-utf8: Make HOST_EXTRA_OBJS_SYMBOL - optional. - -2023-03-23 Pat Haugen <pthaugen@linux.ibm.com> - - * config/rs6000/rs6000.md (*mod<mode>3, umod<mode>3): Add - non-earlyclobber alternative. - -2023-03-23 Andrew Pinski <apinski@marvell.com> - - PR c/84900 - * fold-const.cc (maybe_lvalue_p): Treat COMPOUND_LITERAL_EXPR - as a lvalue. - -2023-03-23 Richard Biener <rguenther@suse.de> - - PR tree-optimization/107569 - * tree-ssa-sccvn.cc (eliminate_dom_walker::eliminate_stmt): - Do not push SSA names with zero uses as available leader. - (process_bb): Likewise. - -2023-03-23 Richard Biener <rguenther@suse.de> - - PR tree-optimization/109262 - * tree-ssa-forwprop.cc (pass_forwprop::execute): When - combining a piecewise complex load avoid touching loads - that throw internally. Use fun, not cfun throughout. - -2023-03-23 Jakub Jelinek <jakub@redhat.com> - - * value-range.cc (irange::irange_union, irange::intersect): Fix - comment spelling bugs. - * gimple-range-trace.cc (range_tracer::do_header): Likewise. - * gimple-range-trace.h: Likewise. - * gimple-range-edge.cc: Likewise. - (gimple_outgoing_range_stmt_p, - gimple_outgoing_range::switch_edge_range, - gimple_outgoing_range::edge_range_p): Likewise. - * gimple-range.cc (gimple_ranger::prefill_stmt_dependencies, - gimple_ranger::fold_stmt, gimple_ranger::register_transitive_infer, - assume_query::assume_query, assume_query::calculate_phi): Likewise. - * gimple-range-edge.h: Likewise. - * value-range.h (Value_Range::set, Value_Range::lower_bound, - Value_Range::upper_bound, frange::set_undefined): Likewise. - * gimple-range-gori.h (range_def_chain::depend, gori_map::m_outgoing, - gori_compute): Likewise. - * gimple-range-fold.h (fold_using_range): Likewise. - * gimple-range-path.cc (path_range_query::compute_ranges_in_phis): - Likewise. - * gimple-range-gori.cc (range_def_chain::in_chain_p, - range_def_chain::dump, gori_map::calculate_gori, - gori_compute::compute_operand_range_switch, - gori_compute::logical_combine, gori_compute::refine_using_relation, - gori_compute::compute_operand1_range, gori_compute::may_recompute_p): - Likewise. - * gimple-range.h: Likewise. - (enable_ranger): Likewise. - * range-op.h (empty_range_varying): Likewise. - * value-query.h (value_query): Likewise. - * gimple-range-cache.cc (block_range_cache::set_bb_range, - block_range_cache::dump, ssa_global_cache::clear_global_range, - temporal_cache::temporal_value, temporal_cache::current_p, - ranger_cache::range_of_def, ranger_cache::propagate_updated_value, - ranger_cache::range_from_dom, ranger_cache::register_inferred_value): - Likewise. - * gimple-range-fold.cc (fur_edge::get_phi_operand, - fur_stmt::get_operand, gimple_range_adjustment, - fold_using_range::range_of_phi, - fold_using_range::relation_fold_and_or): Likewise. - * value-range-storage.h (irange_storage_slot::MAX_INTS): Likewise. - * value-query.cc (range_query::value_of_expr, - range_query::value_on_edge, range_query::query_relation): Likewise. - * tree-vrp.cc (remove_unreachable::remove_and_update_globals, - intersect_range_with_nonzero_bits): Likewise. - * gimple-range-infer.cc (gimple_infer_range::check_assume_func, - exit_range): Likewise. - * value-relation.h: Likewise. - (equiv_oracle, relation_trio::relation_trio, value_relation, - value_relation::value_relation, pe_min): Likewise. - * range-op-float.cc (range_operator_float::rv_fold, - frange_arithmetic, foperator_unordered_equal::op1_range, - foperator_div::rv_fold): Likewise. - * gimple-range-op.cc (cfn_clz::fold_range): Likewise. - * value-relation.cc (equiv_oracle::query_relation, - equiv_oracle::register_equiv, equiv_oracle::add_equiv_to_block, - value_relation::apply_transitive, relation_chain_head::find_relation, - dom_oracle::query_relation, dom_oracle::find_relation_block, - dom_oracle::find_relation_dom, path_oracle::register_equiv): Likewise. - * range-op.cc (range_operator::wi_fold_in_parts_equiv, - create_possibly_reversed_range, adjust_op1_for_overflow, - operator_mult::wi_fold, operator_exact_divide::op1_range, - operator_cast::lhs_op1_relation, operator_cast::fold_pair, - operator_cast::fold_range, operator_abs::wi_fold, range_op_cast_tests, - range_op_lshift_tests): Likewise. - -2023-03-23 Andrew Stubbs <ams@codesourcery.com> - - * config/gcn/gcn.cc (gcn_class_max_nregs): Handle vectors in SGPRs. - (move_callee_saved_registers): Detect the bug condition early. - -2023-03-23 Andrew Stubbs <ams@codesourcery.com> - - * config/gcn/gcn-protos.h (gcn_stepped_zero_int_parallel_p): New. - * config/gcn/gcn-valu.md (V_1REG_ALT): New. - (V_2REG_ALT): New. - (vec_extract<V_1REG:mode><V_1REG_ALT:mode>_nop): New. - (vec_extract<V_2REG:mode><V_2REG_ALT:mode>_nop): New. - (vec_extract<V_ALL:mode><V_ALL_ALT:mode>): Use new patterns. - * config/gcn/gcn.cc (gcn_stepped_zero_int_parallel_p): New. - * config/gcn/predicates.md (ascending_zero_int_parallel): New. - -2023-03-23 Jakub Jelinek <jakub@redhat.com> - - PR tree-optimization/109176 - * tree-vect-generic.cc (expand_vector_condition): If a has - vector boolean type and is a comparison, also check if both - the comparison and VEC_COND_EXPR could be successfully expanded - individually. - -2023-03-23 Pan Li <pan2.li@intel.com> - Ju-Zhe Zhong <juzhe.zhong@rivai.ai> - - PR target/108654 - PR target/108185 - * config/riscv/riscv-modes.def (ADJUST_BYTESIZE): Adjust size - for vector mask modes. - * config/riscv/riscv.cc (riscv_v_adjust_bytesize): New. - * config/riscv/riscv.h (riscv_v_adjust_bytesize): New. - -2023-03-23 Songhe Zhu <zhusonghe@eswincomputing.com> - - * config/riscv/multilib-generator: Adjusting the loop of 'alt' in 'alts'. - -2023-03-23 Ju-Zhe Zhong <juzhe.zhong@rivai.ai> - - PR target/109244 - * config/riscv/riscv-protos.h (emit_vlmax_vsetvl): Define as global. - (emit_vlmax_op): Ditto. - * config/riscv/riscv-v.cc (get_sew): New function. - (emit_vlmax_vsetvl): Adapt function. - (emit_pred_op): Ditto. - (emit_vlmax_op): Ditto. - (emit_nonvlmax_op): Ditto. - (legitimize_move): Fix LRA ICE. - (gen_no_side_effects_vsetvl_rtx): Adapt function. - * config/riscv/vector.md (@mov<V_FRACT:mode><P:mode>_lra): New pattern. - (@mov<VB:mode><P:mode>_lra): Ditto. - (*mov<V_FRACT:mode><P:mode>_lra): Ditto. - (*mov<VB:mode><P:mode>_lra): Ditto. - -2023-03-23 Ju-Zhe Zhong <juzhe.zhong@rivai.ai> - - PR target/109228 - * config/riscv/riscv-vector-builtins-bases.cc (class vlenb): Add - __riscv_vlenb support. - (BASE): Ditto. - * config/riscv/riscv-vector-builtins-bases.h: Ditto. - * config/riscv/riscv-vector-builtins-functions.def (vlenb): Ditto. - * config/riscv/riscv-vector-builtins-shapes.cc (struct vlenb_def): Ditto. - (SHAPE): Ditto. - * config/riscv/riscv-vector-builtins-shapes.h: Ditto. - * config/riscv/riscv-vector-builtins.cc: Ditto. - -2023-03-23 Ju-Zhe Zhong <juzhe.zhong@rivai.ai> - kito-cheng <kito.cheng@sifive.com> - - * config/riscv/riscv-vsetvl.cc (reg_available_p): Fix bugs. - (pass_vsetvl::compute_local_backward_infos): Fix bugs. - (pass_vsetvl::need_vsetvl): Fix bugs. - (pass_vsetvl::backward_demand_fusion): Fix bugs. - (pass_vsetvl::demand_fusion): Fix bugs. - (eliminate_insn): Fix bugs. - (insert_vsetvl): Ditto. - (pass_vsetvl::emit_local_forward_vsetvls): Ditto. - * config/riscv/riscv-vsetvl.h (enum vsetvl_type): Ditto. - * config/riscv/vector.md: Ditto. - -2023-03-23 Ju-Zhe Zhong <juzhe.zhong@rivai.ai> - kito-cheng <kito.cheng@sifive.com> - - * config/riscv/riscv-vector-builtins-bases.cc: Fix ternary bug. - * config/riscv/vector-iterators.md (nmsac): Ditto. - (nmsub): Ditto. - (msac): Ditto. - (msub): Ditto. - (nmadd): Ditto. - (nmacc): Ditto. - * config/riscv/vector.md (@pred_mul_<optab><mode>): Ditto. - (@pred_mul_plus<mode>): Ditto. - (*pred_madd<mode>): Ditto. - (*pred_macc<mode>): Ditto. - (*pred_mul_plus<mode>): Ditto. - (@pred_mul_plus<mode>_scalar): Ditto. - (*pred_madd<mode>_scalar): Ditto. - (*pred_macc<mode>_scalar): Ditto. - (*pred_mul_plus<mode>_scalar): Ditto. - (*pred_madd<mode>_extended_scalar): Ditto. - (*pred_macc<mode>_extended_scalar): Ditto. - (*pred_mul_plus<mode>_extended_scalar): Ditto. - (@pred_minus_mul<mode>): Ditto. - (*pred_<madd_nmsub><mode>): Ditto. - (*pred_nmsub<mode>): Ditto. - (*pred_<macc_nmsac><mode>): Ditto. - (*pred_nmsac<mode>): Ditto. - (*pred_mul_<optab><mode>): Ditto. - (*pred_minus_mul<mode>): Ditto. - (@pred_mul_<optab><mode>_scalar): Ditto. - (@pred_minus_mul<mode>_scalar): Ditto. - (*pred_<madd_nmsub><mode>_scalar): Ditto. - (*pred_nmsub<mode>_scalar): Ditto. - (*pred_<macc_nmsac><mode>_scalar): Ditto. - (*pred_nmsac<mode>_scalar): Ditto. - (*pred_mul_<optab><mode>_scalar): Ditto. - (*pred_minus_mul<mode>_scalar): Ditto. - (*pred_<madd_nmsub><mode>_extended_scalar): Ditto. - (*pred_nmsub<mode>_extended_scalar): Ditto. - (*pred_<macc_nmsac><mode>_extended_scalar): Ditto. - (*pred_nmsac<mode>_extended_scalar): Ditto. - (*pred_mul_<optab><mode>_extended_scalar): Ditto. - (*pred_minus_mul<mode>_extended_scalar): Ditto. - (*pred_<madd_msub><mode>): Ditto. - (*pred_<macc_msac><mode>): Ditto. - (*pred_<madd_msub><mode>_scalar): Ditto. - (*pred_<macc_msac><mode>_scalar): Ditto. - (@pred_neg_mul_<optab><mode>): Ditto. - (@pred_mul_neg_<optab><mode>): Ditto. - (*pred_<nmadd_msub><mode>): Ditto. - (*pred_<nmsub_nmadd><mode>): Ditto. - (*pred_<nmacc_msac><mode>): Ditto. - (*pred_<nmsac_nmacc><mode>): Ditto. - (*pred_neg_mul_<optab><mode>): Ditto. - (*pred_mul_neg_<optab><mode>): Ditto. - (@pred_neg_mul_<optab><mode>_scalar): Ditto. - (@pred_mul_neg_<optab><mode>_scalar): Ditto. - (*pred_<nmadd_msub><mode>_scalar): Ditto. - (*pred_<nmsub_nmadd><mode>_scalar): Ditto. - (*pred_<nmacc_msac><mode>_scalar): Ditto. - (*pred_<nmsac_nmacc><mode>_scalar): Ditto. - (*pred_neg_mul_<optab><mode>_scalar): Ditto. - (*pred_mul_neg_<optab><mode>_scalar): Ditto. - (@pred_widen_neg_mul_<optab><mode>): Ditto. - (@pred_widen_mul_neg_<optab><mode>): Ditto. - (@pred_widen_neg_mul_<optab><mode>_scalar): Ditto. - (@pred_widen_mul_neg_<optab><mode>_scalar): Ditto. - -2023-03-23 liuhongt <hongtao.liu@intel.com> - - * builtins.cc (builtin_memset_read_str): Replace - targetm.gen_memset_scratch_rtx with gen_reg_rtx. - (builtin_memset_gen_str): Ditto. - * config/i386/i386-expand.cc - (ix86_convert_const_wide_int_to_broadcast): Replace - ix86_gen_scratch_sse_rtx with gen_reg_rtx. - (ix86_expand_vector_move): Ditto. - * config/i386/i386-protos.h (ix86_gen_scratch_sse_rtx): - Removed. - * config/i386/i386.cc (ix86_gen_scratch_sse_rtx): Removed. - (TARGET_GEN_MEMSET_SCRATCH_RTX): Removed. - * doc/tm.texi: Remove TARGET_GEN_MEMSET_SCRATCH_RTX. - * doc/tm.texi.in: Ditto. - * target.def: Ditto. - -2023-03-22 Vladimir N. Makarov <vmakarov@redhat.com> - - * lra.cc (lra): Do not repeat inheritance and live range splitting - when asm error is found. - -2023-03-22 Andrew Jenner <andrew@codesourcery.com> - - * config/gcn/gcn-protos.h (gcn_expand_dpp_swap_pairs_insn) - (gcn_expand_dpp_distribute_even_insn) - (gcn_expand_dpp_distribute_odd_insn): Declare. - * config/gcn/gcn-valu.md (@dpp_swap_pairs<mode>) - (@dpp_distribute_even<mode>, @dpp_distribute_odd<mode>) - (cmul<conj_op><mode>3, cml<addsub_as><mode>4, vec_addsub<mode>3) - (cadd<rot><mode>3, vec_fmaddsub<mode>4, vec_fmsubadd<mode>4) - (fms<mode>4<exec>, fms<mode>4_negop2<exec>, fms<mode>4) - (fms<mode>4_negop2): New patterns. - * config/gcn/gcn.cc (gcn_expand_dpp_swap_pairs_insn) - (gcn_expand_dpp_distribute_even_insn) - (gcn_expand_dpp_distribute_odd_insn): New functions. - * config/gcn/gcn.md: Add entries to unspec enum. - -2023-03-22 Aldy Hernandez <aldyh@redhat.com> - - PR tree-optimization/109008 - * value-range.cc (frange::set): Add nan_state argument. - * value-range.h (class nan_state): New. - (frange::get_nan_state): New. - -2023-03-22 Martin Liska <mliska@suse.cz> - - * configure: Regenerate. - -2023-03-21 Joseph Myers <joseph@codesourcery.com> - - * stor-layout.cc (finalize_type_size): Copy TYPE_TYPELESS_STORAGE - to variants. - -2023-03-21 Andrew MacLeod <amacleod@redhat.com> - - PR tree-optimization/109192 - * gimple-range-gori.cc (gori_compute::compute_operand_range): - Terminate gori calculations if a relation is not relevant. - * value-relation.h (value_relation::set_relation): Allow - equality between op1 and op2 if they are the same. - -2023-03-21 Richard Biener <rguenther@suse.de> - - PR tree-optimization/109219 - * tree-vect-loop.cc (vectorizable_reduction): Check - slp_node, not STMT_SLP_TYPE. - * tree-vect-stmts.cc (vectorizable_condition): Likewise. - * tree-vect-slp.cc (vect_slp_analyze_node_operations_1): - Remove assertion on STMT_SLP_TYPE. - -2023-03-21 Jakub Jelinek <jakub@redhat.com> - - PR tree-optimization/109215 - * tree.h (enum special_array_member): Adjust comments for int_0 - and trail_0. - * tree.cc (component_ref_sam_type): Clear zero_elts if memtype - has zero sized element type and the array has variable number of - elements or constant one or more elements. - (component_ref_size): Adjust comments, formatting fix. - -2023-03-21 Arsen Arsenović <arsen@aarsen.me> - - * configure.ac: Add check for the Texinfo 6.8 - CONTENTS_OUTPUT_LOCATION customization variable and set it if - supported. - * configure: Regenerate. - * Makefile.in (MAKEINFO_TOC_INLINE_FLAG): New variable. Set by - configure.ac to -c CONTENTS_OUTPUT_LOCATION=inline if - CONTENTS_OUTPUT_LOCATION support is detected, empty otherwise. - ($(build_htmldir)/%/index.html): Pass MAKEINFO_TOC_INLINE_FLAG. - -2023-03-21 Arsen Arsenović <arsen@aarsen.me> - - * doc/extend.texi: Associate use_hazard_barrier_return index - entry with its attribute. - * doc/invoke.texi: Associate -fcanon-prefix-map index entry with - its attribute - -2023-03-21 Arsen Arsenović <arsen@aarsen.me> - - * doc/implement-c.texi: Remove usage of @gol. - * doc/invoke.texi: Ditto. - * doc/sourcebuild.texi: Ditto. - * doc/include/gcc-common.texi: Remove @gol. In new Makeinfo and - texinfo.tex versions, the bug it was working around appears to - be gone. - -2023-03-21 Arsen Arsenović <arsen@aarsen.me> - - * doc/include/texinfo.tex: Update to 2023-01-17.19. - -2023-03-21 Arsen Arsenović <arsen@aarsen.me> - - * doc/include/gcc-common.texi: Add @defbuiltin{,x} and - @enddefbuiltin for defining built-in functions. - * doc/extend.texi: Apply @defbuiltin{,x} to many, but not all, - places where it should be used. - -2023-03-21 Arsen Arsenović <arsen@aarsen.me> - - * doc/extend.texi (Formatted Output Function Checking): New - subsection for grouping together printf et al. - (Exception handling) Fix missing @ sign before copyright - header, which lead to the copyright line leaking into - '(gcc)Exception handling'. - * doc/gcc.texi: Set document language to en_US. - (@copying): Wrap front cover texts in quotations, move in manual - description text. - -2023-03-21 Arsen Arsenović <arsen@aarsen.me> - - * doc/gcc.texi: Add the Indices appendix, to make texinfo - generate nice indices overview page. - -2023-03-21 Richard Biener <rguenther@suse.de> - - PR tree-optimization/109170 - * gimple-range-op.cc (cfn_pass_through_arg1): New. - (gimple_range_op_handler::maybe_builtin_call): Handle - __builtin_expect via cfn_pass_through_arg1. - -2023-03-20 Michael Meissner <meissner@linux.ibm.com> - - PR target/109067 - * config/rs6000/rs6000.cc (create_complex_muldiv): Delete. - (init_float128_ieee): Delete code to switch complex multiply and divide - for long double. - (complex_multiply_builtin_code): New helper function. - (complex_divide_builtin_code): Likewise. - (rs6000_mangle_decl_assembler_name): Add support for mangling the name - of complex 128-bit multiply and divide built-in functions. - -2023-03-20 Peter Bergner <bergner@linux.ibm.com> - - PR target/109178 - * config/rs6000/rs6000-builtin.cc (stv_expand_builtin): Use tmode. - -2023-03-19 Jonny Grant <jg@jguk.org> - - * doc/extend.texi (Common Function Attributes) <nonnull>: - Correct typo. - -2023-03-18 Peter Bergner <bergner@linux.ibm.com> - - PR rtl-optimization/109179 - * lra-constraints.cc (combine_reload_insn): Enforce TO is not a debug - insn or note. Move the tests earlier to guard lra_get_insn_recog_data. - -2023-03-17 Jakub Jelinek <jakub@redhat.com> - - PR target/105554 - * function.h (push_struct_function): Add ABSTRACT_P argument defaulted - to false. - * function.cc (push_struct_function): Add ABSTRACT_P argument, pass it - to allocate_struct_function instead of false. - * tree-inline.cc (initialize_cfun): Don't copy DECL_ARGUMENTS - nor DECL_RESULT here. Pass true as ABSTRACT_P to - push_struct_function. Call targetm.target_option.relayout_function - after it. - (tree_function_versioning): Formatting fix. - -2023-03-17 Vladimir N. Makarov <vmakarov@redhat.com> - - * lra-constraints.cc: Include hooks.h. - (combine_reload_insn): New function. - (lra_constraints): Call it. - -2023-03-17 Ju-Zhe Zhong <juzhe.zhong@rivai.ai> - kito-cheng <kito.cheng@sifive.com> - - * config/riscv/riscv-v.cc (legitimize_move): Allow undef value - as legitimate value. - * config/riscv/riscv-vector-builtins.cc - (function_expander::use_ternop_insn): Fix bugs of ternary intrinsic. - (function_expander::use_widen_ternop_insn): Ditto. - * config/riscv/vector.md (@vundefined<mode>): New pattern. - (pred_mul_<optab><mode>_undef_merge): Remove. - (*pred_mul_<optab><mode>_undef_merge_scalar): Ditto. - (*pred_mul_<optab><mode>_undef_merge_extended_scalar): Ditto. - (pred_neg_mul_<optab><mode>_undef_merge): Ditto. - (*pred_neg_mul_<optab><mode>_undef_merge_scalar): Ditto. - -2023-03-17 Ju-Zhe Zhong <juzhe.zhong@rivai.ai> - - PR target/109092 - * config/riscv/riscv.md: Fix subreg bug. - -2023-03-17 Jakub Jelinek <jakub@redhat.com> - - PR middle-end/108685 - * omp-expand.cc (expand_omp_for_ordered_loops): Add L0_BB argument, - use its loop_father rather than BODY_BB's loop_father. - (expand_omp_for_generic): Adjust expand_omp_for_ordered_loops caller. - If broken_loop with ordered > collapse and at least one of those - extra loops aren't guaranteed to have at least one iteration, change - l0_bb's loop_father to entry_bb's loop_father. Set cont_bb's - loop_father to l0_bb's loop_father rather than l1_bb's. - -2023-03-17 Jakub Jelinek <jakub@redhat.com> - - PR plugins/108634 - * gdbhooks.py (TreePrinter.to_string): Wrap - gdb.parse_and_eval('tree_code_type') in a try block, parse - and eval 'tree_code_type_tmpl<0>::tree_code_type' instead if it - raises exception. Update comments for the recent tree_code_type - changes. - -2023-03-17 Sandra Loosemore <sandra@codesourcery.com> - - * doc/extend.texi (BPF Built-in Functions): Fix numerous markup - issues. Add more line breaks to example so it doesn't overflow - the margins. - -2023-03-17 Sandra Loosemore <sandra@codesourcery.com> - - * doc/extend.texi (Common Function Attributes) <access>: Fix bad - line breaks in examples. - <malloc>: Fix bad line breaks in running text, also copy-edit - for consistency. - (Extended Asm) <Generic Operand Modifiers>: Fix @multitable width. - * doc/invoke.texi (Option Summary) <Developer Options>: Fix misplaced - @gol. - (C++ Dialect Options) <-fcontracts>: Add line break in example. - <-Wctad-maybe-unsupported>: Likewise. - <-Winvalid-constexpr>: Likewise. - (Warning Options) <-Wdangling-pointer>: Likewise. - <-Winterference-size>: Likewise. - <-Wvla-parameter>: Likewise. - (Static Analyzer Options): Fix bad line breaks in running text, - plus add some missing markup. - (Optimize Options) <openacc-privatization>: Fix more bad line - breaks in running text. - -2023-03-16 Uros Bizjak <ubizjak@gmail.com> - - * config/i386/i386-expand.cc (expand_vec_perm_pblendv): - Handle 8-byte modes only with TARGET_MMX_WITH_SSE. - (expand_vec_perm_2perm_pblendv): Ditto. - -2023-03-16 Martin Liska <mliska@suse.cz> - - PR middle-end/106133 - * gcc.cc (driver_handle_option): Use x_main_input_basename - if x_dump_base_name is null. - * opts.cc (common_handle_option): Likewise. - -2023-03-16 Richard Biener <rguenther@suse.de> - - PR tree-optimization/109123 - * gimple-ssa-warn-access.cc (pass_waccess::warn_invalid_pointer): - Do not emit -Wuse-after-free late. - (pass_waccess::check_call): Always check call pointer uses. - -2023-03-16 Richard Biener <rguenther@suse.de> - - PR tree-optimization/109141 - * tree-dfa.h (renumber_gimple_stmt_uids_in_block): New. - * tree-dfa.cc (renumber_gimple_stmt_uids_in_block): Split - out from ... - (renumber_gimple_stmt_uids): ... here and - (renumber_gimple_stmt_uids_in_blocks): ... here. - * gimple-ssa-warn-access.cc (pass_waccess::use_after_inval_p): - Use renumber_gimple_stmt_uids_in_block to also assign UIDs - to PHIs. - (pass_waccess::check_pointer_uses): Process all PHIs. - -2023-03-15 David Malcolm <dmalcolm@redhat.com> - - PR analyzer/109097 - * diagnostic-format-sarif.cc (class sarif_invocation): New. - (class sarif_ice_notification): New. - (sarif_builder::m_invocation_obj): New field. - (sarif_invocation::add_notification_for_ice): New. - (sarif_invocation::prepare_to_flush): New. - (sarif_ice_notification::sarif_ice_notification): New. - (sarif_builder::sarif_builder): Add m_invocation_obj. - (sarif_builder::end_diagnostic): Special-case DK_ICE and - DK_ICE_NOBT. - (sarif_builder::flush_to_file): Call prepare_to_flush on - m_invocation_obj. Pass the latter to make_top_level_object. - (sarif_builder::make_result_object): Move creation of "locations" - array to... - (sarif_builder::make_locations_arr): ...this new function. - (sarif_builder::make_top_level_object): Add "invocation_obj" param - and pass it to make_run_object. - (sarif_builder::make_run_object): Add "invocation_obj" param and - use it. - (sarif_ice_handler): New callback. - (diagnostic_output_format_init_sarif): Wire up sarif_ice_handler. - * diagnostic.cc (diagnostic_initialize): Initialize new field - "ice_handler_cb". - (diagnostic_action_after_output): If it is set, make one attempt - to call ice_handler_cb. - * diagnostic.h (diagnostic_context::ice_handler_cb): New field. - -2023-03-15 Uros Bizjak <ubizjak@gmail.com> - - * config/i386/i386-expand.cc (expand_vec_perm_blend): - Handle 8-byte modes only with TARGET_MMX_WITH_SSE. Handle V2SFmode - and fix V2HImode handling. - (expand_vec_perm_1): Try to emit BLEND instruction - before MOVSS/MOVSD. - * config/i386/mmx.md (*mmx_blendps): New insn pattern. - -2023-03-15 Tobias Burnus <tobias@codesourcery.com> - - * omp-low.cc (omp_runtime_api_call): Add omp_in_explicit_task. - -2023-03-15 Richard Biener <rguenther@suse.de> - - * gimple-ssa-warn-access.cc (pass_waccess::check_pointer_uses): - Do not diagnose clobbers. - -2023-03-15 Richard Biener <rguenther@suse.de> - - PR tree-optimization/109139 - * tree-ssa-live.cc (remove_unused_locals): Look at the - base address for unused decls on the LHS of .DEFERRED_INIT. - -2023-03-15 Xi Ruoyao <xry111@xry111.site> - - PR other/109086 - * builtins.cc (inline_string_cmp): Force the character - difference into "result" pseudo-register, instead of reassign - the pseudo-register. - -2023-03-15 Christoph Müllner <christoph.muellner@vrull.eu> - - * config.gcc: Add thead.o to RISC-V extra_objs. - * config/riscv/peephole.md: Add mempair peephole passes. - * config/riscv/riscv-protos.h (riscv_split_64bit_move_p): New - prototype. - (th_mempair_operands_p): Likewise. - (th_mempair_order_operands): Likewise. - (th_mempair_prepare_save_restore_operands): Likewise. - (th_mempair_save_restore_regs): Likewise. - (th_mempair_output_move): Likewise. - * config/riscv/riscv.cc (riscv_save_reg): Move code. - (riscv_restore_reg): Move code. - (riscv_for_each_saved_reg): Add code to emit mempair insns. - * config/riscv/t-riscv: Add thead.cc. - * config/riscv/thead.md (*th_mempair_load_<GPR:mode>2): - New insn. - (*th_mempair_store_<GPR:mode>2): Likewise. - (*th_mempair_load_extendsidi2): Likewise. - (*th_mempair_load_zero_extendsidi2): Likewise. - * config/riscv/thead.cc: New file. - -2023-03-15 Christoph Müllner <christoph.muellner@vrull.eu> - - * config/riscv/constraints.md (TARGET_XTHEADFMV ? FP_REGS : NO_REGS) - New constraint "th_f_fmv". - (TARGET_XTHEADFMV ? GR_REGS : NO_REGS): New constraint - "th_r_fmv". - * config/riscv/riscv.cc (riscv_split_doubleword_move): - Add split code for XTheadFmv. - (riscv_secondary_memory_needed): XTheadFmv does not need - secondary memory. - * config/riscv/riscv.md: Add new UNSPEC_XTHEADFMV and - UNSPEC_XTHEADFMV_HW. Add support for XTheadFmv to - movdf_hardfloat_rv32. - * config/riscv/thead.md (th_fmv_hw_w_x): New INSN. - (th_fmv_x_w): New INSN. - (th_fmv_x_hw): New INSN. - -2023-03-15 Christoph Müllner <christoph.muellner@vrull.eu> - - * config/riscv/riscv.md (maddhisi4): New expand. - (msubhisi4): New expand. - * config/riscv/thead.md (*th_mula<mode>): New pattern. - (*th_mulawsi): New pattern. - (*th_mulawsi2): New pattern. - (*th_maddhisi4): New pattern. - (*th_sextw_maddhisi4): New pattern. - (*th_muls<mode>): New pattern. - (*th_mulswsi): New pattern. - (*th_mulswsi2): New pattern. - (*th_msubhisi4): New pattern. - (*th_sextw_msubhisi4): New pattern. - -2023-03-15 Christoph Müllner <christoph.muellner@vrull.eu> - - * config/riscv/iterators.md (TARGET_64BIT): Add GPR2 iterator. - * config/riscv/riscv-protos.h (riscv_expand_conditional_move): - Add prototype. - * config/riscv/riscv.cc (riscv_rtx_costs): Add costs for - XTheadCondMov. - (riscv_expand_conditional_move): New function. - (riscv_expand_conditional_move_onesided): New function. - * config/riscv/riscv.md: Add support for XTheadCondMov. - * config/riscv/thead.md (*th_cond_mov<GPR:mode><GPR2:mode>): Add - support for XTheadCondMov. - (*th_cond_gpr_mov<GPR:mode><GPR2:mode>): Likewise. - -2023-03-15 Christoph Müllner <christoph.muellner@vrull.eu> - - * config/riscv/bitmanip.md (clzdi2): New expand. - (clzsi2): New expand. - (ctz<mode>2): New expand. - (popcount<mode>2): New expand. - (<bitmanip_optab>si2): Rename INSN. - (*<bitmanip_optab>si2): Hide INSN name. - (<bitmanip_optab>di2): Rename INSN. - (*<bitmanip_optab>di2): Hide INSN name. - (rotrsi3): Remove INSN. - (rotr<mode>3): Add expand. - (*rotrsi3): New INSN. - (rotrdi3): Rename INSN. - (*rotrdi3): Hide INSN name. - (rotrsi3_sext): Rename INSN. - (*rotrsi3_sext): Hide INSN name. - (bswap<mode>2): Remove INSN. - (bswapdi2): Add expand. - (bswapsi2): Add expand. - (*bswap<mode>2): Hide INSN name. - * config/riscv/riscv.cc (riscv_rtx_costs): Add costs for sign - extraction. - * config/riscv/riscv.md (extv<mode>): New expand. - (extzv<mode>): New expand. - * config/riscv/thead.md (*th_srri<mode>3): New INSN. - (*th_ext<mode>): New INSN. - (*th_extu<mode>): New INSN. - (*th_clz<mode>2): New INSN. - (*th_rev<mode>2): New INSN. - -2023-03-15 Christoph Müllner <christoph.muellner@vrull.eu> - - * config/riscv/riscv.cc (riscv_rtx_costs): Add xthead:tst cost. - * config/riscv/thead.md (*th_tst<mode>3): New INSN. - -2023-03-15 Christoph Müllner <christoph.muellner@vrull.eu> - - * config/riscv/riscv.md: Include thead.md - * config/riscv/thead.md: New file. - -2023-03-15 Christoph Müllner <christoph.muellner@vrull.eu> - - * config/riscv/riscv-cores.def (RISCV_CORE): Add "thead-c906". - -2023-03-15 Christoph Müllner <christoph.muellner@vrull.eu> - - * common/config/riscv/riscv-common.cc: Add xthead* extensions. - * config/riscv/riscv-opts.h (MASK_XTHEADBA): New. - (MASK_XTHEADBB): New. - (MASK_XTHEADBS): New. - (MASK_XTHEADCMO): New. - (MASK_XTHEADCONDMOV): New. - (MASK_XTHEADFMEMIDX): New. - (MASK_XTHEADFMV): New. - (MASK_XTHEADINT): New. - (MASK_XTHEADMAC): New. - (MASK_XTHEADMEMIDX): New. - (MASK_XTHEADMEMPAIR): New. - (MASK_XTHEADSYNC): New. - (TARGET_XTHEADBA): New. - (TARGET_XTHEADBB): New. - (TARGET_XTHEADBS): New. - (TARGET_XTHEADCMO): New. - (TARGET_XTHEADCONDMOV): New. - (TARGET_XTHEADFMEMIDX): New. - (TARGET_XTHEADFMV): New. - (TARGET_XTHEADINT): New. - (TARGET_XTHEADMAC): New. - (TARGET_XTHEADMEMIDX): New. - (TARGET_XTHEADMEMPAIR): new. - (TARGET_XTHEADSYNC): New. - * config/riscv/riscv.opt: Add riscv_xthead_subext. - -2023-03-15 Hu, Lin1 <lin1.hu@intel.com> - - PR target/109117 - * config/i386/i386-builtin.def (__builtin_ia32_vaesdec_v16qi, - __builtin_ia32_vaesdeclast_v16qi,__builtin_ia32_vaesenc_v16qi, - __builtin_ia32_vaesenclast_v16qi): Require OPTION_MASK_ISA_AVX512VL. - -2023-03-14 Jakub Jelinek <jakub@redhat.com> - - PR target/109109 - * config/i386/i386-expand.cc (split_double_concat): Fix splitting - when lo is equal to dhi and hi is a MEM which uses dlo register. - -2023-03-14 Martin Jambor <mjambor@suse.cz> - - PR ipa/107925 - * ipa-cp.cc (update_profiling_info): Drop counts of orig_node to - global0 instead of zeroing when it does not have as many counts as - it should. - -2023-03-14 Martin Jambor <mjambor@suse.cz> - - PR ipa/107925 - * ipa-cp.cc (update_specialized_profile): Drop orig_node_count to - ipa count, remove assert, lenient_count_portion_handling, dump - also orig_node_count. - -2023-03-14 Uros Bizjak <ubizjak@gmail.com> - - * config/i386/i386-expand.cc (expand_vec_perm_movs): - Handle V2SImode for TARGET_MMX_WITH_SSE. - * config/i386/mmx.md (*mmx_movss_<mode>): Rename from *mmx_movss - using V2FI mode iterator to handle both V2SI and V2SF modes. - -2023-03-14 Sam James <sam@gentoo.org> - - * config/riscv/genrvv-type-indexer.cc: Avoid calloc() poisoning on musl by - including <sstream> earlier. - * system.h: Add INCLUDE_SSTREAM. - -2023-03-14 Richard Biener <rguenther@suse.de> - - * tree-ssa-live.cc (remove_unused_locals): Do not treat - the .DEFERRED_INIT of a variable as use, instead remove - that if it is the only use. - -2023-03-14 Eric Botcazou <ebotcazou@adacore.com> - - PR rtl-optimization/107762 - * expr.cc (emit_group_store): Revert latest change. - -2023-03-14 Andre Vieira <andre.simoesdiasvieira@arm.com> - - PR tree-optimization/109005 - * tree-if-conv.cc (get_bitfield_rep): Replace BLKmode check with - aggregate type check. - -2023-03-14 Jakub Jelinek <jakub@redhat.com> - - PR tree-optimization/109115 - * tree-vect-patterns.cc (vect_recog_divmod_pattern): Don't use - r.upper_bound () on r.undefined_p () range. - -2023-03-14 Jan Hubicka <hubicka@ucw.cz> - - PR tree-optimization/106896 - * profile-count.cc (profile_count::to_sreal_scale): Synchronize - implementatoin with probability_in; avoid some asserts. - -2023-03-13 Max Filippov <jcmvbkbc@gmail.com> - - * config/xtensa/linux.h (TARGET_ASM_FILE_END): New macro. - -2023-03-13 Sean Bright <sean@seanbright.com> - - * doc/invoke.texi (Warning Options): Remove errant 'See' - before @xref. - -2023-03-13 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp> - - * config/xtensa/xtensa.h (REG_OK_STRICT, REG_OK_FOR_INDEX_P, - REG_OK_FOR_BASE_P): Remove. - -2023-03-13 Ju-Zhe Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/vector-iterators.md (=vd,vr): Fine tune. - (=vd,vd,vr,vr): Ditto. - * config/riscv/vector.md: Ditto. - -2023-03-13 Ju-Zhe Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv-vector-builtins.cc - (function_expander::use_compare_insn): Add operand predicate check. - -2023-03-13 Ju-Zhe Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/vector.md: Fine tune RA constraints. - -2023-03-13 Tobias Burnus <tobias@codesourcery.com> - - * config/gcn/mkoffload.cc (main): Pass -save-temps on for the - hsaco assemble/link. - -2023-03-13 Richard Biener <rguenther@suse.de> - - PR tree-optimization/109046 - * tree-ssa-forwprop.cc (pass_forwprop::execute): Combine - piecewise complex loads. - -2023-03-12 Jakub Jelinek <jakub@redhat.com> - - * config/aarch64/aarch64.h (aarch64_bf16_type_node): Remove. - (aarch64_bf16_ptr_type_node): Adjust comment. - * config/aarch64/aarch64.cc (aarch64_gimplify_va_arg_expr): Use - bfloat16_type_node rather than aarch64_bf16_type_node. - (aarch64_libgcc_floating_mode_supported_p, - aarch64_scalar_mode_supported_p): Also support BFmode. - (aarch64_invalid_conversion, aarch64_invalid_unary_op): Remove. - (aarch64_invalid_binary_op): Remove BFmode related rejections. - (TARGET_INVALID_CONVERSION, TARGET_INVALID_UNARY_OP): Don't redefine. - * config/aarch64/aarch64-builtins.cc (aarch64_bf16_type_node): Remove. - (aarch64_int_or_fp_type): Use bfloat16_type_node rather than - aarch64_bf16_type_node. - (aarch64_init_simd_builtin_types): Likewise. - (aarch64_init_bf16_types): Likewise. Don't create bfloat16_type_node, - which is created in tree.cc already. - * config/aarch64/aarch64-sve-builtins.def (svbfloat16_t): Likewise. - -2023-03-12 Roger Sayle <roger@nextmovesoftware.com> - - PR middle-end/109031 - * tree-chrec.cc (chrec_apply): When folding "{a, +, a} (x-1)", - ensure that the type of x is as wide or wider than the type of a. - -2023-03-12 Tamar Christina <tamar.christina@arm.com> - - PR target/108583 - * config/aarch64/aarch64-simd.md (@aarch64_bitmask_udiv<mode>3): Remove. - (*bitmask_shift_plus<mode>): New. - * config/aarch64/aarch64-sve2.md (*bitmask_shift_plus<mode>): New. - (@aarch64_bitmask_udiv<mode>3): Remove. - * config/aarch64/aarch64.cc - (aarch64_vectorize_can_special_div_by_constant, - TARGET_VECTORIZE_CAN_SPECIAL_DIV_BY_CONST): Removed. - (TARGET_VECTORIZE_PREFERRED_DIV_AS_SHIFTS_OVER_MULT, - aarch64_vectorize_preferred_div_as_shifts_over_mult): New. - -2023-03-12 Tamar Christina <tamar.christina@arm.com> - - PR target/108583 - * target.def (preferred_div_as_shifts_over_mult): New. - * doc/tm.texi.in: Document it. - * doc/tm.texi: Regenerate. - * targhooks.cc (default_preferred_div_as_shifts_over_mult): New. - * targhooks.h (default_preferred_div_as_shifts_over_mult): New. - * tree-vect-patterns.cc (vect_recog_divmod_pattern): Use it. - -2023-03-12 Tamar Christina <tamar.christina@arm.com> - Richard Sandiford <richard.sandiford@arm.com> - - PR target/108583 - * tree-ssa-math-opts.cc (convert_mult_to_fma): Inhibit FMA in case not - single use. - -2023-03-12 Tamar Christina <tamar.christina@arm.com> - Andrew MacLeod <amacleod@redhat.com> - - PR target/108583 - * gimple-range-op.h (gimple_range_op_handler): Add maybe_non_standard. - * gimple-range-op.cc (gimple_range_op_handler::gimple_range_op_handler): - Use it. - (gimple_range_op_handler::maybe_non_standard): New. - * range-op.cc (class operator_widen_plus_signed, - operator_widen_plus_signed::wi_fold, class operator_widen_plus_unsigned, - operator_widen_plus_unsigned::wi_fold, class operator_widen_mult_signed, - operator_widen_mult_signed::wi_fold, class operator_widen_mult_unsigned, - operator_widen_mult_unsigned::wi_fold, - ptr_op_widen_mult_signed, ptr_op_widen_mult_unsigned, - ptr_op_widen_plus_signed, ptr_op_widen_plus_unsigned): New. - * range-op.h (ptr_op_widen_mult_signed, ptr_op_widen_mult_unsigned, - ptr_op_widen_plus_signed, ptr_op_widen_plus_unsigned): New - -2023-03-12 Tamar Christina <tamar.christina@arm.com> - - PR target/108583 - * doc/tm.texi (TARGET_VECTORIZE_CAN_SPECIAL_DIV_BY_CONST): Remove. - * doc/tm.texi.in: Likewise. - * explow.cc (round_push, align_dynamic_address): Revert previous patch. - * expmed.cc (expand_divmod): Likewise. - * expmed.h (expand_divmod): Likewise. - * expr.cc (force_operand, expand_expr_divmod): Likewise. - * optabs.cc (expand_doubleword_mod, expand_doubleword_divmod): Likewise. - * target.def (can_special_div_by_const): Remove. - * target.h: Remove tree-core.h include - * targhooks.cc (default_can_special_div_by_const): Remove. - * targhooks.h (default_can_special_div_by_const): Remove. - * tree-vect-generic.cc (expand_vector_operation): Remove hook. - * tree-vect-patterns.cc (vect_recog_divmod_pattern): Remove hook. - * tree-vect-stmts.cc (vectorizable_operation): Remove hook. - -2023-03-12 Sandra Loosemore <sandra@codesourcery.com> - - * doc/install.texi2html: Fix issue number typo in comment. - -2023-03-12 Gaius Mulley <gaiusmod2@gmail.com> - - * doc/gm2.texi (Elementary data types): Equivalence BOOLEAN with - bool. - -2023-03-12 Sandra Loosemore <sandra@codesourcery.com> - - * doc/invoke.texi (Optimize Options): Add markup to - description of asan-kernel-mem-intrinsic-prefix, and clarify - wording slightly. - -2023-03-11 Gerald Pfeifer <gerald@pfeifer.com> - - * doc/extend.texi (Named Address Spaces): Drop a redundant link - to AVR-LibC. - -2023-03-11 Jeff Law <jlaw@ventanamicro> - - PR web/88860 - * doc/extend.texi: Clarify Attribute Syntax a bit. - -2023-03-11 Sandra Loosemore <sandra@codesourcery.com> - - * doc/install.texi (Prerequisites): Suggest using newer versions - of Texinfo. - (Final install): Clean up and modernize discussion of how to - build or obtain the GCC manuals. - * doc/install.texi2html: Update comment to point to the PR instead - of "makeinfo 4.7 brokenness" (it's not specific to that version). - -2023-03-10 Jakub Jelinek <jakub@redhat.com> - - PR target/107703 - * optabs.cc (expand_fix): For conversions from BFmode to integral, - use shifts to convert it to SFmode first and then convert SFmode - to integral. - -2023-03-10 Andrew Pinski <apinski@marvell.com> - - * config/aarch64/aarch64.md: Add a new define_split - to help combine. - -2023-03-10 Richard Biener <rguenther@suse.de> - - * tree-ssa-structalias.cc (solve_graph): Immediately - iterate self-cycles. - -2023-03-10 Jakub Jelinek <jakub@redhat.com> - - PR tree-optimization/109008 - * range-op-float.cc (float_widen_lhs_range): If not - -frounding-math and not IBM double double format, extend lhs - range just by 0.5ulp rather than 1ulp in each direction. - -2023-03-10 Jakub Jelinek <jakub@redhat.com> - - PR target/107998 - * config.gcc (x86_64-*-cygwin*): Don't add i386/t-cygwin-w64 into - $tmake_file. - * config/i386/t-cygwin-w64: Remove. - -2023-03-10 Jakub Jelinek <jakub@redhat.com> - - PR plugins/108634 - * tree-core.h (tree_code_type, tree_code_length): For C++11 or - C++14, don't declare as extern const arrays. - (tree_code_type_tmpl, tree_code_length_tmpl): New types with - static constexpr member arrays for C++11 or C++14. - * tree.h (TREE_CODE_CLASS): For C++11 or C++14 use - tree_code_type_tmpl <0>::tree_code_type instead of tree_code_type. - (TREE_CODE_LENGTH): For C++11 or C++14 use - tree_code_length_tmpl <0>::tree_code_length instead of - tree_code_length. - * tree.cc (tree_code_type, tree_code_length): Remove. - -2023-03-10 Jakub Jelinek <jakub@redhat.com> - - PR other/108464 - * common.opt (fcanon-prefix-map): New option. - * opts.cc: Include file-prefix-map.h. - (flag_canon_prefix_map): New variable. - (common_handle_option): Handle OPT_fcanon_prefix_map. - (gen_command_line_string): Ignore OPT_fcanon_prefix_map. - * file-prefix-map.h (flag_canon_prefix_map): Declare. - * file-prefix-map.cc (struct file_prefix_map): Add canonicalize - member. - (add_prefix_map): Initialize canonicalize member from - flag_canon_prefix_map, and if true canonicalize it using lrealpath. - (remap_filename): Revert 2022-11-01 and 2022-11-07 changes, - use lrealpath result only for map->canonicalize map entries. - * lto-opts.cc (lto_write_options): Ignore OPT_fcanon_prefix_map. - * opts-global.cc (handle_common_deferred_options): Clear - flag_canon_prefix_map at the start and handle OPT_fcanon_prefix_map. - * doc/invoke.texi (-fcanon-prefix-map): Document. - (-ffile-prefix-map, -fdebug-prefix-map, -fprofile-prefix-map): Add - see also for -fcanon-prefix-map. - * doc/cppopts.texi (-fmacro-prefix-map): Likewise. - -2023-03-10 Jakub Jelinek <jakub@redhat.com> - - PR c/108079 - * cgraphunit.cc (check_global_declaration): Don't warn for unused - variables which have OPT_Wunused_variable warning suppressed. - -2023-03-10 Jakub Jelinek <jakub@redhat.com> - - PR tree-optimization/109008 - * range-op-float.cc (float_widen_lhs_range): If lb is - minimum representable finite number or ub is maximum - representable finite number, instead of widening it to - -inf or inf widen it to negative or positive 0x0.8p+(EMAX+1). - Temporarily clear flag_finite_math_only when canonicalizing - the widened range. - -2023-03-10 Ju-Zhe Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv-builtins.cc (riscv_gimple_fold_builtin): New function. - * config/riscv/riscv-protos.h (riscv_gimple_fold_builtin): Ditto. - (gimple_fold_builtin): Ditto. - * config/riscv/riscv-vector-builtins-bases.cc (class read_vl): New class. - (class vleff): Ditto. - (BASE): Ditto. - * config/riscv/riscv-vector-builtins-bases.h: Ditto. - * config/riscv/riscv-vector-builtins-functions.def (read_vl): Ditto. - (vleff): Ditto. - * config/riscv/riscv-vector-builtins-shapes.cc (struct read_vl_def): Ditto. - (struct fault_load_def): Ditto. - (SHAPE): Ditto. - * config/riscv/riscv-vector-builtins-shapes.h: Ditto. - * config/riscv/riscv-vector-builtins.cc - (rvv_arg_type_info::get_tree_type): Add size_ptr. - (gimple_folder::gimple_folder): New class. - (gimple_folder::fold): Ditto. - (gimple_fold_builtin): New function. - (get_read_vl_instance): Ditto. - (get_read_vl_decl): Ditto. - * config/riscv/riscv-vector-builtins.def (size_ptr): Add size_ptr. - * config/riscv/riscv-vector-builtins.h (class gimple_folder): New class. - (get_read_vl_instance): New function. - (get_read_vl_decl): Ditto. - * config/riscv/riscv-vsetvl.cc (fault_first_load_p): Ditto. - (read_vl_insn_p): Ditto. - (available_occurrence_p): Ditto. - (backward_propagate_worthwhile_p): Ditto. - (gen_vsetvl_pat): Adapt for vleff support. - (get_forward_read_vl_insn): New function. - (get_backward_fault_first_load_insn): Ditto. - (source_equal_p): Adapt for vleff support. - (first_ratio_invalid_for_second_sew_p): Remove. - (first_ratio_invalid_for_second_lmul_p): Ditto. - (first_lmul_less_than_second_lmul_p): Ditto. - (first_ratio_less_than_second_ratio_p): Ditto. - (support_relaxed_compatible_p): New function. - (vector_insn_info::operator>): Remove. - (vector_insn_info::operator>=): Refine. - (vector_insn_info::parse_insn): Adapt for vleff support. - (vector_insn_info::compatible_p): Ditto. - (vector_insn_info::update_fault_first_load_avl): New function. - (pass_vsetvl::transfer_after): Adapt for vleff support. - (pass_vsetvl::demand_fusion): Ditto. - (pass_vsetvl::cleanup_insns): Ditto. - * config/riscv/riscv-vsetvl.def (DEF_INCOMPATIBLE_COND): Remove - redundant condtions. - * config/riscv/riscv-vsetvl.h (struct demands_cond): New function. - * config/riscv/riscv.cc (TARGET_GIMPLE_FOLD_BUILTIN): New target hook. - * config/riscv/riscv.md: Adapt for vleff support. - * config/riscv/t-riscv: Ditto. - * config/riscv/vector-iterators.md: New iterator. - * config/riscv/vector.md (read_vlsi): New pattern. - (read_vldi_zero_extend): Ditto. - (@pred_fault_load<mode>): Ditto. - -2023-03-10 Ju-Zhe Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv-vector-builtins.cc - (function_expander::use_ternop_insn): Use maybe_gen_insn instead. - (function_expander::use_widen_ternop_insn): Ditto. - * optabs.cc (maybe_gen_insn): Extend nops handling. - -2023-03-10 Ju-Zhe Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv-vector-builtins-bases.cc: Split indexed load - patterns according to RVV ISA. - * config/riscv/vector-iterators.md: New iterators. - * config/riscv/vector.md - (@pred_indexed_<order>load<VNX1_QHSD:mode><VNX1_QHSDI:mode>): Remove. - (@pred_indexed_<order>load<mode>_same_eew): New pattern. - (@pred_indexed_<order>load<mode>_x2_greater_eew): Ditto. - (@pred_indexed_<order>load<mode>_x4_greater_eew): Ditto. - (@pred_indexed_<order>load<mode>_x8_greater_eew): Ditto. - (@pred_indexed_<order>load<mode>_x2_smaller_eew): Ditto. - (@pred_indexed_<order>load<mode>_x4_smaller_eew): Ditto. - (@pred_indexed_<order>load<mode>_x8_smaller_eew): Ditto. - (@pred_indexed_<order>load<VNX2_QHSD:mode><VNX2_QHSDI:mode>): Remove. - (@pred_indexed_<order>load<VNX4_QHSD:mode><VNX4_QHSDI:mode>): Ditto. - (@pred_indexed_<order>load<VNX8_QHSD:mode><VNX8_QHSDI:mode>): Ditto. - (@pred_indexed_<order>load<VNX16_QHS:mode><VNX16_QHSI:mode>): Ditto. - (@pred_indexed_<order>load<VNX32_QH:mode><VNX32_QHI:mode>): Ditto. - (@pred_indexed_<order>load<VNX64_Q:mode><VNX64_Q:mode>): Ditto. - -2023-03-10 Michael Collison <collison@rivosinc.com> - - * tree-vect-loop-manip.cc (vect_do_peeling): Use - result of constant_lower_bound instead of vf for the lower - bound of the epilog loop trip count. - -2023-03-09 Tamar Christina <tamar.christina@arm.com> - - * passes.cc (emergency_dump_function): Finish graph generation. - -2023-03-09 Tamar Christina <tamar.christina@arm.com> - - * config/aarch64/aarch64.md (tbranch_<code><mode>3): Restrict to SHORT - and bottom bit only. - -2023-03-09 Andrew Pinski <apinski@marvell.com> - - PR tree-optimization/108980 - * gimple-array-bounds.cc (array_bounds_checker::check_array_ref): - Reorgnize the call to warning for not strict flexible arrays - to be before the check of warned. - -2023-03-09 Jason Merrill <jason@redhat.com> - - * doc/extend.texi: Comment out __is_deducible docs. - -2023-03-09 Jason Merrill <jason@redhat.com> - - PR c++/105841 - * doc/extend.texi (Type Traits):: Document __is_deducible. - -2023-03-09 Costas Argyris <costas.argyris@gmail.com> - - PR driver/108865 - * config.host: add object for x86_64-*-mingw*. - * config/i386/sym-mingw32.cc: dummy file to attach - symbol. - * config/i386/utf8-mingw32.rc: windres resource file. - * config/i386/winnt-utf8.manifest: XML manifest to - enable UTF-8. - * config/i386/x-mingw32: reference to x-mingw32-utf8. - * config/i386/x-mingw32-utf8: Makefile fragment to - embed UTF-8 manifest. - -2023-03-09 Vladimir N. Makarov <vmakarov@redhat.com> - - * lra-constraints.cc (process_alt_operands): Use operand modes for - clobbered regs instead of the biggest access mode. - -2023-03-09 Richard Biener <rguenther@suse.de> - - PR middle-end/108995 - * fold-const.cc (extract_muldiv_1): Avoid folding - (CST * b) / CST2 when sanitizing overflow and we rely on - overflow being undefined. - -2023-03-09 Jakub Jelinek <jakub@redhat.com> - Richard Biener <rguenther@suse.de> - - PR tree-optimization/109008 - * range-op-float.cc (float_widen_lhs_range): New function. - (foperator_plus::op1_range, foperator_minus::op1_range, - foperator_minus::op2_range, foperator_mult::op1_range, - foperator_div::op1_range, foperator_div::op2_range): Use it. - -2023-03-07 Jonathan Grant <jg@jguk.org> - - PR sanitizer/81649 - * doc/invoke.texi (Instrumentation Options): Clarify - LeakSanitizer behavior. - -2023-03-07 Benson Muite <benson_muite@emailplus.org> - - * doc/install.texi (Prerequisites): Add link to gmplib.org. - -2023-03-07 Pan Li <pan2.li@intel.com> - Ju-Zhe Zhong <juzhe.zhong@rivai.ai> - - PR target/108185 - PR target/108654 - * config/riscv/riscv-modes.def (ADJUST_PRECISION): Adjust VNx*BI - modes. - * config/riscv/riscv.cc (riscv_v_adjust_precision): New. - * config/riscv/riscv.h (riscv_v_adjust_precision): New. - * genmodes.cc (adj_precision): New. - (ADJUST_PRECISION): New. - (emit_mode_adjustments): Handle ADJUST_PRECISION. - -2023-03-07 Hans-Peter Nilsson <hp@axis.com> - - * doc/sourcebuild.texi: Document check_effective_target_tail_call. - -2023-03-06 Paul-Antoine Arras <pa@codesourcery.com> - - * config/gcn/gcn-valu.md (<expander><mode>3_exec): Add patterns for - {s|u}{max|min} in QI, HI and DI modes. - (<expander><mode>3): Add pattern for {s|u}{max|min} in DI mode. - (cond_<fexpander><mode>): Add pattern for cond_f{max|min}. - (cond_<expander><mode>): Add pattern for cond_{s|u}{max|min}. - * config/gcn/gcn.cc (gcn_spill_class): Allow the exec register to be - saved in SGPRs. - -2023-03-06 Richard Biener <rguenther@suse.de> - - PR tree-optimization/109025 - * tree-vect-loop.cc (vect_is_simple_reduction): Verify - the inner LC PHI use is the inner loop PHI latch definition - before classifying an outer PHI as double reduction. - -2023-03-06 Jan Hubicka <hubicka@ucw.cz> - - PR target/108429 - * config/i386/x86-tune.def (X86_TUNE_USE_SCATTER_2PARTS): Enable for - generic. - (X86_TUNE_USE_SCATTER_4PARTS): Likewise. - (X86_TUNE_USE_SCATTER): Likewise. - -2023-03-06 Xi Ruoyao <xry111@xry111.site> - - PR target/109000 - * config/loongarch/loongarch.h (FP_RETURN): Use - TARGET_*_FLOAT_ABI instead of TARGET_*_FLOAT. - (UNITS_PER_FP_ARG): Likewise. - -2023-03-05 Ju-Zhe Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv-vsetvl.cc (reg_available_p): Fix bug. - (pass_vsetvl::backward_demand_fusion): Ditto. - -2023-03-05 Liao Shihua <shihua@iscas.ac.cn> - SiYu Wu <siyu@isrc.iscas.ac.cn> - - * config/riscv/crypto.md (riscv_sm3p0_<mode>): Add ZKSED's and ZKSH's - instructions. - (riscv_sm3p1_<mode>): New. - (riscv_sm4ed_<mode>): New. - (riscv_sm4ks_<mode>): New. - * config/riscv/riscv-builtins.cc (AVAIL): Add ZKSED's and ZKSH's AVAIL. - * config/riscv/riscv-scalar-crypto.def (RISCV_BUILTIN): Add ZKSED's and - ZKSH's built-in functions. - -2023-03-05 Liao Shihua <shihua@iscas.ac.cn> - SiYu Wu <siyu@isrc.iscas.ac.cn> - - * config/riscv/crypto.md (riscv_sha256sig0_<mode>): Add ZKNH's instructions. - (riscv_sha256sig1_<mode>): New. - (riscv_sha256sum0_<mode>): New. - (riscv_sha256sum1_<mode>): New. - (riscv_sha512sig0h): New. - (riscv_sha512sig0l): New. - (riscv_sha512sig1h): New. - (riscv_sha512sig1l): New. - (riscv_sha512sum0r): New. - (riscv_sha512sum1r): New. - (riscv_sha512sig0): New. - (riscv_sha512sig1): New. - (riscv_sha512sum0): New. - (riscv_sha512sum1): New. - * config/riscv/riscv-builtins.cc (AVAIL): And ZKNH's AVAIL. - * config/riscv/riscv-scalar-crypto.def (RISCV_BUILTIN): And ZKNH's - built-in functions. - (DIRECT_BUILTIN): Add new. - -2023-03-05 Liao Shihua <shihua@iscas.ac.cn> - SiYu Wu <siyu@isrc.iscas.ac.cn> - - * config/riscv/constraints.md (D03): Add constants of bs and rnum. - (DsA): New. - * config/riscv/crypto.md (riscv_aes32dsi): Add ZKND's and ZKNE's instructions. - (riscv_aes32dsmi): New. - (riscv_aes64ds): New. - (riscv_aes64dsm): New. - (riscv_aes64im): New. - (riscv_aes64ks1i): New. - (riscv_aes64ks2): New. - (riscv_aes32esi): New. - (riscv_aes32esmi): New. - (riscv_aes64es): New. - (riscv_aes64esm): New. - * config/riscv/riscv-builtins.cc (AVAIL): Add ZKND's and ZKNE's AVAIL. - * config/riscv/riscv-scalar-crypto.def (DIRECT_BUILTIN): Add ZKND's and - ZKNE's built-in functions. - -2023-03-05 Liao Shihua <shihua@iscas.ac.cn> - SiYu Wu <siyu@isrc.iscas.ac.cn> - - * config/riscv/bitmanip.md: Add ZBKB's instructions. - * config/riscv/riscv-builtins.cc (AVAIL): Add new. - * config/riscv/riscv.md: Add new type for crypto instructions. - * config/riscv/crypto.md: Add Scalar Cryptography extension's machine - description file. - * config/riscv/riscv-scalar-crypto.def: Add Scalar Cryptography - extension's built-in function file. - -2023-03-05 Liao Shihua <shihua@iscas.ac.cn> - SiYu Wu <siyu@isrc.iscas.ac.cn> - - * config/riscv/riscv-builtins.cc (RISCV_FTYPE_NAME2): New. - (RISCV_FTYPE_NAME3): New. - (RISCV_ATYPE_QI): New. - (RISCV_ATYPE_HI): New. - (RISCV_FTYPE_ATYPES2): New. - (RISCV_FTYPE_ATYPES3): New. - * config/riscv/riscv-ftypes.def (2): New. - (3): New. - -2023-03-05 Vineet Gupta <vineetg@rivosinc.com> - - * config/riscv/riscv.cc (riscv_rtx_costs): Fixed IN_RANGE() to - use exact_log2(). - -2023-03-05 Ju-Zhe Zhong <juzhe.zhong@rivai.ai> - kito-cheng <kito.cheng@sifive.com> - - * config/riscv/predicates.md (vector_any_register_operand): New predicate. - * config/riscv/riscv-c.cc (riscv_check_builtin_call): New function. - (riscv_register_pragmas): Add builtin function check call. - * config/riscv/riscv-protos.h (RVV_VUNDEF): Adapt macro. - (check_builtin_call): New function. - * config/riscv/riscv-vector-builtins-bases.cc (class vundefined): New class. - (class vreinterpret): Ditto. - (class vlmul_ext): Ditto. - (class vlmul_trunc): Ditto. - (class vset): Ditto. - (class vget): Ditto. - (BASE): Ditto. - * config/riscv/riscv-vector-builtins-bases.h: Ditto. - * config/riscv/riscv-vector-builtins-functions.def (vluxei8): Change name. - (vluxei16): Ditto. - (vluxei32): Ditto. - (vluxei64): Ditto. - (vloxei8): Ditto. - (vloxei16): Ditto. - (vloxei32): Ditto. - (vloxei64): Ditto. - (vsuxei8): Ditto. - (vsuxei16): Ditto. - (vsuxei32): Ditto. - (vsuxei64): Ditto. - (vsoxei8): Ditto. - (vsoxei16): Ditto. - (vsoxei32): Ditto. - (vsoxei64): Ditto. - (vundefined): Add new intrinsic. - (vreinterpret): Ditto. - (vlmul_ext): Ditto. - (vlmul_trunc): Ditto. - (vset): Ditto. - (vget): Ditto. - * config/riscv/riscv-vector-builtins-shapes.cc (struct return_mask_def): New class. - (struct narrow_alu_def): Ditto. - (struct reduc_alu_def): Ditto. - (struct vundefined_def): Ditto. - (struct misc_def): Ditto. - (struct vset_def): Ditto. - (struct vget_def): Ditto. - (SHAPE): Ditto. - * config/riscv/riscv-vector-builtins-shapes.h: Ditto. - * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_EEW8_INTERPRET_OPS): New def. - (DEF_RVV_EEW16_INTERPRET_OPS): Ditto. - (DEF_RVV_EEW32_INTERPRET_OPS): Ditto. - (DEF_RVV_EEW64_INTERPRET_OPS): Ditto. - (DEF_RVV_X2_VLMUL_EXT_OPS): Ditto. - (DEF_RVV_X4_VLMUL_EXT_OPS): Ditto. - (DEF_RVV_X8_VLMUL_EXT_OPS): Ditto. - (DEF_RVV_X16_VLMUL_EXT_OPS): Ditto. - (DEF_RVV_X32_VLMUL_EXT_OPS): Ditto. - (DEF_RVV_X64_VLMUL_EXT_OPS): Ditto. - (DEF_RVV_LMUL1_OPS): Ditto. - (DEF_RVV_LMUL2_OPS): Ditto. - (DEF_RVV_LMUL4_OPS): Ditto. - (vint16mf4_t): Ditto. - (vint16mf2_t): Ditto. - (vint16m1_t): Ditto. - (vint16m2_t): Ditto. - (vint16m4_t): Ditto. - (vint16m8_t): Ditto. - (vint32mf2_t): Ditto. - (vint32m1_t): Ditto. - (vint32m2_t): Ditto. - (vint32m4_t): Ditto. - (vint32m8_t): Ditto. - (vint64m1_t): Ditto. - (vint64m2_t): Ditto. - (vint64m4_t): Ditto. - (vint64m8_t): Ditto. - (vuint16mf4_t): Ditto. - (vuint16mf2_t): Ditto. - (vuint16m1_t): Ditto. - (vuint16m2_t): Ditto. - (vuint16m4_t): Ditto. - (vuint16m8_t): Ditto. - (vuint32mf2_t): Ditto. - (vuint32m1_t): Ditto. - (vuint32m2_t): Ditto. - (vuint32m4_t): Ditto. - (vuint32m8_t): Ditto. - (vuint64m1_t): Ditto. - (vuint64m2_t): Ditto. - (vuint64m4_t): Ditto. - (vuint64m8_t): Ditto. - (vint8mf4_t): Ditto. - (vint8mf2_t): Ditto. - (vint8m1_t): Ditto. - (vint8m2_t): Ditto. - (vint8m4_t): Ditto. - (vint8m8_t): Ditto. - (vuint8mf4_t): Ditto. - (vuint8mf2_t): Ditto. - (vuint8m1_t): Ditto. - (vuint8m2_t): Ditto. - (vuint8m4_t): Ditto. - (vuint8m8_t): Ditto. - (vint8mf8_t): Ditto. - (vuint8mf8_t): Ditto. - (vfloat32mf2_t): Ditto. - (vfloat32m1_t): Ditto. - (vfloat32m2_t): Ditto. - (vfloat32m4_t): Ditto. - (vfloat64m1_t): Ditto. - (vfloat64m2_t): Ditto. - (vfloat64m4_t): Ditto. - * config/riscv/riscv-vector-builtins.cc (DEF_RVV_TYPE): Ditto. - (DEF_RVV_EEW8_INTERPRET_OPS): Ditto. - (DEF_RVV_EEW16_INTERPRET_OPS): Ditto. - (DEF_RVV_EEW32_INTERPRET_OPS): Ditto. - (DEF_RVV_EEW64_INTERPRET_OPS): Ditto. - (DEF_RVV_X2_VLMUL_EXT_OPS): Ditto. - (DEF_RVV_X4_VLMUL_EXT_OPS): Ditto. - (DEF_RVV_X8_VLMUL_EXT_OPS): Ditto. - (DEF_RVV_X16_VLMUL_EXT_OPS): Ditto. - (DEF_RVV_X32_VLMUL_EXT_OPS): Ditto. - (DEF_RVV_X64_VLMUL_EXT_OPS): Ditto. - (DEF_RVV_LMUL1_OPS): Ditto. - (DEF_RVV_LMUL2_OPS): Ditto. - (DEF_RVV_LMUL4_OPS): Ditto. - (DEF_RVV_TYPE_INDEX): Ditto. - (required_extensions_p): Adapt for new intrinsic support/ - (get_required_extensions): New function. - (check_required_extensions): Ditto. - (unsigned_base_type_p): Remove. - (rvv_arg_type_info::get_scalar_ptr_type): New function. - (get_mode_for_bitsize): Remove. - (rvv_arg_type_info::get_scalar_const_ptr_type): New function. - (rvv_arg_type_info::get_base_vector_type): Ditto. - (rvv_arg_type_info::get_function_type_index): Ditto. - (DEF_RVV_BASE_TYPE): New def. - (function_builder::apply_predication): New class. - (function_expander::mask_mode): Ditto. - (function_checker::function_checker): Ditto. - (function_checker::report_non_ice): Ditto. - (function_checker::report_out_of_range): Ditto. - (function_checker::require_immediate): Ditto. - (function_checker::require_immediate_range): Ditto. - (function_checker::check): Ditto. - (check_builtin_call): Ditto. - * config/riscv/riscv-vector-builtins.def (DEF_RVV_TYPE): New def. - (DEF_RVV_BASE_TYPE): Ditto. - (DEF_RVV_TYPE_INDEX): Ditto. - (vbool64_t): Ditto. - (vbool32_t): Ditto. - (vbool16_t): Ditto. - (vbool8_t): Ditto. - (vbool4_t): Ditto. - (vbool2_t): Ditto. - (vbool1_t): Ditto. - (vuint8mf8_t): Ditto. - (vuint8mf4_t): Ditto. - (vuint8mf2_t): Ditto. - (vuint8m1_t): Ditto. - (vuint8m2_t): Ditto. - (vint8m4_t): Ditto. - (vuint8m4_t): Ditto. - (vint8m8_t): Ditto. - (vuint8m8_t): Ditto. - (vint16mf4_t): Ditto. - (vuint16mf2_t): Ditto. - (vuint16m1_t): Ditto. - (vuint16m2_t): Ditto. - (vuint16m4_t): Ditto. - (vuint16m8_t): Ditto. - (vint32mf2_t): Ditto. - (vuint32m1_t): Ditto. - (vuint32m2_t): Ditto. - (vuint32m4_t): Ditto. - (vuint32m8_t): Ditto. - (vuint64m1_t): Ditto. - (vuint64m2_t): Ditto. - (vuint64m4_t): Ditto. - (vuint64m8_t): Ditto. - (vfloat32mf2_t): Ditto. - (vfloat32m1_t): Ditto. - (vfloat32m2_t): Ditto. - (vfloat32m4_t): Ditto. - (vfloat32m8_t): Ditto. - (vfloat64m1_t): Ditto. - (vfloat64m4_t): Ditto. - (vector): Move it def. - (scalar): Ditto. - (mask): Ditto. - (signed_vector): Ditto. - (unsigned_vector): Ditto. - (unsigned_scalar): Ditto. - (vector_ptr): Ditto. - (scalar_ptr): Ditto. - (scalar_const_ptr): Ditto. - (void): Ditto. - (size): Ditto. - (ptrdiff): Ditto. - (unsigned_long): Ditto. - (long): Ditto. - (eew8_index): Ditto. - (eew16_index): Ditto. - (eew32_index): Ditto. - (eew64_index): Ditto. - (shift_vector): Ditto. - (double_trunc_vector): Ditto. - (quad_trunc_vector): Ditto. - (oct_trunc_vector): Ditto. - (double_trunc_scalar): Ditto. - (double_trunc_signed_vector): Ditto. - (double_trunc_unsigned_vector): Ditto. - (double_trunc_unsigned_scalar): Ditto. - (double_trunc_float_vector): Ditto. - (float_vector): Ditto. - (lmul1_vector): Ditto. - (widen_lmul1_vector): Ditto. - (eew8_interpret): Ditto. - (eew16_interpret): Ditto. - (eew32_interpret): Ditto. - (eew64_interpret): Ditto. - (vlmul_ext_x2): Ditto. - (vlmul_ext_x4): Ditto. - (vlmul_ext_x8): Ditto. - (vlmul_ext_x16): Ditto. - (vlmul_ext_x32): Ditto. - (vlmul_ext_x64): Ditto. - * config/riscv/riscv-vector-builtins.h (DEF_RVV_BASE_TYPE): New def. - (struct function_type_info): New function. - (struct rvv_arg_type_info): Ditto. - (class function_checker): New class. - (rvv_arg_type_info::get_scalar_type): New function. - (rvv_arg_type_info::get_vector_type): Ditto. - (function_expander::ret_mode): New function. - (function_checker::arg_mode): Ditto. - (function_checker::ret_mode): Ditto. - * config/riscv/t-riscv: Add generator. - * config/riscv/vector-iterators.md: New iterators. - * config/riscv/vector.md (vundefined<mode>): New pattern. - (@vundefined<mode>): Ditto. - (@vreinterpret<mode>): Ditto. - (@vlmul_extx2<mode>): Ditto. - (@vlmul_extx4<mode>): Ditto. - (@vlmul_extx8<mode>): Ditto. - (@vlmul_extx16<mode>): Ditto. - (@vlmul_extx32<mode>): Ditto. - (@vlmul_extx64<mode>): Ditto. - (*vlmul_extx2<mode>): Ditto. - (*vlmul_extx4<mode>): Ditto. - (*vlmul_extx8<mode>): Ditto. - (*vlmul_extx16<mode>): Ditto. - (*vlmul_extx32<mode>): Ditto. - (*vlmul_extx64<mode>): Ditto. - * config/riscv/genrvv-type-indexer.cc: New file. - -2023-03-05 Ju-Zhe Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv-protos.h (enum vlen_enum): New enum. - (slide1_sew64_helper): New function. - * config/riscv/riscv-v.cc (compute_vlmax): Ditto. - (get_unknown_min_value): Ditto. - (force_vector_length_operand): Ditto. - (gen_no_side_effects_vsetvl_rtx): Ditto. - (get_vl_x2_rtx): Ditto. - (slide1_sew64_helper): Ditto. - * config/riscv/riscv-vector-builtins-bases.cc (class slideop): New class. - (class vrgather): Ditto. - (class vrgatherei16): Ditto. - (class vcompress): Ditto. - (BASE): Ditto. - * config/riscv/riscv-vector-builtins-bases.h: Ditto. - * config/riscv/riscv-vector-builtins-functions.def (vslideup): Ditto. - (vslidedown): Ditto. - (vslide1up): Ditto. - (vslide1down): Ditto. - (vfslide1up): Ditto. - (vfslide1down): Ditto. - (vrgather): Ditto. - (vrgatherei16): Ditto. - (vcompress): Ditto. - * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_EI16_OPS): New macro. - (vint8mf8_t): Ditto. - (vint8mf4_t): Ditto. - (vint8mf2_t): Ditto. - (vint8m1_t): Ditto. - (vint8m2_t): Ditto. - (vint8m4_t): Ditto. - (vint16mf4_t): Ditto. - (vint16mf2_t): Ditto. - (vint16m1_t): Ditto. - (vint16m2_t): Ditto. - (vint16m4_t): Ditto. - (vint16m8_t): Ditto. - (vint32mf2_t): Ditto. - (vint32m1_t): Ditto. - (vint32m2_t): Ditto. - (vint32m4_t): Ditto. - (vint32m8_t): Ditto. - (vint64m1_t): Ditto. - (vint64m2_t): Ditto. - (vint64m4_t): Ditto. - (vint64m8_t): Ditto. - (vuint8mf8_t): Ditto. - (vuint8mf4_t): Ditto. - (vuint8mf2_t): Ditto. - (vuint8m1_t): Ditto. - (vuint8m2_t): Ditto. - (vuint8m4_t): Ditto. - (vuint16mf4_t): Ditto. - (vuint16mf2_t): Ditto. - (vuint16m1_t): Ditto. - (vuint16m2_t): Ditto. - (vuint16m4_t): Ditto. - (vuint16m8_t): Ditto. - (vuint32mf2_t): Ditto. - (vuint32m1_t): Ditto. - (vuint32m2_t): Ditto. - (vuint32m4_t): Ditto. - (vuint32m8_t): Ditto. - (vuint64m1_t): Ditto. - (vuint64m2_t): Ditto. - (vuint64m4_t): Ditto. - (vuint64m8_t): Ditto. - (vfloat32mf2_t): Ditto. - (vfloat32m1_t): Ditto. - (vfloat32m2_t): Ditto. - (vfloat32m4_t): Ditto. - (vfloat32m8_t): Ditto. - (vfloat64m1_t): Ditto. - (vfloat64m2_t): Ditto. - (vfloat64m4_t): Ditto. - (vfloat64m8_t): Ditto. - * config/riscv/riscv-vector-builtins.cc (DEF_RVV_EI16_OPS): Ditto. - * config/riscv/riscv.md: Adjust RVV instruction types. - * config/riscv/vector-iterators.md (down): New iterator. - (=vd,vr): New attribute. - (UNSPEC_VSLIDE1UP): New unspec. - * config/riscv/vector.md (@pred_slide<ud><mode>): New pattern. - (*pred_slide<ud><mode>): Ditto. - (*pred_slide<ud><mode>_extended): Ditto. - (@pred_gather<mode>): Ditto. - (@pred_gather<mode>_scalar): Ditto. - (@pred_gatherei16<mode>): Ditto. - (@pred_compress<mode>): Ditto. - -2023-03-05 Ju-Zhe Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv-vector-builtins.cc: Remove void_type_node. - -2023-03-05 Ju-Zhe Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/constraints.md (Wb1): New constraint. - * config/riscv/predicates.md - (vector_least_significant_set_mask_operand): New predicate. - (vector_broadcast_mask_operand): Ditto. - * config/riscv/riscv-protos.h (enum vlmul_type): Adjust. - (gen_scalar_move_mask): New function. - * config/riscv/riscv-v.cc (gen_scalar_move_mask): Ditto. - * config/riscv/riscv-vector-builtins-bases.cc (class vmv): New class. - (class vmv_s): Ditto. - (BASE): Ditto. - * config/riscv/riscv-vector-builtins-bases.h: Ditto. - * config/riscv/riscv-vector-builtins-functions.def (vmv_x): Ditto. - (vmv_s): Ditto. - (vfmv_f): Ditto. - (vfmv_s): Ditto. - * config/riscv/riscv-vector-builtins-shapes.cc (struct scalar_move_def): Ditto. - (SHAPE): Ditto. - * config/riscv/riscv-vector-builtins-shapes.h: Ditto. - * config/riscv/riscv-vector-builtins.cc (function_expander::mask_mode): Ditto. - (function_expander::use_exact_insn): New function. - (function_expander::use_contiguous_load_insn): New function. - (function_expander::use_contiguous_store_insn): New function. - (function_expander::use_ternop_insn): New function. - (function_expander::use_widen_ternop_insn): New function. - (function_expander::use_scalar_move_insn): New function. - * config/riscv/riscv-vector-builtins.def (s): New operand suffix. - * config/riscv/riscv-vector-builtins.h - (function_expander::add_scalar_move_mask_operand): New class. - * config/riscv/riscv-vsetvl.cc (ignore_vlmul_insn_p): New function. - (scalar_move_insn_p): Ditto. - (has_vsetvl_killed_avl_p): Ditto. - (anticipatable_occurrence_p): Ditto. - (insert_vsetvl): Ditto. - (get_vl_vtype_info): Ditto. - (calculate_sew): Ditto. - (calculate_vlmul): Ditto. - (incompatible_avl_p): Ditto. - (different_sew_p): Ditto. - (different_lmul_p): Ditto. - (different_ratio_p): Ditto. - (different_tail_policy_p): Ditto. - (different_mask_policy_p): Ditto. - (possible_zero_avl_p): Ditto. - (first_ratio_invalid_for_second_sew_p): Ditto. - (first_ratio_invalid_for_second_lmul_p): Ditto. - (second_ratio_invalid_for_first_sew_p): Ditto. - (second_ratio_invalid_for_first_lmul_p): Ditto. - (second_sew_less_than_first_sew_p): Ditto. - (first_sew_less_than_second_sew_p): Ditto. - (compare_lmul): Ditto. - (second_lmul_less_than_first_lmul_p): Ditto. - (first_lmul_less_than_second_lmul_p): Ditto. - (first_ratio_less_than_second_ratio_p): Ditto. - (second_ratio_less_than_first_ratio_p): Ditto. - (DEF_INCOMPATIBLE_COND): Ditto. - (greatest_sew): Ditto. - (first_sew): Ditto. - (second_sew): Ditto. - (first_vlmul): Ditto. - (second_vlmul): Ditto. - (first_ratio): Ditto. - (second_ratio): Ditto. - (vlmul_for_first_sew_second_ratio): Ditto. - (ratio_for_second_sew_first_vlmul): Ditto. - (DEF_SEW_LMUL_FUSE_RULE): Ditto. - (always_unavailable): Ditto. - (avl_unavailable_p): Ditto. - (sew_unavailable_p): Ditto. - (lmul_unavailable_p): Ditto. - (ge_sew_unavailable_p): Ditto. - (ge_sew_lmul_unavailable_p): Ditto. - (ge_sew_ratio_unavailable_p): Ditto. - (DEF_UNAVAILABLE_COND): Ditto. - (same_sew_lmul_demand_p): Ditto. - (propagate_avl_across_demands_p): Ditto. - (reg_available_p): Ditto. - (avl_info::has_non_zero_avl): Ditto. - (vl_vtype_info::has_non_zero_avl): Ditto. - (vector_insn_info::operator>=): Refactor. - (vector_insn_info::parse_insn): Adjust for scalar move. - (vector_insn_info::demand_vl_vtype): Remove. - (vector_insn_info::compatible_p): New function. - (vector_insn_info::compatible_avl_p): Ditto. - (vector_insn_info::compatible_vtype_p): Ditto. - (vector_insn_info::available_p): Ditto. - (vector_insn_info::merge): Ditto. - (vector_insn_info::fuse_avl): Ditto. - (vector_insn_info::fuse_sew_lmul): Ditto. - (vector_insn_info::fuse_tail_policy): Ditto. - (vector_insn_info::fuse_mask_policy): Ditto. - (vector_insn_info::dump): Ditto. - (vector_infos_manager::release): Ditto. - (pass_vsetvl::compute_local_backward_infos): Adjust for scalar move support. - (pass_vsetvl::get_backward_fusion_type): Adjust for scalar move support. - (pass_vsetvl::hard_empty_block_p): Ditto. - (pass_vsetvl::backward_demand_fusion): Ditto. - (pass_vsetvl::forward_demand_fusion): Ditto. - (pass_vsetvl::refine_vsetvls): Ditto. - (pass_vsetvl::cleanup_vsetvls): Ditto. - (pass_vsetvl::commit_vsetvls): Ditto. - (pass_vsetvl::propagate_avl): Ditto. - * config/riscv/riscv-vsetvl.h (enum demand_status): New class. - (struct demands_pair): Ditto. - (struct demands_cond): Ditto. - (struct demands_fuse_rule): Ditto. - * config/riscv/vector-iterators.md: New iterator. - * config/riscv/vector.md (@pred_broadcast<mode>): New pattern. - (*pred_broadcast<mode>): Ditto. - (*pred_broadcast<mode>_extended_scalar): Ditto. - (@pred_extract_first<mode>): Ditto. - (*pred_extract_first<mode>): Ditto. - (@pred_extract_first_trunc<mode>): Ditto. - * config/riscv/riscv-vsetvl.def: New file. - -2023-03-05 Lin Sinan <sinan.lin@linux.alibaba.com> - - * config/riscv/bitmanip.md: allow 0 constant in max/min - pattern. - -2023-03-05 Lin Sinan <sinan.lin@linux.alibaba.com> - - * config/riscv/bitmanip.md: Fix wrong index in the check. - -2023-03-04 Jakub Jelinek <jakub@redhat.com> - - PR middle-end/109006 - * vec.cc (test_auto_alias): Adjust comment for removal of - m_vecdata. - * read-rtl-function.cc (function_reader::parse_block): Likewise. - * gdbhooks.py: Likewise. - -2023-03-04 Jakub Jelinek <jakub@redhat.com> - - PR testsuite/108973 - * selftest-diagnostic.cc - (test_diagnostic_context::test_diagnostic_context): Set - caret_max_width to 80. - -2023-03-03 Alexandre Oliva <oliva@adacore.com> - - * gimple-ssa-warn-access.cc - (pass_waccess::check_dangling_stores): Skip non-stores. - -2023-03-03 Alexandre Oliva <oliva@adacore.com> - - * config/arm/vfp.md (*thumb2_movsi_vfp): Drop blank after tab - after vmsr and vmrs, and lower the case of P0. - -2023-03-03 Jonathan Wakely <jwakely@redhat.com> - - PR middle-end/109006 - * gdbhooks.py (VecPrinter): Handle vec<T> as well as vec<T>*. - -2023-03-03 Jonathan Wakely <jwakely@redhat.com> - - PR middle-end/109006 - * gdbhooks.py (VecPrinter): Adjust for new vec layout. - -2023-03-03 Jakub Jelinek <jakub@redhat.com> - - PR c/108986 - * gimple-ssa-warn-access.cc (pass_waccess::maybe_check_access_sizes): - Return immediately if OPT_Wnonnull or OPT_Wstringop_overflow_ is - suppressed on stmt. For [static %E] warning, print access_nelts - rather than access_size. Fix up comment wording. - -2023-03-03 Robin Dapp <rdapp@linux.ibm.com> - - * config/s390/driver-native.cc (s390_host_detect_local_cpu): Use - arch14 instead of z16. - -2023-03-03 Anthony Green <green@moxielogic.com> - - * config/moxie/moxie.cc (TARGET_LRA_P): Remove. - -2023-03-03 Anthony Green <green@moxielogic.com> - - * config/moxie/constraints.md (A, B, W): Change - define_constraint to define_memory_constraint. - -2023-03-03 Xi Ruoyao <xry111@xry111.site> - - * toplev.cc (process_options): Fix the spelling of - "-fstack-clash-protection". - -2023-03-03 Richard Biener <rguenther@suse.de> - - PR tree-optimization/109002 - * tree-ssa-pre.cc (compute_partial_antic_aux): Properly - PHI-translate ANTIC_IN. - -2023-03-03 Jakub Jelinek <jakub@redhat.com> - - PR tree-optimization/108988 - * gimple-fold.cc (gimple_fold_builtin_fputs): Fold len to - size_type_node before passing it as argument to fwrite. Formatting - fixes. - -2023-03-03 Richard Biener <rguenther@suse.de> - - PR target/108738 - * config/i386/i386.opt (--param x86-stv-max-visits): New param. - * doc/invoke.texi (--param x86-stv-max-visits): Document it. - * config/i386/i386-features.h (scalar_chain::max_visits): New. - (scalar_chain::build): Add bitmap parameter, return boolean. - (scalar_chain::add_insn): Likewise. - (scalar_chain::analyze_register_chain): Likewise. - * config/i386/i386-features.cc (scalar_chain::scalar_chain): - Initialize max_visits. - (scalar_chain::analyze_register_chain): When we exhaust - max_visits, abort. Also abort when running into any - disallowed insn. - (scalar_chain::add_insn): Propagate abort. - (scalar_chain::build): Likewise. When aborting amend - the set of disallowed insn with the insns set. - (convert_scalars_to_vector): Adjust. Do not convert aborted - chains. - -2023-03-03 Richard Biener <rguenther@suse.de> - - PR debug/108772 - * dwarf2out.cc (dwarf2out_late_global_decl): Do not - generate a DIE for a function scope static. - -2023-03-03 Alexandre Oliva <oliva@adacore.com> - - * config/vx-common.h (WINT_TYPE): Alias to "wchar_t". - -2023-03-02 Jakub Jelinek <jakub@redhat.com> - - PR target/108883 - * target.h (emit_support_tinfos_callback): New typedef. - * targhooks.h (default_emit_support_tinfos): Declare. - * targhooks.cc (default_emit_support_tinfos): New function. - * target.def (emit_support_tinfos): New target hook. - * doc/tm.texi.in (emit_support_tinfos): Document it. - * doc/tm.texi: Regenerated. - * config/i386/i386.cc (ix86_emit_support_tinfos): New function. - (TARGET_EMIT_SUPPORT_TINFOS): Redefine. - -2023-03-02 Vladimir N. Makarov <vmakarov@redhat.com> - - * ira-costs.cc: Include print-rtl.h. - (record_reg_classes, scan_one_insn): Add code to print debug info. - (record_operand_costs): Find and use smaller cost for hard reg - move. - -2023-03-02 Kwok Cheung Yeung <kcy@codesourcery.com> - Paul-Antoine Arras <pa@codesourcery.com> - - * builtins.cc (mathfn_built_in_explicit): New. - * config/gcn/gcn.cc: Include case-cfn-macros.h. - (mathfn_built_in_explicit): Add prototype. - (gcn_vectorize_builtin_vectorized_function): New. - (gcn_libc_has_function): New. - (TARGET_LIBC_HAS_FUNCTION): Define. - (TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION): Define. - -2023-03-02 Richard Sandiford <richard.sandiford@arm.com> - - PR tree-optimization/108979 - * tree-vect-stmts.cc (vectorizable_operation): Don't mask - operations on invariants. - -2023-03-02 Robin Dapp <rdapp@linux.ibm.com> - - * config/s390/predicates.md (vll_bias_operand): Add -1 bias. - * config/s390/s390.cc (s390_option_override_internal): Make - partial vector usage the default from z13 on. - * config/s390/vector.md (len_load_v16qi): Add. - (len_store_v16qi): Add. - -2023-03-02 Andre Vieira <andre.simoesdiasvieira@arm.com> - - * simplify-rtx.cc (simplify_context::simplify_subreg): Use byte instead - of constant 0 offset. - -2023-03-02 Robert Suchanek <robert.suchanek@imgtec.com> - - * config/mips/mips.cc (mips_set_text_contents_type): Use HOST_WIDE_INT - instead of long. - * config/mips/mips-protos.h (mips_set_text_contents_type): Likewise. - -2023-03-02 Junxian Zhu <zhujunxian@oss.cipunited.com> - - * config.gcc: add -with-{no-}msa build option. - * config/mips/mips.h: Likewise. - * doc/install.texi: Likewise. - -2023-03-02 Richard Sandiford <richard.sandiford@arm.com> - - PR tree-optimization/108603 - * explow.cc (convert_memory_address_addr_space_1): Only wrap - the result of a recursive call in a CONST if no instructions - were emitted. - -2023-03-02 Richard Sandiford <richard.sandiford@arm.com> - - PR tree-optimization/108430 - * tree-vect-stmts.cc (vectorizable_condition): Fix handling - of inverted condition. - -2023-03-02 Jakub Jelinek <jakub@redhat.com> - - PR c++/108934 - * fold-const.cc (native_interpret_expr) <case REAL_CST>: Before memcmp - comparison copy the bytes from ptr to a temporary buffer and clearing - padding bits in there. - -2023-03-01 Tobias Burnus <tobias@codesourcery.com> - - PR middle-end/108545 - * gimplify.cc (struct tree_operand_hash_no_se): New. - (omp_index_mapping_groups_1, omp_index_mapping_groups, - omp_reindex_mapping_groups, omp_mapped_by_containing_struct, - omp_tsort_mapping_groups_1, omp_tsort_mapping_groups, - oacc_resolve_clause_dependencies, omp_build_struct_sibling_lists, - gimplify_scan_omp_clauses): Use tree_operand_hash_no_se instead - of tree_operand_hash. - -2023-03-01 LIU Hao <lh_mouse@126.com> - - PR pch/14940 - * config/i386/host-mingw32.cc (mingw32_gt_pch_get_address): - Remove the size limit `pch_VA_max_size` - -2023-03-01 Tobias Burnus <tobias@codesourcery.com> - - PR middle-end/108546 - * omp-low.cc (lower_omp_target): Remove optional handling - on the receiver side, i.e. inside target (data), for - use_device_ptr. - -2023-03-01 Jakub Jelinek <jakub@redhat.com> - - PR debug/108967 - * cfgexpand.cc (expand_debug_expr): Handle WIDEN_{PLUS,MINUS}_EXPR - and VEC_WIDEN_{PLUS,MINUS}_{HI,LO}_EXPR. - -2023-03-01 Richard Biener <rguenther@suse.de> - - PR tree-optimization/108970 - * tree-vect-loop-manip.cc (slpeel_can_duplicate_loop_p): - Check we can copy the BBs. - (slpeel_tree_duplicate_loop_to_edge_cfg): Avoid redundant - check. - (vect_do_peeling): Streamline error handling. - -2023-03-01 Richard Biener <rguenther@suse.de> - - PR tree-optimization/108950 - * tree-vect-patterns.cc (vect_recog_widen_sum_pattern): - Check oprnd0 is defined in the loop. - * tree-vect-loop.cc (vectorizable_reduction): Record all - operands vector types, compute that of invariants and - properly update their SLP nodes. - -2023-03-01 Kewen Lin <linkw@linux.ibm.com> - - PR target/108240 - * config/rs6000/rs6000.cc (rs6000_option_override_internal): Allow - implicit powerpc64 setting to be unset if 64 bit is enabled implicitly. - -2023-02-28 Qing Zhao <qing.zhao@oracle.com> - - PR middle-end/107411 - PR middle-end/107411 - * gimplify.cc (gimple_add_init_for_auto_var): Use sprintf to replace - xasprintf. - * tree-ssa-uninit.cc (warn_uninit): Handle the case when the - LHS varaible of a .DEFERRED_INIT call doesn't have a DECL_NAME. - -2023-02-28 Jakub Jelinek <jakub@redhat.com> - - PR sanitizer/108894 - * ubsan.cc (ubsan_expand_bounds_ifn): Emit index >= bound - comparison rather than index > bound. - * gimple-fold.cc (gimple_fold_call): Use tree_int_cst_lt - rather than tree_int_cst_le for IFN_UBSAN_BOUND comparison. - * doc/invoke.texi (-fsanitize=bounds): Document that whether - flexible array member-like arrays are instrumented or not depends - on -fstrict-flex-arrays* options of strict_flex_array attributes. - (-fsanitize=bounds-strict): Document that flexible array members - are not instrumented. - -2023-02-27 Uroš Bizjak <ubizjak@gmail.com> - - PR target/108922 - Revert: - * config/i386/i386.md (fmodxf3): Enable for flag_finite_math_only only. - (fmod<mode>3): Ditto. - (fpremxf4_i387): Ditto. - (reminderxf3): Ditto. - (reminder<mode>3): Ditto. - (fprem1xf4_i387): Ditto. - -2023-02-27 Roger Sayle <roger@nextmovesoftware.com> - - * simplify-rtx.cc (simplify_unary_operation_1) <case FFS>: Avoid - generating FFS with mismatched operand and result modes, by using - an explicit SIGN_EXTEND/ZERO_EXTEND. - <case POPCOUNT>: Likewise, for POPCOUNT of ZERO_EXTEND. - <case PARITY>: Likewise, for PARITY of {ZERO,SIGN}_EXTEND. - -2023-02-27 Patrick Palka <ppalka@redhat.com> - - * hash-table.h (gt_pch_nx(hash_table<D>)): Remove static. - * lra-int.h (lra_change_class): Likewise. - * recog.h (which_op_alt): Likewise. - * sel-sched-ir.h (sel_bb_empty_or_nop_p): Declare inline - instead of static. - -2023-02-27 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp> - - * config/xtensa/xtensa-protos.h (xtensa_match_CLAMPS_imms_p): - New prototype. - * config/xtensa/xtensa.cc (xtensa_match_CLAMPS_imms_p): - New function. - * config/xtensa/xtensa.h (TARGET_CLAMPS): New macro definition. - * config/xtensa/xtensa.md (*xtensa_clamps): New insn pattern. - -2023-02-27 Max Filippov <jcmvbkbc@gmail.com> - - * config/xtensa/xtensa-dynconfig.cc (xtensa_get_config_v2) - (xtensa_get_config_v3): New functions. - -2023-02-27 Kyrylo Tkachov <kyrylo.tkachov@arm.com> - - * config/aarch64/aarch64-simd.md (aarch64_abs<mode>): Fix typo in comment. - -2023-02-27 Lulu Cheng <chenglulu@loongson.cn> - - * config/host-linux.cc (TRY_EMPTY_VM_SPACE): Modify the value of - the macro to 0x1000000000. - -2023-02-25 Gaius Mulley <gaiusmod2@gmail.com> - - PR modula2/108261 - * doc/gm2.texi (-fm2-pathname): New option documented. - (-fm2-pathnameI): New option documented. - (-fm2-prefix=): New option documented. - (-fruntime-modules=): Update default module list. - -2023-02-25 Max Filippov <jcmvbkbc@gmail.com> - - PR target/108919 - * config/xtensa/xtensa-protos.h - (xtensa_prepare_expand_call): Rename to xtensa_expand_call. - * config/xtensa/xtensa.cc (xtensa_prepare_expand_call): Rename - to xtensa_expand_call. - (xtensa_expand_call): Emit the call and add a clobber expression - for the static chain to it in case of windowed ABI. - * config/xtensa/xtensa.md (call, call_value, sibcall) - (sibcall_value): Call xtensa_expand_call and complete expansion - right after that call. - -2023-02-24 Richard Biener <rguenther@suse.de> - - * vec.h (vec<T, A, vl_embed>::m_vecdata): Remove. - (vec<T, A, vl_embed>::m_vecpfx): Align as T to avoid - changing alignment of vec<T, A, vl_embed> and simplifying - address. - (vec<T, A, vl_embed>::address): Compute as this + 1. - (vec<T, A, vl_embed>::embedded_size): Use sizeof the - vector instead of the offset of the m_vecdata member. - (auto_vec<T, N>::m_data): Turn storage into - uninitialized unsigned char. - (auto_vec<T, N>::auto_vec): Allow allocation of one - stack member. Initialize m_vec in a special way to - avoid later stringop overflow diagnostics. - * vec.cc (test_auto_alias): New. - (vec_cc_tests): Call it. - -2023-02-24 Richard Biener <rguenther@suse.de> - - * vec.h (vec<T, A, vl_embed>::lower_bound): Adjust to - take a const reference to the object, use address to - access data. - (vec<T, A, vl_embed>::contains): Use address to access data. - (vec<T, A, vl_embed>::operator[]): Use address instead of - m_vecdata to access data. - (vec<T, A, vl_embed>::iterate): Likewise. - (vec<T, A, vl_embed>::copy): Likewise. - (vec<T, A, vl_embed>::quick_push): Likewise. - (vec<T, A, vl_embed>::pop): Likewise. - (vec<T, A, vl_embed>::quick_insert): Likewise. - (vec<T, A, vl_embed>::ordered_remove): Likewise. - (vec<T, A, vl_embed>::unordered_remove): Likewise. - (vec<T, A, vl_embed>::block_remove): Likewise. - (vec<T, A, vl_heap>::address): Likewise. - -2023-02-24 Martin Liska <mliska@suse.cz> - - PR sanitizer/108834 - * asan.cc (asan_add_global): Use proper TU name for normal - global variables (and aux_base_name for the artificial one). - -2023-02-24 Jakub Jelinek <jakub@redhat.com> - - * config/i386/i386-builtin.def: Update description of BDESC - and BDESC_FIRST in file comment to include mask2. - -2023-02-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com> - - * config/aarch64/aarch64-cores.def (FLAGS): Update comment. - -2023-02-24 Jakub Jelinek <jakub@redhat.com> - - PR middle-end/108854 - * cgraphclones.cc (duplicate_thunk_for_node): If no parameter - changes are needed, copy at least DECL_ARGUMENTS PARM_DECL - nodes and adjust their DECL_CONTEXT. - -2023-02-24 Jakub Jelinek <jakub@redhat.com> - - PR target/108881 - * config/i386/i386-builtin.def (__builtin_ia32_cvtne2ps2bf16_v16bf, - __builtin_ia32_cvtne2ps2bf16_v16bf_mask, - __builtin_ia32_cvtne2ps2bf16_v16bf_maskz, - __builtin_ia32_cvtne2ps2bf16_v8bf, - __builtin_ia32_cvtne2ps2bf16_v8bf_mask, - __builtin_ia32_cvtne2ps2bf16_v8bf_maskz, - __builtin_ia32_cvtneps2bf16_v8sf_mask, - __builtin_ia32_cvtneps2bf16_v8sf_maskz, - __builtin_ia32_cvtneps2bf16_v4sf_mask, - __builtin_ia32_cvtneps2bf16_v4sf_maskz, - __builtin_ia32_dpbf16ps_v8sf, __builtin_ia32_dpbf16ps_v8sf_mask, - __builtin_ia32_dpbf16ps_v8sf_maskz, __builtin_ia32_dpbf16ps_v4sf, - __builtin_ia32_dpbf16ps_v4sf_mask, - __builtin_ia32_dpbf16ps_v4sf_maskz): Require also - OPTION_MASK_ISA_AVX512VL. - -2023-02-24 Sebastian Huber <sebastian.huber@embedded-brains.de> - - * config/riscv/t-rtems: Keep only -mcmodel=medany 64-bit multilibs. - Add non-compact 32-bit multilibs. - -2023-02-24 Junxian Zhu <zhujunxian@oss.cipunited.com> - - * config/mips/mips.md (*clo<mode>2): New pattern. - -2023-02-24 Prachi Godbole <prachi.godbole@imgtec.com> - - * config/mips/mips.h (machine_function): New variable - use_hazard_barrier_return_p. - * config/mips/mips.md (UNSPEC_JRHB): New unspec. - (mips_hb_return_internal): New insn pattern. - * config/mips/mips.cc (mips_attribute_table): Add attribute - use_hazard_barrier_return. - (mips_use_hazard_barrier_return_p): New static function. - (mips_function_attr_inlinable_p): Likewise. - (mips_compute_frame_info): Set use_hazard_barrier_return_p. - Emit error for unsupported architecture choice. - (mips_function_ok_for_sibcall, mips_can_use_return_insn): - Return false for use_hazard_barrier_return. - (mips_expand_epilogue): Emit hazard barrier return. - * doc/extend.texi: Document use_hazard_barrier_return. - -2023-02-23 Max Filippov <jcmvbkbc@gmail.com> - - * config/xtensa/xtensa-dynconfig.cc (config.h, system.h) - (coretypes.h, diagnostic.h, intl.h): Use "..." instead of <...> - for the gcc-internal headers. - -2023-02-23 Max Filippov <jcmvbkbc@gmail.com> - - * config/xtensa/t-xtensa (xtensa-dynconfig.o): Use $(COMPILE) - and $(POSTCOMPILE) instead of manual dependency listing. - * config/xtensa/xtensa-dynconfig.c: Rename to ... - * config/xtensa/xtensa-dynconfig.cc: ... this. - -2023-02-23 Arsen Arsenović <arsen@aarsen.me> - - * doc/cfg.texi: Reorder index entries around @items. - * doc/cpp.texi: Ditto. - * doc/cppenv.texi: Ditto. - * doc/cppopts.texi: Ditto. - * doc/generic.texi: Ditto. - * doc/install.texi: Ditto. - * doc/extend.texi: Ditto. - * doc/invoke.texi: Ditto. - * doc/md.texi: Ditto. - * doc/rtl.texi: Ditto. - * doc/tm.texi.in: Ditto. - * doc/trouble.texi: Ditto. - * doc/tm.texi: Regenerate. - -2023-02-23 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp> - - * config/xtensa/xtensa.md: New peephole2 pattern that eliminates - the occurrence of general-purpose register used only once and for - transferring intermediate value. - -2023-02-23 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp> - - * config/xtensa/xtensa.cc (machine_function): Add new member - 'eliminated_callee_saved_bmp'. - (xtensa_can_eliminate_callee_saved_reg_p): New function to - determine whether the register can be eliminated or not. - (xtensa_expand_prologue): Add invoking the above function and - elimination the use of callee-saved register by using its stack - slot through the stack pointer (or the frame pointer if needed) - directly. - (xtensa_expand_prologue): Modify to not emit register restoration - insn from its stack slot if the register is already eliminated. - -2023-02-23 Jakub Jelinek <jakub@redhat.com> - - PR translation/108890 - * config/xtensa/xtensa-dynconfig.c (xtensa_load_config): Drop _()s - around fatal_error format strings. - -2023-02-23 Richard Biener <rguenther@suse.de> - - * tree-ssa-structalias.cc (handle_lhs_call): Do not - re-create rhsc, only truncate it. - -2023-02-23 Jakub Jelinek <jakub@redhat.com> - - PR middle-end/106258 - * ipa-prop.cc (try_make_edge_direct_virtual_call): Handle - BUILT_IN_UNREACHABLE_TRAP like BUILT_IN_UNREACHABLE. - -2023-02-23 Richard Biener <rguenther@suse.de> - - * tree-if-conv.cc (tree_if_conversion): Properly manage - memory of refs and the contained data references. - -2023-02-23 Richard Biener <rguenther@suse.de> - - PR tree-optimization/108888 - * tree-if-conv.cc (if_convertible_stmt_p): Set PLF_2 on - calls to predicate. - (predicate_statements): Only predicate calls with PLF_2. - -2023-02-23 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp> - - * config/xtensa/xtensa.md - (zero_cost_loop_start, zero_cost_loop_end, loop_end): - Add missing "SI:" to PLUS RTXes. - -2023-02-23 Max Filippov <jcmvbkbc@gmail.com> - - PR target/108876 - * config/xtensa/xtensa.cc (xtensa_expand_epilogue): - Emit (use (reg:SI A0_REG)) at the end in the sibling call - (i.e. the same place as (return) in the normal call). - -2023-02-23 Max Filippov <jcmvbkbc@gmail.com> - - Revert: - 2023-02-21 Max Filippov <jcmvbkbc@gmail.com> - - PR target/108876 - * config/xtensa/xtensa.cc (xtensa_expand_epilogue): Drop emit_use - for A0_REG. - * config/xtensa/xtensa.md (sibcall, sibcall_internal) - (sibcall_value, sibcall_value_internal): Add 'use' expression - for A0_REG. - -2023-02-23 Arsen Arsenović <arsen@aarsen.me> - - * doc/cppdiropts.texi: Reorder @opindex commands to precede - @items they relate to. - * doc/cppopts.texi: Ditto. - * doc/cppwarnopts.texi: Ditto. - * doc/invoke.texi: Ditto. - * doc/lto.texi: Ditto. - -2023-02-22 Andrew Stubbs <ams@codesourcery.com> - - * internal-fn.cc (expand_MASK_CALL): New. - * internal-fn.def (MASK_CALL): New. - * internal-fn.h (expand_MASK_CALL): New prototype. - * omp-simd-clone.cc (simd_clone_adjust_argument_types): Set vector_type - for mask arguments also. - * tree-if-conv.cc: Include cgraph.h. - (if_convertible_stmt_p): Do if conversions for calls to SIMD calls. - (predicate_statements): Convert functions to IFN_MASK_CALL. - * tree-vect-loop.cc (vect_get_datarefs_in_loop): Recognise - IFN_MASK_CALL as a SIMD function call. - * tree-vect-stmts.cc (vectorizable_simd_clone_call): Handle - IFN_MASK_CALL as an inbranch SIMD function call. - Generate the mask vector arguments. - -2023-02-22 Ju-Zhe Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv-vector-builtins-bases.cc (class reducop): New class. - (class widen_reducop): Ditto. - (class freducop): Ditto. - (class widen_freducop): Ditto. - (BASE): Ditto. - * config/riscv/riscv-vector-builtins-bases.h: Ditto. - * config/riscv/riscv-vector-builtins-functions.def (vredsum): Add reduction support. - (vredmaxu): Ditto. - (vredmax): Ditto. - (vredminu): Ditto. - (vredmin): Ditto. - (vredand): Ditto. - (vredor): Ditto. - (vredxor): Ditto. - (vwredsum): Ditto. - (vwredsumu): Ditto. - (vfredusum): Ditto. - (vfredosum): Ditto. - (vfredmax): Ditto. - (vfredmin): Ditto. - (vfwredosum): Ditto. - (vfwredusum): Ditto. - * config/riscv/riscv-vector-builtins-shapes.cc (struct reduc_alu_def): Ditto. - (SHAPE): Ditto. - * config/riscv/riscv-vector-builtins-shapes.h: Ditto. - * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_WI_OPS): New macro. - (DEF_RVV_WU_OPS): Ditto. - (DEF_RVV_WF_OPS): Ditto. - (vint8mf8_t): Ditto. - (vint8mf4_t): Ditto. - (vint8mf2_t): Ditto. - (vint8m1_t): Ditto. - (vint8m2_t): Ditto. - (vint8m4_t): Ditto. - (vint8m8_t): Ditto. - (vint16mf4_t): Ditto. - (vint16mf2_t): Ditto. - (vint16m1_t): Ditto. - (vint16m2_t): Ditto. - (vint16m4_t): Ditto. - (vint16m8_t): Ditto. - (vint32mf2_t): Ditto. - (vint32m1_t): Ditto. - (vint32m2_t): Ditto. - (vint32m4_t): Ditto. - (vint32m8_t): Ditto. - (vuint8mf8_t): Ditto. - (vuint8mf4_t): Ditto. - (vuint8mf2_t): Ditto. - (vuint8m1_t): Ditto. - (vuint8m2_t): Ditto. - (vuint8m4_t): Ditto. - (vuint8m8_t): Ditto. - (vuint16mf4_t): Ditto. - (vuint16mf2_t): Ditto. - (vuint16m1_t): Ditto. - (vuint16m2_t): Ditto. - (vuint16m4_t): Ditto. - (vuint16m8_t): Ditto. - (vuint32mf2_t): Ditto. - (vuint32m1_t): Ditto. - (vuint32m2_t): Ditto. - (vuint32m4_t): Ditto. - (vuint32m8_t): Ditto. - (vfloat32mf2_t): Ditto. - (vfloat32m1_t): Ditto. - (vfloat32m2_t): Ditto. - (vfloat32m4_t): Ditto. - (vfloat32m8_t): Ditto. - * config/riscv/riscv-vector-builtins.cc (DEF_RVV_WI_OPS): Ditto. - (DEF_RVV_WU_OPS): Ditto. - (DEF_RVV_WF_OPS): Ditto. - (required_extensions_p): Add reduction support. - (rvv_arg_type_info::get_base_vector_type): Ditto. - (rvv_arg_type_info::get_tree_type): Ditto. - * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): Ditto. - * config/riscv/riscv.md: Ditto. - * config/riscv/vector-iterators.md (minu): Ditto. - * config/riscv/vector.md (@pred_reduc_<reduc><mode><vlmul1>): New patern. - (@pred_reduc_<reduc><mode><vlmul1_zve32>): Ditto. - (@pred_widen_reduc_plus<v_su><mode><vwlmul1>): Ditto. - (@pred_widen_reduc_plus<v_su><mode><vwlmul1_zve32>):Ditto. - (@pred_reduc_plus<order><mode><vlmul1>): Ditto. - (@pred_reduc_plus<order><mode><vlmul1_zve32>): Ditto. - (@pred_widen_reduc_plus<order><mode><vwlmul1>): Ditto. - -2023-02-22 Ju-Zhe Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/iterators.md: New iterator. - * config/riscv/riscv-vector-builtins-bases.cc (class widen_binop): New class. - (enum ternop_type): New enum. - (class vmacc): New class. - (class imac): Ditto. - (class vnmsac): Ditto. - (enum widen_ternop_type): New enum. - (class vmadd): Ditto. - (class vnmsub): Ditto. - (class iwmac): Ditto. - (class vwmacc): Ditto. - (class vwmaccu): Ditto. - (class vwmaccsu): Ditto. - (class vwmaccus): Ditto. - (class reverse_binop): Ditto. - (class vfmacc): Ditto. - (class vfnmsac): Ditto. - (class vfmadd): Ditto. - (class vfnmsub): Ditto. - (class vfnmacc): Ditto. - (class vfmsac): Ditto. - (class vfnmadd): Ditto. - (class vfmsub): Ditto. - (class vfwmacc): Ditto. - (class vfwnmacc): Ditto. - (class vfwmsac): Ditto. - (class vfwnmsac): Ditto. - (class float_misc): Ditto. - (class fcmp): Ditto. - (class vfclass): Ditto. - (class vfcvt_x): Ditto. - (class vfcvt_rtz_x): Ditto. - (class vfcvt_f): Ditto. - (class vfwcvt_x): Ditto. - (class vfwcvt_rtz_x): Ditto. - (class vfwcvt_f): Ditto. - (class vfncvt_x): Ditto. - (class vfncvt_rtz_x): Ditto. - (class vfncvt_f): Ditto. - (class vfncvt_rod_f): Ditto. - (BASE): Ditto. - * config/riscv/riscv-vector-builtins-bases.h: - * config/riscv/riscv-vector-builtins-functions.def (vzext): Ditto. - (vsext): Ditto. - (vfadd): Ditto. - (vfsub): Ditto. - (vfrsub): Ditto. - (vfwadd): Ditto. - (vfwsub): Ditto. - (vfmul): Ditto. - (vfdiv): Ditto. - (vfrdiv): Ditto. - (vfwmul): Ditto. - (vfmacc): Ditto. - (vfnmsac): Ditto. - (vfmadd): Ditto. - (vfnmsub): Ditto. - (vfnmacc): Ditto. - (vfmsac): Ditto. - (vfnmadd): Ditto. - (vfmsub): Ditto. - (vfwmacc): Ditto. - (vfwnmacc): Ditto. - (vfwmsac): Ditto. - (vfwnmsac): Ditto. - (vfsqrt): Ditto. - (vfrsqrt7): Ditto. - (vfrec7): Ditto. - (vfmin): Ditto. - (vfmax): Ditto. - (vfsgnj): Ditto. - (vfsgnjn): Ditto. - (vfsgnjx): Ditto. - (vfneg): Ditto. - (vfabs): Ditto. - (vmfeq): Ditto. - (vmfne): Ditto. - (vmflt): Ditto. - (vmfle): Ditto. - (vmfgt): Ditto. - (vmfge): Ditto. - (vfclass): Ditto. - (vfmerge): Ditto. - (vfmv_v): Ditto. - (vfcvt_x): Ditto. - (vfcvt_xu): Ditto. - (vfcvt_rtz_x): Ditto. - (vfcvt_rtz_xu): Ditto. - (vfcvt_f): Ditto. - (vfwcvt_x): Ditto. - (vfwcvt_xu): Ditto. - (vfwcvt_rtz_x): Ditto. - (vfwcvt_rtz_xu): Ditto. - (vfwcvt_f): Ditto. - (vfncvt_x): Ditto. - (vfncvt_xu): Ditto. - (vfncvt_rtz_x): Ditto. - (vfncvt_rtz_xu): Ditto. - (vfncvt_f): Ditto. - (vfncvt_rod_f): Ditto. - * config/riscv/riscv-vector-builtins-shapes.cc (struct alu_def): Ditto. - (struct move_def): Ditto. - * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_WEXTF_OPS): New macro. - (DEF_RVV_CONVERT_I_OPS): Ditto. - (DEF_RVV_CONVERT_U_OPS): Ditto. - (DEF_RVV_WCONVERT_I_OPS): Ditto. - (DEF_RVV_WCONVERT_U_OPS): Ditto. - (DEF_RVV_WCONVERT_F_OPS): Ditto. - (vfloat64m1_t): Ditto. - (vfloat64m2_t): Ditto. - (vfloat64m4_t): Ditto. - (vfloat64m8_t): Ditto. - (vint32mf2_t): Ditto. - (vint32m1_t): Ditto. - (vint32m2_t): Ditto. - (vint32m4_t): Ditto. - (vint32m8_t): Ditto. - (vint64m1_t): Ditto. - (vint64m2_t): Ditto. - (vint64m4_t): Ditto. - (vint64m8_t): Ditto. - (vuint32mf2_t): Ditto. - (vuint32m1_t): Ditto. - (vuint32m2_t): Ditto. - (vuint32m4_t): Ditto. - (vuint32m8_t): Ditto. - (vuint64m1_t): Ditto. - (vuint64m2_t): Ditto. - (vuint64m4_t): Ditto. - (vuint64m8_t): Ditto. - * config/riscv/riscv-vector-builtins.cc (DEF_RVV_CONVERT_I_OPS): Ditto. - (DEF_RVV_CONVERT_U_OPS): Ditto. - (DEF_RVV_WCONVERT_I_OPS): Ditto. - (DEF_RVV_WCONVERT_U_OPS): Ditto. - (DEF_RVV_WCONVERT_F_OPS): Ditto. - (DEF_RVV_F_OPS): Ditto. - (DEF_RVV_WEXTF_OPS): Ditto. - (required_extensions_p): Adjust for floating-point support. - (check_required_extensions): Ditto. - (unsigned_base_type_p): Ditto. - (get_mode_for_bitsize): Ditto. - (rvv_arg_type_info::get_base_vector_type): Ditto. - (rvv_arg_type_info::get_tree_type): Ditto. - * config/riscv/riscv-vector-builtins.def (v_f): New define. - (f): New define. - (f_v): New define. - (xu_v): New define. - (f_w): New define. - (xu_w): New define. - * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): New enum. - (function_expander::arg_mode): New function. - * config/riscv/vector-iterators.md (sof): New iterator. - (vfrecp): Ditto. - (copysign): Ditto. - (n): Ditto. - (msac): Ditto. - (msub): Ditto. - (fixuns_trunc): Ditto. - (floatuns): Ditto. - * config/riscv/vector.md (@pred_broadcast<mode>): New pattern. - (@pred_<optab><mode>): Ditto. - (@pred_<optab><mode>_scalar): Ditto. - (@pred_<optab><mode>_reverse_scalar): Ditto. - (@pred_<copysign><mode>): Ditto. - (@pred_<copysign><mode>_scalar): Ditto. - (@pred_mul_<optab><mode>): Ditto. - (pred_mul_<optab><mode>_undef_merge): Ditto. - (*pred_<madd_nmsub><mode>): Ditto. - (*pred_<macc_nmsac><mode>): Ditto. - (*pred_mul_<optab><mode>): Ditto. - (@pred_mul_<optab><mode>_scalar): Ditto. - (*pred_mul_<optab><mode>_undef_merge_scalar): Ditto. - (*pred_<madd_nmsub><mode>_scalar): Ditto. - (*pred_<macc_nmsac><mode>_scalar): Ditto. - (*pred_mul_<optab><mode>_scalar): Ditto. - (@pred_neg_mul_<optab><mode>): Ditto. - (pred_neg_mul_<optab><mode>_undef_merge): Ditto. - (*pred_<nmadd_msub><mode>): Ditto. - (*pred_<nmacc_msac><mode>): Ditto. - (*pred_neg_mul_<optab><mode>): Ditto. - (@pred_neg_mul_<optab><mode>_scalar): Ditto. - (*pred_neg_mul_<optab><mode>_undef_merge_scalar): Ditto. - (*pred_<nmadd_msub><mode>_scalar): Ditto. - (*pred_<nmacc_msac><mode>_scalar): Ditto. - (*pred_neg_mul_<optab><mode>_scalar): Ditto. - (@pred_<misc_op><mode>): Ditto. - (@pred_class<mode>): Ditto. - (@pred_dual_widen_<optab><mode>): Ditto. - (@pred_dual_widen_<optab><mode>_scalar): Ditto. - (@pred_single_widen_<plus_minus:optab><mode>): Ditto. - (@pred_single_widen_<plus_minus:optab><mode>_scalar): Ditto. - (@pred_widen_mul_<optab><mode>): Ditto. - (@pred_widen_mul_<optab><mode>_scalar): Ditto. - (@pred_widen_neg_mul_<optab><mode>): Ditto. - (@pred_widen_neg_mul_<optab><mode>_scalar): Ditto. - (@pred_cmp<mode>): Ditto. - (*pred_cmp<mode>): Ditto. - (*pred_cmp<mode>_narrow): Ditto. - (@pred_cmp<mode>_scalar): Ditto. - (*pred_cmp<mode>_scalar): Ditto. - (*pred_cmp<mode>_scalar_narrow): Ditto. - (@pred_eqne<mode>_scalar): Ditto. - (*pred_eqne<mode>_scalar): Ditto. - (*pred_eqne<mode>_scalar_narrow): Ditto. - (@pred_merge<mode>_scalar): Ditto. - (@pred_fcvt_x<v_su>_f<mode>): Ditto. - (@pred_<fix_cvt><mode>): Ditto. - (@pred_<float_cvt><mode>): Ditto. - (@pred_widen_fcvt_x<v_su>_f<mode>): Ditto. - (@pred_widen_<fix_cvt><mode>): Ditto. - (@pred_widen_<float_cvt><mode>): Ditto. - (@pred_extend<mode>): Ditto. - (@pred_narrow_fcvt_x<v_su>_f<mode>): Ditto. - (@pred_narrow_<fix_cvt><mode>): Ditto. - (@pred_narrow_<float_cvt><mode>): Ditto. - (@pred_trunc<mode>): Ditto. - (@pred_rod_trunc<mode>): Ditto. - -2023-02-22 Jakub Jelinek <jakub@redhat.com> - - PR middle-end/106258 - * cgraph.cc (cgraph_edge::redirect_call_stmt_to_callee, - cgraph_update_edges_for_call_stmt_node, cgraph_node::verify_node): - Handle BUILT_IN_UNREACHABLE_TRAP like BUILT_IN_UNREACHABLE. - * cgraphclones.cc (cgraph_node::create_clone): Likewise. - -2023-02-22 Thomas Schwinge <thomas@codesourcery.com> - - * common.opt (-Wcomplain-wrong-lang): New. - * doc/invoke.texi (-Wno-complain-wrong-lang): Document it. - * opts-common.cc (prune_options): Handle it. - * opts-global.cc (complain_wrong_lang): Use it. - -2023-02-21 David Malcolm <dmalcolm@redhat.com> - - PR analyzer/108830 - * doc/invoke.texi: Document -fno-analyzer-suppress-followups. - -2023-02-21 Max Filippov <jcmvbkbc@gmail.com> - - PR target/108876 - * config/xtensa/xtensa.cc (xtensa_expand_epilogue): Drop emit_use - for A0_REG. - * config/xtensa/xtensa.md (sibcall, sibcall_internal) - (sibcall_value, sibcall_value_internal): Add 'use' expression - for A0_REG. - -2023-02-21 Richard Biener <rguenther@suse.de> - - PR tree-optimization/108691 - * tree-ssa-dce.cc (eliminate_unnecessary_stmts): Remove - assert about calls_setjmp not becoming true when it was false. - -2023-02-21 Richard Biener <rguenther@suse.de> - - PR tree-optimization/108793 - * tree-ssa-loop-niter.cc (number_of_iterations_until_wrap): - Use convert operands to niter_type when computing num. - -2023-02-21 Richard Biener <rguenther@suse.de> - - Revert: - 2023-02-13 Richard Biener <rguenther@suse.de> - - PR tree-optimization/108691 - * tree-cfg.cc (notice_special_calls): When the CFG is built - honor gimple_call_ctrl_altering_p. - * cfgexpand.cc (expand_call_stmt): Clear cfun->calls_setjmp - temporarily if the call is not control-altering. - * calls.cc (emit_call_1): Do not add REG_SETJMP if - cfun->calls_setjmp is not set. Do not alter cfun->calls_setjmp. - -2023-02-21 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp> - - * config/xtensa/xtensa.cc (xtensa_call_save_reg): Change to return - true if register A0 (return address register) when -Og is specified. - -2023-02-20 Uroš Bizjak <ubizjak@gmail.com> - - * config/i386/predicates.md - (general_x64constmem_operand): New predicate. - * config/i386/i386.md (*cmpqi_ext<mode>_1): - Use nonimm_x64constmem_operand. - (*cmpqi_ext<mode>_3): Use general_x64constmem_operand. - (*addqi_ext<mode>_1): Ditto. - (*testqi_ext<mode>_1): Ditto. - (*andqi_ext<mode>_1): Ditto. - (*andqi_ext<mode>_1_cc): Ditto. - (*<any_or:code>qi_ext<mode>_1): Ditto. - (*xorqi_ext<mode>_1_cc): Ditto. - -2023-02-20 Jakub Jelinek <jakub2redhat.com> - - PR target/108862 - * config/rs6000/rs6000.md (umaddditi4): Swap gen_maddlddi4 with - gen_umadddi4_highpart{,_le}. - -2023-02-20 Kito Cheng <kito.cheng@sifive.com> - - * config/riscv/riscv.md (prefetch): Use r instead of p for the - address operand. - (riscv_prefetchi_<mode>): Ditto. - -2023-02-20 Richard Biener <rguenther@suse.de> - - PR tree-optimization/108816 - * tree-vect-loop-manip.cc (vect_loop_versioning): Adjust - versioning condition split prerequesite, assert required - invariant. - -2023-02-20 Richard Biener <rguenther@suse.de> - - PR tree-optimization/108825 - * tree-ssa-loop-manip.cc (verify_loop_closed_ssa): For - loop-local verfication only verify there's no pending SSA - update. - -2023-02-20 Richard Biener <rguenther@suse.de> - - PR tree-optimization/108819 - * tree-ssa-loop-niter.cc (number_of_iterations_cltz): Check - we have an SSA name as iv_2 as expected. - -2023-02-18 Jakub Jelinek <jakub@redhat.com> - - PR tree-optimization/108819 - * tree-ssa-reassoc.cc (update_ops): Fold new stmt in place. - -2023-02-18 Jakub Jelinek <jakub@redhat.com> - - PR target/108832 - * config/i386/i386-protos.h (ix86_replace_reg_with_reg): Declare. - * config/i386/i386-expand.cc (ix86_replace_reg_with_reg): New - function. - * config/i386/i386.md: Replace replace_rtx calls in all peephole2s - with ix86_replace_reg_with_reg. - -2023-02-18 Gerald Pfeifer <gerald@pfeifer.com> - - * doc/invoke.texi (AVR Options): Update link to AVR-LibC. - -2023-02-18 Xi Ruoyao <xry111@xry111.site> - - * config.gcc (triplet_abi): Set its value based on $with_abi, - instead of $target. - (la_canonical_triplet): Set it after $triplet_abi is set - correctly. - * config/loongarch/t-linux (MULTILIB_OSDIRNAMES): Make the - multiarch tuple for lp64d "loongarch64-linux-gnu" (without - "f64" suffix). - -2023-02-18 Andrew Pinski <apinski@marvell.com> - - * match.pd: Remove #if GIMPLE around the - "1 - a" pattern - -2023-02-18 Andrew Pinski <apinski@marvell.com> - - * value-query.h (get_range_query): Return the global ranges - for a nullptr func. - -2023-02-17 Siddhesh Poyarekar <siddhesh@gotplt.org> - - * doc/invoke.texi (@item -Wall): Fix typo in - -Wuse-after-free. - -2023-02-17 Uroš Bizjak <ubizjak@gmail.com> - - PR target/108831 - * config/i386/predicates.md - (nonimm_x64constmem_operand): New predicate. - * config/i386/i386.md (*addqi_ext<mode>_0): New insn pattern. - (*subqi_ext<mode>_0): Ditto. - (*andqi_ext<mode>_0): Ditto. - (*<any_or:code>qi_ext<mode>_0): Ditto. - -2023-02-17 Uroš Bizjak <ubizjak@gmail.com> - - PR target/108805 - * simplify-rtx.cc (simplify_context::simplify_subreg): Use - int_outermode instead of GET_MODE (tem) to prevent - VOIDmode from entering simplify_gen_subreg. - -2023-02-17 Richard Biener <rguenther@suse.de> - - PR tree-optimization/108821 - * tree-ssa-loop-im.cc (sm_seq_valid_bb): We can also not - move volatile accesses. - -2023-02-17 Richard Biener <rguenther@suse.de> - - * tree-ssa.cc (ssa_undefined_value_p): Assert we are not - called on virtual operands. - * tree-ssa-sccvn.cc (vn_phi_lookup): Guard - ssa_undefined_value_p calls. - (vn_phi_insert): Likewise. - (set_ssa_val_to): Likewise. - (visit_phi): Avoid extra work with equivalences for - virtual operand PHIs. - -2023-02-17 Ju-Zhe Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv-vector-builtins-bases.cc (class mask_logic): New - class. - (class mask_nlogic): Ditto. - (class mask_notlogic): Ditto. - (class vmmv): Ditto. - (class vmclr): Ditto. - (class vmset): Ditto. - (class vmnot): Ditto. - (class vcpop): Ditto. - (class vfirst): Ditto. - (class mask_misc): Ditto. - (class viota): Ditto. - (class vid): Ditto. - (BASE): Ditto. - * config/riscv/riscv-vector-builtins-bases.h: Ditto. - * config/riscv/riscv-vector-builtins-functions.def (vmand): Ditto. - (vmnand): Ditto. - (vmandn): Ditto. - (vmxor): Ditto. - (vmor): Ditto. - (vmnor): Ditto. - (vmorn): Ditto. - (vmxnor): Ditto. - (vmmv): Ditto. - (vmclr): Ditto. - (vmset): Ditto. - (vmnot): Ditto. - (vcpop): Ditto. - (vfirst): Ditto. - (vmsbf): Ditto. - (vmsif): Ditto. - (vmsof): Ditto. - (viota): Ditto. - (vid): Ditto. - * config/riscv/riscv-vector-builtins-shapes.cc (struct alu_def): Ditto. - (struct mask_alu_def): Ditto. - (SHAPE): Ditto. - * config/riscv/riscv-vector-builtins-shapes.h: Ditto. - * config/riscv/riscv-vector-builtins.cc: Ditto. - * config/riscv/riscv-vsetvl.cc (pass_vsetvl::cleanup_insns): Fix bug - for dest it scalar RVV intrinsics. - * config/riscv/vector-iterators.md (sof): New iterator. - * config/riscv/vector.md (@pred_<optab>n<mode>): New pattern. - (@pred_<optab>not<mode>): New pattern. - (@pred_popcount<VB:mode><P:mode>): New pattern. - (@pred_ffs<VB:mode><P:mode>): New pattern. - (@pred_<misc_op><mode>): New pattern. - (@pred_iota<mode>): New pattern. - (@pred_series<mode>): New pattern. - -2023-02-17 Ju-Zhe Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv-vector-builtins-functions.def (vadc): Rename. - (vsbc): Ditto. - (vmerge): Ditto. - (vmv_v): Ditto. - * config/riscv/riscv-vector-builtins.cc: Ditto. - -2023-02-17 Ju-Zhe Zhong <juzhe.zhong@rivai.ai> - kito-cheng <kito.cheng@sifive.com> - - * config/riscv/riscv-protos.h (sew64_scalar_helper): New function. - * config/riscv/riscv-v.cc (has_vi_variant_p): Adjust. - (sew64_scalar_helper): New function. - * config/riscv/vector.md: Normalization. - -2023-02-17 Ju-Zhe Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv-vector-builtins-functions.def (vsetvlmax): Rearrange. - (vsm): Ditto. - (vsse): Ditto. - (vsoxei64): Ditto. - (vsub): Ditto. - (vand): Ditto. - (vor): Ditto. - (vxor): Ditto. - (vsll): Ditto. - (vsra): Ditto. - (vsrl): Ditto. - (vmin): Ditto. - (vmax): Ditto. - (vminu): Ditto. - (vmaxu): Ditto. - (vmul): Ditto. - (vmulh): Ditto. - (vmulhu): Ditto. - (vmulhsu): Ditto. - (vdiv): Ditto. - (vrem): Ditto. - (vdivu): Ditto. - (vremu): Ditto. - (vnot): Ditto. - (vsext): Ditto. - (vzext): Ditto. - (vwadd): Ditto. - (vwsub): Ditto. - (vwmul): Ditto. - (vwmulu): Ditto. - (vwmulsu): Ditto. - (vwaddu): Ditto. - (vwsubu): Ditto. - (vsbc): Ditto. - (vmsbc): Ditto. - (vnsra): Ditto. - (vmerge): Ditto. - (vmv_v): Ditto. - (vmsne): Ditto. - (vmslt): Ditto. - (vmsgt): Ditto. - (vmsle): Ditto. - (vmsge): Ditto. - (vmsltu): Ditto. - (vmsgtu): Ditto. - (vmsleu): Ditto. - (vmsgeu): Ditto. - (vnmsac): Ditto. - (vmadd): Ditto. - (vnmsub): Ditto. - (vwmacc): Ditto. - (vsadd): Ditto. - (vssub): Ditto. - (vssubu): Ditto. - (vaadd): Ditto. - (vasub): Ditto. - (vasubu): Ditto. - (vsmul): Ditto. - (vssra): Ditto. - (vssrl): Ditto. - (vnclip): Ditto. - -2023-02-17 Ju-Zhe Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/vector.md (@pred_<optab><mode>): Rearrange. - (@pred_<optab><mode>_scalar): Ditto. - (*pred_<optab><mode>_scalar): Ditto. - (*pred_<optab><mode>_extended_scalar): Ditto. - -2023-02-17 Ju-Zhe Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv-protos.h (riscv_run_selftests): Remove 'extern'. - (init_builtins): Ditto. - (mangle_builtin_type): Ditto. - (verify_type_context): Ditto. - (handle_pragma_vector): Ditto. - (builtin_decl): Ditto. - (expand_builtin): Ditto. - (const_vec_all_same_in_range_p): Ditto. - (legitimize_move): Ditto. - (emit_vlmax_op): Ditto. - (emit_nonvlmax_op): Ditto. - (get_vlmul): Ditto. - (get_ratio): Ditto. - (get_ta): Ditto. - (get_ma): Ditto. - (get_avl_type): Ditto. - (calculate_ratio): Ditto. - (enum vlmul_type): Ditto. - (simm5_p): Ditto. - (neg_simm5_p): Ditto. - (has_vi_variant_p): Ditto. - -2023-02-17 Ju-Zhe Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv-protos.h (simm32_p): Remove. - * config/riscv/riscv-v.cc (simm32_p): Ditto. - * config/riscv/vector.md: Use immediate_operand - instead of riscv_vector::simm32_p. - -2023-02-16 Gerald Pfeifer <gerald@pfeifer.com> - - * doc/invoke.texi (Optimize Options): Reword the explanation - getting minimal, maximal and default values of a parameter. - -2023-02-16 Patrick Palka <ppalka@redhat.com> - - * addresses.h: Mechanically drop 'static' from 'static inline' - functions via s/^static inline/inline/g. - * asan.h: Likewise. - * attribs.h: Likewise. - * basic-block.h: Likewise. - * bitmap.h: Likewise. - * cfghooks.h: Likewise. - * cfgloop.h: Likewise. - * cgraph.h: Likewise. - * cselib.h: Likewise. - * data-streamer.h: Likewise. - * debug.h: Likewise. - * df.h: Likewise. - * diagnostic.h: Likewise. - * dominance.h: Likewise. - * dumpfile.h: Likewise. - * emit-rtl.h: Likewise. - * except.h: Likewise. - * expmed.h: Likewise. - * expr.h: Likewise. - * fixed-value.h: Likewise. - * gengtype.h: Likewise. - * gimple-expr.h: Likewise. - * gimple-iterator.h: Likewise. - * gimple-predict.h: Likewise. - * gimple-range-fold.h: Likewise. - * gimple-ssa.h: Likewise. - * gimple.h: Likewise. - * graphite.h: Likewise. - * hard-reg-set.h: Likewise. - * hash-map.h: Likewise. - * hash-set.h: Likewise. - * hash-table.h: Likewise. - * hwint.h: Likewise. - * input.h: Likewise. - * insn-addr.h: Likewise. - * internal-fn.h: Likewise. - * ipa-fnsummary.h: Likewise. - * ipa-icf-gimple.h: Likewise. - * ipa-inline.h: Likewise. - * ipa-modref.h: Likewise. - * ipa-prop.h: Likewise. - * ira-int.h: Likewise. - * ira.h: Likewise. - * lra-int.h: Likewise. - * lra.h: Likewise. - * lto-streamer.h: Likewise. - * memmodel.h: Likewise. - * omp-general.h: Likewise. - * optabs-query.h: Likewise. - * optabs.h: Likewise. - * plugin.h: Likewise. - * pretty-print.h: Likewise. - * range.h: Likewise. - * read-md.h: Likewise. - * recog.h: Likewise. - * regs.h: Likewise. - * rtl-iter.h: Likewise. - * rtl.h: Likewise. - * sbitmap.h: Likewise. - * sched-int.h: Likewise. - * sel-sched-ir.h: Likewise. - * sese.h: Likewise. - * sparseset.h: Likewise. - * ssa-iterators.h: Likewise. - * system.h: Likewise. - * target-globals.h: Likewise. - * target.h: Likewise. - * timevar.h: Likewise. - * tree-chrec.h: Likewise. - * tree-data-ref.h: Likewise. - * tree-iterator.h: Likewise. - * tree-outof-ssa.h: Likewise. - * tree-phinodes.h: Likewise. - * tree-scalar-evolution.h: Likewise. - * tree-sra.h: Likewise. - * tree-ssa-alias.h: Likewise. - * tree-ssa-live.h: Likewise. - * tree-ssa-loop-manip.h: Likewise. - * tree-ssa-loop.h: Likewise. - * tree-ssa-operands.h: Likewise. - * tree-ssa-propagate.h: Likewise. - * tree-ssa-sccvn.h: Likewise. - * tree-ssa.h: Likewise. - * tree-ssanames.h: Likewise. - * tree-streamer.h: Likewise. - * tree-switch-conversion.h: Likewise. - * tree-vectorizer.h: Likewise. - * tree.h: Likewise. - * wide-int.h: Likewise. - -2023-02-16 Jakub Jelinek <jakub@redhat.com> - - PR tree-optimization/108657 - * tree-ssa-dse.cc (initialize_ao_ref_for_dse): If lhs of stmt - exists and is not a SSA_NAME, call ao_ref_init even if the stmt - is a call to internal or builtin function. - -2023-02-16 Jonathan Wakely <jwakely@redhat.com> - - * doc/invoke.texi (C++ Dialect Options): Suggest adding a - using-declaration to unhide functions. - -2023-02-16 Jakub Jelinek <jakub@redhat.com> - - PR tree-optimization/108783 - * tree-ssa-reassoc.cc (eliminate_redundant_comparison): If lcode - is equal to TREE_CODE (t), op1 to newop1 and op2 to newop2, set - t to curr->op. Otherwise, punt if either newop1 or newop2 are - SSA_NAME_OCCURS_IN_ABNORMAL_PHI SSA_NAMEs. - -2023-02-16 Richard Biener <rguenther@suse.de> - - PR tree-optimization/108791 - * tree-ssa-forwprop.cc (optimize_vector_load): Build - the ADDR_EXPR of a TARGET_MEM_REF using a more meaningful - type. - -2023-02-15 Eric Botcazou <ebotcazou@adacore.com> - - PR target/90458 - * config/i386/i386.cc (ix86_compute_frame_layout): Disable the - effects of -fstack-clash-protection for TARGET_STACK_PROBE. - (ix86_expand_prologue): Likewise. - -2023-02-15 Jan-Benedict Glaw <jbglaw@lug-owl.de> - - * config/bpf/bpf.cc (bpf_option_override): Fix doubled space. - -2023-02-15 Uroš Bizjak <ubizjak@gmail.com> - - * config/i386/i386.md (*cmpqi_ext<mode>_1): Use - int248_register_operand predicate in zero_extract sub-RTX. - (*cmpqi_ext<mode>_2): Ditto. - (*cmpqi_ext<mode>_3): Ditto. - (*cmpqi_ext<mode>_4): Ditto. - (*extzvqi_mem_rex64): Ditto. - (*extzvqi): Ditto. - (*insvqi_1_mem_rex64): Ditto. - (@insv<mode>_1): Ditto. - (*insvqi_1): Ditto. - (*insvqi_2): Ditto. - (*insvqi_3): Ditto. - (*extendqi<SWI24:mode>_ext_1): Ditto. - (*addqi_ext<mode>_1): Ditto. - (*addqi_ext<mode>_2): Ditto. - (*subqi_ext<mode>_2): Ditto. - (*testqi_ext<mode>_1): Ditto. - (*testqi_ext<mode>_2): Ditto. - (*andqi_ext<mode>_1): Ditto. - (*andqi_ext<mode>_1_cc): Ditto. - (*andqi_ext<mode>_2): Ditto. - (*<any_or:code>qi_ext<mode>_1): Ditto. - (*<any_or:code>qi_ext<mode>_2): Ditto. - (*xorqi_ext<mode>_1_cc): Ditto. - (*negqi_ext<mode>_2): Ditto. - (*ashlqi_ext<mode>_2): Ditto. - (*<any_shiftrt:insn>qi_ext<mode>_2): Ditto. - -2023-02-15 Uroš Bizjak <ubizjak@gmail.com> - - * config/i386/predicates.md (int248_register_operand): - Rename from extr_register_operand. - * config/i386/i386.md (*extv<mode>): Update for renamed predicate. - (*extzx<mode>): Ditto. - (*ashl<dwi>3_doubleword_mask): Use int248_register_operand predicate. - (*ashl<mode>3_mask): Ditto. - (*<any_shiftrt:insn><mode>3_mask): Ditto. - (*<any_shiftrt:insn><dwi>3_doubleword_mask): Ditto. - (*<any_rotate:insn><mode>3_mask): Ditto. - (*<btsc><mode>_mask): Ditto. - (*btr<mode>_mask): Ditto. - (*jcc_bt<mode>_mask_1): Ditto. - -2023-02-15 Richard Biener <rguenther@suse.de> - - PR middle-end/26854 - * df-core.cc (df_worklist_propagate_forward): Put later - blocks on worklist and only earlier blocks on pending. - (df_worklist_propagate_backward): Likewise. - (df_worklist_dataflow_doublequeue): Change the iteration - to process new blocks in the same iteration if that - maintains the iteration order. - -2023-02-15 Marek Polacek <polacek@redhat.com> - - PR middle-end/106080 - * gimple-ssa-warn-access.cc (is_auto_decl): Remove. Use auto_var_p - instead. - -2023-02-15 Ju-Zhe Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/predicates.md: Refine codes. - * config/riscv/riscv-protos.h (RVV_VUNDEF): New macro. - * config/riscv/riscv-v.cc: Refine codes. - * config/riscv/riscv-vector-builtins-bases.cc (enum ternop_type): New - enum. - (class imac): New class. - (enum widen_ternop_type): New enum. - (class iwmac): New class. - (BASE): New class. - * config/riscv/riscv-vector-builtins-bases.h: Ditto. - * config/riscv/riscv-vector-builtins-functions.def (vmacc): Ditto. - (vnmsac): Ditto. - (vmadd): Ditto. - (vnmsub): Ditto. - (vwmacc): Ditto. - (vwmaccu): Ditto. - (vwmaccsu): Ditto. - (vwmaccus): Ditto. - * config/riscv/riscv-vector-builtins.cc - (function_builder::apply_predication): Adjust for multiply-add support. - (function_expander::add_vundef_operand): Refine codes. - (function_expander::use_ternop_insn): New function. - (function_expander::use_widen_ternop_insn): Ditto. - * config/riscv/riscv-vector-builtins.h: New function. - * config/riscv/vector.md (@pred_mul_<optab><mode>): New pattern. - (pred_mul_<optab><mode>_undef_merge): Ditto. - (*pred_<madd_nmsub><mode>): Ditto. - (*pred_<macc_nmsac><mode>): Ditto. - (*pred_mul_<optab><mode>): Ditto. - (@pred_mul_<optab><mode>_scalar): Ditto. - (*pred_mul_<optab><mode>_undef_merge_scalar): Ditto. - (*pred_<madd_nmsub><mode>_scalar): Ditto. - (*pred_<macc_nmsac><mode>_scalar): Ditto. - (*pred_mul_<optab><mode>_scalar): Ditto. - (*pred_mul_<optab><mode>_undef_merge_extended_scalar): Ditto. - (*pred_<madd_nmsub><mode>_extended_scalar): Ditto. - (*pred_<macc_nmsac><mode>_extended_scalar): Ditto. - (*pred_mul_<optab><mode>_extended_scalar): Ditto. - (@pred_widen_mul_plus<su><mode>): Ditto. - (@pred_widen_mul_plus<su><mode>_scalar): Ditto. - (@pred_widen_mul_plussu<mode>): Ditto. - (@pred_widen_mul_plussu<mode>_scalar): Ditto. - (@pred_widen_mul_plusus<mode>_scalar): Ditto. - -2023-02-15 Ju-Zhe Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/predicates.md (vector_mask_operand): Refine the codes. - (vector_all_trues_mask_operand): New predicate. - (vector_undef_operand): New predicate. - (ltge_operator): New predicate. - (comparison_except_ltge_operator): New predicate. - (comparison_except_eqge_operator): New predicate. - (ge_operator): New predicate. - * config/riscv/riscv-v.cc (has_vi_variant_p): Add compare support. - * config/riscv/riscv-vector-builtins-bases.cc (class icmp): New class. - (BASE): Ditto. - * config/riscv/riscv-vector-builtins-bases.h: Ditto. - * config/riscv/riscv-vector-builtins-functions.def (vmseq): Ditto. - (vmsne): Ditto. - (vmslt): Ditto. - (vmsgt): Ditto. - (vmsle): Ditto. - (vmsge): Ditto. - (vmsltu): Ditto. - (vmsgtu): Ditto. - (vmsleu): Ditto. - (vmsgeu): Ditto. - * config/riscv/riscv-vector-builtins-shapes.cc - (struct return_mask_def): Adjust for compare support. - * config/riscv/riscv-vector-builtins.cc - (function_expander::use_compare_insn): New function. - * config/riscv/riscv-vector-builtins.h - (function_expander::add_integer_operand): Ditto. - * config/riscv/riscv.cc (riscv_print_operand): Add compare support. - * config/riscv/riscv.md: Add vector min/max attributes. - * config/riscv/vector-iterators.md (xnor): New iterator. - * config/riscv/vector.md (@pred_cmp<mode>): New pattern. - (*pred_cmp<mode>): Ditto. - (*pred_cmp<mode>_narrow): Ditto. - (@pred_ltge<mode>): Ditto. - (*pred_ltge<mode>): Ditto. - (*pred_ltge<mode>_narrow): Ditto. - (@pred_cmp<mode>_scalar): Ditto. - (*pred_cmp<mode>_scalar): Ditto. - (*pred_cmp<mode>_scalar_narrow): Ditto. - (@pred_eqne<mode>_scalar): Ditto. - (*pred_eqne<mode>_scalar): Ditto. - (*pred_eqne<mode>_scalar_narrow): Ditto. - (*pred_cmp<mode>_extended_scalar): Ditto. - (*pred_cmp<mode>_extended_scalar_narrow): Ditto. - (*pred_eqne<mode>_extended_scalar): Ditto. - (*pred_eqne<mode>_extended_scalar_narrow): Ditto. - (@pred_ge<mode>_scalar): Ditto. - (@pred_<optab><mode>): Ditto. - (@pred_n<optab><mode>): Ditto. - (@pred_<optab>n<mode>): Ditto. - (@pred_not<mode>): Ditto. - -2023-02-15 Martin Jambor <mjambor@suse.cz> - - PR ipa/108679 - * ipa-sra.cc (push_param_adjustments_for_index): Do not omit - creation of non-scalar replacements even if IPA-CP knows their - contents. - -2023-02-15 Jakub Jelinek <jakub@redhat.com> - - PR target/108787 - PR target/103109 - * config/rs6000/rs6000.md (<u>maddditi4): Change into umaddditi4 only - expander, change operand 3 to be TImode, emit maddlddi4 and - umadddi4_highpart{,_le} with its low half and finally add the high - half to the result. - -2023-02-15 Martin Liska <mliska@suse.cz> - - * doc/invoke.texi: Document --param=asan-kernel-mem-intrinsic-prefix. - -2023-02-15 Richard Biener <rguenther@suse.de> - - * sanopt.cc (sanitize_asan_mark_unpoison): Use bitmap - for with_poison and alias worklist to it. - (sanitize_asan_mark_poison): Likewise. - -2023-02-15 Richard Biener <rguenther@suse.de> - - PR target/108738 - * config/i386/i386-features.cc (scalar_chain::add_to_queue): - Combine bitmap test and set. - (scalar_chain::add_insn): Likewise. - (scalar_chain::analyze_register_chain): Remove redundant - attempt to add to queue and instead strengthen assert. - Sink common attempts to mark the def dual-mode. - (scalar_chain::add_to_queue): Remove redundant insn bitmap - check. - -2023-02-15 Richard Biener <rguenther@suse.de> - - PR target/108738 - * config/i386/i386-features.cc (convert_scalars_to_vector): - Switch candidates bitmaps to tree view before building the chains. - -2023-02-15 Hans-Peter Nilsson <hp@axis.com> - - * reload1.cc (gen_reload): Correct rtx parameter for fatal_insn - "failure trying to reload" call. - -2023-02-15 Hans-Peter Nilsson <hp@axis.com> - - * gdbinit.in (phrs): New command. - * sel-sched-dump.cc (debug_hard_reg_set): Remove debug-function. - * ira-color.cc (debug_hard_reg_set): New, calling print_hard_reg_set. - -2023-02-14 David Faust <david.faust@oracle.com> - - PR target/108790 - * config/bpf/constraints.md (q): New memory constraint. - * config/bpf/bpf.md (zero_extendhidi2): Use it here. - (zero_extendqidi2): Likewise. - (zero_extendsidi2): Likewise. - (*mov<MM:mode>): Likewise. - -2023-02-14 Andrew Pinski <apinski@marvell.com> - - PR tree-optimization/108355 - PR tree-optimization/96921 - * match.pd: Add pattern for "1 - bool_val". - -2023-02-14 Richard Biener <rguenther@suse.de> - - * tree-ssa-sccvn.cc (vn_phi_compute_hash): Key skipping - basic block index hashing on the availability of ->cclhs. - (vn_phi_eq): Avoid re-doing sanity checks for CSE but - rely on ->cclhs availability. - (vn_phi_lookup): Set ->cclhs only when we are eventually - going to CSE the PHI. - (vn_phi_insert): Likewise. - -2023-02-14 Eric Botcazou <ebotcazou@adacore.com> - - * gimplify.cc (gimplify_save_expr): Add missing guard. - -2023-02-14 Richard Biener <rguenther@suse.de> - - PR tree-optimization/108782 - * tree-vect-loop.cc (vect_phi_first_order_recurrence_p): - Make sure we're not vectorizing an inner loop. - -2023-02-14 Jakub Jelinek <jakub@redhat.com> - - PR sanitizer/108777 - * params.opt (-param=asan-kernel-mem-intrinsic-prefix=): New param. - * asan.h (asan_memfn_rtl): Declare. - * asan.cc (asan_memfn_rtls): New variable. - (asan_memfn_rtl): New function. - * builtins.cc (expand_builtin): If - param_asan_kernel_mem_intrinsic_prefix and function is - kernel-{,hw}address sanitized, emit calls to - __{,hw}asan_{memcpy,memmove,memset} rather than - {memcpy,memmove,memset}. Use sanitize_flags_p (SANITIZE_ADDRESS) - instead of flag_sanitize & SANITIZE_ADDRESS to check if - asan_intercepted_p functions shouldn't be expanded inline. - -2023-02-14 Richard Sandiford <richard.sandiford@arm.com> - - PR tree-optimization/96373 - * tree-vect-stmts.cc (vectorizable_operation): Predicate trapping - operations on the loop mask. Reject partial vectors if this isn't - possible. - -2023-02-13 Richard Sandiford <richard.sandiford@arm.com> - - PR rtl-optimization/108681 - * lra-spills.cc (lra_final_code_change): Extend subreg replacement - code to handle bare uses and clobbers. - -2023-02-13 Vladimir N. Makarov <vmakarov@redhat.com> - - * ira.cc (ira_update_equiv_info_by_shuffle_insn): Clear equiv - caller_save_p flag when clearing defined_p flag. - (setup_reg_equiv): Ditto. - * lra-constraints.cc (lra_constraints): Ditto. - -2023-02-13 Uroš Bizjak <ubizjak@gmail.com> - - PR target/108516 - * config/i386/predicates.md (extr_register_operand): - New special predicate. - * config/i386/i386.md (*extv<mode>): Use extr_register_operand - as operand 1 predicate. - (*exzv<mode>): Ditto. - (*extendqi<SWI24:mode>_ext_1): New insn pattern. - -2023-02-13 Richard Biener <rguenther@suse.de> - - PR tree-optimization/28614 - * tree-ssa-sccvn.cc (can_track_predicate_on_edge): Avoid - walking all edges in most cases. - (vn_nary_op_insert_pieces_predicated): Avoid repeated - calls to can_track_predicate_on_edge unless checking is - enabled. - (process_bb): Instead call it once here for each edge - we register possibly multiple predicates on. - -2023-02-13 Richard Biener <rguenther@suse.de> - - PR tree-optimization/108691 - * tree-cfg.cc (notice_special_calls): When the CFG is built - honor gimple_call_ctrl_altering_p. - * cfgexpand.cc (expand_call_stmt): Clear cfun->calls_setjmp - temporarily if the call is not control-altering. - * calls.cc (emit_call_1): Do not add REG_SETJMP if - cfun->calls_setjmp is not set. Do not alter cfun->calls_setjmp. - -2023-02-13 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com> - - PR target/108102 - * config/s390/s390.cc (s390_bb_fallthru_entry_likely): Remove. - (struct s390_sched_state): Initialise to zero. - (s390_sched_variable_issue): For better debuggability also emit - the current side. - (s390_sched_init): Unconditionally reset scheduler state. - -2023-02-13 Richard Sandiford <richard.sandiford@arm.com> - - * ifcvt.h (noce_if_info::cond_inverted): New field. - * ifcvt.cc (cond_move_convert_if_block): Swap the then and else - values when cond_inverted is true. - (noce_find_if_block): Allow the condition to be inverted when - handling conditional moves. - -2023-02-13 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com> - - * config/s390/predicates.md (execute_operation): Use - constrain_operands instead of extract_constrain_insn in order to - determine wheter there exists a valid alternative. - -2023-02-13 Claudiu Zissulescu <claziss@gmail.com> - - * common/config/arc/arc-common.cc (arc_option_optimization_table): - Remove millicode from list. - -2023-02-13 Martin Liska <mliska@suse.cz> - - * doc/invoke.texi: Document ira-simple-lra-insn-threshold. - -2023-02-13 Richard Biener <rguenther@suse.de> - - PR tree-optimization/106722 - * tree-ssa-dce.cc (mark_last_stmt_necessary): Return - whether we marked a stmt. - (mark_control_dependent_edges_necessary): When - mark_last_stmt_necessary didn't mark any stmt make sure - to mark its control dependent edges. - (propagate_necessity): Likewise. - -2023-02-13 Kito Cheng <kito.cheng@sifive.com> - - * config/riscv/riscv.h (RISCV_DWARF_VLENB): New. - (DWARF_FRAME_REGISTERS): New. - (DWARF_REG_TO_UNWIND_COLUMN): New. - -2023-02-12 Gerald Pfeifer <gerald@pfeifer.com> - - * doc/sourcebuild.texi: Remove (broken) direct reference to - "The GNU configure and build system". - -2023-02-12 Jin Ma <jinma@linux.alibaba.com> - - * config/riscv/riscv.cc (riscv_adjust_libcall_cfi_prologue): Change - gen_add3_insn to gen_rtx_SET. - (riscv_adjust_libcall_cfi_epilogue): Likewise. - -2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv-vector-builtins-bases.cc (class sat_op): New class. - (class vnclip): Ditto. - (BASE): Ditto. - * config/riscv/riscv-vector-builtins-bases.h: Ditto. - * config/riscv/riscv-vector-builtins-functions.def (vaadd): Ditto. - (vasub): Ditto. - (vaaddu): Ditto. - (vasubu): Ditto. - (vsmul): Ditto. - (vssra): Ditto. - (vssrl): Ditto. - (vnclipu): Ditto. - (vnclip): Ditto. - * config/riscv/vector-iterators.md (su): Add instruction. - (aadd): Ditto. - (vaalu): Ditto. - * config/riscv/vector.md (@pred_<sat_op><mode>): New pattern. - (@pred_<sat_op><mode>_scalar): Ditto. - (*pred_<sat_op><mode>_scalar): Ditto. - (*pred_<sat_op><mode>_extended_scalar): Ditto. - (@pred_narrow_clip<v_su><mode>): Ditto. - (@pred_narrow_clip<v_su><mode>_scalar): Ditto. - -2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/constraints.md (Wbr): Remove unused constraint. - * config/riscv/predicates.md: Fix move operand predicate. - * config/riscv/riscv-vector-builtins-bases.cc (class vnshift): New class. - (class vncvt_x): Ditto. - (class vmerge): Ditto. - (class vmv_v): Ditto. - (BASE): Ditto. - * config/riscv/riscv-vector-builtins-bases.h: Ditto. - * config/riscv/riscv-vector-builtins-functions.def (vsra): Ditto. - (vsrl): Ditto. - (vnsrl): Ditto. - (vnsra): Ditto. - (vncvt_x): Ditto. - (vmerge): Ditto. - (vmv_v): Ditto. - * config/riscv/riscv-vector-builtins-shapes.cc (struct narrow_alu_def): Ditto. - (struct move_def): Ditto. - (SHAPE): Ditto. - * config/riscv/riscv-vector-builtins-shapes.h: Ditto. - * config/riscv/riscv-vector-builtins.cc (DEF_RVV_WEXTI_OPS): New variable. - (DEF_RVV_WEXTU_OPS): Ditto - * config/riscv/riscv-vector-builtins.def (x_x_w): Fix type for suffix. - (v_v): Ditto. - (v_x): Ditto. - (x_w): Ditto. - (x): Ditto. - * config/riscv/riscv.cc (riscv_print_operand): Refine ASM printting rule. - * config/riscv/vector-iterators.md (nmsac):New iterator. - (nmsub): New iterator. - * config/riscv/vector.md (@pred_merge<mode>): New pattern. - (@pred_merge<mode>_scalar): New pattern. - (*pred_merge<mode>_scalar): New pattern. - (*pred_merge<mode>_extended_scalar): New pattern. - (@pred_narrow_<optab><mode>): New pattern. - (@pred_narrow_<optab><mode>_scalar): New pattern. - (@pred_trunc<mode>): New pattern. - -2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv-vector-builtins-bases.cc (class vmadc): New class. - (class vmsbc): Ditto. - (BASE): Define new class. - * config/riscv/riscv-vector-builtins-bases.h: Ditto. - * config/riscv/riscv-vector-builtins-functions.def (vmadc): New define. - (vmsbc): Ditto. - * config/riscv/riscv-vector-builtins-shapes.cc (struct return_mask_def): - New class. - (SHAPE): Ditto. - * config/riscv/riscv-vector-builtins-shapes.h: Ditto. - * config/riscv/riscv-vector-builtins.cc - (function_expander::use_exact_insn): Adjust for new support - * config/riscv/riscv-vector-builtins.h - (function_base::has_merge_operand_p): New function. - * config/riscv/vector-iterators.md: New iterator. - * config/riscv/vector.md (@pred_madc<mode>): New pattern. - (@pred_msbc<mode>): Ditto. - (@pred_madc<mode>_scalar): Ditto. - (@pred_msbc<mode>_scalar): Ditto. - (*pred_madc<mode>_scalar): Ditto. - (*pred_madc<mode>_extended_scalar): Ditto. - (*pred_msbc<mode>_scalar): Ditto. - (*pred_msbc<mode>_extended_scalar): Ditto. - (@pred_madc<mode>_overflow): Ditto. - (@pred_msbc<mode>_overflow): Ditto. - (@pred_madc<mode>_overflow_scalar): Ditto. - (@pred_msbc<mode>_overflow_scalar): Ditto. - (*pred_madc<mode>_overflow_scalar): Ditto. - (*pred_madc<mode>_overflow_extended_scalar): Ditto. - (*pred_msbc<mode>_overflow_scalar): Ditto. - (*pred_msbc<mode>_overflow_extended_scalar): Ditto. - -2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv-protos.h (simm5_p): Add vadc/vsbc support. - * config/riscv/riscv-v.cc (simm32_p): Ditto. - * config/riscv/riscv-vector-builtins-bases.cc (class vadc): New class. - (class vsbc): Ditto. - (BASE): Ditto. - * config/riscv/riscv-vector-builtins-bases.h: Ditto. - * config/riscv/riscv-vector-builtins-functions.def (vadc): Ditto. - (vsbc): Ditto. - * config/riscv/riscv-vector-builtins-shapes.cc - (struct no_mask_policy_def): Ditto. - (SHAPE): Ditto. - * config/riscv/riscv-vector-builtins-shapes.h: Ditto. - * config/riscv/riscv-vector-builtins.cc - (rvv_arg_type_info::get_base_vector_type): Add vadc/vsbc support. - (rvv_arg_type_info::get_tree_type): Ditto. - (function_expander::use_exact_insn): Ditto. - * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): Ditto. - (function_base::use_mask_predication_p): New function. - * config/riscv/vector-iterators.md: New iterator. - * config/riscv/vector.md (@pred_adc<mode>): New pattern. - (@pred_sbc<mode>): Ditto. - (@pred_adc<mode>_scalar): Ditto. - (@pred_sbc<mode>_scalar): Ditto. - (*pred_adc<mode>_scalar): Ditto. - (*pred_adc<mode>_extended_scalar): Ditto. - (*pred_sbc<mode>_scalar): Ditto. - (*pred_sbc<mode>_extended_scalar): Ditto. - -2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/vector.md: use "zero" reg. - -2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv-vector-builtins-bases.cc (class widen_binop): New - class. - (class vwmulsu): Ditto. - (class vwcvt): Ditto. - (BASE): Add integer widening support. - * config/riscv/riscv-vector-builtins-bases.h: Ditto - * config/riscv/riscv-vector-builtins-functions.def (vwadd): New class. - (vwsub): New class. - (vwmul): New class. - (vwmulu): New class. - (vwmulsu): New class. - (vwaddu): New class. - (vwsubu): New class. - (vwcvt_x): New class. - (vwcvtu_x): New class. - * config/riscv/riscv-vector-builtins-shapes.cc (struct alu_def): New - class. - (struct widen_alu_def): New class. - (SHAPE): New class. - * config/riscv/riscv-vector-builtins-shapes.h: New class. - * config/riscv/riscv-vector-builtins.cc - (rvv_arg_type_info::get_base_vector_type): Add integer widening support. - (rvv_arg_type_info::get_tree_type): Ditto. - * config/riscv/riscv-vector-builtins.def (x_x_v): Change into "x_v" - (x_v): Ditto. - * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): Add integer - widening support. - * config/riscv/riscv-vsetvl.cc (change_insn): Fix reg_equal use bug. - * config/riscv/riscv.h (X0_REGNUM): New constant. - * config/riscv/vector-iterators.md: New iterators. - * config/riscv/vector.md - (@pred_dual_widen_<any_widen_binop:optab><any_extend:su><mode>): New - pattern. - (@pred_dual_widen_<any_widen_binop:optab><any_extend:su><mode>_scalar): - Ditto. - (@pred_single_widen_<plus_minus:optab><any_extend:su><mode>): Ditto. - (@pred_single_widen_<plus_minus:optab><any_extend:su><mode>_scalar): - Ditto. - (@pred_widen_mulsu<mode>): Ditto. - (@pred_widen_mulsu<mode>_scalar): Ditto. - (@pred_<optab><mode>): Ditto. - -2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai> - kito-cheng <kito.cheng@sifive.com> - - * common/config/riscv/riscv-common.cc: Add flag for 'V' extension. - * config/riscv/riscv-vector-builtins-bases.cc (class vmulh): New class. - (BASE): Ditto. - * config/riscv/riscv-vector-builtins-bases.h: Ditto. - * config/riscv/riscv-vector-builtins-functions.def (vmulh): Add vmulh - API support. - (vmulhu): Ditto. - (vmulhsu): Ditto. - * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_FULL_V_I_OPS): - New macro. - (DEF_RVV_FULL_V_U_OPS): Ditto. - (vint8mf8_t): Ditto. - (vint8mf4_t): Ditto. - (vint8mf2_t): Ditto. - (vint8m1_t): Ditto. - (vint8m2_t): Ditto. - (vint8m4_t): Ditto. - (vint8m8_t): Ditto. - (vint16mf4_t): Ditto. - (vint16mf2_t): Ditto. - (vint16m1_t): Ditto. - (vint16m2_t): Ditto. - (vint16m4_t): Ditto. - (vint16m8_t): Ditto. - (vint32mf2_t): Ditto. - (vint32m1_t): Ditto. - (vint32m2_t): Ditto. - (vint32m4_t): Ditto. - (vint32m8_t): Ditto. - (vint64m1_t): Ditto. - (vint64m2_t): Ditto. - (vint64m4_t): Ditto. - (vint64m8_t): Ditto. - (vuint8mf8_t): Ditto. - (vuint8mf4_t): Ditto. - (vuint8mf2_t): Ditto. - (vuint8m1_t): Ditto. - (vuint8m2_t): Ditto. - (vuint8m4_t): Ditto. - (vuint8m8_t): Ditto. - (vuint16mf4_t): Ditto. - (vuint16mf2_t): Ditto. - (vuint16m1_t): Ditto. - (vuint16m2_t): Ditto. - (vuint16m4_t): Ditto. - (vuint16m8_t): Ditto. - (vuint32mf2_t): Ditto. - (vuint32m1_t): Ditto. - (vuint32m2_t): Ditto. - (vuint32m4_t): Ditto. - (vuint32m8_t): Ditto. - (vuint64m1_t): Ditto. - (vuint64m2_t): Ditto. - (vuint64m4_t): Ditto. - (vuint64m8_t): Ditto. - * config/riscv/riscv-vector-builtins.cc (DEF_RVV_FULL_V_I_OPS): Ditto. - (DEF_RVV_FULL_V_U_OPS): Ditto. - (check_required_extensions): Add vmulh support. - (rvv_arg_type_info::get_tree_type): Ditto. - * config/riscv/riscv-vector-builtins.h (RVV_REQUIRE_FULL_V): Ditto. - (enum rvv_base_type): Ditto. - * config/riscv/riscv.opt: Add 'V' extension flag. - * config/riscv/vector-iterators.md (su): New iterator. - * config/riscv/vector.md (@pred_mulh<v_su><mode>): New pattern. - (@pred_mulh<v_su><mode>_scalar): Ditto. - (*pred_mulh<v_su><mode>_scalar): Ditto. - (*pred_mulh<v_su><mode>_extended_scalar): Ditto. - -2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/iterators.md: Add sign_extend/zero_extend. - * config/riscv/riscv-vector-builtins-bases.cc (class ext): New class. - (BASE): Ditto. - * config/riscv/riscv-vector-builtins-bases.h: Add vsext/vzext support. - * config/riscv/riscv-vector-builtins-functions.def (vsext): New macro - define. - (vzext): Ditto. - * config/riscv/riscv-vector-builtins-shapes.cc (struct alu_def): Adjust - for vsext/vzext support. - * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_WEXTI_OPS): New - macro define. - (DEF_RVV_QEXTI_OPS): Ditto. - (DEF_RVV_OEXTI_OPS): Ditto. - (DEF_RVV_WEXTU_OPS): Ditto. - (DEF_RVV_QEXTU_OPS): Ditto. - (DEF_RVV_OEXTU_OPS): Ditto. - (vint16mf4_t): Ditto. - (vint16mf2_t): Ditto. - (vint16m1_t): Ditto. - (vint16m2_t): Ditto. - (vint16m4_t): Ditto. - (vint16m8_t): Ditto. - (vint32mf2_t): Ditto. - (vint32m1_t): Ditto. - (vint32m2_t): Ditto. - (vint32m4_t): Ditto. - (vint32m8_t): Ditto. - (vint64m1_t): Ditto. - (vint64m2_t): Ditto. - (vint64m4_t): Ditto. - (vint64m8_t): Ditto. - (vuint16mf4_t): Ditto. - (vuint16mf2_t): Ditto. - (vuint16m1_t): Ditto. - (vuint16m2_t): Ditto. - (vuint16m4_t): Ditto. - (vuint16m8_t): Ditto. - (vuint32mf2_t): Ditto. - (vuint32m1_t): Ditto. - (vuint32m2_t): Ditto. - (vuint32m4_t): Ditto. - (vuint32m8_t): Ditto. - (vuint64m1_t): Ditto. - (vuint64m2_t): Ditto. - (vuint64m4_t): Ditto. - (vuint64m8_t): Ditto. - * config/riscv/riscv-vector-builtins.cc (DEF_RVV_WEXTI_OPS): Ditto. - (DEF_RVV_QEXTI_OPS): Ditto. - (DEF_RVV_OEXTI_OPS): Ditto. - (DEF_RVV_WEXTU_OPS): Ditto. - (DEF_RVV_QEXTU_OPS): Ditto. - (DEF_RVV_OEXTU_OPS): Ditto. - (rvv_arg_type_info::get_base_vector_type): Add sign_exted/zero_extend - support. - (rvv_arg_type_info::get_tree_type): Ditto. - * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): Ditto. - * config/riscv/vector-iterators.md (z): New attribute. - * config/riscv/vector.md (@pred_<optab><mode>_vf2): New pattern. - (@pred_<optab><mode>_vf4): Ditto. - (@pred_<optab><mode>_vf8): Ditto. - -2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/iterators.md: Add saturating Addition && Subtraction. - * config/riscv/riscv-v.cc (has_vi_variant_p): Ditto. - * config/riscv/riscv-vector-builtins-bases.cc (BASE): Ditto. - * config/riscv/riscv-vector-builtins-bases.h: Ditto. - * config/riscv/riscv-vector-builtins-functions.def (vsadd): New def. - (vssub): Ditto. - (vsaddu): Ditto. - (vssubu): Ditto. - * config/riscv/vector-iterators.md (sll.vi): Adjust for Saturating - support. - (sll.vv): Ditto. - (%3,%v4): Ditto. - (%3,%4): Ditto. - * config/riscv/vector.md (@pred_<optab><mode>): New pattern. - (@pred_<optab><mode>_scalar): New pattern. - (*pred_<optab><mode>_scalar): New pattern. - (*pred_<optab><mode>_extended_scalar): New pattern. - -2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/iterators.md: Add neg and not. - * config/riscv/riscv-vector-builtins-bases.cc (class unop): New class. - (BASE): Ditto. - * config/riscv/riscv-vector-builtins-bases.h: Ditto. - * config/riscv/riscv-vector-builtins-functions.def (vadd): Rename binop - into alu. - (vsub): Ditto. - (vand): Ditto. - (vor): Ditto. - (vxor): Ditto. - (vsll): Ditto. - (vsra): Ditto. - (vsrl): Ditto. - (vmin): Ditto. - (vmax): Ditto. - (vminu): Ditto. - (vmaxu): Ditto. - (vmul): Ditto. - (vdiv): Ditto. - (vrem): Ditto. - (vdivu): Ditto. - (vremu): Ditto. - (vrsub): Ditto. - (vneg): Ditto. - (vnot): Ditto. - * config/riscv/riscv-vector-builtins-shapes.cc (struct binop_def): Ditto. - (struct alu_def): Ditto. - (SHAPE): Ditto. - * config/riscv/riscv-vector-builtins-shapes.h: Ditto. - * config/riscv/riscv-vector-builtins.cc: Support unary C/C/++. - * config/riscv/vector-iterators.md: New iterator. - * config/riscv/vector.md (@pred_<optab><mode>): New pattern - -2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv-vsetvl.cc (pass_vsetvl::compute_probabilities): Skip exit block. - -2023-02-11 Jakub Jelinek <jakub@redhat.com> - - PR ipa/108605 - * ipa-cp.cc (ipa_agg_value_from_jfunc): Return NULL_TREE also if - item->offset bit position is too large to be representable as - unsigned int byte position. - -2023-02-11 Gerald Pfeifer <gerald@pfeifer.com> - - * doc/extend.texi (Other Builtins): Adjust link to WG14 N965. - -2023-02-10 Vladimir N. Makarov <vmakarov@redhat.com> - - * ira.cc (update_equiv_regs): Set up ira_reg_equiv for - valid_combine only when ira_use_lra_p is true. - -2023-02-10 Vladimir N. Makarov <vmakarov@redhat.com> - - * params.opt (ira-simple-lra-insn-threshold): Add new param. - * ira.cc (ira): Use the param to switch on simple LRA. - -2023-02-10 Andrew MacLeod <amacleod@redhat.com> - - PR tree-optimization/108687 - * gimple-range-cache.cc (ranger_cache::range_on_edge): Revert - back to RFD_NONE mode for calculations. - (ranger_cache::propagate_cache): Call the internal edge range API - with RFD_READ_ONLY instead of changing the external routine. - -2023-02-10 Andrew MacLeod <amacleod@redhat.com> - - PR tree-optimization/108520 - * gimple-range-infer.cc (check_assume_func): Invoke - gimple_range_global directly instead using global_range_query. - * value-query.cc (get_range_global): Add function context and - avoid calling nonnull_arg_p if not cfun. - (gimple_range_global): Add function context pointer. - * value-query.h (imple_range_global): Add function context. - -2023-02-10 Ju-Zhe Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/constraints.md (Wdm): Adjust constraint. - (Wbr): New constraint. - * config/riscv/predicates.md (reg_or_int_operand): New predicate. - * config/riscv/riscv-protos.h (emit_pred_op): Remove function. - (emit_vlmax_op): New function. - (emit_nonvlmax_op): Ditto. - (simm32_p): Ditto. - (neg_simm5_p): Ditto. - (has_vi_variant_p): Ditto. - * config/riscv/riscv-v.cc (emit_pred_op): Adjust function. - (emit_vlmax_op): New function. - (emit_nonvlmax_op): Ditto. - (expand_const_vector): Adjust function. - (legitimize_move): Ditto. - (simm32_p): New function. - (simm5_p): Ditto. - (neg_simm5_p): Ditto. - (has_vi_variant_p): Ditto. - * config/riscv/riscv-vector-builtins-bases.cc (class vrsub): New class. - (BASE): Ditto. - * config/riscv/riscv-vector-builtins-bases.h: Ditto. - * config/riscv/riscv-vector-builtins-functions.def (vmin): Remove - unsigned cases. - (vmax): Ditto. - (vminu): Remove signed cases. - (vmaxu): Ditto. - (vdiv): Remove unsigned cases. - (vrem): Ditto. - (vdivu): Remove signed cases. - (vremu): Ditto. - (vadd): Adjust. - (vsub): Ditto. - (vrsub): New class. - (vand): Adjust. - (vor): Ditto. - (vxor): Ditto. - (vmul): Ditto. - * config/riscv/riscv-vector-builtins.cc (DEF_RVV_U_OPS): New macro. - * config/riscv/riscv.h: change VL/VTYPE as fixed reg. - * config/riscv/vector-iterators.md: New iterators. - * config/riscv/vector.md (@pred_broadcast<mode>): Adjust pattern for vx - support. - (@pred_<optab><mode>_scalar): New pattern. - (@pred_sub<mode>_reverse_scalar): Ditto. - (*pred_<optab><mode>_scalar): Ditto. - (*pred_<optab><mode>_extended_scalar): Ditto. - (*pred_sub<mode>_reverse_scalar): Ditto. - (*pred_sub<mode>_extended_reverse_scalar): Ditto. - -2023-02-10 Richard Biener <rguenther@suse.de> - - PR tree-optimization/108724 - * tree-vect-stmts.cc (vectorizable_operation): Avoid - using word_mode vectors when vector lowering will - decompose them to elementwise operations. - -2023-02-10 Jakub Jelinek <jakub@redhat.com> - - Revert: - 2023-02-09 Martin Liska <mliska@suse.cz> - - PR target/100758 - * doc/extend.texi: Document that the function - does not work correctly for old VIA processors. - -2023-02-10 Andrew Pinski <apinski@marvell.com> - Andrew Macleod <amacleod@redhat.com> - - PR tree-optimization/108684 - * tree-ssa-dce.cc (simple_dce_from_worklist): - Check all ssa names and not just non-vdef ones - before accepting the inline-asm. - Call unlink_stmt_vdef on the statement before - removing it. - -2023-02-09 Vladimir N. Makarov <vmakarov@redhat.com> - - * ira.h (struct ira_reg_equiv_s): Add new field caller_save_p. - * ira.cc (validate_equiv_mem): Check memref address variance. - (no_equiv): Clear caller_save_p flag. - (update_equiv_regs): Define caller save equivalence for - valid_combine. - (setup_reg_equiv): Clear defined_p flag for caller save equivalence. - * lra-constraints.cc (lra_copy_reg_equiv): Add new arg - call_save_p. Use caller save equivalence depending on the arg. - (split_reg): Adjust the call. - -2023-02-09 Jakub Jelinek <jakub@redhat.com> - - PR target/100758 - * common/config/i386/cpuinfo.h (get_zhaoxin_cpu): Formatting fixes. - (cpu_indicator_init): Call get_available_features for all CPUs with - max_level >= 1, rather than just Intel, AMD or Zhaoxin. Formatting - fixes. - -2023-02-09 Jakub Jelinek <jakub@redhat.com> - - PR tree-optimization/108688 - * match.pd (bit_field_ref [bit_insert]): Simplify BIT_FIELD_REF - of BIT_INSERT_EXPR extracting exactly all inserted bits even - when without mode precision. Formatting fixes. - -2023-02-09 Andrew Pinski <apinski@marvell.com> - - PR tree-optimization/108688 - * match.pd (bit_field_ref [bit_insert]): Avoid generating - BIT_FIELD_REFs of non-mode-precision integral operands. - -2023-02-09 Martin Liska <mliska@suse.cz> - - PR target/100758 - * doc/extend.texi: Document that the function - does not work correctly for old VIA processors. - -2023-02-09 Andreas Schwab <schwab@suse.de> - - * lto-wrapper.cc (merge_and_complain): Handle - -funwind-tables and -fasynchronous-unwind-tables. - (append_compiler_options): Likewise. - -2023-02-09 Richard Biener <rguenther@suse.de> - - PR tree-optimization/26854 - * tree-into-ssa.cc (update_ssa): Turn blocks_to_update to tree - view around insert_updated_phi_nodes_for. - * tree-ssa-alias.cc (maybe_skip_until): Allocate visited bitmap - in tree view. - (walk_aliased_vdefs_1): Likewise. - -2023-02-08 Gerald Pfeifer <gerald@pfeifer.com> - - * doc/include/gpl_v3.texi: Change fsf.org to www.fsf.org. - -2023-02-08 Srinath Parvathaneni <srinath.parvathaneni@arm.com> - - PR target/108505 - * config.gcc (tm_mlib_file): Define new variable. - -2023-02-08 Jakub Jelinek <jakub@redhat.com> - - PR tree-optimization/108692 - * tree-vect-patterns.cc (vect_widened_op_tree): If rhs_code is - widened_code which is different from code, don't call - vect_look_through_possible_promotion but instead just check op is - SSA_NAME with integral type for which vect_is_simple_use is true - and call set_op on this_unprom. - -2023-02-08 Andrea Corallo <andrea.corallo@arm.com> - - * config/aarch64/aarch64-protos.h (aarch_ra_sign_key): Remove - declaration. - * config/aarch64/aarch64.cc (aarch_ra_sign_key): Remove - definition. - * config/aarch64/aarch64.opt (aarch64_ra_sign_key): Rename - to 'aarch_ra_sign_key'. - * config/arm/aarch-common.cc (aarch_ra_sign_key): Remove - declaration. - * config/arm/arm-protos.h (aarch_ra_sign_key): Likewise. - * config/arm/arm.cc (enum aarch_key_type): Remove definition. - * config/arm/arm.opt: Define. - -2023-02-08 Richard Sandiford <richard.sandiford@arm.com> - - PR tree-optimization/108316 - * tree-vect-stmts.cc (get_load_store_type): When using - internal functions for gather/scatter, make sure that the type - of the offset argument is consistent with the offset vector type. - -2023-02-08 Vladimir N. Makarov <vmakarov@redhat.com> - - Revert: - 2023-02-07 Vladimir N. Makarov <vmakarov@redhat.com> - - * ira.h (struct ira_reg_equiv_s): Add new field caller_save_p. - * ira.cc (validate_equiv_mem): Check memref address variance. - (update_equiv_regs): Define caller save equivalence for - valid_combine. - (setup_reg_equiv): Clear defined_p flag for caller save equivalence. - * lra-constraints.cc (lra_copy_reg_equiv): Add new arg - call_save_p. Use caller save equivalence depending on the arg. - (split_reg): Adjust the call. - -2023-02-08 Jakub Jelinek <jakub@redhat.com> - - * tree.def (SAD_EXPR): Remove outdated comment about missing - WIDEN_MINUS_EXPR. - -2023-02-07 Marek Polacek <polacek@redhat.com> - - * doc/invoke.texi: Update -fchar8_t documentation. - -2023-02-07 Vladimir N. Makarov <vmakarov@redhat.com> - - * ira.h (struct ira_reg_equiv_s): Add new field caller_save_p. - * ira.cc (validate_equiv_mem): Check memref address variance. - (update_equiv_regs): Define caller save equivalence for - valid_combine. - (setup_reg_equiv): Clear defined_p flag for caller save equivalence. - * lra-constraints.cc (lra_copy_reg_equiv): Add new arg - call_save_p. Use caller save equivalence depending on the arg. - (split_reg): Adjust the call. - -2023-02-07 Richard Biener <rguenther@suse.de> - - PR tree-optimization/26854 - * gimple-fold.cc (has_use_on_stmt): Look at stmt operands - instead of immediate uses. - -2023-02-07 Jakub Jelinek <jakub@redhat.com> - - PR tree-optimization/106923 - * ipa-split.cc (execute_split_functions): Don't split returns_twice - functions. - -2023-02-07 Jakub Jelinek <jakub@redhat.com> - - PR tree-optimization/106433 - * cgraph.cc (set_const_flag_1): Recurse on simd clones too. - (cgraph_node::set_pure_flag): Call set_pure_flag_1 on simd clones too. - -2023-02-07 Jan Hubicka <jh@suse.cz> - - * config/i386/x86-tune.def (X86_TUNE_AVX256_OPTIMAL): Turn off - for znver4. - -2023-02-06 Andrew Stubbs <ams@codesourcery.com> - - * config/gcn/mkoffload.cc (gcn_stack_size): New global variable. - (process_asm): Create a constructor for GCN_STACK_SIZE. - (main): Parse the -mstack-size option. - -2023-02-06 Alex Coplan <alex.coplan@arm.com> - - PR target/104921 - * config/aarch64/aarch64-simd.md (aarch64_bfmlal<bt>_lane<q>v4sf): - Use correct constraint for operand 3. - -2023-02-06 Martin Jambor <mjambor@suse.cz> - - * ipa-sra.cc (adjust_parameter_descriptions): Fix a typo in a dump. - -2023-02-06 Xi Ruoyao <xry111@xry111.site> - - * config/loongarch/loongarch.md (bytepick_w_ashift_amount): - New define_int_iterator. - (bytepick_d_ashift_amount): Likewise. - (bytepick_imm): New define_int_attr. - (bytepick_w_lshiftrt_amount): Likewise. - (bytepick_d_lshiftrt_amount): Likewise. - (bytepick_w_<bytepick_imm>): New define_insn template. - (bytepick_w_<bytepick_imm>_extend): Likewise. - (bytepick_d_<bytepick_imm>): Likewise. - (bytepick_w): Remove unused define_insn. - (bytepick_d): Likewise. - (UNSPEC_BYTEPICK_W): Remove unused unspec. - (UNSPEC_BYTEPICK_D): Likewise. - * config/loongarch/predicates.md (const_0_to_3_operand): - Remove unused define_predicate. - (const_0_to_7_operand): Likewise. - -2023-02-06 Jakub Jelinek <jakub@redhat.com> - - PR tree-optimization/108655 - * ubsan.cc (sanitize_unreachable_fn): For -funreachable-traps - or -fsanitize=unreachable -fsanitize-trap=unreachable return - BUILT_IN_UNREACHABLE_TRAP decl rather than BUILT_IN_TRAP. - -2023-02-05 Gerald Pfeifer <gerald@pfeifer.com> - - * doc/install.texi (Specific): Remove PW32. - -2023-02-03 Jakub Jelinek <jakub@redhat.com> - - PR tree-optimization/108647 - * range-op.cc (operator_equal::op1_range, - operator_not_equal::op1_range): Don't test op2 bound - equality if op2.undefined_p (), instead set_varying. - (operator_lt::op1_range, operator_le::op1_range, - operator_gt::op1_range, operator_ge::op1_range): Return false if - op2.undefined_p (). - (operator_lt::op2_range, operator_le::op2_range, - operator_gt::op2_range, operator_ge::op2_range): Return false if - op1.undefined_p (). - -2023-02-03 Aldy Hernandez <aldyh@redhat.com> - - PR tree-optimization/108639 - * value-range.cc (irange::legacy_equal_p): Compare nonzero bits as - widest_int. - (irange::operator==): Same. - -2023-02-03 Aldy Hernandez <aldyh@redhat.com> - - PR tree-optimization/108647 - * range-op-float.cc (foperator_lt::op1_range): Handle undefined ranges. - (foperator_lt::op2_range): Same. - (foperator_le::op1_range): Same. - (foperator_le::op2_range): Same. - (foperator_gt::op1_range): Same. - (foperator_gt::op2_range): Same. - (foperator_ge::op1_range): Same. - (foperator_ge::op2_range): Same. - (foperator_unordered_lt::op1_range): Same. - (foperator_unordered_lt::op2_range): Same. - (foperator_unordered_le::op1_range): Same. - (foperator_unordered_le::op2_range): Same. - (foperator_unordered_gt::op1_range): Same. - (foperator_unordered_gt::op2_range): Same. - (foperator_unordered_ge::op1_range): Same. - (foperator_unordered_ge::op2_range): Same. - -2023-02-03 Andrew MacLeod <amacleod@redhat.com> - - PR tree-optimization/107570 - * tree-vrp.cc (remove_and_update_globals): Reset SCEV. - -2023-02-03 Gaius Mulley <gaiusmod2@gmail.com> - - * doc/gm2.texi (Internals): Remove from menu. - (Using): Comment out ifnohtml conditional. - (Documentation): Use gcc url. - (License): Node simplified. - (Copying): New node. Include gpl_v3_without_node. - (Contributing): Node simplified. - (Internals): Commented out. - (Libraries): Node simplified. - (Indices): Ditto. - (Contents): Ditto. - (Functions): Ditto. - -2023-02-03 Christophe Lyon <christophe.lyon@arm.com> - - * config/arm/mve.md (mve_vabavq_p_<supf><mode>): Add length - attribute. - (mve_vqshluq_m_n_s<mode>): Likewise. - (mve_vshlq_m_<supf><mode>): Likewise. - (mve_vsriq_m_n_<supf><mode>): Likewise. - (mve_vsubq_m_<supf><mode>): Likewise. - -2023-02-03 Martin Jambor <mjambor@suse.cz> - - PR ipa/108384 - * ipa-sra.cc (push_param_adjustments_for_index): Remove a size check - when comparing to an IPA-CP value. - (dump_list_of_param_indices): New function. - (adjust_parameter_descriptions): Check for mismatching IPA-CP values. - Dump removed candidates using dump_list_of_param_indices. - * ipa-param-manipulation.cc - (ipa_param_body_adjustments::modify_expression): Add assert checking - sizes of a VIEW_CONVERT_EXPR will match. - (ipa_param_body_adjustments::modify_assignment): Likewise. - -2023-02-03 Monk Chiang <monk.chiang@sifive.com> - - * config/riscv/riscv.h: Remove VL_REGS, VTYPE_REGS class. - * config/riscv/riscv.cc: Ditto. - -2023-02-03 Ju-Zhe Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/vector-iterators.md (sll.vi): Fix constraint bug. - (sll.vv): Ditto. - (%3,%4): Ditto. - (%3,%v4): Ditto. - * config/riscv/vector.md: Ditto. - -2023-02-03 Ju-Zhe Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/predicates.md (pmode_reg_or_uimm5_operand): New predicate. - * config/riscv/riscv-vector-builtins-bases.cc: New class. - * config/riscv/riscv-vector-builtins-functions.def (vsll): Ditto. - (vsra): Ditto. - (vsrl): Ditto. - * config/riscv/riscv-vector-builtins.cc: Ditto. - * config/riscv/vector.md (@pred_<optab><mode>_scalar): New pattern. - -2023-02-02 Iain Sandoe <iain@sandoe.co.uk> - - * toplev.cc (toplev::main): Only print the version information header - from toplevel main(). - -2023-02-02 Paul-Antoine Arras <pa@codesourcery.com> - - * config/gcn/gcn-valu.md (cond_<expander><mode>): Add - cond_{ashl|ashr|lshr} - -2023-02-02 Richard Sandiford <richard.sandiford@arm.com> - - PR rtl-optimization/108086 - * rtl-ssa/insns.h (insn_info): Make m_num_defs a full unsigned int. - Adjust size-related commentary accordingly. - -2023-02-02 Richard Sandiford <richard.sandiford@arm.com> - - PR rtl-optimization/108508 - * rtl-ssa/accesses.cc (function_info::split_clobber_group): When - the splay tree search gives the first clobber in the second group, - make sure that the root of the first clobber group is updated - correctly. Enter the new clobber group into the definition splay - tree. - -2023-02-02 Jin Ma <jinma@linux.alibaba.com> - - * common/config/riscv/riscv-common.cc (riscv_compute_multilib): - Fix finding best match score. - -2023-02-02 Jakub Jelinek <jakub@redhat.com> - - PR debug/106746 - PR rtl-optimization/108463 - PR target/108484 - * cselib.cc (cselib_current_insn): Move declaration earlier. - (cselib_hasher::equal): For debug only locs, temporarily override - cselib_current_insn to their l->setting_insn for the - rtx_equal_for_cselib_1 call, so that unsuccessful comparisons don't - promote some debug locs. - * sched-deps.cc (sched_analyze_2) <case MEM>: For MEMs in DEBUG_INSNs - when using cselib call cselib_lookup_from_insn on the address but - don't substitute it. - -2023-02-02 Richard Biener <rguenther@suse.de> - - PR middle-end/108625 - * genmatch.cc (expr::gen_transform): Also disallow resimplification - from pushing to lseq with force_leaf. - (dt_simplify::gen_1): Likewise. - -2023-02-02 Andrew Stubbs <ams@codesourcery.com> - - * config/gcn/gcn-run.cc: Include libgomp-gcn.h. - (struct kernargs): Replace the common content with kernargs_abi. - (struct heap): Delete. - (main): Read GCN_STACK_SIZE envvar. - Allocate space for the device stacks. - Write the new kernargs fields. - * config/gcn/gcn.cc (gcn_option_override): Remove stack_size_opt. - (default_requested_args): Remove PRIVATE_SEGMENT_BUFFER_ARG and - PRIVATE_SEGMENT_WAVE_OFFSET_ARG. - (gcn_addr_space_convert): Mask the QUEUE_PTR_ARG content. - (gcn_expand_prologue): Move the TARGET_PACKED_WORK_ITEMS to the top. - Set up the stacks from the values in the kernargs, not private. - (gcn_expand_builtin_1): Match the stack configuration in the prologue. - (gcn_hsa_declare_function_name): Turn off the private segment. - (gcn_conditional_register_usage): Ensure QUEUE_PTR is fixed. - * config/gcn/gcn.h (FIXED_REGISTERS): Fix the QUEUE_PTR register. - * config/gcn/gcn.opt (mstack-size): Change the description. - -2023-02-02 Andre Vieira <andre.simoesdiasvieira@arm.com> - - PR target/108443 - * config/arm/arm.h (VALID_MVE_PRED_MODE): Add V2QI. - * config/arm/arm.cc (thumb2_legitimate_address_p): Use HImode for - addressing MVE predicate modes. - (mve_bool_vec_to_const): Change to represent correct MVE predicate - format. - (arm_hard_regno_mode_ok): Use VALID_MVE_PRED_MODE instead of checking - modes. - (arm_vector_mode_supported_p): Likewise. - (arm_mode_to_pred_mode): Add V2QI. - * config/arm/arm-builtins.cc (UNOP_PRED_UNONE_QUALIFIERS): New - qualifier. - (UNOP_PRED_PRED_QUALIFIERS): New qualifier - (BINOP_PRED_UNONE_PRED_QUALIFIERS): New qualifier. - (v2qi_UP): New macro. - (v4bi_UP): New macro. - (v8bi_UP): New macro. - (v16bi_UP): New macro. - (arm_expand_builtin_args): Make it able to expand the new predicate - modes. - * config/arm/arm-modes.def (V2QI): New mode. - * config/arm/arm-simd-builtin-types.def (Pred1x16_t, Pred2x8_t - Pred4x4_t): Remove unused predicate builtin types. - * config/arm/arm_mve.h (__arm_vctp16q, __arm_vctp32q, __arm_vctp64q, - __arm_vctp8q, __arm_vpnot, __arm_vctp8q_m, __arm_vctp64q_m, - __arm_vctp32q_m, __arm_vctp16q_m): Use predicate modes. - * config/arm/arm_mve_builtins.def (vctp16q, vctp32q, vctp64q, vctp8q, - vpnot, vctp8q_m, vctp16q_m, vctp32q_m, vctp64q_m): Likewise. - * config/arm/constraints.md (DB): Check for VALID_MVE_PRED_MODE instead - of MODE_VECTOR_BOOL. - * config/arm/iterators.md (MVE_7, MVE_7_HI): Add V2QI - (MVE_VPRED): Likewise. - (MVE_vpred): Add V2QI and map upper case predicate modes to lower case. - (MVE_vctp): New mode attribute. - (mode1): Remove. - (VCTPQ): Remove. - (VCTPQ_M): Remove. - * config/arm/mve.md (mve_vctp<mode1>qhi): Rename this... - (mve_vctp<MVE_vctp>q<MVE_vpred>): ... to this. And use new mode - attributes. - (mve_vpnothi): Rename this... - (mve_vpnotv16bi): ... to this. - (mve_vctp<mode1>q_mhi): Rename this... - (mve_vctp<MVE_vctp>q_m<MVE_vpred>):... to this. - (mve_vldrdq_gather_base_z_<supf>v2di, - mve_vldrdq_gather_offset_z_<supf>v2di, - mve_vldrdq_gather_shifted_offset_z_<supf>v2di, - mve_vstrdq_scatter_base_p_<supf>v2di, - mve_vstrdq_scatter_offset_p_<supf>v2di, - mve_vstrdq_scatter_offset_p_<supf>v2di_insn, - mve_vstrdq_scatter_shifted_offset_p_<supf>v2di, - mve_vstrdq_scatter_shifted_offset_p_<supf>v2di_insn, - mve_vstrdq_scatter_base_wb_p_<supf>v2di, - mve_vldrdq_gather_base_wb_z_<supf>v2di, - mve_vldrdq_gather_base_nowb_z_<supf>v2di, - mve_vldrdq_gather_base_wb_z_<supf>v2di_insn): Use V2QI insead of HI for - predicates. - * config/arm/unspecs.md (VCTP8Q, VCTP16Q, VCTP32Q, VCTP64Q): Replace - these... - (VCTP): ... with this. - (VCTP8Q_M, VCTP16Q_M, VCTP32Q_M, VCTP64Q_M): Replace these... - (VCTP_M): ... with this. - * config/arm/vfp.md (*thumb2_movhi_vfp, *thumb2_movhi_fp16): Use - VALID_MVE_PRED_MODE instead of checking for MODE_VECTOR_BOOL class. - -2023-02-02 Andre Vieira <andre.simoesdiasvieira@arm.com> - - PR target/107674 - * config/arm/arm.cc (arm_hard_regno_mode_ok): Use new MACRO. - (arm_modes_tieable_p): Make MVE predicate modes tieable. - * config/arm/arm.h (VALID_MVE_PRED_MODE): New define. - * simplify-rtx.cc (simplify_context::simplify_subreg): Teach - simplify_subreg to simplify subregs where the outermode is not scalar. - -2023-02-02 Andre Vieira <andre.simoesdiasvieira@arm.com> - - PR target/107674 - * config/arm/arm-builtins.cc (arm_simd_builtin_type): Rewrite to use - new qualifiers parameter and use unsigned short type for MVE predicate. - (arm_init_builtin): Call arm_simd_builtin_type with qualifiers - parameter. - (arm_init_crypto_builtins): Likewise. - -2023-02-02 Jakub Jelinek <jakub@redhat.com> - - PR ipa/107300 - * builtins.def (BUILT_IN_UNREACHABLE_TRAP): New builtin. - * internal-fn.def (TRAP): Remove. - * internal-fn.cc (expand_TRAP): Remove. - * tree.cc (build_common_builtin_nodes): Define - BUILT_IN_UNREACHABLE_TRAP if not yet defined. - (builtin_decl_unreachable): Use BUILT_IN_UNREACHABLE_TRAP - instead of BUILT_IN_TRAP. - * gimple.cc (gimple_build_builtin_unreachable): Remove - emitting internal function for BUILT_IN_TRAP. - * asan.cc (maybe_instrument_call): Handle BUILT_IN_UNREACHABLE_TRAP. - * cgraph.cc (cgraph_edge::verify_corresponds_to_fndecl): Handle - BUILT_IN_UNREACHABLE_TRAP instead of BUILT_IN_TRAP. - * ipa-devirt.cc (possible_polymorphic_call_target_p): Handle - BUILT_IN_UNREACHABLE_TRAP. - * builtins.cc (expand_builtin, is_inexpensive_builtin): Likewise. - * tree-cfg.cc (verify_gimple_call, - pass_warn_function_return::execute): Likewise. - * attribs.cc (decl_attributes): Don't report exclusions on - BUILT_IN_UNREACHABLE_TRAP either. - -2023-02-02 liuhongt <hongtao.liu@intel.com> - - PR tree-optimization/108601 - * tree-vectorizer.h (vect_can_peel_nonlinear_iv_p): Removed. - * tree-vect-loop.cc - (vectorizable_nonlinear_induction): Remove - vect_can_peel_nonlinear_iv_p. - (vect_can_peel_nonlinear_iv_p): Don't peel - nonlinear iv(mult or shift) for epilog when vf is not - constant and moved the defination to .. - * tree-vect-loop-manip.cc (vect_can_peel_nonlinear_iv_p): - .. Here. - -2023-02-02 Jakub Jelinek <jakub@redhat.com> - - PR middle-end/108435 - * tree-nested.cc (convert_nonlocal_omp_clauses) - <case OMP_CLAUSE_LASTPRIVATE>: If info->new_local_var_chain and *seq - is not a GIMPLE_BIND, wrap the sequence into a new GIMPLE_BIND - before calling declare_vars. - (convert_nonlocal_omp_clauses) <case OMP_CLAUSE_LINEAR>: Merge - with the OMP_CLAUSE_LASTPRIVATE handling except for whether - seq is initialized to &OMP_CLAUSE_LASTPRIVATE_GIMPLE_SEQ (clause) - or &OMP_CLAUSE_LINEAR_GIMPLE_SEQ (clause). - -2023-02-01 Tamar Christina <tamar.christina@arm.com> - - * common/config/aarch64/aarch64-common.cc - (struct aarch64_option_extension): Add native_detect and document struct - a bit more. - (all_extensions): Set new field native_detect. - * config/aarch64/aarch64.cc (struct aarch64_option_extension): Delete - unused struct. - -2023-02-01 Martin Liska <mliska@suse.cz> - - * ipa-devirt.cc (odr_types_equivalent_p): Respect *warned - value if set. - -2023-02-01 Andrew MacLeod <amacleod@redhat.com> - - PR tree-optimization/108356 - * gimple-range-cache.cc (ranger_cache::range_on_edge): Always - do a search of the DOM tree for a range. - -2023-02-01 Martin Liska <mliska@suse.cz> - - PR ipa/108509 - * cgraphunit.cc (walk_polymorphic_call_targets): Insert - ony non-null values. - * ipa.cc (walk_polymorphic_call_targets): Likewise. - -2023-02-01 Martin Liska <mliska@suse.cz> - - PR driver/108572 - * gcc.cc (LINK_COMPRESS_DEBUG_SPEC): Report error only for - -gz=zstd. - -2023-02-01 Jakub Jelinek <jakub@redhat.com> - - PR debug/108573 - * ree.cc (combine_reaching_defs): Don't return false for paradoxical - subregs in DEBUG_INSNs. - -2023-02-01 Richard Sandiford <richard.sandiford@arm.com> - - * compare-elim.cc (find_flags_uses_in_insn): Guard use of SET_SRC. - -2023-02-01 Andreas Krebbel <krebbel@linux.ibm.com> - - * config/s390/s390.cc (s390_restore_gpr_p): New function. - (s390_preserve_gpr_arg_in_range_p): New function. - (s390_preserve_gpr_arg_p): New function. - (s390_preserve_fpr_arg_p): New function. - (s390_register_info_stdarg_fpr): Rename to ... - (s390_register_info_arg_fpr): ... this. Add -mpreserve-args handling. - (s390_register_info_stdarg_gpr): Rename to ... - (s390_register_info_arg_gpr): ... this. Add -mpreserve-args handling. - (s390_register_info): Use the renamed functions above. - (s390_optimize_register_info): Likewise. - (save_fpr): Generate CFI for -mpreserve-args. - (save_gprs): Generate CFI for -mpreserve-args. Drop return value. - (s390_emit_prologue): Adjust to changed calling convention of save_gprs. - (s390_optimize_prologue): Likewise. - * config/s390/s390.opt: New option -mpreserve-args - -2023-02-01 Andreas Krebbel <krebbel@linux.ibm.com> - - * config/s390/s390.cc (save_gprs): Use gen_frame_mem. - (restore_gprs): Likewise. - (s390_emit_stack_tie): Make the stack_tie to be dependent on the - frame pointer if a frame-pointer is used. - (s390_emit_prologue): Emit stack_tie when frame-pointer is needed. - * config/s390/s390.md (stack_tie): Add a register operand and - rename to ... - (@stack_tie<mode>): ... this. - -2023-02-01 Andreas Krebbel <krebbel@linux.ibm.com> - - * dwarf2cfi.cc (dwarf2out_frame_debug_cfa_restore): Add - EMIT_CFI parameter. - (dwarf2out_frame_debug): Add case for REG_CFA_NORESTORE. - * reg-notes.def (REG_CFA_NOTE): New reg note definition. - -2023-02-01 Richard Biener <rguenther@suse.de> - - PR middle-end/108500 - * dominance.cc (assign_dfs_numbers): Replace recursive DFS - with tree traversal algorithm. - -2023-02-01 Jason Merrill <jason@redhat.com> - - * doc/invoke.texi: Document -Wno-changes-meaning. - -2023-02-01 David Malcolm <dmalcolm@redhat.com> - - * doc/invoke.texi (Static Analyzer Options): Add notes about - limitations of -fanalyzer. - -2023-01-31 Ju-Zhe Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/constraints.md (vj): New. - (vk): Ditto - * config/riscv/iterators.md: Add more opcode. - * config/riscv/predicates.md (vector_arith_operand): New. - (vector_neg_arith_operand): New. - (vector_shift_operand): New. - * config/riscv/riscv-vector-builtins-bases.cc (class binop): New. - * config/riscv/riscv-vector-builtins-bases.h: (vadd): New. - (vsub): Ditto. - (vand): Ditto. - (vor): Ditto. - (vxor): Ditto. - (vsll): Ditto. - (vsra): Ditto. - (vsrl): Ditto. - (vmin): Ditto. - (vmax): Ditto. - (vminu): Ditto. - (vmaxu): Ditto. - (vmul): Ditto. - (vdiv): Ditto. - (vrem): Ditto. - (vdivu): Ditto. - (vremu): Ditto. - * config/riscv/riscv-vector-builtins-functions.def (vadd): New. - (vsub): Ditto. - (vand): Ditto. - (vor): Ditto. - (vxor): Ditto. - (vsll): Ditto. - (vsra): Ditto. - (vsrl): Ditto. - (vmin): Ditto. - (vmax): Ditto. - (vminu): Ditto. - (vmaxu): Ditto. - (vmul): Ditto. - (vdiv): Ditto. - (vrem): Ditto. - (vdivu): Ditto. - (vremu): Ditto. - * config/riscv/riscv-vector-builtins-shapes.cc (struct binop_def): New. - * config/riscv/riscv-vector-builtins-shapes.h (binop): New. - * config/riscv/riscv-vector-builtins.cc (DEF_RVV_I_OPS): New. - (DEF_RVV_U_OPS): New. - (rvv_arg_type_info::get_base_vector_type): Handle - RVV_BASE_shift_vector. - (rvv_arg_type_info::get_tree_type): Ditto. - * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): Add - RVV_BASE_shift_vector. - * config/riscv/riscv.cc (riscv_print_operand): Handle 'V'. - * config/riscv/vector-iterators.md: Handle more opcode. - * config/riscv/vector.md (@pred_<optab><mode>): New. - -2023-01-31 Philipp Tomsich <philipp.tomsich@vrull.eu> - - PR target/108589 - * config/aarch64/aarch64.cc (aarch_macro_fusion_pair_p): Check - REG_P on SET_DEST. - -2023-01-31 Richard Sandiford <richard.sandiford@arm.com> - - PR tree-optimization/108608 - * tree-vect-loop.cc (vect_transform_reduction): Handle single - def-use cycles that involve function calls rather than tree codes. - -2023-01-31 Andrew MacLeod <amacleod@redhat.com> - - PR tree-optimization/108385 - * gimple-range-gori.cc (gori_compute::compute_operand_range): - Allow VARYING computations to continue if there is a relation. - * range-op.cc (pointer_plus_operator::op2_range): New. - -2023-01-31 Andrew MacLeod <amacleod@redhat.com> - - PR tree-optimization/108359 - * range-op.cc (range_operator::wi_fold_in_parts_equiv): New. - (range_operator::fold_range): If op1 is equivalent to op2 then - invoke new fold_in_parts_equiv to operate on sub-components. - * range-op.h (wi_fold_in_parts_equiv): New prototype. - -2023-01-31 Andrew MacLeod <amacleod@redhat.com> - - * gimple-range-gori.cc (gori_compute::compute_operand_range): Do - not abort calculations if there is a valid relation available. - (gori_compute::refine_using_relation): Pass correct relation trio. - (gori_compute::compute_operand1_range): Create trio and use it. - (gori_compute::compute_operand2_range): Ditto. - * range-op.cc (operator_plus::op1_range): Use correct trio member. - (operator_minus::op1_range): Use correct trio member. - * value-relation.cc (value_relation::create_trio): New. - * value-relation.h (value_relation::create_trio): New prototype. - -2023-01-31 Jakub Jelinek <jakub@redhat.com> - - PR target/108599 - * config/i386/i386-expand.cc - (ix86_convert_const_wide_int_to_broadcast): Return nullptr if - CONST_WIDE_INT_NUNITS (op) times HOST_BITS_PER_WIDE_INT isn't - equal to bitsize of mode. - -2023-01-31 Jakub Jelinek <jakub@redhat.com> - - PR rtl-optimization/108596 - * bb-reorder.cc (fix_up_fall_thru_edges): Handle the case where cur_bb - ends with asm goto and has a crossing fallthrough edge to the same bb - that contains at least one of its labels by restoring EDGE_CROSSING - flag even on possible edge from cur_bb to new_bb successor. - -2023-01-31 Jakub Jelinek <jakub@redhat.com> - - PR c++/105593 - * config/i386/avx512erintrin.h (_mm512_exp2a23_round_pd, - _mm512_exp2a23_round_ps, _mm512_rcp28_round_pd, _mm512_rcp28_round_ps, - _mm512_rsqrt28_round_pd, _mm512_rsqrt28_round_ps): Use - _mm512_undefined_pd () or _mm512_undefined_ps () instead of using - uninitialized automatic variable __W. - -2023-01-31 Gerald Pfeifer <gerald@pfeifer.com> - - * doc/include/fdl.texi: Change fsf.org to www.fsf.org. - -2023-01-30 Ju-Zhe Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv-protos.h (get_vector_mode): New function. - * config/riscv/riscv-v.cc (get_vector_mode): Ditto. - * config/riscv/riscv-vector-builtins-bases.cc (enum lst_type): New enum. - (class loadstore): Adjust for indexed loads/stores support. - (BASE): Ditto. - * config/riscv/riscv-vector-builtins-bases.h: New function declare. - * config/riscv/riscv-vector-builtins-functions.def (vluxei8): Ditto. - (vluxei16): Ditto. - (vluxei32): Ditto. - (vluxei64): Ditto. - (vloxei8): Ditto. - (vloxei16): Ditto. - (vloxei32): Ditto. - (vloxei64): Ditto. - (vsuxei8): Ditto. - (vsuxei16): Ditto. - (vsuxei32): Ditto. - (vsuxei64): Ditto. - (vsoxei8): Ditto. - (vsoxei16): Ditto. - (vsoxei32): Ditto. - (vsoxei64): Ditto. - * config/riscv/riscv-vector-builtins-shapes.cc - (struct indexed_loadstore_def): New class. - (SHAPE): Ditto. - * config/riscv/riscv-vector-builtins-shapes.h: Ditto. - * config/riscv/riscv-vector-builtins.cc (required_extensions_p): Adjust - for indexed loads/stores support. - (check_required_extensions): Ditto. - (rvv_arg_type_info::get_base_vector_type): New function. - (rvv_arg_type_info::get_tree_type): Ditto. - (function_builder::add_unique_function): Adjust for indexed loads/stores - support. - (function_expander::use_exact_insn): New function. - * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): Adjust for - indexed loads/stores support. - (struct rvv_arg_type_info): Ditto. - (function_expander::index_mode): New function. - (function_base::apply_tail_policy_p): Ditto. - (function_base::apply_mask_policy_p): Ditto. - * config/riscv/vector-iterators.md (unspec): New unspec. - * config/riscv/vector.md (unspec): Ditto. - (@pred_indexed_<order>load<VNX1_QHSD:mode><VNX1_QHSDI:mode>): New - pattern. - (@pred_indexed_<order>store<VNX1_QHSD:mode><VNX1_QHSDI:mode>): Ditto. - (@pred_indexed_<order>load<VNX2_QHSD:mode><VNX2_QHSDI:mode>): Ditto. - (@pred_indexed_<order>store<VNX2_QHSD:mode><VNX2_QHSDI:mode>): Ditto. - (@pred_indexed_<order>load<VNX4_QHSD:mode><VNX4_QHSDI:mode>): Ditto. - (@pred_indexed_<order>store<VNX4_QHSD:mode><VNX4_QHSDI:mode>): Ditto. - (@pred_indexed_<order>load<VNX8_QHSD:mode><VNX8_QHSDI:mode>): Ditto. - (@pred_indexed_<order>store<VNX8_QHSD:mode><VNX8_QHSDI:mode>): Ditto. - (@pred_indexed_<order>load<VNX16_QHS:mode><VNX16_QHSI:mode>): Ditto. - (@pred_indexed_<order>store<VNX16_QHS:mode><VNX16_QHSI:mode>): Ditto. - (@pred_indexed_<order>load<VNX32_QH:mode><VNX32_QHI:mode>): Ditto. - (@pred_indexed_<order>store<VNX32_QH:mode><VNX32_QHI:mode>): Ditto. - (@pred_indexed_<order>load<VNX64_Q:mode><VNX64_Q:mode>): Ditto. - (@pred_indexed_<order>store<VNX64_Q:mode><VNX64_Q:mode>): Ditto. - -2023-01-30 Flavio Cruz <flaviocruz@gmail.com> - - * config.gcc: Recognize x86_64-*-gnu* targets and include - i386/gnu64.h. - * config/i386/gnu64.h: Define configuration for new target - including ld.so location. - -2023-01-30 Philipp Tomsich <philipp.tomsich@vrull.eu> - - * config/aarch64/aarch64-cores.def (AARCH64_CORE): Update - ampere1a to include SM4. - -2023-01-30 Andrew Pinski <apinski@marvell.com> - - PR tree-optimization/108582 - * tree-ssa-phiopt.cc (match_simplify_replacement): Add check - for middlebb to have no phi nodes. - -2023-01-30 Richard Biener <rguenther@suse.de> - - PR tree-optimization/108574 - * tree-ssa-sccvn.cc (visit_phi): Instead of swapping - sameval and def, ignore the equivalence if there's the - danger of oscillating between two values. - -2023-01-30 Andreas Schwab <schwab@suse.de> - - * common/config/riscv/riscv-common.cc - (riscv_option_optimization_table) - [TARGET_DEFAULT_ASYNC_UNWIND_TABLES]: Enable - -fasynchronous-unwind-tables and -funwind-tables. - * config.gcc (riscv*-*-linux*): Define - TARGET_DEFAULT_ASYNC_UNWIND_TABLES. - -2023-01-30 YunQiang Su <yunqiang.su@cipunited.com> - - * Makefile.in (CROSS_SYSTEM_HEADER_DIR): set according the - value of includedir. - -2023-01-30 Richard Biener <rguenther@suse.de> - - PR ipa/108511 - * cgraph.cc (possibly_call_in_translation_unit_p): Relax - assert. - -2023-01-30 liuhongt <hongtao.liu@intel.com> - - * config/i386/i386.opt: Change AVX512FP16 to AVX512-FP16. - * doc/invoke.texi: Ditto. - -2023-01-29 Jan Hubicka <hubicka@ucw.cz> - - * ipa-utils.cc: Include calls.h, cfgloop.h and cfganal.h - (stmt_may_terminate_function_p): If assuming return or EH - volatile asm is safe. - (find_always_executed_bbs): Fix handling of terminating BBS and - infinite loops; add debug output. - * tree-ssa-alias.cc (stmt_kills_ref_p): Fix debug output - -2023-01-28 Philipp Tomsich <philipp.tomsich@vrull.eu> - - * config/aarch64/aarch64.cc (aarch64_uxt_size): fix an - off-by-one in checking the permissible shift-amount. - -2023-01-28 Gerald Pfeifer <gerald@pfeifer.com> - - * doc/extend.texi (Named Address Spaces): Update link to the - AVR-Libc manual. - -2023-01-28 Gerald Pfeifer <gerald@pfeifer.com> - - * doc/standards.texi (Standards): Fix markup. - -2023-01-28 Gerald Pfeifer <gerald@pfeifer.com> - - * doc/standards.texi (Standards): Update link to Objective-C book. - -2023-01-28 Gerald Pfeifer <gerald@pfeifer.com> - - * doc/invoke.texi (Instrumentation Options): Update reference to - AddressSanitizer. - -2023-01-28 Gerald Pfeifer <gerald@pfeifer.com> - - * doc/standards.texi: Update Go1 link. - -2023-01-28 Ju-Zhe Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/predicates.md (pmode_reg_or_0_operand): New predicate. - * config/riscv/riscv-vector-builtins-bases.cc (class loadstore): - Support vlse/vsse. - (BASE): Ditto. - * config/riscv/riscv-vector-builtins-bases.h: Ditto. - * config/riscv/riscv-vector-builtins-functions.def (vlse): New class. - (vsse): New class. - * config/riscv/riscv-vector-builtins.cc - (function_expander::use_contiguous_load_insn): Support vlse/vsse. - * config/riscv/vector.md (@pred_strided_load<mode>): New md pattern. - (@pred_strided_store<mode>): Ditto. - -2023-01-28 Ju-Zhe Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/vector.md (tail_policy_op_idx): Remove. - (mask_policy_op_idx): Remove. - (avl_type_op_idx): Remove. - -2023-01-27 Richard Sandiford <richard.sandiford@arm.com> - - PR tree-optimization/96373 - * tree.h (sign_mask_for): Declare. - * tree.cc (sign_mask_for): New function. - (signed_or_unsigned_type_for): For vector types, try to use the - related_int_vector_mode. - * genmatch.cc (commutative_op): Handle conditional internal functions. - * match.pd: Fold an IFN_COND_MUL+copysign into an IFN_COND_XOR+and. - -2023-01-27 Richard Sandiford <richard.sandiford@arm.com> - - * tree-vectorizer.cc (vector_costs::compare_inside_loop_cost): - Use the likely minimum VF when bounding the denominators to - the estimated number of iterations. - -2023-01-27 Richard Biener <rguenther@suse.de> - - PR target/55522 - * doc/invoke.texi (-shared): Clarify effect on -ffast-math - and -Ofast FP environment side-effects. - -2023-01-27 Richard Biener <rguenther@suse.de> - - PR target/55522 - * config/mips/gnu-user.h (GNU_USER_TARGET_MATHFILE_SPEC): - Don't add crtfastmath.o for -shared. - -2023-01-27 Richard Biener <rguenther@suse.de> - - PR target/55522 - * config/ia64/linux.h (ENDFILE_SPEC): Don't add crtfastmath.o - for -shared. - -2023-01-27 Richard Biener <rguenther@suse.de> - - PR target/55522 - * config/alpha/linux.h (ENDFILE_SPEC): Don't add - crtfastmath.o for -shared. - -2023-01-27 Andrew MacLeod <amacleod@redhat.com> - - PR tree-optimization/108306 - * range-op.cc (operator_lshift::fold_range): Return [0, 0] not - varying for shifts that are always out of void range. - (operator_rshift::fold_range): Return [0, 0] not - varying for shifts that are always out of void range. - -2023-01-27 Andrew MacLeod <amacleod@redhat.com> - - PR tree-optimization/108447 - * gimple-range-fold.cc (old_using_range::relation_fold_and_or): - Do not attempt to fold HONOR_NAN types. - -2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv-vector-builtins-shapes.cc (struct loadstore_def): - Remove _m suffix for "vop_m" C++ overloaded API name. - -2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv-vector-builtins-bases.cc (BASE): Add vlm/vsm support. - * config/riscv/riscv-vector-builtins-bases.h: Ditto. - * config/riscv/riscv-vector-builtins-functions.def (vlm): New define. - (vsm): Ditto. - * config/riscv/riscv-vector-builtins-shapes.cc (struct loadstore_def): Add vlm/vsm support. - * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_B_OPS): Ditto. - (vbool64_t): Ditto. - (vbool32_t): Ditto. - (vbool16_t): Ditto. - (vbool8_t): Ditto. - (vbool4_t): Ditto. - (vbool2_t): Ditto. - (vbool1_t): Ditto. - * config/riscv/riscv-vector-builtins.cc (DEF_RVV_B_OPS): Ditto. - (rvv_arg_type_info::get_tree_type): Ditto. - (function_expander::use_contiguous_load_insn): Ditto. - * config/riscv/vector.md (@pred_store<mode>): Ditto. - -2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv-vsetvl.cc (vsetvl_insn_p): Add condition to avoid ICE. - (vsetvl_discard_result_insn_p): New function. - (reg_killed_by_bb_p): rename to find_reg_killed_by. - (find_reg_killed_by): New name. - (get_vl): allow it to be called by more functions. - (has_vsetvl_killed_avl_p): Add condition. - (get_avl): allow it to be called by more functions. - (insn_should_be_added_p): New function. - (get_all_nonphi_defs): Refine function. - (get_all_sets): Ditto. - (get_same_bb_set): New function. - (any_insn_in_bb_p): Ditto. - (any_set_in_bb_p): Ditto. - (get_vl_vtype_info): Add VLMAX forward optimization. - (source_equal_p): Fix issues. - (extract_single_source): Refine. - (avl_info::multiple_source_equal_p): New function. - (avl_info::operator==): Adjust for final version. - (vl_vtype_info::operator==): Ditto. - (vl_vtype_info::same_avl_p): Ditto. - (vector_insn_info::parse_insn): Ditto. - (vector_insn_info::available_p): New function. - (vector_insn_info::merge): Adjust for final version. - (vector_insn_info::dump): Add hard_empty. - (pass_vsetvl::hard_empty_block_p): New function. - (pass_vsetvl::backward_demand_fusion): Adjust for final version. - (pass_vsetvl::forward_demand_fusion): Ditto. - (pass_vsetvl::demand_fusion): Ditto. - (pass_vsetvl::cleanup_illegal_dirty_blocks): New function. - (pass_vsetvl::compute_local_properties): Adjust for final version. - (pass_vsetvl::can_refine_vsetvl_p): Ditto. - (pass_vsetvl::refine_vsetvls): Ditto. - (pass_vsetvl::commit_vsetvls): Ditto. - (pass_vsetvl::propagate_avl): New function. - (pass_vsetvl::lazy_vsetvl): Adjust for new version. - * config/riscv/riscv-vsetvl.h (enum def_type): New enum. - -2023-01-27 Jakub Jelinek <jakub@redhat.com> - - PR other/108560 - * doc/extend.texi: Fix up return type of __builtin_va_arg_pack_len - from size_t to int. - -2023-01-27 Jakub Jelinek <jakub@redhat.com> - - PR ipa/106061 - * cgraph.cc (cgraph_edge::verify_corresponds_to_fndecl): Allow - redirection of calls to __builtin_trap in addition to redirection - to __builtin_unreachable. - -2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv-vsetvl.cc (before_p): Fix bug. - -2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv-vsetvl.cc (gen_vsetvl_pat): Refine function args. - (emit_vsetvl_insn): Ditto. - -2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/vector.md: Fix constraints. - -2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/vector-iterators.md: Add TARGET_MIN_VLEN > 32 predicates. - -2023-01-27 Patrick Palka <ppalka@redhat.com> - Jakub Jelinek <jakub@redhat.com> - - * tree-core.h (tree_code_type, tree_code_length): For - C++17 and later, add inline keyword, otherwise don't define - the arrays, but declare extern arrays. - * tree.cc (tree_code_type, tree_code_length): Define these - arrays for C++14 and older. - -2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv-vsetvl.h: Change it into public. - -2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv-passes.def (INSERT_PASS_BEFORE): Reorder VSETVL - pass. - -2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv-vsetvl.cc (pass_vsetvl::execute): Always call split_all_insns. - -2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/vector.md: Fix incorrect attributes. - -2023-01-27 Richard Biener <rguenther@suse.de> - - PR target/55522 - * config/loongarch/gnu-user.h (GNU_USER_TARGET_MATHFILE_SPEC): - Don't add crtfastmath.o for -shared. - -2023-01-27 Alexandre Oliva <oliva@gnu.org> - - * doc/options.texi (option, RejectNegative): Mention that - -g-started options are also implicitly negatable. - -2023-01-26 Kito Cheng <kito.cheng@sifive.com> - - * config/riscv/riscv-vector-builtins.cc (register_builtin_types): - Use get_typenode_from_name to get fixed-width integer type - nodes. - * config/riscv/riscv-vector-builtins.def: Update define with - fixed-width integer type nodes. - -2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv-vsetvl.cc (same_bb_and_before_p): Remove it. - (real_insn_and_same_bb_p): New function. - (same_bb_and_after_or_equal_p): Remove it. - (before_p): New function. - (reg_killed_by_bb_p): Ditto. - (has_vsetvl_killed_avl_p): Ditto. - (get_vl): Move location so that we can call it. - (anticipatable_occurrence_p): Fix issue of AVL=REG support. - (available_occurrence_p): Ditto. - (dominate_probability_p): Remove it. - (can_backward_propagate_p): Remove it. - (get_all_nonphi_defs): New function. - (get_all_predecessors): Ditto. - (any_insn_in_bb_p): Ditto. - (insert_vsetvl): Adjust AVL REG. - (source_equal_p): New function. - (extract_single_source): Ditto. - (avl_info::single_source_equal_p): Ditto. - (avl_info::operator==): Adjust for AVL=REG. - (vl_vtype_info::same_avl_p): Ditto. - (vector_insn_info::set_demand_info): Remove it. - (vector_insn_info::compatible_p): Adjust for AVL=REG. - (vector_insn_info::compatible_avl_p): New function. - (vector_insn_info::merge): Adjust AVL=REG. - (vector_insn_info::dump): Ditto. - (pass_vsetvl::merge_successors): Remove it. - (enum fusion_type): New enum. - (pass_vsetvl::get_backward_fusion_type): New function. - (pass_vsetvl::backward_demand_fusion): Adjust for AVL=REG. - (pass_vsetvl::forward_demand_fusion): Ditto. - (pass_vsetvl::demand_fusion): Ditto. - (pass_vsetvl::prune_expressions): Ditto. - (pass_vsetvl::compute_local_properties): Ditto. - (pass_vsetvl::cleanup_vsetvls): Ditto. - (pass_vsetvl::commit_vsetvls): Ditto. - (pass_vsetvl::init): Ditto. - * config/riscv/riscv-vsetvl.h (enum fusion_type): New enum. - (enum merge_type): New enum. - -2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv-vsetvl.cc - (vector_infos_manager::vector_infos_manager): Add probability. - (vector_infos_manager::dump): Ditto. - (pass_vsetvl::compute_probabilities): Ditto. - * config/riscv/riscv-vsetvl.h (struct vector_block_info): Ditto. - -2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv-vsetvl.cc (vector_insn_info::operator==): Remove dirty_pat. - (vector_insn_info::merge): Ditto. - (vector_insn_info::dump): Ditto. - (pass_vsetvl::merge_successors): Ditto. - (pass_vsetvl::backward_demand_fusion): Ditto. - (pass_vsetvl::forward_demand_fusion): Ditto. - (pass_vsetvl::commit_vsetvls): Ditto. - * config/riscv/riscv-vsetvl.h: Ditto. - -2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv-vsetvl.cc (add_label_notes): Rename insn to - rinsn. - -2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv-vsetvl.cc (pass_vsetvl::backward_demand_fusion): Refine codes. - -2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv-vsetvl.cc (pass_vsetvl::forward_demand_fusion): - Add pre-check for redundant flow. - -2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv-vsetvl.cc (vector_infos_manager::create_bitmap_vectors): New function. - (vector_infos_manager::free_bitmap_vectors): Ditto. - (pass_vsetvl::pre_vsetvl): Adjust codes. - * config/riscv/riscv-vsetvl.h: New function declaration. - -2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv-vsetvl.cc (can_backward_propagate_p): Fix for null iter_bb. - (vector_insn_info::set_demand_info): New function. - (pass_vsetvl::emit_local_forward_vsetvls): Adjust for refinement of Phase 3. - (pass_vsetvl::merge_successors): Ditto. - (pass_vsetvl::compute_global_backward_infos): Ditto. - (pass_vsetvl::backward_demand_fusion): Ditto. - (pass_vsetvl::forward_demand_fusion): Ditto. - (pass_vsetvl::demand_fusion): New function. - (pass_vsetvl::lazy_vsetvl): Adjust for refinement of phase 3. - * config/riscv/riscv-vsetvl.h: New function declaration. - -2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv-vsetvl.cc (vector_insn_info::operator>=): Fix available condition. - -2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv-vsetvl.cc (change_vsetvl_insn): New function. - (pass_vsetvl::compute_global_backward_infos): Simplify codes. - -2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv-vsetvl.cc (loop_basic_block_p): Adjust function. - (backward_propagate_worthwhile_p): Fix non-worthwhile. - -2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv-vsetvl.cc (change_insn): Adjust in_group in validate_change. - -2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv-vsetvl.cc (vector_infos_manager::all_same_avl_p): New function. - (pass_vsetvl::can_refine_vsetvl_p): Add AVL check. - (pass_vsetvl::commit_vsetvls): Ditto. - * config/riscv/riscv-vsetvl.h: New function declaration. - -2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/vector.md: - -2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv-vector-builtins-bases.cc (class loadstore): use - pred_store for vse. - * config/riscv/riscv-vector-builtins.cc - (function_expander::add_mem_operand): Refine function. - (function_expander::use_contiguous_load_insn): Adjust new - implementation. - (function_expander::use_contiguous_store_insn): Ditto. - * config/riscv/riscv-vector-builtins.h: Refine function. - * config/riscv/vector.md (@pred_store<mode>): New pattern. - -2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai> - - * config/riscv/riscv-vector-builtins.cc: Change to scalar pointer. - -2023-01-26 Marek Polacek <polacek@redhat.com> - - PR middle-end/108543 - * opts.cc (parse_sanitizer_options): Don't always clear SANITIZE_ADDRESS - if it was previously set. - -2023-01-26 Jakub Jelinek <jakub@redhat.com> - - PR tree-optimization/108540 - * range-op-float.cc (foperator_equal::fold_range): If both op1 and op2 - are singletons, use range_true even if op1 != op2 - when one range is [-0.0, -0.0] and another [0.0, 0.0]. Similarly, - even if intersection of the ranges is empty and one has - zero low bound and another zero high bound, use range_true_and_false - rather than range_false. - (foperator_not_equal::fold_range): If both op1 and op2 - are singletons, use range_false even if op1 != op2 - when one range is [-0.0, -0.0] and another [0.0, 0.0]. Similarly, - even if intersection of the ranges is empty and one has - zero low bound and another zero high bound, use range_true_and_false - rather than range_true. - -2023-01-26 Jakub Jelinek <jakub@redhat.com> - - * value-relation.cc (kind_string): Add const. - (rr_negate_table, rr_swap_table, rr_intersect_table, - rr_union_table, rr_transitive_table): Add static const, change - element type from relation_kind to unsigned char. - (relation_negate, relation_swap, relation_intersect, relation_union, - relation_transitive): Cast rr_*_table element to relation_kind. - (relation_to_code): Add static const. - (relation_tests): Assert VREL_LAST is smaller than UCHAR_MAX. - -2023-01-26 Richard Biener <rguenther@suse.de> - - PR tree-optimization/108547 - * gimple-predicate-analysis.cc (value_sat_pred_p): - Use widest_int. - -2023-01-26 Siddhesh Poyarekar <siddhesh@gotplt.org> - - PR tree-optimization/108522 - * tree-object-size.cc (compute_object_offset): Make EXPR - argument non-const. Call component_ref_field_offset. - -2023-01-26 Kyrylo Tkachov <kyrylo.tkachov@arm.com> - - * config/aarch64/aarch64-option-extensions.def (cssc): Specify - FEATURE_STRING field. - -2023-01-26 Gerald Pfeifer <gerald@pfeifer.com> - - * doc/sourcebuild.texi: Refer to projects as GCC and GDB. - -2023-01-25 Iain Sandoe <iain@sandoe.co.uk> - - PR modula2/102343 - PR modula2/108182 - * gcc.cc: Provide default specs for Modula-2 so that when the - language is not built-in better diagnostics are emitted for - attempts to use .mod or .m2i file extensions. - -2023-01-25 Andrea Corallo <andrea.corallo@arm.com> - - * config/arm/mve.md (mve_vqnegq_s<mode>): Fix spacing. - -2023-01-25 Andrea Corallo <andrea.corallo@arm.com> - - * config/arm/mve.md (mve_vqabsq_s<mode>): Fix spacing. - -2023-01-25 Andrea Corallo <andrea.corallo@arm.com> - - * config/arm/mve.md (mve_vnegq_f<mode>, mve_vnegq_s<mode>): - Fix spacing. - -2023-01-25 Andrea Corallo <andrea.corallo@arm.com> - - * config/arm/mve.md (@mve_vclzq_s<mode>): Fix spacing. - -2023-01-25 Andrea Corallo <andrea.corallo@arm.com> - - * config/arm/mve.md (mve_vclsq_s<mode>): Fix spacing. - -2023-01-25 Richard Biener <rguenther@suse.de> - - PR tree-optimization/108523 - * tree-ssa-sccvn.cc (visit_phi): Avoid using the exclusive - backedge value for the result when using predication to - prove equivalence. - -2023-01-25 Richard Biener <rguenther@suse.de> - - * doc/lto.texi (Command line options): Reword and update reference - to removed lto_read_all_file_options. - -2023-01-25 Richard Sandiford <richard.sandiford@arm.com> - - * config/aarch64/aarch64.md (umax<mode>3): Separate the CNT and CSSC - tests. - -2023-01-25 Gerald Pfeifer <gerald@pfeifer.com> - - * doc/contrib.texi: Add Jose E. Marchesi. - -2023-01-25 Jakub Jelinek <jakub@redhat.com> - - PR tree-optimization/108498 - * gimple-ssa-store-merging.cc (class store_operand_info): - End coment with full stop rather than comma. - (split_group): Likewise. - (merged_store_group::apply_stores): Clear string_concatenation if - start or end aren't on a byte boundary. - -2023-01-25 Siddhesh Poyarekar <siddhesh@gotplt.org> - Jakub Jelinek <jakub@redhat.com> - - PR tree-optimization/108522 - * tree-object-size.cc (compute_object_offset): Use - TREE_OPERAND(ref, 2) for COMPONENT_REF when available. - -2023-01-24 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp> - - * config/xtensa/xtensa.md: - Fix exit from loops detecting references before overwriting in the - split pattern. - -2023-01-24 Vladimir N. Makarov <vmakarov@redhat.com> - - * lra-constraints.cc (get_hard_regno): Remove final_p arg. Always - do elimination but only for hard register. - (operands_match_p, uses_hard_regs_p, process_alt_operands): Adjust - calls of get_hard_regno. - -2023-01-24 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com> - - * config/s390/s390-d.cc (s390_d_target_versions): Fix detection - of CPU version. - -2023-01-24 Andre Vieira <andre.simoesdiasvieira@arm.com> - - PR target/108177 - * config/arm/mve.md (mve_vstrbq_p_<supf><mode>, mve_vstrhq_p_fv8hf, - mve_vstrhq_p_<supf><mode>, mve_vstrwq_p_<supf>v4si): Add memory operand - as input operand. - -2023-01-24 Xianmiao Qu <cooper.qu@linux.alibaba.com> - - * config.gcc(csky-*-linux*): Define CSKY_ENABLE_MULTILIB - and only include 'csky/t-csky-linux' when enable multilib. - * config/csky/csky-linux-elf.h(SYSROOT_SUFFIX_SPEC): Don't - define it when disable multilib. - -2023-01-24 Richard Biener <rguenther@suse.de> - - PR tree-optimization/108500 - * dominance.h (calculate_dominance_info): Add parameter - to indicate fast-query compute, defaulted to true. - * dominance.cc (calculate_dominance_info): Honor - fast-query compute parameter. - * tree-cfgcleanup.cc (cleanup_tree_cfg_noloop): Do - not compute the dominator fast-query DFS numbers. - -2023-01-24 Eric Biggers <ebiggers@google.com> - - PR bootstrap/90543 - * optc-save-gen.awk: Fix copy-and-paste error. - -2023-01-24 Jakub Jelinek <jakub@redhat.com> - - PR c++/108474 - * cgraphbuild.cc: Include gimplify.h. - (record_reference): Replace VAR_DECLs with DECL_HAS_VALUE_EXPR_P with - their corresponding DECL_VALUE_EXPR expressions after unsharing. - -2023-01-24 Srinath Parvathaneni <srinath.parvathaneni@arm.com> - - PR target/108505 - * config.gcc (tm_file): Move the variable out of loop. - -2023-01-24 Lulu Cheng <chenglulu@loongson.cn> - Yang Yujie <yangyujie@loongson.cn> - - PR target/107731 - * config/loongarch/loongarch.cc (loongarch_classify_address): - Add precessint for CONST_INT. - (loongarch_print_operand_reloc): Operand modifier 'c' is supported. - (loongarch_print_operand): Increase the processing of '%c'. - * doc/extend.texi: Adds documents for LoongArch operand modifiers. - And port the public operand modifiers information to this document. - -2023-01-23 Srinath Parvathaneni <srinath.parvathaneni@arm.com> - - * doc/invoke.texi (-mbranch-protection): Update documentation. - -2023-01-23 Richard Biener <rguenther@suse.de> - - PR target/55522 - * config/sparc/freebsd.h (ENDFILE_SPEC): Don't add crtfastmath.o - for -shared. - * config/sparc/linux.h (ENDFILE_SPEC): Likewise. - * config/sparc/linux64.h (ENDFILE_SPEC): Likewise. - * config/sparc/sp-elf.h (ENDFILE_SPEC): Likewise. - * config/sparc/sp64-elf.h (ENDFILE_SPEC): Likewise. - -2023-01-23 Srinath Parvathaneni <srinath.parvathaneni@arm.com> - - * config/arm/aout.h (ra_auth_code): Add entry in enum. - * config/arm/arm.cc (emit_multi_reg_push): Add RA_AUTH_CODE register - to dwarf frame expression. - (arm_emit_multi_reg_pop): Restore RA_AUTH_CODE register. - (arm_expand_prologue): Update frame related information and reg notes - for pac/pacbit insn. - (arm_regno_class): Check for pac pseudo reigster. - (arm_dbx_register_number): Assign ra_auth_code register number in dwarf. - (arm_init_machine_status): Set pacspval_needed to zero. - (arm_debugger_regno): Check for PAC register. - (arm_unwind_emit_sequence): Print .save directive with ra_auth_code - register. - (arm_unwind_emit_set): Add entry for IP_REGNUM in switch case. - (arm_unwind_emit): Update REG_CFA_REGISTER case._ - * config/arm/arm.h (FIRST_PSEUDO_REGISTER): Modify. - (DWARF_PAC_REGNUM): Define. - (IS_PAC_REGNUM): Likewise. - (enum reg_class): Add PAC_REG entry. - (machine_function): Add pacbti_needed state to structure. - * config/arm/arm.md (RA_AUTH_CODE): Define. - -2023-01-23 Srinath Parvathaneni <srinath.parvathaneni@arm.com> - - * config.gcc ($tm_file): Update variable. - * config/arm/arm-mlib.h: Create new header file. - * config/arm/t-rmprofile (MULTI_ARCH_DIRS_RM): Rename mbranch-protection - multilib arch directory. - (MULTILIB_REUSE): Add multilib reuse rules. - (MULTILIB_MATCHES): Add multilib match rules. - -2023-01-23 Srinath Parvathaneni <srinath.parvathaneni@arm.com> - - * config/arm/arm-cpus.in (cortex-m85): Define new CPU. - * config/arm/arm-tables.opt: Regenerate. - * config/arm/arm-tune.md: Likewise. - * doc/invoke.texi (Arm Options): Document -mcpu=cortex-m85. - * (-mfix-cmse-cve-2021-35465): Likewise. - -2023-01-23 Richard Biener <rguenther@suse.de> - - PR tree-optimization/108482 - * tree-vect-generic.cc (expand_vector_operations): Fold remaining - .LOOP_DIST_ALIAS calls. - -2023-01-23 Andrea Corallo <andrea.corallo@arm.com> - - * config.gcc (arm*-*-*): Add 'aarch-bti-insert.o' object. - * config/arm/arm-protos.h: Update. - * config/arm/aarch-common-protos.h: Declare - 'aarch_bti_arch_check'. - * config/arm/arm.cc (aarch_bti_enabled) Update. - (aarch_bti_j_insn_p, aarch_pac_insn_p, aarch_gen_bti_c) - (aarch_gen_bti_j, aarch_bti_arch_check): New functions. - * config/arm/arm.md (bti_nop): New insn. - * config/arm/t-arm (PASSES_EXTRA): Add 'arm-passes.def'. - (aarch-bti-insert.o): New target. - * config/arm/unspecs.md (VUNSPEC_BTI_NOP): New unspec. - * config/arm/aarch-bti-insert.cc (rest_of_insert_bti): Verify arch - compatibility. - (gate): Make use of 'aarch_bti_arch_check'. - * config/arm/arm-passes.def: New file. - * config/aarch64/aarch64.cc (aarch_bti_arch_check): New function. - -2023-01-23 Andrea Corallo <andrea.corallo@arm.com> - - * config.gcc (aarch64*-*-*): Rename 'aarch64-bti-insert.o' into - 'aarch-bti-insert.o'. - * config/aarch64/aarch64-protos.h: Remove 'aarch64_bti_enabled' - proto. - * config/aarch64/aarch64.cc (aarch_bti_enabled): Rename. - (aarch_bti_j_insn_p, aarch_pac_insn_p): New functions. - (aarch64_output_mi_thunk) - (aarch64_print_patchable_function_entry) - (aarch64_file_end_indicate_exec_stack): Update renamed function - calls to renamed functions. - * config/aarch64/aarch64-c.cc (aarch64_update_cpp_builtins): Likewise. - * config/aarch64/t-aarch64 (aarch-bti-insert.o): Update - target. - * config/aarch64/aarch64-bti-insert.cc: Delete. - * config/arm/aarch-bti-insert.cc: New file including and - generalizing code from aarch64-bti-insert.cc. - * config/arm/aarch-common-protos.h: Update. - -2023-01-23 Andrea Corallo <andrea.corallo@arm.com> - - * config/arm/arm.h (arm_arch8m_main): Declare it. - * config/arm/arm-protos.h (arm_current_function_pac_enabled_p): - Declare it. - * config/arm/arm.cc (arm_arch8m_main): Define it. - (arm_option_reconfigure_globals): Set arm_arch8m_main. - (arm_compute_frame_layout, arm_expand_prologue) - (thumb2_expand_return, arm_expand_epilogue) - (arm_conditional_register_usage): Update for pac codegen. - (arm_current_function_pac_enabled_p): New function. - (aarch_bti_enabled) New function. - (use_return_insn): Return zero when pac is enabled. - * config/arm/arm.md (pac_ip_lr_sp, pacbti_ip_lr_sp, aut_ip_lr_sp): - Add new patterns. - * config/arm/unspecs.md (UNSPEC_PAC_NOP) - (VUNSPEC_PACBTI_NOP, VUNSPEC_AUT_NOP): Add unspecs. - -2023-01-23 Andrea Corallo <andrea.corallo@arm.com> - - * config/arm/t-rmprofile: Add multilib rules for march +pacbti and - mbranch-protection. - -2023-01-23 Andrea Corallo <andrea.corallo@arm.com> - Tejas Belagod <tbelagod@arm.com> - - * config/arm/arm.cc (arm_file_start): Emit EABI attributes for - Tag_PAC_extension, Tag_BTI_extension, TAG_BTI_use, TAG_PACRET_use. - -2023-01-23 Andrea Corallo <andrea.corallo@arm.com> - Tejas Belagod <tbelagod@arm.com> - Srinath Parvathaneni <srinath.parvathaneni@arm.com> - - * ginclude/unwind-arm-common.h (_Unwind_VRS_RegClass): Introduce - new pseudo register class _UVRSC_PAC. - -2023-01-23 Andrea Corallo <andrea.corallo@arm.com> - Tejas Belagod <tbelagod@arm.com> - - * config/arm/arm-c.cc (arm_cpu_builtins): Define - __ARM_FEATURE_BTI_DEFAULT, __ARM_FEATURE_PAC_DEFAULT, - __ARM_FEATURE_PAUTH and __ARM_FEATURE_BTI. - -2023-01-23 Andrea Corallo <andrea.corallo@arm.com> - Tejas Belagod <tbelagod@arm.com> - - * doc/sourcebuild.texi: Document arm_pacbti_hw. - -2023-01-23 Andrea Corallo <andrea.corallo@arm.com> - Tejas Belagod <tbelagod@arm.com> - Richard Earnshaw <Richard.Earnshaw@arm.com> - - * config/arm/arm.cc (arm_configure_build_target): Parse and validate - -mbranch-protection option and initialize appropriate data structures. - * config/arm/arm.opt (-mbranch-protection): New option. - * doc/invoke.texi (Arm Options): Document it. - -2023-01-23 Andrea Corallo <andrea.corallo@arm.com> - Tejas Belagod <tbelagod@arm.com> - - * config/arm/arm.h (TARGET_HAVE_PACBTI): New macro. - * config/arm/arm-cpus.in (pacbti): New feature. - * doc/invoke.texi (Arm Options): Document it. - -2023-01-23 Andrea Corallo <andrea.corallo@arm.com> - Tejas Belagod <tbelagod@arm.com> - - * common/config/aarch64/aarch64-common.cc: Include aarch-common.h. - (all_architectures): Fix comment. - (aarch64_parse_extension): Rename return type, enum value names. - * config/aarch64/aarch64-c.cc (aarch64_update_cpp_builtins): Rename - factored out aarch_ra_sign_scope and aarch_ra_sign_key variables. - Also rename corresponding enum values. - * config/aarch64/aarch64-opts.h (aarch64_function_type): Factor - out aarch64_function_type and move it to common code as - aarch_function_type in aarch-common.h. - * config/aarch64/aarch64-protos.h: Include common types header, - move out types aarch64_parse_opt_result and aarch64_key_type to - aarch-common.h - * config/aarch64/aarch64.cc: Move mbranch-protection parsing types - and functions out into aarch-common.h and aarch-common.cc. Fix up - all the name changes resulting from the move. - * config/aarch64/aarch64.md: Fix up aarch64_ra_sign_key type name change - and enum value. - * config/aarch64/aarch64.opt: Include aarch-common.h to import - type move. Fix up name changes from factoring out common code and - data. - * config/arm/aarch-common-protos.h: Export factored out routines to both - backends. - * config/arm/aarch-common.cc: Include newly factored out types. - Move all mbranch-protection code and data structures from - aarch64.cc. - * config/arm/aarch-common.h: New header that declares types shared - between aarch32 and aarch64 backends. - * config/arm/arm-protos.h: Declare types and variables that are - made common to aarch64 and aarch32 backends - aarch_ra_sign_key, - aarch_ra_sign_scope and aarch_enable_bti. - * config/arm/arm.opt (config/arm/aarch-common.h): Include header. - (aarch_ra_sign_scope, aarch_enable_bti): Declare variable. - * config/arm/arm.cc: Add missing includes. - -2023-01-23 Tobias Burnus <tobias@codesourcery.com> - - * doc/install.texi (amdgcn, nvptx): Require newlib 4.3.0. - -2023-01-23 Richard Biener <rguenther@suse.de> - - PR tree-optimization/108449 - * cgraphunit.cc (check_global_declaration): Do not turn - undefined statics into externs. - -2023-01-22 Dimitar Dimitrov <dimitar@dinux.eu> - - * config/pru/pru.h (CLZ_DEFINED_VALUE_AT_ZERO): Fix value for QI - and HI input modes. - * config/pru/pru.md (clz): Fix generated code for QI and HI - input modes. - -2023-01-22 Cupertino Miranda <cupertino.miranda@oracle.com> - - * config/v850/v850.cc (v850_select_section): Put const volatile - objects into read-only sections. - -2023-01-20 Tejas Belagod <tejas.belagod@arm.com> - - * config/aarch64/arm_neon.h (vmull_p64, vmull_high_p64, vaeseq_u8, - vaesdq_u8, vaesmcq_u8, vaesimcq_u8): Gate under "nothing+aes". - (vsha1*_u32, vsha256*_u32): Gate under "nothing+sha2". - -2023-01-20 Jakub Jelinek <jakub@redhat.com> - - PR tree-optimization/108457 - * tree-ssa-loop-niter.cc (build_cltz_expr): Use - SCALAR_INT_TYPE_MODE (utype) directly as C[LT]Z_DEFINED_VALUE_AT_ZERO - argument instead of a temporary. Formatting fixes. - -2023-01-19 Jakub Jelinek <jakub@redhat.com> - - PR tree-optimization/108447 - * value-relation.cc (rr_union_table): Fix VREL_UNDEFINED row order. - (relation_tests): Add self-tests for relation_{intersect,union} - commutativity. - * selftest.h (relation_tests): Declare. - * function-tests.cc (test_ranges): Call it. - -2023-01-19 H.J. Lu <hjl.tools@gmail.com> - - PR target/108436 - * config/i386/i386-expand.cc (ix86_expand_builtin): Check - invalid third argument to __builtin_ia32_prefetch. - -2023-01-19 Jakub Jelinek <jakub@redhat.com> - - PR middle-end/108459 - * omp-expand.cc (expand_omp_for_init_counts): Use fold_build1 rather - than fold_unary for NEGATE_EXPR. - -2023-01-19 Christophe Lyon <christophe.lyon@arm.com> - - PR target/108411 - * config/aarch64/aarch64.cc (aarch64_layout_arg): Improve - comment. Move assert about alignment a bit later. - -2023-01-19 Jakub Jelinek <jakub@redhat.com> - - PR tree-optimization/108440 - * tree-ssa-forwprop.cc: Include gimple-range.h. - (simplify_rotate): For the forms with T2 wider than T and shift counts of - Y and B - Y add & (B - 1) masking for the rotate count if Y could be equal - to B. For the forms with T2 wider than T and shift counts of - Y and (-Y) & (B - 1), don't punt if range could be [B, B2], but only if - range doesn't guarantee Y < B or Y = N * B. If range doesn't guarantee - Y < B, also add & (B - 1) masking for the rotate count. Use lazily created - pass specific ranger instead of get_global_range_query. - (pass_forwprop::execute): Disable that ranger at the end of pass if it has - been created. - -2023-01-19 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org> - - * config/aarch64/aarch64-simd.md (aarch64_simd_vec_set<mode>): Use - exact_log2 (INTVAL (operands[2])) >= 0 as condition for gating - the pattern. - (aarch64_simd_vec_copy_lane<mode>): Likewise. - (aarch64_simd_vec_copy_lane_<vswap_width_name><mode>): Likewise. - -2023-01-19 Alexandre Oliva <oliva@adacore.com> - - PR debug/106746 - * sched-deps.cc (sched_analyze_2): Skip cselib address lookup - within debug insns. - -2023-01-18 Martin Jambor <mjambor@suse.cz> - - PR ipa/107944 - * cgraph.cc (cgraph_node::remove): Check whether nodes up the - lcone_of chain also do not need the body. - -2023-01-18 Richard Biener <rguenther@suse.de> - - Revert: - 2022-12-16 Richard Biener <rguenther@suse.de> - - PR middle-end/108086 - * tree-inline.cc (remap_ssa_name): Do not unshare the - result from the decl_map. - -2023-01-18 Murray Steele <murray.steele@arm.com> - - PR target/108442 - * config/arm/arm_mve.h (__arm_vst1q_p_u8): Use prefixed intrinsic - function. - (__arm_vst1q_p_s8): Likewise. - (__arm_vld1q_z_u8): Likewise. - (__arm_vld1q_z_s8): Likewise. - (__arm_vst1q_p_u16): Likewise. - (__arm_vst1q_p_s16): Likewise. - (__arm_vld1q_z_u16): Likewise. - (__arm_vld1q_z_s16): Likewise. - (__arm_vst1q_p_u32): Likewise. - (__arm_vst1q_p_s32): Likewise. - (__arm_vld1q_z_u32): Likewise. - (__arm_vld1q_z_s32): Likewise. - (__arm_vld1q_z_f16): Likewise. - (__arm_vst1q_p_f16): Likewise. - (__arm_vld1q_z_f32): Likewise. - (__arm_vst1q_p_f32): Likewise. - -2023-01-18 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp> - - * config/xtensa/xtensa.md (xorsi3_internal): - Rename from the original of "xorsi3". - (xorsi3): New expansion pattern that emits addition rather than - bitwise-XOR when the second source is a constant of -2147483648 - if TARGET_DENSITY. - -2023-01-18 Kewen Lin <linkw@linux.ibm.com> - Andrew Pinski <apinski@marvell.com> - - PR target/108396 - * config/rs6000/rs6000-overload.def (VEC_VSUBCUQ): Fix typo - vec_vsubcuqP with vec_vsubcuq. - -2023-01-18 Kewen Lin <linkw@linux.ibm.com> - - PR target/108348 - * config/rs6000/rs6000.cc (rs6000_opaque_type_invalid_use_p): Add the - support for invalid uses of MMA opaque type in function arguments. - -2023-01-18 liuhongt <hongtao.liu@intel.com> - - PR target/55522 - * config/i386/cygwin.h (ENDFILE_SPEC): Link crtfastmath.o - whenever -mdaz-ftz is specified. Don't link crtfastmath.o when - -share or -mno-daz-ftz is specified. - * config/i386/darwin.h (ENDFILE_SPEC): Ditto. - * config/i386/mingw32.h (ENDFILE_SPEC): Ditto. - -2023-01-17 Jose E. Marchesi <jose.marchesi@oracle.com> - - * config/bpf/bpf.cc (bpf_option_override): Disable - -fstack-protector. - -2023-01-17 Jakub Jelinek <jakub@redhat.com> - - PR tree-optimization/106523 - * tree-ssa-forwprop.cc (simplify_rotate): For the - patterns with (-Y) & (B - 1) in one operand's shift - count and Y in another, if T2 has wider precision than T, - punt if Y could have a value in [B, B2 - 1] range. - -2023-01-16 H.J. Lu <hjl.tools@gmail.com> - - PR target/105980 - * config/i386/i386.cc (x86_output_mi_thunk): Disable - -mforce-indirect-call for PIC in 32-bit mode. - -2023-01-16 Jan Hubicka <hubicka@ucw.cz> - - PR ipa/106077 - * ipa-modref.cc (modref_access_analysis::analyze): Use - find_always_executed_bbs. - * ipa-sra.cc (process_scan_results): Likewise. - * ipa-utils.cc (stmt_may_terminate_function_p): New function. - (find_always_executed_bbs): New function. - * ipa-utils.h (stmt_may_terminate_function_p): Declare. - (find_always_executed_bbs): Declare. - -2023-01-16 Jan Hubicka <jh@suse.cz> - - * config/i386/i386.cc (ix86_vectorize_builtin_scatter): Guard scatter - by TARGET_USE_SCATTER. - * config/i386/i386.h (TARGET_USE_SCATTER_2PARTS, - TARGET_USE_SCATTER_4PARTS, TARGET_USE_SCATTER): New macros. - * config/i386/x86-tune.def (TARGET_USE_SCATTER_2PARTS, - TARGET_USE_SCATTER_4PARTS, TARGET_USE_SCATTER): New tunes. - (X86_TUNE_AVOID_256FMA_CHAINS, X86_TUNE_AVOID_512FMA_CHAINS): Disable - for znver4. (X86_TUNE_USE_GATHER): Disable for zen4. - -2023-01-16 Richard Biener <rguenther@suse.de> - - PR target/55522 - * config/sol2.h (ENDFILE_SPEC): Don't add crtfastmath.o for -shared. - -2023-01-16 Stam Markianos-Wright <stam.markianos-wright@arm.com> - - PR target/96795 - PR target/107515 - * config/arm/arm_mve.h (__ARM_mve_coerce2): Split types. - (__ARM_mve_coerce3): Likewise. - -2023-01-16 Andrew Carlotti <andrew.carlotti@arm.com> - - * tree-ssa-loop-niter.cc (build_popcount_expr): Add IFN support. - -2023-01-16 Andrew Carlotti <andrew.carlotti@arm.com> - - * tree-ssa-loop-niter.cc (number_of_iterations_cltz): New. - (number_of_iterations_bitcount): Add call to the above. - (number_of_iterations_exit_assumptions): Add EQ_EXPR case for - c[lt]z idiom recognition. - -2023-01-16 Andrew Carlotti <andrew.carlotti@arm.com> - - * doc/sourcebuild.texi: Add missing target attributes. - -2023-01-16 Andrew Carlotti <andrew.carlotti@arm.com> - - PR tree-optimization/94793 - * tree-scalar-evolution.cc (expression_expensive_p): Add checks - for c[lt]z optabs. - * tree-ssa-loop-niter.cc (build_cltz_expr): New. - (number_of_iterations_cltz_complement): New. - (number_of_iterations_bitcount): Add call to the above. - -2023-01-16 Jonathan Wakely <jwakely@redhat.com> - - * doc/extend.texi (Common Function Attributes): Fix grammar. - -2023-01-16 Jakub Jelinek <jakub@redhat.com> - - PR other/108413 - * config/riscv/riscv-vsetvl.h: Add space in between Copyright and (C). - * config/riscv/riscv-vsetvl.cc: Likewise. - -2023-01-16 Jakub Jelinek <jakub@redhat.com> - - PR c++/105593 - * config/i386/xmmintrin.h (_mm_undefined_ps): Temporarily - disable -Winit-self using pragma GCC diagnostic ignored. - * config/i386/emmintrin.h (_mm_undefined_pd, _mm_undefined_si128): - Likewise. - * config/i386/avxintrin.h (_mm256_undefined_pd, _mm256_undefined_ps, - _mm256_undefined_si256): Likewise. - * config/i386/avx512fintrin.h (_mm512_undefined_pd, - _mm512_undefined_ps, _mm512_undefined_epi32): Likewise. - * config/i386/avx512fp16intrin.h (_mm_undefined_ph, - _mm256_undefined_ph, _mm512_undefined_ph): Likewise. - -2023-01-16 Kewen Lin <linkw@linux.ibm.com> - - PR target/108272 - * config/rs6000/rs6000.cc (rs6000_opaque_type_invalid_use_p): Add the - support for invalid uses in inline asm, factor out the checking and - erroring to lambda function check_and_error_invalid_use. - -2023-01-15 Aldy Hernandez <aldyh@redhat.com> - - PR tree-optimization/107608 - * range-op-float.cc (range_operator_float::fold_range): Avoid - folding into INF when flag_trapping_math. - * value-range.h (frange::known_isinf): Return false for possible NANs. - -2023-01-15 Xianmiao Qu <cooper.qu@linux.alibaba.com> - - * config.gcc (csky-*-*): Support --with-float=softfp. - -2023-01-14 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp> - - * config/xtensa/xtensa-protos.h (order_regs_for_local_alloc): - Rename to xtensa_adjust_reg_alloc_order. - * config/xtensa/xtensa.cc (xtensa_adjust_reg_alloc_order): - Ditto. And also remove code to reorder register numbers for - leaf functions, rename the tables, and adjust the allocation - order for the call0 ABI to use register A0 more. - (xtensa_leaf_regs): Remove. - * config/xtensa/xtensa.h (REG_ALLOC_ORDER): Cosmetics. - (order_regs_for_local_alloc): Rename as the above. - (LEAF_REGISTERS, LEAF_REG_REMAP, leaf_function): Remove. - -2023-01-14 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org> - - * config/aarch64/aarch64-sve.md (aarch64_vec_duplicate_vq<mode>_le): - Change to define_insn_and_split to fold ldr+dup to ld1rq. - * config/aarch64/predicates.md (aarch64_sve_dup_ld1rq_operand): New. - -2023-01-14 Alexandre Oliva <oliva@adacore.com> - - * hash-table.h (is_deleted): Precheck !is_empty. - (mark_deleted): Postcheck !is_empty. - (copy constructor): Test is_empty before is_deleted. - -2023-01-14 Alexandre Oliva <oliva@adacore.com> - - PR target/40457 - * config/arm/arm.md (movmisaligndi): Prefer aligned SImode - moves. - -2023-01-13 Eric Botcazou <ebotcazou@adacore.com> - - PR rtl-optimization/108274 - * function.cc (thread_prologue_and_epilogue_insns): Also update the - DF information for calls in a few more cases. - -2023-01-13 John David Anglin <danglin@gcc.gnu.org> - - * config/pa/pa-linux.h (TARGET_SYNC_LIBCALL): Delete define. - * config/pa/pa.cc (pa_init_libfuncs): Use MAX_SYNC_LIBFUNC_SIZE - define. - * config/pa/pa.h (TARGET_SYNC_LIBCALLS): Use flag_sync_libcalls. - (MAX_SYNC_LIBFUNC_SIZE): Define. - (TARGET_CPU_CPP_BUILTINS): Define __SOFTFP__ when soft float is - enabled. - * config/pa/pa.md (atomic_storeqi): Emit __atomic_exchange_1 - libcall when sync libcalls are disabled. - (atomic_storehi, atomic_storesi, atomic_storedi): Likewise. - (atomic_loaddi): Emit __atomic_load_8 libcall when sync libcalls - are disabled on 32-bit target. - * config/pa/pa.opt (matomic-libcalls): New option. - * doc/invoke.texi (HPPA Options): Update. - -2023-01-13 Alexander Monakov <amonakov@ispras.ru> - - PR rtl-optimization/108117 - PR rtl-optimization/108132 - * sched-deps.cc (deps_analyze_insn): Do not schedule across - calls before reload. - -2023-01-13 Srinath Parvathaneni <srinath.parvathaneni@arm.com> - - * common/config/arm/arm-common.cc (arm_canon_arch_option_1): Ignore cde - options for -mlibarch. - * config/arm/arm-cpus.in (begin cpu cortex-m55): Add cde options. - * doc/invoke.texi (CDE): Document options for Cortex-M55 CPU. - -2023-01-13 Qing Zhao <qing.zhao@oracle.com> - - * attribs.cc (strict_flex_array_level_of): Move this function to ... - * attribs.h (strict_flex_array_level_of): Remove the declaration. - * gimple-array-bounds.cc (array_bounds_checker::check_array_ref): - replace the referece to strict_flex_array_level_of with - DECL_NOT_FLEXARRAY. - * tree.cc (component_ref_size): Likewise. - -2023-01-13 Richard Biener <rguenther@suse.de> - - PR target/55522 - * config/arm/linux-eabi.h (ENDFILE_SPEC): Don't add - crtfastmath.o for -shared. - * config/arm/unknown-elf.h (STARTFILE_SPEC): Likewise. - -2023-01-13 Richard Biener <rguenther@suse.de> - - PR target/55522 - * config/aarch64/aarch64-elf-raw.h (ENDFILE_SPEC): Don't add - crtfastmath.o for -shared. - * config/aarch64/aarch64-freebsd.h (GNU_USER_TARGET_MATHFILE_SPEC): - Likewise. - * config/aarch64/aarch64-linux.h (GNU_USER_TARGET_MATHFILE_SPEC): - Likewise. - -2023-01-13 Richard Sandiford <richard.sandiford@arm.com> - - * config/aarch64/aarch64.cc (aarch64_dwarf_frame_reg_mode): New - function. - (TARGET_DWARF_FRAME_REG_MODE): Define. - -2023-01-13 Richard Biener <rguenther@suse.de> - - PR target/107209 - * config/aarch64/aarch64.cc (aarch64_gimple_fold_builtin): Don't - update EH info on the fly. - -2023-01-13 Richard Biener <rguenther@suse.de> - - PR tree-optimization/108387 - * tree-ssa-sccvn.cc (visit_nary_op): Check for SSA_NAME - value before inserting expression into the tables. - -2023-01-12 Andrew Pinski <apinski@marvell.com> - Roger Sayle <roger@nextmovesoftware.com> - - PR tree-optimization/92342 - * match.pd ((m1 CMP m2) * d -> (m1 CMP m2) ? d : 0): - Use tcc_comparison and :c for the multiply. - (b & -(a CMP c) -> (a CMP c)?b:0): New pattern. - -2023-01-12 Christophe Lyon <christophe.lyon@arm.com> - Richard Sandiford <richard.sandiford@arm.com> - - PR target/105549 - * config/aarch64/aarch64.cc (aarch64_function_arg_alignment): - Check DECL_PACKED for bitfield. - (aarch64_layout_arg): Warn when parameter passing ABI changes. - (aarch64_function_arg_boundary): Do not warn here. - (aarch64_gimplify_va_arg_expr): Warn when parameter passing ABI - changes. - -2023-01-12 Christophe Lyon <christophe.lyon@arm.com> - Richard Sandiford <richard.sandiford@arm.com> - - * config/aarch64/aarch64.cc (aarch64_function_arg_alignment): Fix - comment. - (aarch64_layout_arg): Factorize warning conditions. - (aarch64_function_arg_boundary): Fix typo. - * function.cc (currently_expanding_function_start): New variable. - (expand_function_start): Handle - currently_expanding_function_start. - * function.h (currently_expanding_function_start): Declare. - -2023-01-12 Richard Biener <rguenther@suse.de> - - PR tree-optimization/99412 - * tree-ssa-reassoc.cc (is_phi_for_stmt): Remove. - (swap_ops_for_binary_stmt): Remove reduction handling. - (rewrite_expr_tree_parallel): Adjust. - (reassociate_bb): Likewise. - * tree-parloops.cc (build_new_reduction): Handle MINUS_EXPR. - -2023-01-12 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp> - - * config/xtensa/xtensa.md (ctzsi2, ffssi2): - Rearrange the emitting codes. - -2023-01-12 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp> - - * config/xtensa/xtensa.md (*btrue): - Correct value of the attribute "length" that depends on - TARGET_DENSITY and operands, and add '?' character to the register - constraint of the compared operand. - -2023-01-12 Alexandre Oliva <oliva@adacore.com> - - * hash-table.h (expand): Check elements and deleted counts. - (verify): Likewise. - -2023-01-11 Roger Sayle <roger@nextmovesoftware.com> - - PR tree-optimization/71343 - * tree-ssa-sccvn.cc (visit_nary_op) <case LSHIFT_EXPR>: Make - the value number of the expression X << C the same as the value - number for the multiplication X * (1<<C). - -2023-01-11 David Faust <david.faust@oracle.com> - - PR target/108293 - * config/bpf/bpf.cc (bpf_print_operand): Correct handling for - floating point modes. - -2023-01-11 Eric Botcazou <ebotcazou@adacore.com> - - PR tree-optimization/108199 - * tree-sra.cc (sra_modify_expr): Deal with reverse storage order - for bit-field references. - -2023-01-11 Kewen Lin <linkw@linux.ibm.com> - - * config/rs6000/rs6000.cc (rs6000_option_override_internal): Make - OPTION_MASK_P10_FUSION implicit setting honour Power10 tuning setting. - * config/rs6000/rs6000-cpus.def (ISA_3_1_MASKS_SERVER): Remove - OPTION_MASK_P10_FUSION. - -2023-01-11 Richard Biener <rguenther@suse.de> - - PR tree-optimization/107767 - * tree-cfgcleanup.cc (phi_alternatives_equal): Export. - * tree-cfgcleanup.h (phi_alternatives_equal): Declare. - * tree-switch-conversion.cc (switch_conversion::collect): - Count unique non-default targets accounting for later - merging opportunities. - -2023-01-11 Martin Liska <mliska@suse.cz> - - PR middle-end/107976 - * params.opt: Limit JT params. - * stmt.cc (emit_case_dispatch_table): Use auto_vec. - -2023-01-11 Richard Biener <rguenther@suse.de> - - PR tree-optimization/108352 - * tree-ssa-threadbackward.cc - (back_threader_profitability::profitable_path_p): Adjust - heuristic that allows non-multi-way branch threads creating - irreducible loops. - * doc/invoke.texi (--param fsm-scale-path-blocks): Remove. - (--param fsm-scale-path-stmts): Adjust. - * params.opt (--param=fsm-scale-path-blocks=): Remove. - (-param=fsm-scale-path-stmts=): Adjust description. - -2023-01-11 Richard Biener <rguenther@suse.de> - - PR tree-optimization/108353 - * tree-ssa-propagate.cc (cfg_blocks_back, ssa_edge_worklist_back): - Remove. - (add_ssa_edge): Simplify. - (add_control_edge): Likewise. - (ssa_prop_init): Likewise. - (ssa_prop_fini): Likewise. - (ssa_propagation_engine::ssa_propagate): Likewise. - -2023-01-11 Andreas Krebbel <krebbel@linux.ibm.com> - - * config/s390/s390.md (*not<mode>): New pattern. - -2023-01-11 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp> - - * config/xtensa/xtensa.cc (xtensa_insn_cost): - Let insn cost for size be obtained by applying COSTS_N_INSNS() - to instruction length and then dividing by 3. - -2023-01-10 Richard Biener <rguenther@suse.de> - - PR tree-optimization/106293 - * tree-ssa-dse.cc (dse_classify_store): Use a worklist to - process degenerate PHI defs. - -2023-01-10 Roger Sayle <roger@nextmovesoftware.com> - - PR rtl-optimization/106421 - * cprop.cc (bypass_block): Check that DEST is local to this - function (non-NULL) before calling find_edge. - -2023-01-10 Martin Jambor <mjambor@suse.cz> - - PR ipa/108110 - * ipa-param-manipulation.h (ipa_param_body_adjustments): New members - sort_replacements, lookup_first_base_replacement and - m_sorted_replacements_p. - * ipa-param-manipulation.cc: Define INCLUDE_ALGORITHM. - (ipa_param_body_adjustments::register_replacement): Set - m_sorted_replacements_p to false. - (compare_param_body_replacement): New function. - (ipa_param_body_adjustments::sort_replacements): Likewise. - (ipa_param_body_adjustments::common_initialization): Call - sort_replacements. - (ipa_param_body_adjustments::ipa_param_body_adjustments): Initialize - m_sorted_replacements_p. - (ipa_param_body_adjustments::lookup_replacement_1): Rework to use - std::lower_bound. - (ipa_param_body_adjustments::lookup_first_base_replacement): New - function. - (ipa_param_body_adjustments::modify_call_stmt): Use - lookup_first_base_replacement. - * omp-simd-clone.cc (ipa_simd_modify_function_body): Call - adjustments->sort_replacements. - -2023-01-10 Richard Biener <rguenther@suse.de> - - PR tree-optimization/108314 - * tree-vect-stmts.cc (vectorizable_condition): Do not - perform BIT_NOT_EXPR optimization for EXTRACT_LAST_REDUCTION. - -2023-01-10 Xianmiao Qu <cooper.qu@linux.alibaba.com> - - * config/csky/csky-linux-elf.h (SYSROOT_SUFFIX_SPEC): New. - -2023-01-10 Xianmiao Qu <cooper.qu@linux.alibaba.com> - - * config/csky/csky.h (MULTILIB_DEFAULTS): Fix float abi option. - -2023-01-10 Xianmiao Qu <cooper.qu@linux.alibaba.com> - - * config/csky/csky.cc (csky_cpu_cpp_builtins): Add builtin - defines for soft float abi. - -2023-01-10 Xianmiao Qu <cooper.qu@linux.alibaba.com> - - * config/csky/csky.md (smart_bseti): Change condition to CSKY_ISA_FEATURE (E1). - (smart_bclri): Likewise. - (fast_bseti): Change condition to CSKY_ISA_FEATURE (E2). - (fast_bclri): Likewise. - (fast_cmpnesi_i): Likewise. - (*fast_cmpltsi_i): Likewise. - (*fast_cmpgeusi_i): Likewise. - -2023-01-10 Xianmiao Qu <cooper.qu@linux.alibaba.com> - - * config/csky/csky_insn_fpuv3.md (l<frm_pattern><fixsuop><mode>si2): Test - flag_fp_int_builtin_inexact || !flag_trapping_math. - (<frm_pattern><mode>2): Likewise. - -2023-01-10 Andreas Krebbel <krebbel@linux.ibm.com> - - * config/s390/s390.cc (s390_register_info): Check call_used_regs - instead of hard-coding the register numbers for call saved - registers. - (s390_optimize_register_info): Likewise. - -2023-01-09 Eric Botcazou <ebotcazou@adacore.com> - - * doc/gm2.texi (Overview): Fix @node markers. - (Using): Likewise. Remove subsections that were moved to Overview - from the menu and move others around. - -2023-01-09 Richard Biener <rguenther@suse.de> - - PR middle-end/108209 - * genmatch.cc (commutative_op): Fix return value for - user-id with non-commutative first replacement. - -2023-01-09 Jakub Jelinek <jakub@redhat.com> - - PR target/107453 - * calls.cc (expand_call): For calls with - TYPE_NO_NAMED_ARGS_STDARG_P (funtype) use zero for n_named_args. - Formatting fix. - -2023-01-09 Richard Biener <rguenther@suse.de> - - PR middle-end/69482 - * cfgexpand.cc (discover_nonconstant_array_refs_r): Volatile - qualified accesses also force objects to memory. - -2023-01-09 Martin Liska <mliska@suse.cz> - - PR lto/108330 - * lto-cgraph.cc (compute_ltrans_boundary): Do not insert - NULL (deleleted value) to a hash_set. - -2023-01-08 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp> - - * config/xtensa/xtensa.md (*splice_bits): - New insn_and_split pattern. - -2023-01-07 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp> - - * config/xtensa/xtensa.cc - (xtensa_split_imm_two_addends, xtensa_emit_add_imm): - New helper functions. - (xtensa_set_return_address, xtensa_output_mi_thunk): - Change to use the helper function. - (xtensa_emit_adjust_stack_ptr): Ditto. - And also change to try reusing the content of scratch register - A9 if the register is not modified in the function body. - -2023-01-07 LIU Hao <lh_mouse@126.com> - - PR middle-end/108300 - * config/xtensa/xtensa-dynconfig.c: Define `WIN32_LEAN_AND_MEAN` - before <windows.h>. - * diagnostic-color.cc: Likewise. - * plugin.cc: Likewise. - * prefix.cc: Likewise. - -2023-01-06 Joseph Myers <joseph@codesourcery.com> - - * doc/extend.texi (__builtin_tgmath): Do not restate standard rule - for handling real integer types. - -2023-01-06 Tamar Christina <tamar.christina@arm.com> - - Revert: - 2022-12-12 Tamar Christina <tamar.christina@arm.com> - - * config/aarch64/aarch64-simd.md (*aarch64_simd_movv2hf): New. - (mov<mode>, movmisalign<mode>, aarch64_dup_lane<mode>, - aarch64_store_lane0<mode>, aarch64_simd_vec_set<mode>, - @aarch64_simd_vec_copy_lane<mode>, vec_set<mode>, - reduc_<optab>_scal_<mode>, reduc_<fmaxmin>_scal_<mode>, - aarch64_reduc_<optab>_internal<mode>, aarch64_get_lane<mode>, - vec_init<mode><Vel>, vec_extract<mode><Vel>): Support V2HF. - (aarch64_simd_dupv2hf): New. - * config/aarch64/aarch64.cc (aarch64_classify_vector_mode): - Add E_V2HFmode. - * config/aarch64/iterators.md (VHSDF_P): New. - (V2F, VMOVE, nunits, Vtype, Vmtype, Vetype, stype, VEL, - Vel, q, vp): Add V2HF. - * config/arm/types.md (neon_fp_reduc_add_h): New. - -2023-01-06 Martin Liska <mliska@suse.cz> - - PR middle-end/107966 - * doc/options.texi: Fix Var documentation in internal manual. - -2023-01-05 Roger Sayle <roger@nextmovesoftware.com> - - Revert: - 2023-01-03 Roger Sayle <roger@nextmovesoftware.com> - - * config/i386/i386-expand.cc (ix86_expand_int_movcc): Rewrite - RTL expansion to allow condition (mask) to be shared/reused, - by avoiding overwriting pseudos and adding REG_EQUAL notes. - -2023-01-05 Iain Sandoe <iain@sandoe.co.uk> - - * common.opt: Add -static-libgm2. - * config/darwin.h (LINK_SPEC): Handle static-libgm2. - * doc/gm2.texi: Document static-libgm2. - * gcc.cc (driver_handle_option): Allow static-libgm2. - -2023-01-05 Tejas Joshi <TejasSanjay.Joshi@amd.com> - - * common/config/i386/i386-common.cc (processor_alias_table): - Use CPU_ZNVER4 for znver4. - * config/i386/i386.md: Add znver4.md. - * config/i386/znver4.md: New. - -2023-01-04 Jakub Jelinek <jakub@redhat.com> - - PR tree-optimization/108253 - * tree-vrp.cc (maybe_set_nonzero_bits): Handle var with pointer - types. - -2023-01-04 Jakub Jelinek <jakub@redhat.com> - - PR middle-end/108237 - * generic-match-head.cc: Include tree-pass.h. - (canonicalize_math_p, optimize_vectors_before_lowering_p): Define - to false if cfun and cfun->curr_properties has PROP_gimple_opt_math - resp. PROP_gimple_lvec property set. - -2023-01-04 Jakub Jelinek <jakub@redhat.com> - - PR sanitizer/108256 - * convert.cc (do_narrow): Punt for MULT_EXPR if original - type doesn't wrap around and -fsanitize=signed-integer-overflow - is on. - * fold-const.cc (fold_unary_loc) <CASE_CONVERT>: Likewise. - -2023-01-04 Hu, Lin1 <lin1.hu@intel.com> - - * common/config/i386/cpuinfo.h (get_intel_cpu): Handle Emeraldrapids. - * common/config/i386/i386-common.cc: Add Emeraldrapids. - -2023-01-04 Hu, Lin1 <lin1.hu@intel.com> - - * common/config/i386/cpuinfo.h (get_intel_cpu): Remove case 0xb5 - for meteorlake. - -2023-01-03 Sandra Loosemore <sandra@codesourcery.com> - - * cgraph.h (struct cgraph_node): Add gc_candidate bit, modify - default constructor to initialize it. - * cgraphunit.cc (expand_all_functions): Save gc_candidate functions - for last and iterate to handle recursive calls. Delete leftover - candidates at the end. - * omp-simd-clone.cc (simd_clone_create): Set gc_candidate bit - on local clones. - * tree-vect-stmts.cc (vectorizable_simd_clone_call): Clear - gc_candidate bit when a clone is used. - -2023-01-03 Florian Weimer <fweimer@redhat.com> - - Revert: - 2023-01-02 Florian Weimer <fweimer@redhat.com> - - * dwarf2cfi.cc (init_return_column_size): Remove. - (init_one_dwarf_reg_size): Adjust. - (generate_dwarf_reg_sizes): New function. Extracted - from expand_builtin_init_dwarf_reg_sizes. - (expand_builtin_init_dwarf_reg_sizes): Call - generate_dwarf_reg_sizes. - * target.def (init_dwarf_reg_sizes_extra): Adjust - hook signature. - * config/msp430/msp430.cc - (msp430_init_dwarf_reg_sizes_extra): Adjust. - * config/rs6000/rs6000.cc - (rs6000_init_dwarf_reg_sizes_extra): Likewise. - * doc/tm.texi: Update. - -2023-01-03 Florian Weimer <fweimer@redhat.com> - - Revert: - 2023-01-02 Florian Weimer <fweimer@redhat.com> - - * debug.h (dwarf_reg_sizes_constant): Declare. - * dwarf2cfi.cc (dwarf_reg_sizes_constant): New function. - -2023-01-03 Siddhesh Poyarekar <siddhesh@gotplt.org> - - PR tree-optimization/105043 - * doc/extend.texi (Object Size Checking): Split out into two - subsections and mention _FORTIFY_SOURCE. - -2023-01-03 Roger Sayle <roger@nextmovesoftware.com> - - * config/i386/i386-expand.cc (ix86_expand_int_movcc): Rewrite - RTL expansion to allow condition (mask) to be shared/reused, - by avoiding overwriting pseudos and adding REG_EQUAL notes. - -2023-01-03 Roger Sayle <roger@nextmovesoftware.com> - - PR target/108229 - * config/i386/i386-features.cc - (general_scalar_chain::compute_convert_gain) <case PLUS>: Consider - the gain/cost of converting a MEM operand. - -2023-01-03 Jakub Jelinek <jakub@redhat.com> - - PR middle-end/108264 - * expr.cc (store_expr): For stores into SUBREG_PROMOTED_* targets - from source which doesn't have scalar integral mode first convert - it to outer_mode. - -2023-01-03 Jakub Jelinek <jakub@redhat.com> - - PR rtl-optimization/108263 - * cfgrtl.cc (fixup_reorder_chain): Avoid trying to redirect - asm goto to EXIT. - -2023-01-02 Alexander Monakov <amonakov@ispras.ru> - - PR target/87832 - * config/i386/lujiazui.md (lujiazui_div): New automaton. - (lua_div): New unit. - (lua_idiv_qi): Correct unit in the reservation. - (lua_idiv_qi_load): Ditto. - (lua_idiv_hi): Ditto. - (lua_idiv_hi_load): Ditto. - (lua_idiv_si): Ditto. - (lua_idiv_si_load): Ditto. - (lua_idiv_di): Ditto. - (lua_idiv_di_load): Ditto. - (lua_fdiv_SF): Ditto. - (lua_fdiv_SF_load): Ditto. - (lua_fdiv_DF): Ditto. - (lua_fdiv_DF_load): Ditto. - (lua_fdiv_XF): Ditto. - (lua_fdiv_XF_load): Ditto. - (lua_ssediv_SF): Ditto. - (lua_ssediv_load_SF): Ditto. - (lua_ssediv_V4SF): Ditto. - (lua_ssediv_load_V4SF): Ditto. - (lua_ssediv_V8SF): Ditto. - (lua_ssediv_load_V8SF): Ditto. - (lua_ssediv_SD): Ditto. - (lua_ssediv_load_SD): Ditto. - (lua_ssediv_V2DF): Ditto. - (lua_ssediv_load_V2DF): Ditto. - (lua_ssediv_V4DF): Ditto. - (lua_ssediv_load_V4DF): Ditto. - -2023-01-02 Florian Weimer <fweimer@redhat.com> - - * debug.h (dwarf_reg_sizes_constant): Declare. - * dwarf2cfi.cc (dwarf_reg_sizes_constant): New function. - -2023-01-02 Florian Weimer <fweimer@redhat.com> - - * dwarf2cfi.cc (init_return_column_size): Remove. - (init_one_dwarf_reg_size): Adjust. - (generate_dwarf_reg_sizes): New function. Extracted - from expand_builtin_init_dwarf_reg_sizes. - (expand_builtin_init_dwarf_reg_sizes): Call - generate_dwarf_reg_sizes. - * target.def (init_dwarf_reg_sizes_extra): Adjust - hook signature. - * config/msp430/msp430.cc - (msp430_init_dwarf_reg_sizes_extra): Adjust. - * config/rs6000/rs6000.cc - (rs6000_init_dwarf_reg_sizes_extra): Likewise. - * doc/tm.texi: Update. - -2023-01-02 Jakub Jelinek <jakub@redhat.com> - - * gcc.cc (process_command): Update copyright notice dates. - * gcov-dump.cc (print_version): Ditto. - * gcov.cc (print_version): Ditto. - * gcov-tool.cc (print_version): Ditto. - * gengtype.cc (create_file): Ditto. - * doc/cpp.texi: Bump @copying's copyright year. - * doc/cppinternals.texi: Ditto. - * doc/gcc.texi: Ditto. - * doc/gccint.texi: Ditto. - * doc/gcov.texi: Ditto. - * doc/install.texi: Ditto. - * doc/invoke.texi: Ditto. - -2023-01-01 Roger Sayle <roger@nextmovesoftware.com> - Uroš Bizjak <ubizjak@gmail.com> - - * config/i386/i386.md (extendditi2): New define_insn. - (define_split): Use DWIH mode iterator to treat new extendditi2 - identically to existing extendsidi2_1. - (define_peephole2): Likewise. - (define_peephole2): Likewise. - (define_Split): Likewise. - -Copyright (C) 2023 Free Software Foundation, Inc. +Copyright (C) 2024 Free Software Foundation, Inc. Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright |