From: GCC Administrator Date: Wed, 6 Dec 2023 00:17:50 +0000 (+0000) Subject: Daily bump. X-Git-Tag: basepoints/gcc-15~3937 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3dd09cd9e15f996b0f0768554d20ef1aa8b26f58;p=thirdparty%2Fgcc.git Daily bump. --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 632072f55a06..23c65f471eb6 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,1526 @@ +2023-12-06 Alexandre Oliva + + * 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 + + 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 + + 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 + + PR target/112606 + * config/rs6000/rs6000.md (copysign3): 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 + + * 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 + + PR middle-end/112860 + * passes.cc (should_skip_pass_p): Do not skip ISEL. + +2023-12-05 Richard Biener + + PR sanitizer/111736 + * asan.cc (asan_protect_global): Do not protect globals + in non-generic address-space. + +2023-12-05 Richard Biener + + PR ipa/92606 + * ipa-icf.cc (sem_variable::equals_wpa): Compare address-spaces. + +2023-12-05 Richard Biener + + 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 + + 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 + + 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 + + * 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) + (@aarch64_ldnt1, @aarch64_st1) + (@aarch64_stnt1): New patterns. + (@aarch64_dot_prod_lane): Extend to... + (@aarch64_dot_prod_lane) + (@aarch64_dot_prod_lane): + ...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) + (@aarch64_sve_pext, @aarch64_sve_pextx2) + (@aarch64_sve_psel, *aarch64_sve_psel_plus) + (@aarch64_sve_cntp_c, 2) + (3, *3, @aarch64_sve_single_) + (@aarch64_sve_): New patterns. + (@aarch64_sve_single_, @aarch64_sve_clamp) + (*aarch64_sve_clamp_x, @aarch64_sve_clamp_single) + (@aarch64_sve_fclamp, *aarch64_sve_fclamp_x) + (@aarch64_sve_fclamp_single, 2) + (@aarch64_sve_dotvnx4sivnx8hi): New patterns. + (@aarch64_sve_): Likewise. + (*aarch64_sve_): Likewise. + (@aarch64_sve_single_): Likewise. + (aarch64_sve_fdotvnx4sfvnx8hf): Likewise. + (aarch64_fdot_prod_lanevnx4sfvnx8hf): Likewise. + (@aarch64_sve_): Likewise. + (@aarch64_sve_): Likewise. + (@aarch64_sve_): Likewise. + (truncvnx8sf2, @aarch64_sve_cvtn): Likewise. + (2, 2): Likewise. + (@aarch64_sve_sel): Likewise. + (@aarch64_sve_while_b_x2): Likewise. + (@aarch64_sve_while_c): Likewise. + (@aarch64_pred_, @cond_): Likewise. + (@aarch64_sve_): Likewise. + * config/aarch64/aarch64-sme.md (@aarch64_sme_) + (*aarch64_sme__plus, @aarch64_sme_read) + (*aarch64_sme_read_plus, @aarch64_sme_write): New patterns. + (*aarch64_sme_write_plus aarch64_sme_zero_zt0): Likewise. + (@aarch64_sme_, *aarch64_sme__plus) + (@aarch64_sme_single_): Likewise. + (*aarch64_sme_single__plus): Likewise. + (@aarch64_sme_) + (*aarch64_sme__plus) + (@aarch64_sme_single_) + (*aarch64_sme_single__plus) + (@aarch64_sme_single_sudot) + (*aarch64_sme_single_sudot_plus) + (@aarch64_sme_lane_) + (*aarch64_sme_lane__plus) + (@aarch64_sme_) + (*aarch64_sme__plus) + (@aarch64_sme_) + (*aarch64_sme__plus) + (@aarch64_sme_single_) + (*aarch64_sme_single__plus) + (@aarch64_sme_lane_) + (*aarch64_sme_lane_) + (@aarch64_sme_) + (*aarch64_sme__plus) + (@aarch64_sme_) + (*aarch64_sme__plus) + (@aarch64_sme_single_) + (*aarch64_sme_single__plus) + (@aarch64_sme_lane_) + (*aarch64_sme_lane_) + (@aarch64_sme_) + (@aarch64_sme_) + (@aarch64_sme_) + (*aarch64_sme__plus) + (@aarch64_sme_single_) + (*aarch64_sme_single__plus) + (@aarch64_sme_lane_) + (*aarch64_sme_lane__plus) + (@aarch64_sme_) + (*aarch64_sme__plus) + (@aarch64_sme_single_) + (*aarch64_sme_single__plus) + (@aarch64_sme_lane_) + (*aarch64_sme_lane_) + (@aarch64_sme_) + (*aarch64_sme__plus) + (@aarch64_sme_lane_) + (*aarch64_sme_lane_) + (@aarch64_sme_lut): 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 (*add3_aarch64): Handle ADDSVL + and ADDSPL. + * config/aarch64/aarch64-sme.md (UNSPEC_SME_LDR): New unspec. + (@aarch64_sme_, @aarch64_sme__plus) + (aarch64_sme_ldr0, @aarch64_sme_ldrn): New patterns. + (UNSPEC_SME_STR): New unspec. + (@aarch64_sme_, @aarch64_sme__plus) + (aarch64_sme_str0, @aarch64_sme_strn): New patterns. + (@aarch64_sme_): Likewise. + (*aarch64_sme__plus): Likewise. + (@aarch64_sme_): Likewise. + (@aarch64_sme_): Likewise. + (*aarch64_sme__plus): Likewise. + (@aarch64_sme_): Likewise. + (UNSPEC_SME_ZERO): New unspec. + (aarch64_sme_zero): New pattern. + (@aarch64_sme_): Likewise. + (@aarch64_sme_): Likewise. + (@aarch64_sme_): 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 + + * 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 + + * 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 + + * config/aarch64/aarch64-modes.def: Add VNx1TI. + +2023-12-05 Richard Sandiford + + * 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 + + * 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. + (*cb1): Rename to... + (aarch64_cb1): ...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 + + * 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. + (*tb1): Rename to... + (@aarch64_tb): ...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 + + * 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_ldf1): Likewise. + (@aarch64_ldf1_) + (gather_load): Likewise + (mask_gather_load): Likewise. + (mask_gather_load): Likewise. + (*mask_gather_load_xtw_unpacked): Likewise. + (*mask_gather_load_sxtw): Likewise. + (*mask_gather_load_uxtw): Likewise. + (@aarch64_gather_load_) + (@aarch64_gather_load_ + ): Likewise. + (*aarch64_gather_load_ + _xtw_unpacked) + (*aarch64_gather_load_ + _sxtw): Likewise. + (*aarch64_gather_load_ + _uxtw): Likewise. + (@aarch64_ldff1_gather, @aarch64_ldff1_gather): Likewise. + (*aarch64_ldff1_gather_sxtw): Likewise. + (*aarch64_ldff1_gather_uxtw): Likewise. + (@aarch64_ldff1_gather_ + ): Likewise. + (@aarch64_ldff1_gather_ + ): Likewise. + (*aarch64_ldff1_gather_ + _sxtw): Likewise. + (*aarch64_ldff1_gather_ + _uxtw): Likewise. + (@aarch64_sve_gather_prefetch) + (@aarch64_sve_gather_prefetch) + (*aarch64_sve_gather_prefetch_sxtw) + (*aarch64_sve_gather_prefetch_uxtw) + (scatter_store): Likewise. + (mask_scatter_store): Likewise. + (*mask_scatter_store_xtw_unpacked) + (*mask_scatter_store_sxtw): Likewise. + (*mask_scatter_store_uxtw): Likewise. + (@aarch64_scatter_store_trunc) + (@aarch64_scatter_store_trunc) + (*aarch64_scatter_store_trunc_sxtw) + (*aarch64_scatter_store_trunc_uxtw) + (@aarch64_sve_ld1ro, @aarch64_adr): Likewise. + (*aarch64_adr_sxtw, *aarch64_adr_uxtw_unspec): Likewise. + (*aarch64_adr_uxtw_and, @aarch64_adr_shift): Likewise. + (*aarch64_adr_shift, *aarch64_adr_shift_sxtw): Likewise. + (*aarch64_adr_shift_uxtw, @aarch64_sve_add_): Likewise. + (@aarch64_sve_, fold_left_plus_): Likewise. + (mask_fold_left_plus_, @aarch64_sve_compact): Likewise. + * config/aarch64/aarch64-sve2.md (@aarch64_gather_ldnt) + (@aarch64_gather_ldnt_ + ): Likewise. + (@aarch64_sve2_histcnt, @aarch64_sve2_histseg): Likewise. + (@aarch64_pred_): Likewise. + (*aarch64_pred__cc): Likewise. + (*aarch64_pred__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 + + * 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_aarch64): Extend UMOV alternative to TARGET_BASE_SIMD. + (*movti_aarch64): Use an SVE move instruction if non-streaming + SIMD isn't available. + (*mov_aarch64): Likewise. + (load_pair_dw_tftf): Extend to TARGET_BASE_SIMD. + (store_pair_dw_tftf): Likewise. + (loadwb_pair_): Likewise. + (storewb_pair_): Likewise. + * config/aarch64/aarch64-simd.md (*aarch64_simd_mov): + Allow UMOV in streaming mode. + (*aarch64_simd_mov): Use an SVE move instruction + if non-streaming SIMD isn't available. + (aarch64_store_lane0): Depend on TARGET_FLOAT rather than + TARGET_SIMD. + (aarch64_simd_mov_from_low): Likewise. Use fmov if + Advanced SIMD is completely disabled. + (aarch64_simd_mov_from_high): Use SVE EXT instructions if + non-streaming SIMD isn't available. + +2023-12-05 Richard Sandiford + + * 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 + + * 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_): 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 + + * 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) + (*aarch64_sve_reinterpret): Extend to SVE structure modes. + +2023-12-05 Richard Sandiford + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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_aarch64): Add an RDVL + alternative. + (*movsi_aarch64, *movdi_aarch64): Likewise. + +2023-12-05 Richard Sandiford + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * common/config/riscv/riscv-common.cc + (riscv_subset_list::check_conflict_ext): Check zcd conflicts + with zcmt and zcmp. + +2023-12-05 Richard Sandiford + + 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 + + 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 + + * config/riscv/riscv-v.cc (sew64_scalar_helper): Bugfix. + +2023-12-05 Jakub Jelinek + + 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 + + * 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 + + 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 + + * 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 + + * config/i386/sse.md (udot_prodv64qi): New expander. + (udot_prod): Emulates with VEC_UNPACKU_EXPR + + DOT_PROD (short, int). + +2023-12-05 Marek Polacek + + PR c++/107687 + PR c++/110997 + * doc/invoke.texi: Document -fno-immediate-escalation. + 2023-12-04 Andrew Pinski * match.pd (zero_one_valued_p): For convert diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 6f4231ffb412..76ff872532c3 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20231205 +20231206 diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index 9c4ec217df96..48a5bb742536 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,23 @@ +2023-12-06 Alexandre Oliva + + * gcc-interface/trans.cc: Include ipa-strub.h. + (gigi): Make internal decls for targets of compiler-generated + calls strub-callable too. + (build_raise_check): Likewise. + * gcc-interface/utils.cc: Include ipa-strub.h. + (handle_strub_attribute): New. + (gnat_internal_attribute_table): Add strub. + +2023-12-05 Richard Sandiford + + * gcc-interface/utils.cc (gnat_internal_attribute_table): Add extra + braces to work around PR 16333 in older compilers. + +2023-12-05 Rainer Orth + + * adaint.c: Include . + * expect.c: Include . + 2023-12-02 Richard Sandiford * gcc-interface/gigi.h (gnat_internal_attribute_table): Change diff --git a/gcc/c-family/ChangeLog b/gcc/c-family/ChangeLog index c7265b861382..3dc8cbc7da0e 100644 --- a/gcc/c-family/ChangeLog +++ b/gcc/c-family/ChangeLog @@ -1,3 +1,29 @@ +2023-12-06 Alexandre Oliva + + * c-attribs.cc: Include ipa-strub.h. + (handle_strub_attribute): New. + (c_common_attribute_table): Add strub. + +2023-12-05 Richard Sandiford + + * c-attribs.cc (c_common_gnu_attribute_table): Add extra + braces to work around PR 16333 in older compilers. + +2023-12-05 Richard Biener + + PR c/89270 + * c-common.cc (c_common_type_for_size): Consider + registered_builtin_types. + +2023-12-05 Marek Polacek + + PR c++/107687 + PR c++/110997 + * c-cppbuiltin.cc (c_cpp_builtins): Update __cpp_consteval. + * c-opts.cc (c_common_post_options): Pre-C++20, unset + flag_immediate_escalation. + * c.opt (fimmediate-escalation): New option. + 2023-12-02 Richard Sandiford * c-common.h (c_common_attribute_table): Replace with... diff --git a/gcc/c/ChangeLog b/gcc/c/ChangeLog index 20c97d05381f..f6175775c20d 100644 --- a/gcc/c/ChangeLog +++ b/gcc/c/ChangeLog @@ -1,3 +1,14 @@ +2023-12-05 Richard Sandiford + + * c-decl.cc (std_attribute_table): Add extra braces to work + around PR 16333 in older compilers. + +2023-12-05 Richard Biener + + PR c/86869 + * c-typeck.cc (c_build_qualified_type): Preserve address-space + info for ARRAY_TYPE. + 2023-12-02 Richard Sandiford * c-tree.h (std_attribute_table): Declare. diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index b7167519dc6d..308d02b95aeb 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,68 @@ +2023-12-05 Jakub Jelinek + + PR c++/112795 + * cp-tree.h (cp_check_pragma_unroll): Declare. + * semantics.cc (cp_check_pragma_unroll): New function. + * parser.cc (cp_parser_pragma_unroll): Use cp_check_pragma_unroll. + * pt.cc (tsubst_expr) : Likewise. + (tsubst_stmt) : Likwsie. + +2023-12-05 Richard Sandiford + + * tree.cc (cxx_gnu_attribute_table): Add extra braces to work + around PR 16333 in older compilers. + +2023-12-05 Jakub Jelinek + + PR c++/110734 + * parser.cc (cp_parser_block_declaration): Implement C++ DR 2262 + - Attributes for asm-definition. Call cp_parser_asm_definition + even if RID_ASM token is only seen after sequence of standard + attributes. + (cp_parser_asm_definition): Parse standard attributes before + RID_ASM token and warn for them with -Wattributes. + +2023-12-05 Marek Polacek + + PR c++/107687 + PR c++/110997 + * call.cc (in_immediate_context): No longer static. + * constexpr.cc (cxx_eval_call_expression): Adjust assert. + * cp-gimplify.cc (deferred_escalating_exprs): New vec. + (remember_escalating_expr): New. + (enum fold_flags): Remove ff_fold_immediate. + (immediate_escalating_function_p): New. + (unchecked_immediate_escalating_function_p): New. + (promote_function_to_consteval): New. + (cp_fold_immediate): Move above. Return non-null if any errors were + emitted. + (maybe_explain_promoted_consteval): New. + (cp_gimplify_expr) : Assert we've handled all + immediate invocations. + (taking_address_of_imm_fn_error): New. + (cp_fold_immediate_r): Merge ADDR_EXPR and PTRMEM_CST cases. Implement + P2564 - promoting functions to consteval. + : Implement P2564 - promoting functions to consteval. + (cp_fold_r): If an expression turns into a CALL_EXPR after cp_fold, + call cp_fold_immediate_r on the CALL_EXPR. + (cp_fold_function): Set DECL_ESCALATION_CHECKED_P if + deferred_escalating_exprs does not contain current_function_decl. + (process_and_check_pending_immediate_escalating_fns): New. + * cp-tree.h (struct lang_decl_fn): Add escalated_p bit-field. + (DECL_ESCALATION_CHECKED_P): New. + (immediate_invocation_p): Declare. + (process_pending_immediate_escalating_fns): Likewise. + * decl2.cc (c_parse_final_cleanups): Set at_eof to 2 after all + templates have been instantiated; and to 3 at the end of the function. + Call process_pending_immediate_escalating_fns. + * error.cc (dump_template_bindings): Check at_eof against an updated + value. + * module.cc (trees_out::lang_decl_bools): Stream escalated_p. + (trees_in::lang_decl_bools): Likewise. + * pt.cc (push_tinst_level_loc): Set at_eof to 3, not 2. + * typeck.cc (cp_build_addr_expr_1): Don't check + DECL_IMMEDIATE_FUNCTION_P. + 2023-12-04 Jason Merrill * constexpr.cc (potential_constant_expression_1): Fix diff --git a/gcc/d/ChangeLog b/gcc/d/ChangeLog index 04a9199d6c5d..b002b459adc4 100644 --- a/gcc/d/ChangeLog +++ b/gcc/d/ChangeLog @@ -1,3 +1,9 @@ +2023-12-05 Richard Sandiford + + * d-attribs.cc (d_langhook_common_attribute_table): Add extra braces + to work around PR 16333 in older compilers. + (d_langhook_gnu_attribute_table): Likewise. + 2023-12-02 Richard Sandiford * d-tree.h (d_langhook_attribute_table): Replace with... diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 3cc25c541df0..be4fe9afa699 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,18 @@ +2023-12-05 Harald Anlauf + Tobias Burnus + + PR fortran/100988 + * gfortran.h (IS_PROC_POINTER): New macro. + * trans-types.cc (gfc_sym_type): Use macro in determination if the + restrict qualifier can be used for a dummy variable. Fix logic to + allow the restrict qualifier also for optional arguments, and to + not apply it to pointer or proc_pointer arguments. + +2023-12-05 Richard Sandiford + + * f95-lang.cc (gfc_gnu_attribute_table): Add extra braces to work + around PR 16333 in older compilers. + 2023-12-02 Harald Anlauf PR fortran/93762 diff --git a/gcc/jit/ChangeLog b/gcc/jit/ChangeLog index af2c09d07d30..11a0cb1fb02f 100644 --- a/gcc/jit/ChangeLog +++ b/gcc/jit/ChangeLog @@ -1,3 +1,9 @@ +2023-12-05 Richard Sandiford + + * dummy-frontend.cc (jit_gnu_attribute_table): Add extra braces + to work around PR 16333 in older compilers. + (jit_format_attribute_table): Likewise. + 2023-12-02 Richard Sandiford * dummy-frontend.cc (jit_format_attribute_table): Change type to diff --git a/gcc/lto/ChangeLog b/gcc/lto/ChangeLog index aa301266c346..71727d0fca88 100644 --- a/gcc/lto/ChangeLog +++ b/gcc/lto/ChangeLog @@ -1,3 +1,9 @@ +2023-12-05 Richard Sandiford + + * lto-lang.cc (lto_gnu_attribute_table): Add extra braces to work + around PR 16333 in older compilers. + (lto_format_attribute_table): Likewise. + 2023-12-02 Richard Sandiford * lto-lang.cc (lto_format_attribute_table): Change type to diff --git a/gcc/m2/ChangeLog b/gcc/m2/ChangeLog index 26f7614286b5..a1b339208ca3 100644 --- a/gcc/m2/ChangeLog +++ b/gcc/m2/ChangeLog @@ -1,3 +1,18 @@ +2023-12-05 Gaius Mulley + + PR modula2/112865 + * gm2-compiler/M2Quads.mod (BuildReFunction): Use + GetDType to retrieve the type of the operand when + converting the complex type to its scalar equivalent. + (BuildImFunction): Use GetDType to retrieve the type of the + operand when converting the complex type to its scalar + equivalent. + +2023-12-05 Rainer Orth + + * mc/mc.flex [__GNUC__]: Define alloca as __builtin_alloca. + (handleDate): Use strchr instead of index. + 2023-12-04 Gaius Mulley PR modula2/112825 diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 66e3c6e8d993..b5162970262e 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,1736 @@ +2023-12-06 Alexandre Oliva + + * c-c++-common/strub-O0.c: New. + * c-c++-common/strub-O1.c: New. + * c-c++-common/strub-O2.c: New. + * c-c++-common/strub-O2fni.c: New. + * c-c++-common/strub-O3.c: New. + * c-c++-common/strub-O3fni.c: New. + * c-c++-common/strub-Og.c: New. + * c-c++-common/strub-Os.c: New. + * c-c++-common/strub-all1.c: New. + * c-c++-common/strub-all2.c: New. + * c-c++-common/strub-apply1.c: New. + * c-c++-common/strub-apply2.c: New. + * c-c++-common/strub-apply3.c: New. + * c-c++-common/strub-apply4.c: New. + * c-c++-common/strub-at-calls1.c: New. + * c-c++-common/strub-at-calls2.c: New. + * c-c++-common/strub-defer-O1.c: New. + * c-c++-common/strub-defer-O2.c: New. + * c-c++-common/strub-defer-O3.c: New. + * c-c++-common/strub-defer-Os.c: New. + * c-c++-common/strub-internal1.c: New. + * c-c++-common/strub-internal2.c: New. + * c-c++-common/strub-parms1.c: New. + * c-c++-common/strub-parms2.c: New. + * c-c++-common/strub-parms3.c: New. + * c-c++-common/strub-relaxed1.c: New. + * c-c++-common/strub-relaxed2.c: New. + * c-c++-common/strub-short-O0-exc.c: New. + * c-c++-common/strub-short-O0.c: New. + * c-c++-common/strub-short-O1.c: New. + * c-c++-common/strub-short-O2.c: New. + * c-c++-common/strub-short-O3.c: New. + * c-c++-common/strub-short-Os.c: New. + * c-c++-common/strub-strict1.c: New. + * c-c++-common/strub-strict2.c: New. + * c-c++-common/strub-tail-O1.c: New. + * c-c++-common/strub-tail-O2.c: New. + * c-c++-common/torture/strub-callable1.c: New. + * c-c++-common/torture/strub-callable2.c: New. + * c-c++-common/torture/strub-const1.c: New. + * c-c++-common/torture/strub-const2.c: New. + * c-c++-common/torture/strub-const3.c: New. + * c-c++-common/torture/strub-const4.c: New. + * c-c++-common/torture/strub-data1.c: New. + * c-c++-common/torture/strub-data2.c: New. + * c-c++-common/torture/strub-data3.c: New. + * c-c++-common/torture/strub-data4.c: New. + * c-c++-common/torture/strub-data5.c: New. + * c-c++-common/torture/strub-indcall1.c: New. + * c-c++-common/torture/strub-indcall2.c: New. + * c-c++-common/torture/strub-indcall3.c: New. + * c-c++-common/torture/strub-inlinable1.c: New. + * c-c++-common/torture/strub-inlinable2.c: New. + * c-c++-common/torture/strub-ptrfn1.c: New. + * c-c++-common/torture/strub-ptrfn2.c: New. + * c-c++-common/torture/strub-ptrfn3.c: New. + * c-c++-common/torture/strub-ptrfn4.c: New. + * c-c++-common/torture/strub-pure1.c: New. + * c-c++-common/torture/strub-pure2.c: New. + * c-c++-common/torture/strub-pure3.c: New. + * c-c++-common/torture/strub-pure4.c: New. + * c-c++-common/torture/strub-run1.c: New. + * c-c++-common/torture/strub-run2.c: New. + * c-c++-common/torture/strub-run3.c: New. + * c-c++-common/torture/strub-run4.c: New. + * c-c++-common/torture/strub-run4c.c: New. + * c-c++-common/torture/strub-run4d.c: New. + * c-c++-common/torture/strub-run4i.c: New. + * g++.dg/strub-run1.C: New. + * g++.dg/torture/strub-init1.C: New. + * g++.dg/torture/strub-init2.C: New. + * g++.dg/torture/strub-init3.C: New. + * gnat.dg/strub_attr.adb, gnat.dg/strub_attr.ads: New. + * gnat.dg/strub_ind.adb, gnat.dg/strub_ind.ads: New. + * c-c++-common/strub-var1.c: New file. + * gnat.dg/strub_access.adb: New file. + * gnat.dg/strub_access1.adb: New file. + * gnat.dg/strub_disp.adb: New file. + * gnat.dg/strub_disp1.adb: New file. + * gnat.dg/strub_ind1.adb: New file. + * gnat.dg/strub_ind1.ads: New file. + * gnat.dg/strub_ind2.adb: New file. + * gnat.dg/strub_ind2.ads: New file. + * gnat.dg/strub_intf.adb: New file. + * gnat.dg/strub_intf1.adb: New file. + * gnat.dg/strub_intf2.adb: New file. + * gnat.dg/strub_renm.adb: New file. + * gnat.dg/strub_renm1.adb: New file. + * gnat.dg/strub_renm2.adb: New file. + * gnat.dg/strub_var.adb: New file. + * gnat.dg/strub_var1.adb: New file. + +2023-12-05 Juzhe-Zhong + + PR target/112851 + PR target/112852 + * gcc.target/riscv/rvv/autovec/vls/consecutive-1.c: Add LMUL = 8 option. + * gcc.target/riscv/rvv/autovec/vls/consecutive-2.c: Ditto. + * gcc.target/riscv/rvv/autovec/vls/mod-1.c: Ditto. + * gcc.target/riscv/rvv/autovec/vls/mov-1.c: Ditto. + * gcc.target/riscv/rvv/autovec/vls/mov-10.c: Ditto. + * gcc.target/riscv/rvv/autovec/vls/mov-11.c: Ditto. + * gcc.target/riscv/rvv/autovec/vls/mov-12.c: Ditto. + * gcc.target/riscv/rvv/autovec/vls/mov-13.c: Ditto. + * gcc.target/riscv/rvv/autovec/vls/mov-14.c: Ditto. + * gcc.target/riscv/rvv/autovec/vls/mov-15.c: Ditto. + * gcc.target/riscv/rvv/autovec/vls/mov-16.c: Ditto. + * gcc.target/riscv/rvv/autovec/vls/mov-17.c: Ditto. + * gcc.target/riscv/rvv/autovec/vls/mov-3.c: Ditto. + * gcc.target/riscv/rvv/autovec/vls/mov-5.c: Ditto. + * gcc.target/riscv/rvv/autovec/vls/mov-7.c: Ditto. + * gcc.target/riscv/rvv/autovec/vls/mov-8.c: Ditto. + * gcc.target/riscv/rvv/autovec/vls/mov-9.c: Ditto. + * gcc.target/riscv/rvv/autovec/vls/spill-1.c: Ditto. + * gcc.target/riscv/rvv/autovec/vls/spill-2.c: Ditto. + * gcc.target/riscv/rvv/autovec/vls/spill-3.c: Ditto. + * gcc.target/riscv/rvv/autovec/vls/spill-5.c: Ditto. + * gcc.target/riscv/rvv/autovec/vls/spill-6.c: Ditto. + * gcc.target/riscv/rvv/autovec/zve32f-1.c: Adapt test. + * gcc.target/riscv/rvv/autovec/pr112851.c: New test. + * gcc.target/riscv/rvv/autovec/pr112852.c: New test. + +2023-12-05 David Faust + + PR debug/112849 + * gcc.dg/debug/btf/btf-datasec-3.c: New test. + +2023-12-05 Jakub Jelinek + + PR c++/112795 + * g++.dg/ext/unroll-2.C: Use { target c++11 } instead of dg-skip-if for + -std=gnu++98. + * g++.dg/ext/unroll-3.C: Likewise. + * g++.dg/ext/unroll-7.C: New test. + * g++.dg/ext/unroll-8.C: New test. + +2023-12-05 Harald Anlauf + Tobias Burnus + + PR fortran/100988 + * gfortran.dg/coarray_poly_6.f90: Adjust pattern. + * gfortran.dg/coarray_poly_7.f90: Likewise. + * gfortran.dg/coarray_poly_8.f90: Likewise. + * gfortran.dg/missing_optional_dummy_6a.f90: Likewise. + * gfortran.dg/pr100988.f90: New test. + +2023-12-05 Jakub Jelinek + + PR c++/110734 + * g++.dg/DRs/dr2262.C: New test. + * g++.dg/cpp0x/gen-attrs-76.C (foo, bar): Don't expect errors + on attributes on asm definitions. + * g++.dg/gomp/attrs-11.C: Remove 2 expected errors. + +2023-12-05 Richard Biener + + PR middle-end/112830 + * gcc.target/avr/pr112830.c: New testcase. + * gcc.target/i386/pr112830.c: Likewise. + +2023-12-05 Richard Biener + + PR tree-optimization/109689 + PR tree-optimization/112856 + * gcc.dg/torture/pr109689.c: New testcase. + * gcc.dg/torture/pr112856.c: Likewise. + +2023-12-05 Jakub Jelinek + + PR target/112845 + * gcc.dg/pr112845.c: New file. + +2023-12-05 Richard Sandiford + + * gcc.target/aarch64/sve/acle/asm/test_sve_acle.h: Provide a way + for test functions to share ZT0. + (ATTR): Update accordingly. + (TEST_LOAD_COUNT, TEST_STORE_COUNT, TEST_PN, TEST_COUNT_PN) + (TEST_EXTRACT_PN, TEST_SELECT_P, TEST_COMPARE_S_X2, TEST_COMPARE_S_C) + (TEST_CREATE_B, TEST_GET_B, TEST_SET_B, TEST_XN, TEST_XN_SINGLE) + (TEST_XN_SINGLE_Z15, TEST_XN_SINGLE_AWKWARD, TEST_X2_NARROW) + (TEST_X4_NARROW): New macros. + * gcc.target/aarch64/sve/acle/asm/create2_1.c: Add _b tests. + * gcc.target/aarch64/sve/acle/general-c/binary_za_m_1.c: Remove + test for svmopa that becomes valid with SME2. + * gcc.target/aarch64/sve/acle/general-c/create_1.c: Adjust for + existence of svboolx2_t version of svcreate2. + * gcc.target/aarch64/sve/acle/general-c/store_1.c: Adjust error + messages to account for svcount_t predication. + * gcc.target/aarch64/sve/acle/general-c/store_2.c: Likewise. + * gcc.target/aarch64/sve/acle/general-c/ternary_qq_lane_1.c: Adjust + error messages to account for new SME2 variants. + * gcc.target/aarch64/sve/acle/general-c/ternary_qq_opt_n_2.c: Likewise. + * g++.target/aarch64/sme2/aarch64-sme2-acle-asm.exp: New file. + * gcc.target/aarch64/sme/acle-asm/clamp_s16.c: New file. + * gcc.target/aarch64/sme/acle-asm/clamp_s32.c: New file. + * gcc.target/aarch64/sme/acle-asm/clamp_s64.c: New file. + * gcc.target/aarch64/sme/acle-asm/clamp_s8.c: New file. + * gcc.target/aarch64/sme/acle-asm/clamp_u16.c: New file. + * gcc.target/aarch64/sme/acle-asm/clamp_u32.c: New file. + * gcc.target/aarch64/sme/acle-asm/clamp_u64.c: New file. + * gcc.target/aarch64/sme/acle-asm/clamp_u8.c: New file. + * gcc.target/aarch64/sme/acle-asm/revd_bf16.c: New file. + * gcc.target/aarch64/sme/acle-asm/revd_f16.c: New file. + * gcc.target/aarch64/sme/acle-asm/revd_f32.c: New file. + * gcc.target/aarch64/sme/acle-asm/revd_f64.c: New file. + * gcc.target/aarch64/sme/acle-asm/revd_s16.c: New file. + * gcc.target/aarch64/sme/acle-asm/revd_s32.c: New file. + * gcc.target/aarch64/sme/acle-asm/revd_s64.c: New file. + * gcc.target/aarch64/sme/acle-asm/revd_s8.c: New file. + * gcc.target/aarch64/sme/acle-asm/revd_u16.c: New file. + * gcc.target/aarch64/sme/acle-asm/revd_u32.c: New file. + * gcc.target/aarch64/sme/acle-asm/revd_u64.c: New file. + * gcc.target/aarch64/sme/acle-asm/revd_u8.c: New file. + * gcc.target/aarch64/sme/clamp_1.c: New file. + * gcc.target/aarch64/sme/clamp_2.c: New file. + * gcc.target/aarch64/sme/clamp_3.c: New file. + * gcc.target/aarch64/sme/clamp_4.c: New file. + * gcc.target/aarch64/sme2/aarch64-sme2-acle-asm.exp: New file. + * gcc.target/aarch64/sme2/acle-asm/add_s16_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/add_s16_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/add_s32_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/add_s32_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/add_s64_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/add_s64_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/add_s8_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/add_s8_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/add_u16_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/add_u16_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/add_u32_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/add_u32_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/add_u64_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/add_u64_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/add_u8_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/add_u8_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/add_write_za32_s32_vg1x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/add_write_za32_s32_vg1x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/add_write_za32_u32_vg1x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/add_write_za32_u32_vg1x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/add_write_za64_s64_vg1x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/add_write_za64_s64_vg1x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/add_write_za64_u64_vg1x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/add_write_za64_u64_vg1x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/add_za32_f32_vg1x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/add_za32_f32_vg1x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/add_za32_s32_vg1x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/add_za32_s32_vg1x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/add_za32_u32_vg1x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/add_za32_u32_vg1x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/add_za64_f64_vg1x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/add_za64_f64_vg1x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/add_za64_s64_vg1x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/add_za64_s64_vg1x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/add_za64_u64_vg1x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/add_za64_u64_vg1x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/bfmlslb_f32.c: New file. + * gcc.target/aarch64/sme2/acle-asm/bfmlslb_lane_f32.c: New file. + * gcc.target/aarch64/sme2/acle-asm/bfmlslt_f32.c: New file. + * gcc.target/aarch64/sme2/acle-asm/bfmlslt_lane_f32.c: New file. + * gcc.target/aarch64/sme2/acle-asm/bmopa_za32.c: New file. + * gcc.target/aarch64/sme2/acle-asm/bmops_za32.c: New file. + * gcc.target/aarch64/sme2/acle-asm/clamp_f16.c: New file. + * gcc.target/aarch64/sme2/acle-asm/clamp_f16_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/clamp_f16_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/clamp_f32.c: New file. + * gcc.target/aarch64/sme2/acle-asm/clamp_f32_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/clamp_f32_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/clamp_f64.c: New file. + * gcc.target/aarch64/sme2/acle-asm/clamp_f64_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/clamp_f64_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/clamp_s16_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/clamp_s16_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/clamp_s32_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/clamp_s32_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/clamp_s64_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/clamp_s64_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/clamp_s8_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/clamp_s8_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/clamp_u16_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/clamp_u16_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/clamp_u32_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/clamp_u32_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/clamp_u64_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/clamp_u64_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/clamp_u8_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/clamp_u8_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/cntp_c16.c: New file. + * gcc.target/aarch64/sme2/acle-asm/cntp_c32.c: New file. + * gcc.target/aarch64/sme2/acle-asm/cntp_c64.c: New file. + * gcc.target/aarch64/sme2/acle-asm/cntp_c8.c: New file. + * gcc.target/aarch64/sme2/acle-asm/cvt_bf16_f32_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/cvt_f16_f32_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/cvt_f32_s32_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/cvt_f32_s32_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/cvt_f32_u32_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/cvt_f32_u32_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/cvt_s32_f32_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/cvt_s32_f32_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/cvt_u32_f32_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/cvt_u32_f32_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/cvtn_bf16_f32_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/cvtn_f16_f32_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/dot_f32.c: New file. + * gcc.target/aarch64/sme2/acle-asm/dot_lane_f32.c: New file. + * gcc.target/aarch64/sme2/acle-asm/dot_lane_s32.c: New file. + * gcc.target/aarch64/sme2/acle-asm/dot_lane_u32.c: New file. + * gcc.target/aarch64/sme2/acle-asm/dot_lane_za32_bf16_vg1x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/dot_lane_za32_bf16_vg1x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/dot_lane_za32_f16_vg1x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/dot_lane_za32_f16_vg1x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/dot_lane_za32_s16_vg1x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/dot_lane_za32_s16_vg1x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/dot_lane_za32_s8_vg1x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/dot_lane_za32_s8_vg1x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/dot_lane_za32_u16_vg1x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/dot_lane_za32_u16_vg1x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/dot_lane_za32_u8_vg1x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/dot_lane_za32_u8_vg1x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/dot_lane_za64_s16_vg1x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/dot_lane_za64_s16_vg1x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/dot_lane_za64_u16_vg1x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/dot_lane_za64_u16_vg1x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/dot_s32.c: New file. + * gcc.target/aarch64/sme2/acle-asm/dot_u32.c: New file. + * gcc.target/aarch64/sme2/acle-asm/dot_za32_bf16_vg1x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/dot_za32_bf16_vg1x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/dot_za32_f16_vg1x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/dot_za32_f16_vg1x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/dot_za32_s16_vg1x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/dot_za32_s16_vg1x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/dot_za32_s8_vg1x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/dot_za32_s8_vg1x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/dot_za32_u16_vg1x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/dot_za32_u16_vg1x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/dot_za32_u8_vg1x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/dot_za32_u8_vg1x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/dot_za64_s16_vg1x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/dot_za64_s16_vg1x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/dot_za64_u16_vg1x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/dot_za64_u16_vg1x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/ld1_bf16_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/ld1_bf16_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/ld1_f16_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/ld1_f16_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/ld1_f32_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/ld1_f32_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/ld1_f64_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/ld1_f64_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/ld1_s16_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/ld1_s16_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/ld1_s32_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/ld1_s32_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/ld1_s64_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/ld1_s64_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/ld1_s8_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/ld1_s8_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/ld1_u16_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/ld1_u16_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/ld1_u32_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/ld1_u32_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/ld1_u64_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/ld1_u64_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/ld1_u8_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/ld1_u8_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/ldnt1_bf16_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/ldnt1_bf16_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/ldnt1_f16_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/ldnt1_f16_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/ldnt1_f32_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/ldnt1_f32_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/ldnt1_f64_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/ldnt1_f64_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/ldnt1_s16_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/ldnt1_s16_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/ldnt1_s32_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/ldnt1_s32_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/ldnt1_s64_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/ldnt1_s64_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/ldnt1_s8_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/ldnt1_s8_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/ldnt1_u16_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/ldnt1_u16_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/ldnt1_u32_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/ldnt1_u32_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/ldnt1_u64_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/ldnt1_u64_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/ldnt1_u8_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/ldnt1_u8_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/ldr_zt.c: New file. + * gcc.target/aarch64/sme2/acle-asm/luti2_bf16.c: New file. + * gcc.target/aarch64/sme2/acle-asm/luti2_bf16_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/luti2_bf16_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/luti2_f16.c: New file. + * gcc.target/aarch64/sme2/acle-asm/luti2_f16_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/luti2_f16_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/luti2_f32.c: New file. + * gcc.target/aarch64/sme2/acle-asm/luti2_f32_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/luti2_f32_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/luti2_s16.c: New file. + * gcc.target/aarch64/sme2/acle-asm/luti2_s16_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/luti2_s16_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/luti2_s32.c: New file. + * gcc.target/aarch64/sme2/acle-asm/luti2_s32_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/luti2_s32_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/luti2_s8.c: New file. + * gcc.target/aarch64/sme2/acle-asm/luti2_s8_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/luti2_s8_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/luti2_u16.c: New file. + * gcc.target/aarch64/sme2/acle-asm/luti2_u16_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/luti2_u16_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/luti2_u32.c: New file. + * gcc.target/aarch64/sme2/acle-asm/luti2_u32_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/luti2_u32_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/luti2_u8.c: New file. + * gcc.target/aarch64/sme2/acle-asm/luti2_u8_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/luti2_u8_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/luti4_bf16.c: New file. + * gcc.target/aarch64/sme2/acle-asm/luti4_bf16_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/luti4_bf16_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/luti4_f16.c: New file. + * gcc.target/aarch64/sme2/acle-asm/luti4_f16_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/luti4_f16_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/luti4_f32.c: New file. + * gcc.target/aarch64/sme2/acle-asm/luti4_f32_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/luti4_f32_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/luti4_s16.c: New file. + * gcc.target/aarch64/sme2/acle-asm/luti4_s16_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/luti4_s16_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/luti4_s32.c: New file. + * gcc.target/aarch64/sme2/acle-asm/luti4_s32_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/luti4_s32_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/luti4_s8.c: New file. + * gcc.target/aarch64/sme2/acle-asm/luti4_s8_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/luti4_u16.c: New file. + * gcc.target/aarch64/sme2/acle-asm/luti4_u16_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/luti4_u16_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/luti4_u32.c: New file. + * gcc.target/aarch64/sme2/acle-asm/luti4_u32_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/luti4_u32_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/luti4_u8.c: New file. + * gcc.target/aarch64/sme2/acle-asm/luti4_u8_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/max_f16_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/max_f16_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/max_f32_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/max_f32_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/max_f64_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/max_f64_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/max_s16_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/max_s16_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/max_s32_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/max_s32_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/max_s64_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/max_s64_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/max_s8_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/max_s8_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/max_u16_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/max_u16_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/max_u32_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/max_u32_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/max_u64_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/max_u64_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/max_u8_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/max_u8_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/maxnm_f16_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/maxnm_f16_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/maxnm_f32_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/maxnm_f32_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/maxnm_f64_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/maxnm_f64_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/min_f16_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/min_f16_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/min_f32_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/min_f32_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/min_f64_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/min_f64_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/min_s16_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/min_s16_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/min_s32_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/min_s32_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/min_s64_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/min_s64_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/min_s8_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/min_s8_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/min_u16_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/min_u16_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/min_u32_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/min_u32_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/min_u64_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/min_u64_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/min_u8_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/min_u8_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/minnm_f16_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/minnm_f16_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/minnm_f32_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/minnm_f32_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/minnm_f64_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/minnm_f64_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/mla_lane_za32_bf16_vg2x1.c: New file. + * gcc.target/aarch64/sme2/acle-asm/mla_lane_za32_bf16_vg2x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/mla_lane_za32_bf16_vg2x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/mla_lane_za32_f16_vg2x1.c: New file. + * gcc.target/aarch64/sme2/acle-asm/mla_lane_za32_f16_vg2x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/mla_lane_za32_f16_vg2x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/mla_lane_za32_f32_vg1x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/mla_lane_za32_f32_vg1x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/mla_lane_za32_s16_vg2x1.c: New file. + * gcc.target/aarch64/sme2/acle-asm/mla_lane_za32_s16_vg2x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/mla_lane_za32_s16_vg2x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/mla_lane_za32_s8_vg4x1.c: New file. + * gcc.target/aarch64/sme2/acle-asm/mla_lane_za32_s8_vg4x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/mla_lane_za32_s8_vg4x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/mla_lane_za32_u16_vg2x1.c: New file. + * gcc.target/aarch64/sme2/acle-asm/mla_lane_za32_u16_vg2x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/mla_lane_za32_u16_vg2x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/mla_lane_za32_u8_vg4x1.c: New file. + * gcc.target/aarch64/sme2/acle-asm/mla_lane_za32_u8_vg4x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/mla_lane_za32_u8_vg4x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/mla_lane_za64_f64_vg1x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/mla_lane_za64_f64_vg1x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/mla_lane_za64_s16_vg4x1.c: New file. + * gcc.target/aarch64/sme2/acle-asm/mla_lane_za64_s16_vg4x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/mla_lane_za64_s16_vg4x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/mla_lane_za64_u16_vg4x1.c: New file. + * gcc.target/aarch64/sme2/acle-asm/mla_lane_za64_u16_vg4x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/mla_lane_za64_u16_vg4x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/mla_za32_bf16_vg2x1.c: New file. + * gcc.target/aarch64/sme2/acle-asm/mla_za32_bf16_vg2x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/mla_za32_bf16_vg2x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/mla_za32_f16_vg2x1.c: New file. + * gcc.target/aarch64/sme2/acle-asm/mla_za32_f16_vg2x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/mla_za32_f16_vg2x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/mla_za32_f32_vg1x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/mla_za32_f32_vg1x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/mla_za32_s16_vg2x1.c: New file. + * gcc.target/aarch64/sme2/acle-asm/mla_za32_s16_vg2x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/mla_za32_s16_vg2x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/mla_za32_s8_vg4x1.c: New file. + * gcc.target/aarch64/sme2/acle-asm/mla_za32_s8_vg4x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/mla_za32_s8_vg4x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/mla_za32_u16_vg2x1.c: New file. + * gcc.target/aarch64/sme2/acle-asm/mla_za32_u16_vg2x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/mla_za32_u16_vg2x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/mla_za32_u8_vg4x1.c: New file. + * gcc.target/aarch64/sme2/acle-asm/mla_za32_u8_vg4x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/mla_za32_u8_vg4x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/mla_za64_f64_vg1x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/mla_za64_f64_vg1x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/mla_za64_s16_vg4x1.c: New file. + * gcc.target/aarch64/sme2/acle-asm/mla_za64_s16_vg4x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/mla_za64_s16_vg4x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/mla_za64_u16_vg4x1.c: New file. + * gcc.target/aarch64/sme2/acle-asm/mla_za64_u16_vg4x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/mla_za64_u16_vg4x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/mls_lane_za32_bf16_vg2x1.c: New file. + * gcc.target/aarch64/sme2/acle-asm/mls_lane_za32_bf16_vg2x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/mls_lane_za32_bf16_vg2x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/mls_lane_za32_f16_vg2x1.c: New file. + * gcc.target/aarch64/sme2/acle-asm/mls_lane_za32_f16_vg2x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/mls_lane_za32_f16_vg2x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/mls_lane_za32_f32_vg1x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/mls_lane_za32_f32_vg1x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/mls_lane_za32_s16_vg2x1.c: New file. + * gcc.target/aarch64/sme2/acle-asm/mls_lane_za32_s16_vg2x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/mls_lane_za32_s16_vg2x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/mls_lane_za32_s8_vg4x1.c: New file. + * gcc.target/aarch64/sme2/acle-asm/mls_lane_za32_s8_vg4x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/mls_lane_za32_s8_vg4x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/mls_lane_za32_u16_vg2x1.c: New file. + * gcc.target/aarch64/sme2/acle-asm/mls_lane_za32_u16_vg2x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/mls_lane_za32_u16_vg2x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/mls_lane_za32_u8_vg4x1.c: New file. + * gcc.target/aarch64/sme2/acle-asm/mls_lane_za32_u8_vg4x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/mls_lane_za32_u8_vg4x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/mls_lane_za64_f64_vg1x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/mls_lane_za64_f64_vg1x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/mls_lane_za64_s16_vg4x1.c: New file. + * gcc.target/aarch64/sme2/acle-asm/mls_lane_za64_s16_vg4x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/mls_lane_za64_s16_vg4x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/mls_lane_za64_u16_vg4x1.c: New file. + * gcc.target/aarch64/sme2/acle-asm/mls_lane_za64_u16_vg4x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/mls_lane_za64_u16_vg4x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/mls_za32_bf16_vg2x1.c: New file. + * gcc.target/aarch64/sme2/acle-asm/mls_za32_bf16_vg2x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/mls_za32_bf16_vg2x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/mls_za32_f16_vg2x1.c: New file. + * gcc.target/aarch64/sme2/acle-asm/mls_za32_f16_vg2x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/mls_za32_f16_vg2x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/mls_za32_f32_vg1x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/mls_za32_f32_vg1x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/mls_za32_s16_vg2x1.c: New file. + * gcc.target/aarch64/sme2/acle-asm/mls_za32_s16_vg2x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/mls_za32_s16_vg2x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/mls_za32_s8_vg4x1.c: New file. + * gcc.target/aarch64/sme2/acle-asm/mls_za32_s8_vg4x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/mls_za32_s8_vg4x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/mls_za32_u16_vg2x1.c: New file. + * gcc.target/aarch64/sme2/acle-asm/mls_za32_u16_vg2x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/mls_za32_u16_vg2x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/mls_za32_u8_vg4x1.c: New file. + * gcc.target/aarch64/sme2/acle-asm/mls_za32_u8_vg4x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/mls_za32_u8_vg4x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/mls_za64_f64_vg1x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/mls_za64_f64_vg1x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/mls_za64_s16_vg4x1.c: New file. + * gcc.target/aarch64/sme2/acle-asm/mls_za64_s16_vg4x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/mls_za64_s16_vg4x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/mls_za64_u16_vg4x1.c: New file. + * gcc.target/aarch64/sme2/acle-asm/mls_za64_u16_vg4x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/mls_za64_u16_vg4x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/mopa_za32.c: New file. + * gcc.target/aarch64/sme2/acle-asm/mops_za32.c: New file. + * gcc.target/aarch64/sme2/acle-asm/pext_c16.c: New file. + * gcc.target/aarch64/sme2/acle-asm/pext_c16_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/pext_c32.c: New file. + * gcc.target/aarch64/sme2/acle-asm/pext_c32_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/pext_c64.c: New file. + * gcc.target/aarch64/sme2/acle-asm/pext_c64_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/pext_c8.c: New file. + * gcc.target/aarch64/sme2/acle-asm/pext_c8_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/pfalse_c.c: New file. + * gcc.target/aarch64/sme2/acle-asm/psel_b16.c: New file. + * gcc.target/aarch64/sme2/acle-asm/psel_b32.c: New file. + * gcc.target/aarch64/sme2/acle-asm/psel_b64.c: New file. + * gcc.target/aarch64/sme2/acle-asm/psel_b8.c: New file. + * gcc.target/aarch64/sme2/acle-asm/psel_c16.c: New file. + * gcc.target/aarch64/sme2/acle-asm/psel_c32.c: New file. + * gcc.target/aarch64/sme2/acle-asm/psel_c64.c: New file. + * gcc.target/aarch64/sme2/acle-asm/psel_c8.c: New file. + * gcc.target/aarch64/sme2/acle-asm/ptrue_c16.c: New file. + * gcc.target/aarch64/sme2/acle-asm/ptrue_c32.c: New file. + * gcc.target/aarch64/sme2/acle-asm/ptrue_c64.c: New file. + * gcc.target/aarch64/sme2/acle-asm/ptrue_c8.c: New file. + * gcc.target/aarch64/sme2/acle-asm/qcvt_s16_s32_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/qcvt_s16_s64_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/qcvt_s8_s32_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/qcvt_u16_s32_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/qcvt_u16_s64_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/qcvt_u16_u32_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/qcvt_u16_u64_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/qcvt_u8_s32_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/qcvt_u8_u32_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/qcvtn_s16_s32_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/qcvtn_s16_s64_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/qcvtn_s8_s32_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/qcvtn_u16_s32_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/qcvtn_u16_s64_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/qcvtn_u16_u32_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/qcvtn_u16_u64_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/qcvtn_u8_s32_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/qcvtn_u8_u32_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/qdmulh_s16_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/qdmulh_s16_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/qdmulh_s32_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/qdmulh_s32_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/qdmulh_s64_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/qdmulh_s64_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/qdmulh_s8_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/qdmulh_s8_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/qrshr_s16_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/qrshr_s16_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/qrshr_s8_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/qrshr_u16_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/qrshr_u16_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/qrshr_u8_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/qrshrn_s16_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/qrshrn_s16_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/qrshrn_s8_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/qrshrn_u16_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/qrshrn_u16_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/qrshrn_u8_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/qrshru_u16_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/qrshru_u16_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/qrshru_u8_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/qrshrun_u16_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/qrshrun_u16_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/qrshrun_u8_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/read_hor_za16_vg2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/read_hor_za16_vg4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/read_hor_za32_vg2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/read_hor_za32_vg4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/read_hor_za64_vg2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/read_hor_za64_vg4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/read_hor_za8_vg2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/read_hor_za8_vg4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/read_ver_za16_vg2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/read_ver_za16_vg4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/read_ver_za32_vg2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/read_ver_za32_vg4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/read_ver_za64_vg2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/read_ver_za64_vg4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/read_ver_za8_vg2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/read_ver_za8_vg4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/read_za16_vg1x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/read_za16_vg1x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/read_za32_vg1x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/read_za32_vg1x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/read_za64_vg1x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/read_za64_vg1x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/read_za8_vg1x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/read_za8_vg1x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/rinta_s32_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/rinta_s32_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/rintm_u32_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/rintm_u32_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/rintn_u32_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/rintn_u32_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/rintp_u32_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/rintp_u32_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/rshl_s16_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/rshl_s16_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/rshl_s32_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/rshl_s32_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/rshl_s64_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/rshl_s64_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/rshl_s8_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/rshl_s8_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/rshl_u16_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/rshl_u16_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/rshl_u32_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/rshl_u32_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/rshl_u64_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/rshl_u64_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/rshl_u8_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/rshl_u8_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/sel_bf16_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/sel_bf16_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/sel_f16_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/sel_f16_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/sel_f32_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/sel_f32_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/sel_f64_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/sel_f64_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/sel_s16_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/sel_s16_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/sel_s32_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/sel_s32_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/sel_s64_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/sel_s64_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/sel_s8_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/sel_s8_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/sel_u16_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/sel_u16_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/sel_u32_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/sel_u32_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/sel_u64_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/sel_u64_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/sel_u8_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/sel_u8_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/st1_bf16_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/st1_bf16_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/st1_f16_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/st1_f16_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/st1_f32_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/st1_f32_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/st1_f64_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/st1_f64_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/st1_s16_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/st1_s16_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/st1_s32_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/st1_s32_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/st1_s64_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/st1_s64_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/st1_s8_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/st1_s8_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/st1_u16_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/st1_u16_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/st1_u32_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/st1_u32_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/st1_u64_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/st1_u64_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/st1_u8_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/st1_u8_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/stnt1_bf16_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/stnt1_bf16_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/stnt1_f16_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/stnt1_f16_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/stnt1_f32_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/stnt1_f32_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/stnt1_f64_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/stnt1_f64_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/stnt1_s16_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/stnt1_s16_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/stnt1_s32_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/stnt1_s32_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/stnt1_s64_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/stnt1_s64_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/stnt1_s8_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/stnt1_s8_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/stnt1_u16_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/stnt1_u16_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/stnt1_u32_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/stnt1_u32_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/stnt1_u64_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/stnt1_u64_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/stnt1_u8_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/stnt1_u8_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/str_zt.c: New file. + * gcc.target/aarch64/sme2/acle-asm/sub_write_za32_s32_vg1x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/sub_write_za32_s32_vg1x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/sub_write_za32_u32_vg1x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/sub_write_za32_u32_vg1x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/sub_write_za64_s64_vg1x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/sub_write_za64_s64_vg1x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/sub_write_za64_u64_vg1x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/sub_write_za64_u64_vg1x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/sub_za32_f32_vg1x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/sub_za32_f32_vg1x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/sub_za32_s32_vg1x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/sub_za32_s32_vg1x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/sub_za32_u32_vg1x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/sub_za32_u32_vg1x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/sub_za64_f64_vg1x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/sub_za64_f64_vg1x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/sub_za64_s64_vg1x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/sub_za64_s64_vg1x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/sub_za64_u64_vg1x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/sub_za64_u64_vg1x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/sudot_lane_za32_s8_vg1x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/sudot_lane_za32_s8_vg1x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/sudot_za32_s8_vg1x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/sudot_za32_s8_vg1x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/suvdot_lane_za32_s8_vg1x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/test_sme2_acle.h: New file. + * gcc.target/aarch64/sme2/acle-asm/unpk_s16_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/unpk_s16_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/unpk_s32_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/unpk_s32_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/unpk_s8_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/unpk_s8_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/unpk_u16_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/unpk_u16_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/unpk_u32_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/unpk_u32_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/unpk_u8_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/unpk_u8_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/usdot_lane_za32_u8_vg1x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/usdot_lane_za32_u8_vg1x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/usdot_za32_u8_vg1x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/usdot_za32_u8_vg1x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/usvdot_lane_za32_u8_vg1x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/uzp_bf16_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/uzp_bf16_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/uzp_f16_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/uzp_f16_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/uzp_f32_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/uzp_f32_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/uzp_f64_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/uzp_f64_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/uzp_s16_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/uzp_s16_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/uzp_s32_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/uzp_s32_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/uzp_s64_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/uzp_s64_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/uzp_s8_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/uzp_s8_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/uzp_u16_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/uzp_u16_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/uzp_u32_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/uzp_u32_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/uzp_u64_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/uzp_u64_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/uzp_u8_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/uzp_u8_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/uzpq_bf16_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/uzpq_bf16_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/uzpq_f16_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/uzpq_f16_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/uzpq_f32_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/uzpq_f32_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/uzpq_f64_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/uzpq_f64_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/uzpq_s16_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/uzpq_s16_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/uzpq_s32_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/uzpq_s32_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/uzpq_s64_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/uzpq_s64_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/uzpq_s8_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/uzpq_s8_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/uzpq_u16_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/uzpq_u16_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/uzpq_u32_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/uzpq_u32_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/uzpq_u64_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/uzpq_u64_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/uzpq_u8_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/uzpq_u8_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/vdot_lane_za32_bf16_vg1x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/vdot_lane_za32_f16_vg1x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/vdot_lane_za32_s16_vg1x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/vdot_lane_za32_s8_vg1x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/vdot_lane_za32_u16_vg1x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/vdot_lane_za32_u8_vg1x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/vdot_lane_za64_s16_vg1x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/vdot_lane_za64_u16_vg1x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/whilege_b16.c: New file. + * gcc.target/aarch64/sme2/acle-asm/whilege_b32.c: New file. + * gcc.target/aarch64/sme2/acle-asm/whilege_b64.c: New file. + * gcc.target/aarch64/sme2/acle-asm/whilege_b8.c: New file. + * gcc.target/aarch64/sme2/acle-asm/whilege_c16.c: New file. + * gcc.target/aarch64/sme2/acle-asm/whilege_c32.c: New file. + * gcc.target/aarch64/sme2/acle-asm/whilege_c64.c: New file. + * gcc.target/aarch64/sme2/acle-asm/whilege_c8.c: New file. + * gcc.target/aarch64/sme2/acle-asm/whilegt_b16.c: New file. + * gcc.target/aarch64/sme2/acle-asm/whilegt_b32.c: New file. + * gcc.target/aarch64/sme2/acle-asm/whilegt_b64.c: New file. + * gcc.target/aarch64/sme2/acle-asm/whilegt_b8.c: New file. + * gcc.target/aarch64/sme2/acle-asm/whilegt_c16.c: New file. + * gcc.target/aarch64/sme2/acle-asm/whilegt_c32.c: New file. + * gcc.target/aarch64/sme2/acle-asm/whilegt_c64.c: New file. + * gcc.target/aarch64/sme2/acle-asm/whilegt_c8.c: New file. + * gcc.target/aarch64/sme2/acle-asm/whilele_b16.c: New file. + * gcc.target/aarch64/sme2/acle-asm/whilele_b32.c: New file. + * gcc.target/aarch64/sme2/acle-asm/whilele_b64.c: New file. + * gcc.target/aarch64/sme2/acle-asm/whilele_b8.c: New file. + * gcc.target/aarch64/sme2/acle-asm/whilele_c16.c: New file. + * gcc.target/aarch64/sme2/acle-asm/whilele_c32.c: New file. + * gcc.target/aarch64/sme2/acle-asm/whilele_c64.c: New file. + * gcc.target/aarch64/sme2/acle-asm/whilele_c8.c: New file. + * gcc.target/aarch64/sme2/acle-asm/whilelt_b16.c: New file. + * gcc.target/aarch64/sme2/acle-asm/whilelt_b32.c: New file. + * gcc.target/aarch64/sme2/acle-asm/whilelt_b64.c: New file. + * gcc.target/aarch64/sme2/acle-asm/whilelt_b8.c: New file. + * gcc.target/aarch64/sme2/acle-asm/whilelt_c16.c: New file. + * gcc.target/aarch64/sme2/acle-asm/whilelt_c32.c: New file. + * gcc.target/aarch64/sme2/acle-asm/whilelt_c64.c: New file. + * gcc.target/aarch64/sme2/acle-asm/whilelt_c8.c: New file. + * gcc.target/aarch64/sme2/acle-asm/write_hor_za16_vg2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/write_hor_za16_vg4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/write_hor_za32_vg2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/write_hor_za32_vg4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/write_hor_za64_vg2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/write_hor_za64_vg4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/write_hor_za8_vg2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/write_hor_za8_vg4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/write_ver_za16_vg2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/write_ver_za16_vg4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/write_ver_za32_vg2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/write_ver_za32_vg4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/write_ver_za64_vg2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/write_ver_za64_vg4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/write_ver_za8_vg2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/write_ver_za8_vg4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/write_za16_vg1x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/write_za16_vg1x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/write_za32_vg1x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/write_za32_vg1x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/write_za64_vg1x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/write_za64_vg1x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/write_za8_vg1x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/write_za8_vg1x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/zero_zt.c: New file. + * gcc.target/aarch64/sme2/acle-asm/zip_bf16_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/zip_bf16_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/zip_f16_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/zip_f16_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/zip_f32_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/zip_f32_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/zip_f64_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/zip_f64_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/zip_s16_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/zip_s16_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/zip_s32_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/zip_s32_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/zip_s64_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/zip_s64_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/zip_s8_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/zip_s8_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/zip_u16_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/zip_u16_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/zip_u32_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/zip_u32_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/zip_u64_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/zip_u64_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/zip_u8_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/zip_u8_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/zipq_bf16_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/zipq_bf16_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/zipq_f16_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/zipq_f16_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/zipq_f32_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/zipq_f32_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/zipq_f64_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/zipq_f64_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/zipq_s16_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/zipq_s16_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/zipq_s32_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/zipq_s32_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/zipq_s64_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/zipq_s64_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/zipq_s8_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/zipq_s8_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/zipq_u16_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/zipq_u16_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/zipq_u32_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/zipq_u32_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/zipq_u64_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/zipq_u64_x4.c: New file. + * gcc.target/aarch64/sme2/acle-asm/zipq_u8_x2.c: New file. + * gcc.target/aarch64/sme2/acle-asm/zipq_u8_x4.c: New file. + * gcc.target/aarch64/sve/acle/asm/get2_b.c: New file. + * gcc.target/aarch64/sve/acle/asm/set2_b.c: New file. + * gcc.target/aarch64/sve/acle/general-c/binary_int_opt_single_n_1.c: New file. + * gcc.target/aarch64/sve/acle/general-c/binary_int_opt_single_n_2.c: New file. + * gcc.target/aarch64/sve/acle/general-c/binary_opt_single_n_1.c: New file. + * gcc.target/aarch64/sve/acle/general-c/binary_opt_single_n_2.c: New file. + * gcc.target/aarch64/sve/acle/general-c/binary_single_1.c: New file. + * gcc.target/aarch64/sve/acle/general-c/binary_za_slice_int_opt_single_1.c: New file. + * gcc.target/aarch64/sve/acle/general-c/binary_za_slice_lane_1.c: New file. + * gcc.target/aarch64/sve/acle/general-c/binary_za_slice_lane_2.c: New file. + * gcc.target/aarch64/sve/acle/general-c/binary_za_slice_lane_3.c: New file. + * gcc.target/aarch64/sve/acle/general-c/binary_za_slice_lane_4.c: New file. + * gcc.target/aarch64/sve/acle/general-c/binary_za_slice_opt_single_1.c: New file. + * gcc.target/aarch64/sve/acle/general-c/binary_za_slice_opt_single_2.c: New file. + * gcc.target/aarch64/sve/acle/general-c/binary_za_slice_opt_single_3.c: New file. + * gcc.target/aarch64/sve/acle/general-c/binary_za_slice_uint_opt_single_1.c: New file. + * gcc.target/aarch64/sve/acle/general-c/binaryxn_1.c: New file. + * gcc.target/aarch64/sve/acle/general-c/binaryxn_2.c: New file. + * gcc.target/aarch64/sve/acle/general-c/clamp_1.c: New file. + * gcc.target/aarch64/sve/acle/general-c/compare_scalar_count_1.c: New file. + * gcc.target/aarch64/sve/acle/general-c/dot_za_slice_int_lane_1.c: New file. + * gcc.target/aarch64/sve/acle/general-c/dot_za_slice_lane_1.c: New file. + * gcc.target/aarch64/sve/acle/general-c/dot_za_slice_lane_2.c: New file. + * gcc.target/aarch64/sve/acle/general-c/dot_za_slice_uint_lane_1.c: New file. + * gcc.target/aarch64/sve/acle/general-c/shift_right_imm_narrowxn_1.c: New file. + * gcc.target/aarch64/sve/acle/general-c/storexn_1.c: New file. + * gcc.target/aarch64/sve/acle/general-c/ternary_qq_or_011_lane_1.c: New file. + * gcc.target/aarch64/sve/acle/general-c/unary_convertxn_1.c: New file. + * gcc.target/aarch64/sve/acle/general-c/unary_za_slice_1.c: New file. + * gcc.target/aarch64/sve/acle/general-c/unary_za_slice_2.c: New file. + * gcc.target/aarch64/sve/acle/general-c/unary_za_slice_3.c: New file. + * gcc.target/aarch64/sve/acle/general-c/unaryxn_1.c: New file. + * gcc.target/aarch64/sve/acle/general-c/write_za_1.c: New file. + * gcc.target/aarch64/sve/acle/general-c/write_za_slice_1.c: New file. + +2023-12-05 Richard Sandiford + + * gcc.target/aarch64/sme/zt0_state_1.c: New test. + * gcc.target/aarch64/sme/zt0_state_2.c: Likewise. + * gcc.target/aarch64/sme/zt0_state_3.c: Likewise. + * gcc.target/aarch64/sme/zt0_state_4.c: Likewise. + * gcc.target/aarch64/sme/zt0_state_5.c: Likewise. + * gcc.target/aarch64/sme/zt0_state_6.c: Likewise. + +2023-12-05 Richard Sandiford + + * gcc.target/aarch64/sve/pcs/struct_3_128.c (test_nonpst3): Adjust + stack offsets. + (ret_nonpst3): Remove XFAIL. + * gcc.target/aarch64/sve/acle/general-c/svboolx2_1.c: New test. + +2023-12-05 Richard Sandiford + + * g++.target/aarch64/sve/acle/general-c++/mangle_1.C: Add test + for svcount_t. + * g++.target/aarch64/sve/acle/general-c++/mangle_2.C: Likewise. + * g++.target/aarch64/sve/acle/general-c++/svcount_1.C: New test. + * gcc.target/aarch64/sve/acle/asm/test_sve_acle.h (TEST_DUAL_P) + (TEST_DUAL_P_REV): New macros. + * gcc.target/aarch64/sve/acle/asm/reinterpret_b.c: New test. + * gcc.target/aarch64/sve/acle/general-c/load_1.c: Test passing + an svcount_t. + * gcc.target/aarch64/sve/acle/general-c/svcount_1.c: New test. + * gcc.target/aarch64/sve/acle/general-c/unary_convert_1.c: Test + reinterprets involving svcount_t. + * gcc.target/aarch64/sve/acle/general/attributes_7.c: Test svcount_t. + * gcc.target/aarch64/sve/pcs/annotate_1.c: Likewise. + * gcc.target/aarch64/sve/pcs/annotate_2.c: Likewise. + * gcc.target/aarch64/sve/pcs/args_12.c: New test. + +2023-12-05 Richard Sandiford + + * lib/target-supports.exp (check_effective_target_aarch64_sme2): New + target test. + (check_effective_target_aarch64_asm_sme2_ok): Likewise. + +2023-12-05 Richard Sandiford + + * gcc.target/aarch64/sme/sibcall_1.c: New test. + * gcc.target/aarch64/sme/sibcall_2.c: Likewise. + * gcc.target/aarch64/sme/sibcall_3.c: Likewise. + * gcc.target/aarch64/sme/sibcall_4.c: Likewise. + * gcc.target/aarch64/sme/sibcall_5.c: Likewise. + * gcc.target/aarch64/sme/sibcall_6.c: Likewise. + * gcc.target/aarch64/sme/sibcall_7.c: Likewise. + * gcc.target/aarch64/sme/sibcall_8.c: Likewise. + +2023-12-05 Richard Sandiford + + * gcc.target/aarch64/sme/inlining_1.c: New test. + * gcc.target/aarch64/sme/inlining_2.c: Likewise. + * gcc.target/aarch64/sme/inlining_3.c: Likewise. + * gcc.target/aarch64/sme/inlining_4.c: Likewise. + * gcc.target/aarch64/sme/inlining_5.c: Likewise. + * gcc.target/aarch64/sme/inlining_6.c: Likewise. + * gcc.target/aarch64/sme/inlining_7.c: Likewise. + * gcc.target/aarch64/sme/inlining_8.c: Likewise. + * gcc.target/aarch64/sme/inlining_10.c: New file. + * gcc.target/aarch64/sme/inlining_11.c: New file. + * gcc.target/aarch64/sme/inlining_12.c: New file. + * gcc.target/aarch64/sme/inlining_13.c: New file. + * gcc.target/aarch64/sme/inlining_14.c: New file. + * gcc.target/aarch64/sme/inlining_15.c: New file. + * gcc.target/aarch64/sme/inlining_9.c: New file. + +2023-12-05 Richard Sandiford + + * g++.target/aarch64/sme/exceptions_2.C: New test. + * gcc.target/aarch64/sme/nonlocal_goto_1.c: Likewise. + * gcc.target/aarch64/sme/nonlocal_goto_2.c: Likewise. + * gcc.target/aarch64/sme/nonlocal_goto_3.c: Likewise. + * gcc.target/aarch64/sme/nonlocal_goto_4.c: Likewise. + * gcc.target/aarch64/sme/nonlocal_goto_5.c: Likewise. + * gcc.target/aarch64/sme/nonlocal_goto_6.c: Likewise. + * gcc.target/aarch64/sme/nonlocal_goto_7.c: Likewise. + +2023-12-05 Richard Sandiford + + * gcc.target/aarch64/sme/locally_streaming_1.c: New test. + * gcc.target/aarch64/sme/locally_streaming_2.c: Likewise. + * gcc.target/aarch64/sme/locally_streaming_3.c: Likewise. + * gcc.target/aarch64/sme/locally_streaming_4.c: Likewise. + * gcc.target/aarch64/sme/keyword_macros_1.c: Add + __arm_locally_streaming. + * g++.target/aarch64/sme/keyword_macros_1.C: Likewise. + +2023-12-05 Richard Sandiford + + * lib/target-supports.exp: Add sme and sme-i16i64 features. + * gcc.target/aarch64/pragma_cpp_predefs_4.c: Test __ARM_FEATURE_SME* + macros. + * gcc.target/aarch64/sve/acle/asm/test_sve_acle.h: Allow functions + to be marked as __arm_streaming, __arm_streaming_compatible, and + __arm_inout("za"). + * g++.target/aarch64/sve/acle/general-c++/func_redef_4.c: Mark the + function as __arm_streaming_compatible. + * g++.target/aarch64/sve/acle/general-c++/func_redef_5.c: Likewise. + * g++.target/aarch64/sve/acle/general-c++/func_redef_7.c: Likewise. + * gcc.target/aarch64/sve/acle/general-c/func_redef_4.c: Likewise. + * gcc.target/aarch64/sve/acle/general-c/func_redef_5.c: Likewise. + * g++.target/aarch64/sme/aarch64-sme-acle-asm.exp: New test harness. + * gcc.target/aarch64/sme/aarch64-sme-acle-asm.exp: Likewise. + * gcc.target/aarch64/sve/acle/general-c/binary_za_int_m_1.c: New test. + * gcc.target/aarch64/sve/acle/general-c/binary_za_m_1.c: Likewise. + * gcc.target/aarch64/sve/acle/general-c/binary_za_m_2.c: Likewise. + * gcc.target/aarch64/sve/acle/general-c/binary_za_uint_m_1.c: Likewise. + * gcc.target/aarch64/sve/acle/general-c/read_za_m_1.c: Likewise. + * gcc.target/aarch64/sve/acle/general-c/unary_za_m_1.c: Likewise. + * gcc.target/aarch64/sve/acle/general-c/write_za_m_1.c: Likewise. + * gcc.target/aarch64/sme/acle-asm/addha_za32.c: New file. + * gcc.target/aarch64/sme/acle-asm/addha_za64.c: New file. + * gcc.target/aarch64/sme/acle-asm/addva_za32.c: New file. + * gcc.target/aarch64/sme/acle-asm/addva_za64.c: New file. + * gcc.target/aarch64/sme/acle-asm/arm_has_sme_sc.c: New file. + * gcc.target/aarch64/sme/acle-asm/arm_in_streaming_mode_ns.c: New file. + * gcc.target/aarch64/sme/acle-asm/arm_in_streaming_mode_s.c: New file. + * gcc.target/aarch64/sme/acle-asm/arm_in_streaming_mode_sc.c: New file. + * gcc.target/aarch64/sme/acle-asm/cntsb_s.c: New file. + * gcc.target/aarch64/sme/acle-asm/cntsb_sc.c: New file. + * gcc.target/aarch64/sme/acle-asm/cntsd_s.c: New file. + * gcc.target/aarch64/sme/acle-asm/cntsd_sc.c: New file. + * gcc.target/aarch64/sme/acle-asm/cntsh_s.c: New file. + * gcc.target/aarch64/sme/acle-asm/cntsh_sc.c: New file. + * gcc.target/aarch64/sme/acle-asm/cntsw_s.c: New file. + * gcc.target/aarch64/sme/acle-asm/cntsw_sc.c: New file. + * gcc.target/aarch64/sme/acle-asm/ld1_hor_vnum_za128.c: New file. + * gcc.target/aarch64/sme/acle-asm/ld1_hor_vnum_za16.c: New file. + * gcc.target/aarch64/sme/acle-asm/ld1_hor_vnum_za32.c: New file. + * gcc.target/aarch64/sme/acle-asm/ld1_hor_vnum_za64.c: New file. + * gcc.target/aarch64/sme/acle-asm/ld1_hor_vnum_za8.c: New file. + * gcc.target/aarch64/sme/acle-asm/ld1_hor_za128.c: New file. + * gcc.target/aarch64/sme/acle-asm/ld1_hor_za16.c: New file. + * gcc.target/aarch64/sme/acle-asm/ld1_hor_za32.c: New file. + * gcc.target/aarch64/sme/acle-asm/ld1_hor_za64.c: New file. + * gcc.target/aarch64/sme/acle-asm/ld1_hor_za8.c: New file. + * gcc.target/aarch64/sme/acle-asm/ld1_ver_vnum_za128.c: New file. + * gcc.target/aarch64/sme/acle-asm/ld1_ver_vnum_za16.c: New file. + * gcc.target/aarch64/sme/acle-asm/ld1_ver_vnum_za32.c: New file. + * gcc.target/aarch64/sme/acle-asm/ld1_ver_vnum_za64.c: New file. + * gcc.target/aarch64/sme/acle-asm/ld1_ver_vnum_za8.c: New file. + * gcc.target/aarch64/sme/acle-asm/ld1_ver_za128.c: New file. + * gcc.target/aarch64/sme/acle-asm/ld1_ver_za16.c: New file. + * gcc.target/aarch64/sme/acle-asm/ld1_ver_za32.c: New file. + * gcc.target/aarch64/sme/acle-asm/ld1_ver_za64.c: New file. + * gcc.target/aarch64/sme/acle-asm/ld1_ver_za8.c: New file. + * gcc.target/aarch64/sme/acle-asm/ldr_vnum_za_s.c: New file. + * gcc.target/aarch64/sme/acle-asm/ldr_vnum_za_sc.c: New file. + * gcc.target/aarch64/sme/acle-asm/ldr_za_s.c: New file. + * gcc.target/aarch64/sme/acle-asm/ldr_za_sc.c: New file. + * gcc.target/aarch64/sme/acle-asm/mopa_za32.c: New file. + * gcc.target/aarch64/sme/acle-asm/mopa_za64.c: New file. + * gcc.target/aarch64/sme/acle-asm/mops_za32.c: New file. + * gcc.target/aarch64/sme/acle-asm/mops_za64.c: New file. + * gcc.target/aarch64/sme/acle-asm/read_hor_za128.c: New file. + * gcc.target/aarch64/sme/acle-asm/read_hor_za16.c: New file. + * gcc.target/aarch64/sme/acle-asm/read_hor_za32.c: New file. + * gcc.target/aarch64/sme/acle-asm/read_hor_za64.c: New file. + * gcc.target/aarch64/sme/acle-asm/read_hor_za8.c: New file. + * gcc.target/aarch64/sme/acle-asm/read_ver_za128.c: New file. + * gcc.target/aarch64/sme/acle-asm/read_ver_za16.c: New file. + * gcc.target/aarch64/sme/acle-asm/read_ver_za32.c: New file. + * gcc.target/aarch64/sme/acle-asm/read_ver_za64.c: New file. + * gcc.target/aarch64/sme/acle-asm/read_ver_za8.c: New file. + * gcc.target/aarch64/sme/acle-asm/st1_hor_vnum_za128.c: New file. + * gcc.target/aarch64/sme/acle-asm/st1_hor_vnum_za16.c: New file. + * gcc.target/aarch64/sme/acle-asm/st1_hor_vnum_za32.c: New file. + * gcc.target/aarch64/sme/acle-asm/st1_hor_vnum_za64.c: New file. + * gcc.target/aarch64/sme/acle-asm/st1_hor_vnum_za8.c: New file. + * gcc.target/aarch64/sme/acle-asm/st1_hor_za128.c: New file. + * gcc.target/aarch64/sme/acle-asm/st1_hor_za16.c: New file. + * gcc.target/aarch64/sme/acle-asm/st1_hor_za32.c: New file. + * gcc.target/aarch64/sme/acle-asm/st1_hor_za64.c: New file. + * gcc.target/aarch64/sme/acle-asm/st1_hor_za8.c: New file. + * gcc.target/aarch64/sme/acle-asm/st1_ver_vnum_za128.c: New file. + * gcc.target/aarch64/sme/acle-asm/st1_ver_vnum_za16.c: New file. + * gcc.target/aarch64/sme/acle-asm/st1_ver_vnum_za32.c: New file. + * gcc.target/aarch64/sme/acle-asm/st1_ver_vnum_za64.c: New file. + * gcc.target/aarch64/sme/acle-asm/st1_ver_vnum_za8.c: New file. + * gcc.target/aarch64/sme/acle-asm/st1_ver_za128.c: New file. + * gcc.target/aarch64/sme/acle-asm/st1_ver_za16.c: New file. + * gcc.target/aarch64/sme/acle-asm/st1_ver_za32.c: New file. + * gcc.target/aarch64/sme/acle-asm/st1_ver_za64.c: New file. + * gcc.target/aarch64/sme/acle-asm/st1_ver_za8.c: New file. + * gcc.target/aarch64/sme/acle-asm/str_vnum_za_s.c: New file. + * gcc.target/aarch64/sme/acle-asm/str_vnum_za_sc.c: New file. + * gcc.target/aarch64/sme/acle-asm/str_za_s.c: New file. + * gcc.target/aarch64/sme/acle-asm/str_za_sc.c: New file. + * gcc.target/aarch64/sme/acle-asm/sumopa_za32.c: New file. + * gcc.target/aarch64/sme/acle-asm/sumopa_za64.c: New file. + * gcc.target/aarch64/sme/acle-asm/sumops_za32.c: New file. + * gcc.target/aarch64/sme/acle-asm/sumops_za64.c: New file. + * gcc.target/aarch64/sme/acle-asm/test_sme_acle.h: New file. + * gcc.target/aarch64/sme/acle-asm/undef_za.c: New file. + * gcc.target/aarch64/sme/acle-asm/usmopa_za32.c: New file. + * gcc.target/aarch64/sme/acle-asm/usmopa_za64.c: New file. + * gcc.target/aarch64/sme/acle-asm/usmops_za32.c: New file. + * gcc.target/aarch64/sme/acle-asm/usmops_za64.c: New file. + * gcc.target/aarch64/sme/acle-asm/write_hor_za128.c: New file. + * gcc.target/aarch64/sme/acle-asm/write_hor_za16.c: New file. + * gcc.target/aarch64/sme/acle-asm/write_hor_za32.c: New file. + * gcc.target/aarch64/sme/acle-asm/write_hor_za64.c: New file. + * gcc.target/aarch64/sme/acle-asm/write_hor_za8.c: New file. + * gcc.target/aarch64/sme/acle-asm/write_ver_za128.c: New file. + * gcc.target/aarch64/sme/acle-asm/write_ver_za16.c: New file. + * gcc.target/aarch64/sme/acle-asm/write_ver_za32.c: New file. + * gcc.target/aarch64/sme/acle-asm/write_ver_za64.c: New file. + * gcc.target/aarch64/sme/acle-asm/write_ver_za8.c: New file. + * gcc.target/aarch64/sme/acle-asm/zero_mask_za.c: New file. + * gcc.target/aarch64/sme/acle-asm/zero_za.c: New file. + +2023-12-05 Richard Sandiford + + * gcc.target/aarch64/sme/za_state_1.c: New test. + * gcc.target/aarch64/sme/za_state_2.c: Likewise. + * gcc.target/aarch64/sme/za_state_3.c: Likewise. + * gcc.target/aarch64/sme/za_state_4.c: Likewise. + * gcc.target/aarch64/sme/za_state_5.c: Likewise. + * gcc.target/aarch64/sme/za_state_6.c: Likewise. + * g++.target/aarch64/sme/exceptions_1.C: Likewise. + * gcc.target/aarch64/sme/keyword_macros_1.c: Add ZA macros. + * g++.target/aarch64/sme/keyword_macros_1.C: Likewise. + +2023-12-05 Richard Sandiford + + * gcc.target/aarch64/sme/call_sm_switch_1.c: New test. + * gcc.target/aarch64/sme/call_sm_switch_2.c: Likewise. + * gcc.target/aarch64/sme/call_sm_switch_3.c: Likewise. + * gcc.target/aarch64/sme/call_sm_switch_4.c: Likewise. + * gcc.target/aarch64/sme/call_sm_switch_5.c: Likewise. + * gcc.target/aarch64/sme/call_sm_switch_6.c: Likewise. + * gcc.target/aarch64/sme/call_sm_switch_7.c: Likewise. + * gcc.target/aarch64/sme/call_sm_switch_8.c: Likewise. + * gcc.target/aarch64/sme/call_sm_switch_9.c: Likewise. + * gcc.target/aarch64/sme/call_sm_switch_10.c: Likewise. + +2023-12-05 Richard Sandiford + + * g++.target/aarch64/sve/aarch64-ssve.exp: New harness. + * g++.target/aarch64/sve/acle/aarch64-sve-acle-asm.exp: Add + -DSTREAMING_COMPATIBLE to the list of options. + * g++.target/aarch64/sve2/acle/aarch64-sve2-acle-asm.exp: Likewise. + * gcc.target/aarch64/sve/acle/aarch64-sve-acle-asm.exp: Likewise. + * gcc.target/aarch64/sve2/acle/aarch64-sve2-acle-asm.exp: Likewise. + Fix pasto in variable name. + * gcc.target/aarch64/sve/acle/asm/test_sve_acle.h: Mark functions + as streaming-compatible if STREAMING_COMPATIBLE is defined. + * gcc.target/aarch64/sve/acle/asm/adda_f16.c: Disable for + streaming-compatible code. + * gcc.target/aarch64/sve/acle/asm/adda_f32.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/adda_f64.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/adrb.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/adrd.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/adrh.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/adrw.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/bfmmla_f32.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/compact_f32.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/compact_f64.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/compact_s32.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/compact_s64.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/compact_u32.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/compact_u64.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/expa_f16.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/expa_f32.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/expa_f64.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/ld1_gather_f32.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/ld1_gather_f64.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/ld1_gather_s32.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/ld1_gather_s64.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/ld1_gather_u32.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/ld1_gather_u64.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/ld1ro_bf16.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/ld1ro_f16.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/ld1ro_f32.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/ld1ro_f64.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/ld1ro_s16.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/ld1ro_s32.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/ld1ro_s64.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/ld1ro_s8.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/ld1ro_u16.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/ld1ro_u32.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/ld1ro_u64.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/ld1ro_u8.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/ld1sb_gather_s32.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/ld1sb_gather_s64.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/ld1sb_gather_u32.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/ld1sb_gather_u64.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/ld1sh_gather_s32.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/ld1sh_gather_s64.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/ld1sh_gather_u32.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/ld1sh_gather_u64.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/ld1sw_gather_s64.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/ld1sw_gather_u64.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/ld1ub_gather_s32.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/ld1ub_gather_s64.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/ld1ub_gather_u32.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/ld1ub_gather_u64.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/ld1uh_gather_s32.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/ld1uh_gather_s64.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/ld1uh_gather_u32.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/ld1uh_gather_u64.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/ld1uw_gather_s64.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/ld1uw_gather_u64.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/ldff1_bf16.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/ldff1_f16.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/ldff1_f32.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/ldff1_f64.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/ldff1_gather_f32.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/ldff1_gather_f64.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/ldff1_gather_s32.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/ldff1_gather_s64.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/ldff1_gather_u32.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/ldff1_gather_u64.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/ldff1_s16.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/ldff1_s32.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/ldff1_s64.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/ldff1_s8.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/ldff1_u16.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/ldff1_u32.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/ldff1_u64.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/ldff1_u8.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/ldff1sb_gather_s32.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/ldff1sb_gather_s64.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/ldff1sb_gather_u32.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/ldff1sb_gather_u64.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/ldff1sb_s16.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/ldff1sb_s32.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/ldff1sb_s64.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/ldff1sb_u16.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/ldff1sb_u32.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/ldff1sb_u64.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/ldff1sh_gather_s32.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/ldff1sh_gather_s64.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/ldff1sh_gather_u32.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/ldff1sh_gather_u64.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/ldff1sh_s32.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/ldff1sh_s64.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/ldff1sh_u32.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/ldff1sh_u64.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/ldff1sw_gather_s64.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/ldff1sw_gather_u64.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/ldff1sw_s64.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/ldff1sw_u64.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/ldff1ub_gather_s32.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/ldff1ub_gather_s64.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/ldff1ub_gather_u32.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/ldff1ub_gather_u64.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/ldff1ub_s16.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/ldff1ub_s32.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/ldff1ub_s64.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/ldff1ub_u16.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/ldff1ub_u32.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/ldff1ub_u64.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/ldff1uh_gather_s32.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/ldff1uh_gather_s64.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/ldff1uh_gather_u32.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/ldff1uh_gather_u64.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/ldff1uh_s32.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/ldff1uh_s64.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/ldff1uh_u32.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/ldff1uh_u64.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/ldff1uw_gather_s64.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/ldff1uw_gather_u64.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/ldff1uw_s64.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/ldff1uw_u64.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/ldnf1_bf16.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/ldnf1_f16.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/ldnf1_f32.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/ldnf1_f64.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/ldnf1_s16.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/ldnf1_s32.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/ldnf1_s64.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/ldnf1_s8.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/ldnf1_u16.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/ldnf1_u32.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/ldnf1_u64.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/ldnf1_u8.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/ldnf1sb_s16.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/ldnf1sb_s32.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/ldnf1sb_s64.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/ldnf1sb_u16.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/ldnf1sb_u32.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/ldnf1sb_u64.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/ldnf1sh_s32.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/ldnf1sh_s64.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/ldnf1sh_u32.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/ldnf1sh_u64.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/ldnf1sw_s64.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/ldnf1sw_u64.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/ldnf1ub_s16.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/ldnf1ub_s32.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/ldnf1ub_s64.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/ldnf1ub_u16.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/ldnf1ub_u32.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/ldnf1ub_u64.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/ldnf1uh_s32.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/ldnf1uh_s64.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/ldnf1uh_u32.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/ldnf1uh_u64.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/ldnf1uw_s64.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/ldnf1uw_u64.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/mmla_f32.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/mmla_f64.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/mmla_s32.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/mmla_u32.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/prfb_gather.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/prfd_gather.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/prfh_gather.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/prfw_gather.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/rdffr_1.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/st1_scatter_f32.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/st1_scatter_f64.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/st1_scatter_s32.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/st1_scatter_s64.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/st1_scatter_u32.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/st1_scatter_u64.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/st1b_scatter_s32.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/st1b_scatter_s64.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/st1b_scatter_u32.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/st1b_scatter_u64.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/st1h_scatter_s32.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/st1h_scatter_s64.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/st1h_scatter_u32.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/st1h_scatter_u64.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/st1w_scatter_s64.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/st1w_scatter_u64.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/tmad_f16.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/tmad_f32.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/tmad_f64.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/tsmul_f16.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/tsmul_f32.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/tsmul_f64.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/tssel_f16.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/tssel_f32.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/tssel_f64.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/usmmla_s32.c: Likewise. + * gcc.target/aarch64/sve2/acle/asm/aesd_u8.c: Likewise. + * gcc.target/aarch64/sve2/acle/asm/aese_u8.c: Likewise. + * gcc.target/aarch64/sve2/acle/asm/aesimc_u8.c: Likewise. + * gcc.target/aarch64/sve2/acle/asm/aesmc_u8.c: Likewise. + * gcc.target/aarch64/sve2/acle/asm/bdep_u16.c: Likewise. + * gcc.target/aarch64/sve2/acle/asm/bdep_u32.c: Likewise. + * gcc.target/aarch64/sve2/acle/asm/bdep_u64.c: Likewise. + * gcc.target/aarch64/sve2/acle/asm/bdep_u8.c: Likewise. + * gcc.target/aarch64/sve2/acle/asm/bext_u16.c: Likewise. + * gcc.target/aarch64/sve2/acle/asm/bext_u32.c: Likewise. + * gcc.target/aarch64/sve2/acle/asm/bext_u64.c: Likewise. + * gcc.target/aarch64/sve2/acle/asm/bext_u8.c: Likewise. + * gcc.target/aarch64/sve2/acle/asm/bgrp_u16.c: Likewise. + * gcc.target/aarch64/sve2/acle/asm/bgrp_u32.c: Likewise. + * gcc.target/aarch64/sve2/acle/asm/bgrp_u64.c: Likewise. + * gcc.target/aarch64/sve2/acle/asm/bgrp_u8.c: Likewise. + * gcc.target/aarch64/sve2/acle/asm/histcnt_s32.c: Likewise. + * gcc.target/aarch64/sve2/acle/asm/histcnt_s64.c: Likewise. + * gcc.target/aarch64/sve2/acle/asm/histcnt_u32.c: Likewise. + * gcc.target/aarch64/sve2/acle/asm/histcnt_u64.c: Likewise. + * gcc.target/aarch64/sve2/acle/asm/histseg_s8.c: Likewise. + * gcc.target/aarch64/sve2/acle/asm/histseg_u8.c: Likewise. + * gcc.target/aarch64/sve2/acle/asm/ldnt1_gather_f32.c: Likewise. + * gcc.target/aarch64/sve2/acle/asm/ldnt1_gather_f64.c: Likewise. + * gcc.target/aarch64/sve2/acle/asm/ldnt1_gather_s32.c: Likewise. + * gcc.target/aarch64/sve2/acle/asm/ldnt1_gather_s64.c: Likewise. + * gcc.target/aarch64/sve2/acle/asm/ldnt1_gather_u32.c: Likewise. + * gcc.target/aarch64/sve2/acle/asm/ldnt1_gather_u64.c: Likewise. + * gcc.target/aarch64/sve2/acle/asm/ldnt1sb_gather_s32.c: Likewise. + * gcc.target/aarch64/sve2/acle/asm/ldnt1sb_gather_s64.c: Likewise. + * gcc.target/aarch64/sve2/acle/asm/ldnt1sb_gather_u32.c: Likewise. + * gcc.target/aarch64/sve2/acle/asm/ldnt1sb_gather_u64.c: Likewise. + * gcc.target/aarch64/sve2/acle/asm/ldnt1sh_gather_s32.c: Likewise. + * gcc.target/aarch64/sve2/acle/asm/ldnt1sh_gather_s64.c: Likewise. + * gcc.target/aarch64/sve2/acle/asm/ldnt1sh_gather_u32.c: Likewise. + * gcc.target/aarch64/sve2/acle/asm/ldnt1sh_gather_u64.c: Likewise. + * gcc.target/aarch64/sve2/acle/asm/ldnt1sw_gather_s64.c: Likewise. + * gcc.target/aarch64/sve2/acle/asm/ldnt1sw_gather_u64.c: Likewise. + * gcc.target/aarch64/sve2/acle/asm/ldnt1ub_gather_s32.c: Likewise. + * gcc.target/aarch64/sve2/acle/asm/ldnt1ub_gather_s64.c: Likewise. + * gcc.target/aarch64/sve2/acle/asm/ldnt1ub_gather_u32.c: Likewise. + * gcc.target/aarch64/sve2/acle/asm/ldnt1ub_gather_u64.c: Likewise. + * gcc.target/aarch64/sve2/acle/asm/ldnt1uh_gather_s32.c: Likewise. + * gcc.target/aarch64/sve2/acle/asm/ldnt1uh_gather_s64.c: Likewise. + * gcc.target/aarch64/sve2/acle/asm/ldnt1uh_gather_u32.c: Likewise. + * gcc.target/aarch64/sve2/acle/asm/ldnt1uh_gather_u64.c: Likewise. + * gcc.target/aarch64/sve2/acle/asm/ldnt1uw_gather_s64.c: Likewise. + * gcc.target/aarch64/sve2/acle/asm/ldnt1uw_gather_u64.c: Likewise. + * gcc.target/aarch64/sve2/acle/asm/match_s16.c: Likewise. + * gcc.target/aarch64/sve2/acle/asm/match_s8.c: Likewise. + * gcc.target/aarch64/sve2/acle/asm/match_u16.c: Likewise. + * gcc.target/aarch64/sve2/acle/asm/match_u8.c: Likewise. + * gcc.target/aarch64/sve2/acle/asm/nmatch_s16.c: Likewise. + * gcc.target/aarch64/sve2/acle/asm/nmatch_s8.c: Likewise. + * gcc.target/aarch64/sve2/acle/asm/nmatch_u16.c: Likewise. + * gcc.target/aarch64/sve2/acle/asm/nmatch_u8.c: Likewise. + * gcc.target/aarch64/sve2/acle/asm/pmullb_pair_u64.c: Likewise. + * gcc.target/aarch64/sve2/acle/asm/pmullt_pair_u64.c: Likewise. + * gcc.target/aarch64/sve2/acle/asm/rax1_s64.c: Likewise. + * gcc.target/aarch64/sve2/acle/asm/rax1_u64.c: Likewise. + * gcc.target/aarch64/sve2/acle/asm/sm4e_u32.c: Likewise. + * gcc.target/aarch64/sve2/acle/asm/sm4ekey_u32.c: Likewise. + * gcc.target/aarch64/sve2/acle/asm/stnt1_scatter_f32.c: Likewise. + * gcc.target/aarch64/sve2/acle/asm/stnt1_scatter_f64.c: Likewise. + * gcc.target/aarch64/sve2/acle/asm/stnt1_scatter_s32.c: Likewise. + * gcc.target/aarch64/sve2/acle/asm/stnt1_scatter_s64.c: Likewise. + * gcc.target/aarch64/sve2/acle/asm/stnt1_scatter_u32.c: Likewise. + * gcc.target/aarch64/sve2/acle/asm/stnt1_scatter_u64.c: Likewise. + * gcc.target/aarch64/sve2/acle/asm/stnt1b_scatter_s32.c: Likewise. + * gcc.target/aarch64/sve2/acle/asm/stnt1b_scatter_s64.c: Likewise. + * gcc.target/aarch64/sve2/acle/asm/stnt1b_scatter_u32.c: Likewise. + * gcc.target/aarch64/sve2/acle/asm/stnt1b_scatter_u64.c: Likewise. + * gcc.target/aarch64/sve2/acle/asm/stnt1h_scatter_s32.c: Likewise. + * gcc.target/aarch64/sve2/acle/asm/stnt1h_scatter_s64.c: Likewise. + * gcc.target/aarch64/sve2/acle/asm/stnt1h_scatter_u32.c: Likewise. + * gcc.target/aarch64/sve2/acle/asm/stnt1h_scatter_u64.c: Likewise. + * gcc.target/aarch64/sve2/acle/asm/stnt1w_scatter_s64.c: Likewise. + * gcc.target/aarch64/sve2/acle/asm/stnt1w_scatter_u64.c: Likewise. + +2023-12-05 Richard Sandiford + + * gcc.target/aarch64/movdf_2.c: New test. + * gcc.target/aarch64/movdi_3.c: Likewise. + * gcc.target/aarch64/movhf_2.c: Likewise. + * gcc.target/aarch64/movhi_2.c: Likewise. + * gcc.target/aarch64/movqi_2.c: Likewise. + * gcc.target/aarch64/movsf_2.c: Likewise. + * gcc.target/aarch64/movsi_2.c: Likewise. + * gcc.target/aarch64/movtf_3.c: Likewise. + * gcc.target/aarch64/movtf_4.c: Likewise. + * gcc.target/aarch64/movti_3.c: Likewise. + * gcc.target/aarch64/movti_4.c: Likewise. + * gcc.target/aarch64/movv16qi_4.c: Likewise. + * gcc.target/aarch64/movv16qi_5.c: Likewise. + * gcc.target/aarch64/movv8qi_4.c: Likewise. + * gcc.target/aarch64/sme/arm_neon_1.c: Likewise. + * gcc.target/aarch64/sme/arm_neon_2.c: Likewise. + * gcc.target/aarch64/sme/arm_neon_3.c: Likewise. + +2023-12-05 Richard Sandiford + + * lib/target-supports.exp (check_effective_target_aarch64_sme): New + target test. + * gcc.target/aarch64/sme/aarch64-sme.exp: Force SME to be enabled + if it isn't by default. + * g++.target/aarch64/sme/aarch64-sme.exp: Likewise. + * gcc.target/aarch64/sme/streaming_mode_3.c: New test. + * gcc.target/aarch64/sme/streaming_mode_4.c: New file. + +2023-12-05 Richard Sandiford + + * gcc.target/aarch64/sme/aarch64-sme.exp: New harness. + * gcc.target/aarch64/sme/streaming_mode_1.c: New test. + * gcc.target/aarch64/sme/streaming_mode_2.c: Likewise. + * gcc.target/aarch64/sme/keyword_macros_1.c: Likewise. + * g++.target/aarch64/sme/aarch64-sme.exp: New harness. + * g++.target/aarch64/sme/streaming_mode_1.C: New test. + * g++.target/aarch64/sme/streaming_mode_2.C: Likewise. + * g++.target/aarch64/sme/keyword_macros_1.C: Likewise. + * gcc.target/aarch64/auto-init-1.c: Only expect the call insn + to contain 1 (const_int 0), not 2. + +2023-12-05 Richard Sandiford + + * gcc.target/aarch64/sve/acle/asm/test_sve_acle.h (TEST_DUAL_XN): + New macro. + * gcc.target/aarch64/sve/acle/asm/reinterpret_bf16.c: Add tests for + tuple forms. + * gcc.target/aarch64/sve/acle/asm/reinterpret_f16.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/reinterpret_f32.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/reinterpret_f64.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/reinterpret_s16.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/reinterpret_s32.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/reinterpret_s64.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/reinterpret_s8.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/reinterpret_u16.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/reinterpret_u32.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/reinterpret_u64.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/reinterpret_u8.c: Likewise. + +2023-12-05 Richard Sandiford + + * gcc.target/aarch64/sve/acle/general-c/set_1.c: Tweak expected + error message. + * gcc.target/aarch64/sve/acle/general-c/set_3.c: Likewise. + * gcc.target/aarch64/sve/acle/general-c/set_5.c: Likewise. + +2023-12-05 Richard Sandiford + + * gcc.target/aarch64/sve/acle/general-c/*: Replace "but previous + arguments had" with "but argument N had". + +2023-12-05 Richard Sandiford + + * gcc.target/aarch64/sve/acle/general-c/*: Update expected error + messages. + +2023-12-05 Richard Sandiford + + * gcc.target/aarch64/sve/acle/asm/cntb.c: Tweak expected output. + * gcc.target/aarch64/sve/acle/asm/cnth.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/cntw.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/cntd.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/prfb.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/prfh.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/prfw.c: Likewise. + * gcc.target/aarch64/sve/acle/asm/prfd.c: Likewise. + * gcc.target/aarch64/sve/loop_add_4.c: Expect RDVL to be used + to calculate the -17 and 17 factors. + * gcc.target/aarch64/sve/pcs/stack_clash_1.c: Likewise the 18 factor. + +2023-12-05 Szabolcs Nagy + + * gcc.target/aarch64/eh_return-3.c: Fix when retaa is available. + +2023-12-05 Thomas Schwinge + + * gcc.dg/gnu23-builtins-no-dfp-1.c: Remove '-fpermissive'. + 'dg-error "implicit"' instead of 'dg-warning "implicit"'. + +2023-12-05 Kito Cheng + + * gcc.target/riscv/arch-29.c: New test. + * gcc.target/riscv/arch-30.c: New test. + +2023-12-05 Richard Sandiford + + PR rtl-optimization/112278 + * gcc.target/aarch64/sve/pr112278.c: New test. + +2023-12-05 Jakub Jelinek + + PR tree-optimization/112843 + * gcc.dg/bitint-47.c: New test. + +2023-12-05 Jakub Jelinek + + PR target/112816 + * gcc.target/i386/pr112816.c: New test. + +2023-12-05 Juzhe-Zhong + + * g++.target/riscv/rvv/autovec/bug-2.C: New test. + +2023-12-05 Richard Biener + + PR c/89270 + * gcc.target/avr/pr89270.c: New testcase. + +2023-12-05 Richard Biener + + PR c/86869 + * gcc.target/avr/pr86869.c: New testcase. + +2023-12-05 liuhongt + + * gcc.target/i386/udotprodint8_emulate.c: New test. + +2023-12-05 Marek Polacek + + PR c++/107687 + PR c++/110997 + * g++.dg/cpp23/consteval-if10.C: Remove dg-error. + * g++.dg/cpp23/consteval-if2.C: Likewise. + * g++.dg/cpp23/feat-cxx2b.C: Adjust expected value of __cpp_consteval. + * g++.dg/cpp26/feat-cxx26.C: Likewise. + * g++.dg/cpp2a/consteval-memfn1.C: Add dg-error. + * g++.dg/cpp2a/consteval11.C: Likewise. + * g++.dg/cpp2a/consteval3.C: Adjust dg-error. + * g++.dg/cpp2a/consteval34.C: Add dg-error. + * g++.dg/cpp2a/consteval36.C: Likewise. + * g++.dg/cpp2a/consteval9.C: Likewise. + * g++.dg/cpp2a/feat-cxx2a.C: Adjust expected value of __cpp_consteval. + * g++.dg/cpp2a/spaceship-synth9.C: Adjust dg-error. + * g++.dg/cpp2a/consteval-prop1.C: New test. + * g++.dg/cpp2a/consteval-prop10.C: New test. + * g++.dg/cpp2a/consteval-prop11.C: New test. + * g++.dg/cpp2a/consteval-prop12.C: New test. + * g++.dg/cpp2a/consteval-prop13.C: New test. + * g++.dg/cpp2a/consteval-prop14.C: New test. + * g++.dg/cpp2a/consteval-prop15.C: New test. + * g++.dg/cpp2a/consteval-prop16.C: New test. + * g++.dg/cpp2a/consteval-prop17.C: New test. + * g++.dg/cpp2a/consteval-prop18.C: New test. + * g++.dg/cpp2a/consteval-prop19.C: New test. + * g++.dg/cpp2a/consteval-prop20.C: New test. + * g++.dg/cpp2a/consteval-prop2.C: New test. + * g++.dg/cpp2a/consteval-prop3.C: New test. + * g++.dg/cpp2a/consteval-prop4.C: New test. + * g++.dg/cpp2a/consteval-prop5.C: New test. + * g++.dg/cpp2a/consteval-prop6.C: New test. + * g++.dg/cpp2a/consteval-prop7.C: New test. + * g++.dg/cpp2a/consteval-prop8.C: New test. + * g++.dg/cpp2a/consteval-prop9.C: New test. + 2023-12-04 Jason Merrill * g++.dg/cpp0x/constexpr-noreturn1.C: New test. diff --git a/libgcc/ChangeLog b/libgcc/ChangeLog index 6b3451200a0a..542cfe5aa4ea 100644 --- a/libgcc/ChangeLog +++ b/libgcc/ChangeLog @@ -1,3 +1,12 @@ +2023-12-06 Alexandre Oliva + + * Makefile.in (LIB2ADD): Add strub.c. + * libgcc2.h (__strub_enter, __strub_update, __strub_leave): + Declare. + * strub.c: New. + * libgcc-std.ver.in (__strub_enter): Add to GCC_14.0.0. + (__strub_update, __strub_leave): Likewise. + 2023-12-03 Jeff Law * unwind-pe.h (_Unwind_gnu_Find_got): Add prototype. diff --git a/libgfortran/ChangeLog b/libgfortran/ChangeLog index 613db7854713..2393305a8649 100644 --- a/libgfortran/ChangeLog +++ b/libgfortran/ChangeLog @@ -1,3 +1,15 @@ +2023-12-05 Florian Weimer + Jakub Jelinek + + * io/list_read.c (list_formatted_read_scalar) : + Change types of unit and noiostat to GFC_INTEGER_4 from int, change + type of child_iostat from to GFC_INTEGER_4 * from int *, formatting + fixes. + (nml_read_obj): Likewise. + * io/write.c (list_formatted_write_scalar) : Likewise. + (nml_write_obj): Likewise. + * io/transfer.c (unformatted_read, unformatted_write): Likewise. + 2023-11-08 Mikael Morin PR fortran/112371 diff --git a/libiberty/ChangeLog b/libiberty/ChangeLog index 1005bf8a974b..884c8b70f875 100644 --- a/libiberty/ChangeLog +++ b/libiberty/ChangeLog @@ -1,3 +1,13 @@ +2023-12-05 Jakub Jelinek + + * configure.ac (HAVE_X86_SHA1_HW_SUPPORT): Verify __get_cpuid and + __get_cpuid_count are not implicitly declared. + * configure: Regenerated. + +2023-12-05 Rainer Orth + + * pex-unix.c (pex_unix_wait): Change return type to pid_t. + 2023-12-01 Jason Merrill * cp-demangle.c (d_make_comp): Handle diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index c471773cf428..c2e220ee6c38 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,70 @@ +2023-12-05 Jonathan Wakely + + PR libstdc++/111948 + * include/bits/ranges_util.h (subrange): Add constructor to + _Size to aoid setting member in constructor. + * testsuite/std/ranges/subrange/111948.cc: New test. + +2023-12-05 Jonathan Wakely + + * include/std/ranges (__detail::__container_insertable): Remove. + (__detail::__container_inserter): Remove. + (ranges::to): Use emplace_back or emplace, as per LWG 4016. + * testsuite/std/ranges/conv/1.cc (Cont4, test_2_1_4): Check for + use of emplace_back and emplace. + +2023-12-05 Jonathan Wakely + + * include/bits/c++config (__glibcxx_assert_fail): Declare even + when assertions are not enabled. + (__glibcxx_constexpr_assert): Remove macro. + (__glibcxx_assert_impl): Remove macro. + (_GLIBCXX_ASSERT_FAIL): New macro. + (_GLIBCXX_DO_ASSERT): New macro. + (__glibcxx_assert): Simplify to a single definition that works + at runtime and during constant evaluation. + * testsuite/21_strings/basic_string_view/element_access/char/back_constexpr_neg.cc: + Adjust expected errors. + * testsuite/21_strings/basic_string_view/element_access/char/constexpr_neg.cc: + Likewise. + * testsuite/21_strings/basic_string_view/element_access/char/front_constexpr_neg.cc: + Likewise. + * testsuite/21_strings/basic_string_view/element_access/wchar_t/back_constexpr_neg.cc: + Likewise. + * testsuite/21_strings/basic_string_view/element_access/wchar_t/constexpr_neg.cc: + Likewise. + * testsuite/21_strings/basic_string_view/element_access/wchar_t/front_constexpr_neg.cc: + Likewise. + * testsuite/21_strings/basic_string_view/modifiers/remove_prefix/debug.cc: + Likewise. + * testsuite/21_strings/basic_string_view/modifiers/remove_suffix/debug.cc: + Likewise. + * testsuite/23_containers/span/back_neg.cc: Likewise. + * testsuite/23_containers/span/front_neg.cc: Likewise. + * testsuite/23_containers/span/index_op_neg.cc: Likewise. + * testsuite/26_numerics/lcm/105844.cc: Likewise. + +2023-12-05 Jonathan Wakely + + PR libstdc++/112832 + * include/std/format (formatter::set_debug_format): Ensure this + member is defined conditionally for all specializations. + * testsuite/std/format/formatter/112832.cc: New test. + +2023-12-05 Will Hawkins + Jonathan Wakely + + * testsuite/20_util/smartptr.adapt/inout_ptr/2.cc: Add check + for LWG Issue 3897. + +2023-12-05 Marek Polacek + + PR c++/107687 + PR c++/110997 + * testsuite/18_support/comparisons/categories/zero_neg.cc: Add + dg-prune-output. + * testsuite/std/format/string_neg.cc: Add dg-error. + 2023-12-02 Alexandre Oliva * libsupc++/atexit_thread.cc [__GXX_WEAK__]: Add dynamic