[gcc r14-6202] Daily bump.

GCC Administrator gccadmin@gcc.gnu.org
Wed Dec 6 00:18:11 GMT 2023


https://gcc.gnu.org/g:3dd09cd9e15f996b0f0768554d20ef1aa8b26f58

commit r14-6202-g3dd09cd9e15f996b0f0768554d20ef1aa8b26f58
Author: GCC Administrator <gccadmin@gcc.gnu.org>
Date:   Wed Dec 6 00:17:50 2023 +0000

    Daily bump.

Diff:
---
 gcc/ChangeLog           | 1523 +++++++++++++++++++++++++++++++++++++++++
 gcc/DATESTAMP           |    2 +-
 gcc/ada/ChangeLog       |   20 +
 gcc/c-family/ChangeLog  |   26 +
 gcc/c/ChangeLog         |   11 +
 gcc/cp/ChangeLog        |   65 ++
 gcc/d/ChangeLog         |    6 +
 gcc/fortran/ChangeLog   |   15 +
 gcc/jit/ChangeLog       |    6 +
 gcc/lto/ChangeLog       |    6 +
 gcc/m2/ChangeLog        |   15 +
 gcc/testsuite/ChangeLog | 1733 +++++++++++++++++++++++++++++++++++++++++++++++
 libgcc/ChangeLog        |    9 +
 libgfortran/ChangeLog   |   12 +
 libiberty/ChangeLog     |   10 +
 libstdc++-v3/ChangeLog  |   67 ++
 16 files changed, 3525 insertions(+), 1 deletion(-)

diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 632072f55a0..23c65f471eb 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,1526 @@
+2023-12-06  Alexandre Oliva  <oliva@adacore.com>
+
+	* Makefile.in (OBJS): Add ipa-strub.o.
+	(GTFILES): Add ipa-strub.cc.
+	* builtins.def (BUILT_IN_STACK_ADDRESS): New.
+	(BUILT_IN___STRUB_ENTER): New.
+	(BUILT_IN___STRUB_UPDATE): New.
+	(BUILT_IN___STRUB_LEAVE): New.
+	* builtins.cc: Include ipa-strub.h.
+	(STACK_STOPS, STACK_UNSIGNED): Define.
+	(expand_builtin_stack_address): New.
+	(expand_builtin_strub_enter): New.
+	(expand_builtin_strub_update): New.
+	(expand_builtin_strub_leave): New.
+	(expand_builtin): Call them.
+	* common.opt (fstrub=*): New options.
+	* doc/extend.texi (strub): New type attribute.
+	(__builtin_stack_address): New function.
+	(Stack Scrubbing): New section.
+	* doc/invoke.texi (-fstrub=*): New options.
+	(-fdump-ipa-*): New passes.
+	* gengtype-lex.l: Ignore multi-line pp-directives.
+	* ipa-inline.cc: Include ipa-strub.h.
+	(can_inline_edge_p): Test strub_inlinable_to_p.
+	* ipa-split.cc: Include ipa-strub.h.
+	(execute_split_functions): Test strub_splittable_p.
+	* ipa-strub.cc, ipa-strub.h: New.
+	* passes.def: Add strub_mode and strub passes.
+	* tree-cfg.cc (gimple_verify_flow_info): Note on debug stmts.
+	* tree-pass.h (make_pass_ipa_strub_mode): Declare.
+	(make_pass_ipa_strub): Declare.
+	(make_pass_ipa_function_and_variable_visibility): Fix
+	formatting.
+	* tree-ssa-ccp.cc (optimize_stack_restore): Keep restores
+	before strub leave.
+	* attribs.cc: Include ipa-strub.h.
+	(decl_attributes): Support applying attributes to function
+	type, rather than pointer type, at handler's request.
+	(comp_type_attributes): Combine strub_comptypes and target
+	comp_type results.
+	* doc/tm.texi.in (TARGET_STRUB_USE_DYNAMIC_ARRAY): New.
+	(TARGET_STRUB_MAY_USE_MEMSET): New.
+	* doc/tm.texi: Rebuilt.
+	* cgraph.h (symtab_node::reset): Add preserve_comdat_group
+	param, with a default.
+	* cgraphunit.cc (symtab_node::reset): Use it.
+
+2023-12-05  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
+
+	PR target/112851
+	PR target/112852
+	* config/riscv/riscv-v.cc (vls_mode_valid_p): Block VLSmodes according
+	TARGET_MAX_LMUL and BITS_PER_RISCV_VECTOR.
+
+2023-12-05  David Faust  <david.faust@oracle.com>
+
+	PR debug/112849
+	* btfout.cc (btf_collect_datasec): Avoid incorrectly creating an
+	entry in a BTF_KIND_DATASEC record for extern variable decls without
+	a known section.
+
+2023-12-05  Jakub Jelinek  <jakub@redhat.com>
+
+	PR target/112606
+	* config/rs6000/rs6000.md (copysign<mode>3): Change predicate
+	of the last argument from gpc_reg_operand to any_operand.  If
+	operands[2] is CONST_DOUBLE, emit abs or neg abs depending on
+	its sign, otherwise if it doesn't satisfy gpc_reg_operand,
+	force it to REG using copy_to_mode_reg.
+
+2023-12-05  Richard Sandiford  <richard.sandiford@arm.com>
+
+	* attribs.cc (handle_ignored_attributes_option): Add extra
+	braces to work around PR 16333 in older compilers.
+	* config/aarch64/aarch64.cc (aarch64_gnu_attribute_table): Likewise.
+	(aarch64_arm_attribute_table): Likewise.
+	* config/arm/arm.cc (arm_gnu_attribute_table): Likewise.
+	* config/i386/i386-options.cc (ix86_gnu_attribute_table): Likewise.
+	* config/ia64/ia64.cc (ia64_gnu_attribute_table): Likewise.
+	* config/rs6000/rs6000.cc (rs6000_gnu_attribute_table): Likewise.
+	* target-def.h (TARGET_GNU_ATTRIBUTES): Likewise.
+	* genhooks.cc (emit_init_macros): Likewise, when emitting the
+	instantiation of TARGET_ATTRIBUTE_TABLE.
+	* langhooks-def.h (LANG_HOOKS_INITIALIZER): Likewise, when
+	instantiating LANG_HOOKS_ATTRIBUTE_TABLE.
+	(LANG_HOOKS_ATTRIBUTE_TABLE): Define to be empty by default.
+	* target.def (attribute_table): Likewise.
+
+2023-12-05  Richard Biener  <rguenther@suse.de>
+
+	PR middle-end/112860
+	* passes.cc (should_skip_pass_p): Do not skip ISEL.
+
+2023-12-05  Richard Biener  <rguenther@suse.de>
+
+	PR sanitizer/111736
+	* asan.cc (asan_protect_global): Do not protect globals
+	in non-generic address-space.
+
+2023-12-05  Richard Biener  <rguenther@suse.de>
+
+	PR ipa/92606
+	* ipa-icf.cc (sem_variable::equals_wpa): Compare address-spaces.
+
+2023-12-05  Richard Biener  <rguenther@suse.de>
+
+	PR middle-end/112830
+	* gimplify.cc (gimplify_modify_expr): Avoid turning aggregate
+	copy of non-generic address-spaces to memcpy.
+	(gimplify_modify_expr_to_memcpy): Assert we are dealing with
+	a copy inside the generic address-space.
+	(gimplify_modify_expr_to_memset): Likewise.
+	* tree-cfg.cc (verify_gimple_assign_single): Allow
+	WITH_SIZE_EXPR as part of the RHS of an assignment.
+	* builtins.cc (get_memory_address): Assert we are dealing
+	with the generic address-space.
+	* tree-ssa-dce.cc (ref_may_be_aliased): Handle WITH_SIZE_EXPR.
+
+2023-12-05  Richard Biener  <rguenther@suse.de>
+
+	PR tree-optimization/109689
+	PR tree-optimization/112856
+	* cfgloopmanip.h (unloop_loops): Adjust API.
+	* tree-ssa-loop-ivcanon.cc (unloop_loops): Take edges_to_remove
+	as parameter.
+	(canonicalize_induction_variables): Adjust.
+	(tree_unroll_loops_completely): Likewise.
+	* tree-ssa-loop-ch.cc (ch_base::copy_headers): Rewrite into
+	LC SSA if we unlooped some loops and we are in LC SSA.
+
+2023-12-05  Jakub Jelinek  <jakub@redhat.com>
+
+	PR target/112845
+	* config/i386/i386.md (movabsq $(i32 << shift), r64 peephole2): FAIL
+	if the new immediate is ix86_endbr_immediate_operand.
+
+2023-12-05  Richard Sandiford  <richard.sandiford@arm.com>
+
+	* config/aarch64/aarch64.h (TARGET_STREAMING_SME2): New macro.
+	(P_ALIASES): Likewise.
+	(REGISTER_NAMES): Add pn aliases of the predicate registers.
+	(W8_W11_REGNUM_P): New macro.
+	(W8_W11_REGS): New register class.
+	(REG_CLASS_NAMES, REG_CLASS_CONTENTS): Update accordingly.
+	* config/aarch64/aarch64.cc (aarch64_print_operand): Add support
+	for %K, which prints a predicate as a counter.  Handle tuples of
+	predicates.
+	(aarch64_regno_regclass): Handle W8_W11_REGS.
+	(aarch64_class_max_nregs): Likewise.
+	* config/aarch64/constraints.md (Uci, Uw2, Uw4): New constraints.
+	(x, y): Move further up file.
+	(Uph): Redefine as the high predicate registers, renaming the old
+	constraint to...
+	(Uih): ...this.
+	* config/aarch64/predicates.md (const_0_to_7_operand): New predicate.
+	(const_0_to_4_step_4_operand, const_0_to_6_step_2_operand): Likewise.
+	(const_0_to_12_step_4_operand, const_0_to_14_step_2_operand): Likewise.
+	(aarch64_simd_shift_imm_qi): Use const_0_to_7_operand.
+	* config/aarch64/iterators.md (VNx16SI_ONLY, VNx8SI_ONLY)
+	(VNx8DI_ONLY, SVE_FULL_BHSIx2, SVE_FULL_HF, SVE_FULL_SIx2_SDIx4)
+	(SVE_FULL_BHS, SVE_FULLx24, SVE_DIx24, SVE_BHSx24, SVE_Ix24)
+	(SVE_Fx24, SVE_SFx24, SME_ZA_BIx24, SME_ZA_BHIx124, SME_ZA_BHIx24)
+	(SME_ZA_HFx124, SME_ZA_HFx24, SME_ZA_HIx124, SME_ZA_HIx24)
+	(SME_ZA_SDIx24, SME_ZA_SDFx24): New mode iterators.
+	(UNSPEC_REVD, UNSPEC_CNTP_C, UNSPEC_PEXT, UNSPEC_PEXTx2): New unspecs.
+	(UNSPEC_PSEL, UNSPEC_PTRUE_C, UNSPEC_SQRSHR, UNSPEC_SQRSHRN)
+	(UNSPEC_SQRSHRU, UNSPEC_SQRSHRUN, UNSPEC_UQRSHR, UNSPEC_UQRSHRN)
+	(UNSPEC_UZP, UNSPEC_UZPQ, UNSPEC_ZIP, UNSPEC_ZIPQ, UNSPEC_BFMLSLB)
+	(UNSPEC_BFMLSLT, UNSPEC_FCVTN, UNSPEC_FDOT, UNSPEC_SQCVT): Likewise.
+	(UNSPEC_SQCVTN, UNSPEC_SQCVTU, UNSPEC_SQCVTUN, UNSPEC_UQCVT): Likewise.
+	(UNSPEC_SME_ADD, UNSPEC_SME_ADD_WRITE, UNSPEC_SME_BMOPA): Likewise.
+	(UNSPEC_SME_BMOPS, UNSPEC_SME_FADD, UNSPEC_SME_FDOT, UNSPEC_SME_FVDOT)
+	(UNSPEC_SME_FMLA, UNSPEC_SME_FMLS, UNSPEC_SME_FSUB, UNSPEC_SME_READ)
+	(UNSPEC_SME_SDOT, UNSPEC_SME_SVDOT, UNSPEC_SME_SMLA, UNSPEC_SME_SMLS)
+	(UNSPEC_SME_SUB, UNSPEC_SME_SUB_WRITE, UNSPEC_SME_SUDOT): Likewise.
+	(UNSPEC_SME_SUVDOT, UNSPEC_SME_UDOT, UNSPEC_SME_UVDOT): Likewise.
+	(UNSPEC_SME_UMLA, UNSPEC_SME_UMLS, UNSPEC_SME_USDOT): Likewise.
+	(UNSPEC_SME_USVDOT, UNSPEC_SME_WRITE): Likewise.
+	(Vetype, VNARROW, V2XWIDE, Ventype, V_INT_EQUIV, v_int_equiv)
+	(VSINGLE, vsingle, b): Add tuple modes.
+	(v2xwide, za32_offset_range, za64_offset_range, za32_long)
+	(za32_last_offset, vg_modifier, z_suffix, aligned_operand)
+	(aligned_fpr): New mode attributes.
+	(SVE_INT_BINARY_MULTI, SVE_INT_BINARY_SINGLE, SVE_INT_BINARY_MULTI)
+	(SVE_FP_BINARY_MULTI): New int iterators.
+	(SVE_BFLOAT_TERNARY_LONG): Add UNSPEC_BFMLSLB and UNSPEC_BFMLSLT.
+	(SVE_BFLOAT_TERNARY_LONG_LANE): Likewise.
+	(SVE_WHILE_ORDER, SVE2_INT_SHIFT_IMM_NARROWxN, SVE_QCVTxN)
+	(SVE2_SFx24_UNARY, SVE2_x24_PERMUTE, SVE2_x24_PERMUTEQ)
+	(UNSPEC_REVD_ONLY, SME2_INT_MOP, SME2_BMOP, SME_BINARY_SLICE_SDI)
+	(SME_BINARY_SLICE_SDF, SME_BINARY_WRITE_SLICE_SDI, SME_INT_DOTPROD)
+	(SME_INT_DOTPROD_LANE, SME_FP_DOTPROD, SME_FP_DOTPROD_LANE)
+	(SME_INT_TERNARY_SLICE, SME_FP_TERNARY_SLICE, BHSD_BITS)
+	(LUTI_BITS): New int iterators.
+	(optab, sve_int_op): Handle the new unspecs.
+	(sme_int_op, has_16bit_form): New int attributes.
+	(bits_etype): Handle 64.
+	* config/aarch64/aarch64.md (UNSPEC_LD1_SVE_COUNT): New unspec.
+	(UNSPEC_ST1_SVE_COUNT, UNSPEC_LDNT1_SVE_COUNT): Likewise.
+	(UNSPEC_STNT1_SVE_COUNT): Likewise.
+	* config/aarch64/atomics.md (cas_short_expected_imm): Use Uhi
+	rather than Uph for HImode immediates.
+	* config/aarch64/aarch64-sve.md (@aarch64_ld1<SVE_FULLx24:mode>)
+	(@aarch64_ldnt1<SVE_FULLx24:mode>, @aarch64_st1<SVE_FULLx24:mode>)
+	(@aarch64_stnt1<SVE_FULLx24:mode>): New patterns.
+	(@aarch64_<sur>dot_prod_lane<vsi2qi>): Extend to...
+	(@aarch64_<sur>dot_prod_lane<SVE_FULL_SDI:mode><SVE_FULL_BHI:mode>)
+	(@aarch64_<sur>dot_prod_lane<VNx4SI_ONLY:mode><VNx16QI_ONLY:mode>):
+	...these new patterns.
+	(SVE_WHILE_B, SVE_WHILE_B_X2, SVE_WHILE_C): New constants.  Add
+	SVE_WHILE_B to existing while patterns.
+	* config/aarch64/aarch64-sve2.md (@aarch64_sve_ptrue_c<BHSD_BITS>)
+	(@aarch64_sve_pext<BHSD_BITS>, @aarch64_sve_pext<BHSD_BITS>x2)
+	(@aarch64_sve_psel<BHSD_BITS>, *aarch64_sve_psel<BHSD_BITS>_plus)
+	(@aarch64_sve_cntp_c<BHSD_BITS>, <frint_pattern><mode>2)
+	(<optab><mode>3, *<optab><mode>3, @aarch64_sve_single_<optab><mode>)
+	(@aarch64_sve_<sve_int_op><mode>): New patterns.
+	(@aarch64_sve_single_<sve_int_op><mode>, @aarch64_sve_<su>clamp<mode>)
+	(*aarch64_sve_<su>clamp<mode>_x, @aarch64_sve_<su>clamp_single<mode>)
+	(@aarch64_sve_fclamp<mode>, *aarch64_sve_fclamp<mode>_x)
+	(@aarch64_sve_fclamp_single<mode>, <optab><mode><v2xwide>2)
+	(@aarch64_sve_<sur>dotvnx4sivnx8hi): New patterns.
+	(@aarch64_sve_<maxmin_uns_op><mode>): Likewise.
+	(*aarch64_sve_<maxmin_uns_op><mode>): Likewise.
+	(@aarch64_sve_single_<maxmin_uns_op><mode>): Likewise.
+	(aarch64_sve_fdotvnx4sfvnx8hf): Likewise.
+	(aarch64_fdot_prod_lanevnx4sfvnx8hf): Likewise.
+	(@aarch64_sve_<optab><VNx16QI_ONLY:mode><VNx16SI_ONLY:mode>): Likewise.
+	(@aarch64_sve_<optab><VNx8HI_ONLY:mode><VNx8SI_ONLY:mode>): Likewise.
+	(@aarch64_sve_<optab><VNx8HI_ONLY:mode><VNx8DI_ONLY:mode>): Likewise.
+	(truncvnx8sf<mode>2, @aarch64_sve_cvtn<mode>): Likewise.
+	(<optab><v_int_equiv><mode>2, <optab><mode><v_int_equiv>2): Likewise.
+	(@aarch64_sve_sel<mode>): Likewise.
+	(@aarch64_sve_while<while_optab_cmp>_b<BHSD_BITS>_x2): Likewise.
+	(@aarch64_sve_while<while_optab_cmp>_c<BHSD_BITS>): Likewise.
+	(@aarch64_pred_<optab><mode>, @cond_<optab><mode>): Likewise.
+	(@aarch64_sve_<optab><mode>): Likewise.
+	* config/aarch64/aarch64-sme.md (@aarch64_sme_<optab><mode><mode>)
+	(*aarch64_sme_<optab><mode><mode>_plus, @aarch64_sme_read<mode>)
+	(*aarch64_sme_read<mode>_plus, @aarch64_sme_write<mode>): New patterns.
+	(*aarch64_sme_write<mode>_plus aarch64_sme_zero_zt0): Likewise.
+	(@aarch64_sme_<optab><mode>, *aarch64_sme_<optab><mode>_plus)
+	(@aarch64_sme_single_<optab><mode>): Likewise.
+	(*aarch64_sme_single_<optab><mode>_plus): Likewise.
+	(@aarch64_sme_<optab><SME_ZA_SDI:mode><SME_ZA_BHIx24:mode>)
+	(*aarch64_sme_<optab><SME_ZA_SDI:mode><SME_ZA_BHIx24:mode>_plus)
+	(@aarch64_sme_single_<optab><SME_ZA_SDI:mode><SME_ZA_BHIx24:mode>)
+	(*aarch64_sme_single_<optab><SME_ZA_SDI:mode><SME_ZA_BHIx24:mode>_plus)
+	(@aarch64_sme_single_sudot<VNx4SI_ONLY:mode><SME_ZA_BIx24:mode>)
+	(*aarch64_sme_single_sudot<VNx4SI_ONLY:mode><SME_ZA_BIx24:mode>_plus)
+	(@aarch64_sme_lane_<optab><SME_ZA_SDI:mode><SME_ZA_BHIx24:mode>)
+	(*aarch64_sme_lane_<optab><SME_ZA_SDI:mode><SME_ZA_BHIx24:mode>_plus)
+	(@aarch64_sme_<optab><VNx4SI_ONLY:mode><SVE_FULL_BHI:mode>)
+	(*aarch64_sme_<optab><VNx4SI_ONLY:mode><SVE_FULL_BHI:mode>_plus)
+	(@aarch64_sme_<optab><VNx4SI_ONLY:mode><SME_ZA_BHIx24:mode>)
+	(*aarch64_sme_<optab><VNx4SI_ONLY:mode><SME_ZA_BHIx24:mode>_plus)
+	(@aarch64_sme_single_<optab><VNx4SI_ONLY:mode><SME_ZA_BHIx24:mode>)
+	(*aarch64_sme_single_<optab><VNx4SI_ONLY:mode><SME_ZA_BHIx24:mode>_plus)
+	(@aarch64_sme_lane_<optab><VNx4SI_ONLY:mode><SME_ZA_BHIx124:mode>)
+	(*aarch64_sme_lane_<optab><VNx4SI_ONLY:mode><SME_ZA_BHIx124:mode>)
+	(@aarch64_sme_<optab><VNx2DI_ONLY:mode><VNx8HI_ONLY:mode>)
+	(*aarch64_sme_<optab><VNx2DI_ONLY:mode><VNx8HI_ONLY:mode>_plus)
+	(@aarch64_sme_<optab><VNx2DI_ONLY:mode><SME_ZA_HIx24:mode>)
+	(*aarch64_sme_<optab><VNx2DI_ONLY:mode><SME_ZA_HIx24:mode>_plus)
+	(@aarch64_sme_single_<optab><VNx2DI_ONLY:mode><SME_ZA_HIx24:mode>)
+	(*aarch64_sme_single_<optab><VNx2DI_ONLY:mode><SME_ZA_HIx24:mode>_plus)
+	(@aarch64_sme_lane_<optab><VNx2DI_ONLY:mode><SME_ZA_HIx124:mode>)
+	(*aarch64_sme_lane_<optab><VNx2DI_ONLY:mode><SME_ZA_HIx124:mode>)
+	(@aarch64_sme_<optab><VNx4SI_ONLY:mode><VNx8HI_ONLY:mode>)
+	(@aarch64_sme_<optab><VNx4SI_ONLY:mode><VNx4SI_ONLY:mode>)
+	(@aarch64_sme_<optab><VNx4SI_ONLY:mode><SME_ZA_HFx24:mode>)
+	(*aarch64_sme_<optab><VNx4SI_ONLY:mode><SME_ZA_HFx24:mode>_plus)
+	(@aarch64_sme_single_<optab><VNx4SI_ONLY:mode><SME_ZA_HFx24:mode>)
+	(*aarch64_sme_single_<optab><VNx4SI_ONLY:mode><SME_ZA_HFx24:mode>_plus)
+	(@aarch64_sme_lane_<optab><VNx4SI_ONLY:mode><SME_ZA_HFx24:mode>)
+	(*aarch64_sme_lane_<optab><VNx4SI_ONLY:mode><SME_ZA_HFx24:mode>_plus)
+	(@aarch64_sme_<optab><SME_ZA_SDF_I:mode><SME_ZA_SDFx24:mode>)
+	(*aarch64_sme_<optab><SME_ZA_SDF_I:mode><SME_ZA_SDFx24:mode>_plus)
+	(@aarch64_sme_single_<optab><SME_ZA_SDF_I:mode><SME_ZA_SDFx24:mode>)
+	(*aarch64_sme_single_<optab><SME_ZA_SDF_I:mode><SME_ZA_SDFx24:mode>_plus)
+	(@aarch64_sme_lane_<optab><SME_ZA_SDF_I:mode><SME_ZA_SDFx24:mode>)
+	(*aarch64_sme_lane_<optab><SME_ZA_SDF_I:mode><SME_ZA_SDFx24:mode>)
+	(@aarch64_sme_<optab><VNx4SI_ONLY:mode><SVE_FULL_HF:mode>)
+	(*aarch64_sme_<optab><VNx4SI_ONLY:mode><SVE_FULL_HF:mode>_plus)
+	(@aarch64_sme_lane_<optab><VNx4SI_ONLY:mode><SME_ZA_HFx124:mode>)
+	(*aarch64_sme_lane_<optab><VNx4SI_ONLY:mode><SME_ZA_HFx124:mode>)
+	(@aarch64_sme_lut<LUTI_BITS><mode>): Likewise.
+	(UNSPEC_SME_LUTI): New unspec.
+	* config/aarch64/aarch64-sve-builtins.def (single): New mode suffix.
+	(c8, c16, c32, c64): New type suffixes.
+	(vg1x2, vg1x4, vg2, vg2x1, vg2x2, vg2x4, vg4, vg4x1, vg4x2)
+	(vg4x4): New group suffixes.
+	* config/aarch64/aarch64-sve-builtins.h (CP_READ_ZT0)
+	(CP_WRITE_ZT0): New constants.
+	(get_svbool_t): Delete.
+	(function_resolver::report_mismatched_num_vectors): New member
+	function.
+	(function_resolver::resolve_conversion): Likewise.
+	(function_resolver::infer_predicate_type): Likewise.
+	(function_resolver::infer_64bit_scalar_integer_pair): Likewise.
+	(function_resolver::require_matching_predicate_type): Likewise.
+	(function_resolver::require_nonscalar_type): Likewise.
+	(function_resolver::finish_opt_single_resolution): Likewise.
+	(function_resolver::require_derived_vector_type): Add an
+	expected_num_vectors parameter.
+	(function_expander::map_to_rtx_codes): Add an extra parameter
+	for unconditional FP unspecs.
+	(function_instance::gp_type_index): New member function.
+	(function_instance::gp_type): Likewise.
+	(function_instance::gp_mode): Handle multi-vector operations.
+	* config/aarch64/aarch64-sve-builtins.cc (TYPES_all_count)
+	(TYPES_all_pred_count, TYPES_c, TYPES_bhs_data, TYPES_bhs_widen)
+	(TYPES_hs_data, TYPES_cvt_h_s_float, TYPES_cvt_s_s, TYPES_qcvt_x2)
+	(TYPES_qcvt_x4, TYPES_qrshr_x2, TYPES_qrshru_x2, TYPES_qrshr_x4)
+	(TYPES_qrshru_x4, TYPES_while_x, TYPES_while_x_c, TYPES_s_narrow_fsu)
+	(TYPES_za_s_b_signed, TYPES_za_s_b_unsigned, TYPES_za_s_b_integer)
+	(TYPES_za_s_h_integer, TYPES_za_s_h_data, TYPES_za_s_unsigned)
+	(TYPES_za_s_float, TYPES_za_s_data, TYPES_za_d_h_integer): New type
+	macros.
+	(groups_x2, groups_x12, groups_x4, groups_x24, groups_x124)
+	(groups_vg1x2, groups_vg1x4, groups_vg1x24, groups_vg2, groups_vg4)
+	(groups_vg24): New group arrays.
+	(function_instance::reads_global_state_p): Handle CP_READ_ZT0.
+	(function_instance::modifies_global_state_p): Handle CP_WRITE_ZT0.
+	(add_shared_state_attribute): Handle zt0 state.
+	(function_builder::add_overloaded_functions): Skip MODE_single
+	for non-tuple groups.
+	(function_resolver::report_mismatched_num_vectors): New function.
+	(function_resolver::resolve_to): Add a fallback error message for
+	the general two-type case.
+	(function_resolver::resolve_conversion): New function.
+	(function_resolver::infer_predicate_type): Likewise.
+	(function_resolver::infer_64bit_scalar_integer_pair): Likewise.
+	(function_resolver::require_matching_predicate_type): Likewise.
+	(function_resolver::require_matching_vector_type): Specifically
+	diagnose mismatched vector counts.
+	(function_resolver::require_derived_vector_type): Add an
+	expected_num_vectors parameter.  Extend to handle cases where
+	tuples are expected.
+	(function_resolver::require_nonscalar_type): New function.
+	(function_resolver::check_gp_argument): Use gp_type_index rather
+	than hard-coding VECTOR_TYPE_svbool_t.
+	(function_resolver::finish_opt_single_resolution): New function.
+	(function_checker::require_immediate_either_or): Remove hard-coded
+	constants.
+	(function_expander::direct_optab_handler): New function.
+	(function_expander::use_pred_x_insn): Only add a strictness flag
+	is the insn has an operand for it.
+	(function_expander::map_to_rtx_codes): Take an unconditional
+	FP unspec as an extra parameter.  Handle tuples and MODE_single.
+	(function_expander::map_to_unspecs): Handle tuples and MODE_single.
+	* config/aarch64/aarch64-sve-builtins-functions.h (read_zt0)
+	(write_zt0): New typedefs.
+	(full_width_access::memory_vector): Use the function's
+	vectors_per_tuple.
+	(rtx_code_function_base): Add an optional unconditional FP unspec.
+	(rtx_code_function::expand): Update accordingly.
+	(rtx_code_function_rotated::expand): Likewise.
+	(unspec_based_function_exact_insn::expand): Use tuple_mode instead
+	of vector_mode.
+	(unspec_based_uncond_function): New typedef.
+	(cond_or_uncond_unspec_function): New class.
+	(sme_1mode_function::expand): Handle single forms.
+	(sme_2mode_function_t): Likewise, adding a template parameter for them.
+	(sme_2mode_function): Update accordingly.
+	(sme_2mode_lane_function): New typedef.
+	(multireg_permute): New class.
+	(class integer_conversion): Likewise.
+	(while_comparison::expand): Handle svcount_t and svboolx2_t results.
+	* config/aarch64/aarch64-sve-builtins-shapes.h
+	(binary_int_opt_single_n, binary_opt_single_n, binary_single)
+	(binary_za_slice_lane, binary_za_slice_int_opt_single)
+	(binary_za_slice_opt_single, binary_za_slice_uint_opt_single)
+	(binaryx, clamp, compare_scalar_count, count_pred_c)
+	(dot_za_slice_int_lane, dot_za_slice_lane, dot_za_slice_uint_lane)
+	(extract_pred, inherent_zt, ldr_zt, read_za, read_za_slice)
+	(select_pred, shift_right_imm_narrowxn, storexn, str_zt)
+	(unary_convertxn, unary_za_slice, unaryxn, write_za)
+	(write_za_slice): Declare.
+	* config/aarch64/aarch64-sve-builtins-shapes.cc
+	(za_group_is_pure_overload): New function.
+	(apply_predication): Use the function's gp_type for the predicate,
+	instead of hard-coding the use of svbool_t.
+	(parse_element_type): Add support for "c" (svcount_t).
+	(parse_type): Add support for "c0" and "c1" (conversion destination
+	and source types).
+	(binary_za_slice_lane_base): New class.
+	(binary_za_slice_opt_single_base): Likewise.
+	(load_contiguous_base::resolve): Pass the group suffix to r.resolve.
+	(luti_lane_zt_base): New class.
+	(binary_int_opt_single_n, binary_opt_single_n, binary_single)
+	(binary_za_slice_lane, binary_za_slice_int_opt_single)
+	(binary_za_slice_opt_single, binary_za_slice_uint_opt_single)
+	(binaryx, clamp): New shapes.
+	(compare_scalar_def::build): Allow the return type to be a tuple.
+	(compare_scalar_def::expand): Pass the group suffix to r.resolve.
+	(compare_scalar_count, count_pred_c, dot_za_slice_int_lane)
+	(dot_za_slice_lane, dot_za_slice_uint_lane, extract_pred, inherent_zt)
+	(ldr_zt, read_za, read_za_slice, select_pred, shift_right_imm_narrowxn)
+	(storexn, str_zt): New shapes.
+	(ternary_qq_lane_def, ternary_qq_opt_n_def): Replace with...
+	(ternary_qq_or_011_lane_def, ternary_qq_opt_n_or_011_def): ...these
+	new classes.  Allow a second suffix that specifies the type of the
+	second vector argument, and that is used to derive the third.
+	(unary_def::build): Extend to handle tuple types.
+	(unary_convert_def::build): Use the new c0 and c1 format specifiers.
+	(unary_convertxn, unary_za_slice, unaryxn, write_za): New shapes.
+	(write_za_slice): Likewise.
+	* config/aarch64/aarch64-sve-builtins-base.cc (svbic_impl::expand)
+	(svext_bhw_impl::expand): Update call to map_to_rtx_costs.
+	(svcntp_impl::expand): Handle svcount_t variants.
+	(svcvt_impl::expand): Handle unpredicated conversions separately,
+	dealing with tuples.
+	(svdot_impl::expand): Handle 2-way dot products.
+	(svdotprod_lane_impl::expand): Likewise.
+	(svld1_impl::fold): Punt on tuple loads.
+	(svld1_impl::expand): Handle tuple loads.
+	(svldnt1_impl::expand): Likewise.
+	(svpfalse_impl::fold): Punt on svcount_t forms.
+	(svptrue_impl::fold): Likewise.
+	(svptrue_impl::expand): Handle svcount_t forms.
+	(svrint_impl): New class.
+	(svsel_impl::fold): Punt on tuple forms.
+	(svsel_impl::expand): Handle tuple forms.
+	(svst1_impl::fold): Punt on tuple loads.
+	(svst1_impl::expand): Handle tuple loads.
+	(svstnt1_impl::expand): Likewise.
+	(svwhilelx_impl::fold): Punt on tuple forms.
+	(svdot_lane): Use UNSPEC_FDOT.
+	(svmax, svmaxnm, svmin, svminmm): Add unconditional FP unspecs.
+	(rinta, rinti, rintm, rintn, rintp, rintx, rintz): Use svrint_impl.
+	* config/aarch64/aarch64-sve-builtins-base.def (svcreate2, svget2)
+	(svset2, svundef2): Add _b variants.
+	(svcvt): Use unary_convertxn.
+	(svdot): Use ternary_qq_opt_n_or_011.
+	(svdot_lane): Use ternary_qq_or_011_lane.
+	(svmax, svmaxnm, svmin, svminnm): Use binary_opt_single_n.
+	(svpfalse): Add a form that returns svcount_t results.
+	(svrinta, svrintm, svrintn, svrintp): Use unaryxn.
+	(svsel): Use binaryxn.
+	(svst1, svstnt1): Use storexn.
+	* config/aarch64/aarch64-sve-builtins-sme.h
+	(svadd_za, svadd_write_za, svbmopa_za, svbmops_za, svdot_za)
+	(svdot_lane_za, svldr_zt, svluti2_lane_zt, svluti4_lane_zt)
+	(svmla_za, svmla_lane_za, svmls_za, svmls_lane_za, svread_za)
+	(svstr_zt, svsub_za, svsub_write_za, svsudot_za, svsudot_lane_za)
+	(svsuvdot_lane_za, svusdot_za, svusdot_lane_za, svusvdot_lane_za)
+	(svvdot_lane_za, svwrite_za, svzero_zt): Declare.
+	* config/aarch64/aarch64-sve-builtins-sme.cc (load_store_za_base):
+	Rename to...
+	(load_store_za_zt0_base): ...this and extend to tuples.
+	(load_za_base, store_za_base): Update accordingly.
+	(expand_ldr_str_zt0): New function.
+	(svldr_zt_impl, svluti_lane_zt_impl, svread_za_impl, svstr_zt_impl)
+	(svsudot_za_impl, svwrite_za_impl, svzero_zt_impl): New classes.
+	(svadd_za, svadd_write_za, svbmopa_za, svbmops_za, svdot_za)
+	(svdot_lane_za, svldr_zt, svluti2_lane_zt, svluti4_lane_zt)
+	(svmla_za, svmla_lane_za, svmls_za, svmls_lane_za, svread_za)
+	(svstr_zt, svsub_za, svsub_write_za, svsudot_za, svsudot_lane_za)
+	(svsuvdot_lane_za, svusdot_za, svusdot_lane_za, svusvdot_lane_za)
+	(svvdot_lane_za, svwrite_za, svzero_zt): New functions.
+	* config/aarch64/aarch64-sve-builtins-sme.def: Add SME2 intrinsics.
+	* config/aarch64/aarch64-sve-builtins-sve2.h
+	(svbfmlslb, svbfmlslb_lane, svbfmlslt, svbfmlslt_lane, svclamp)
+	(svcvtn, svpext, svpsel, svqcvt, svqcvtn, svqrshr, svqrshrn)
+	(svqrshru, svqrshrun, svrevd, svunpk, svuzp, svuzpq, svzip)
+	(svzipq): Declare.
+	* config/aarch64/aarch64-sve-builtins-sve2.cc (svclamp_impl)
+	(svcvtn_impl, svpext_impl, svpsel_impl): New classes.
+	(svqrshl_impl::fold): Update for change to svrshl shape.
+	(svrshl_impl::fold): Punt on tuple forms.
+	(svsqadd_impl::expand): Update call to map_to_rtx_codes.
+	(svunpk_impl): New class.
+	(svbfmlslb, svbfmlslb_lane, svbfmlslt, svbfmlslt_lane, svclamp)
+	(svcvtn, svpext, svpsel, svqcvt, svqcvtn, svqrshr, svqrshrn)
+	(svqrshru, svqrshrun, svrevd, svunpk, svuzp, svuzpq, svzip)
+	(svzipq): New functions.
+	* config/aarch64/aarch64-sve-builtins-sve2.def: Add SME2 intrinsics.
+	* config/aarch64/aarch64-c.cc (aarch64_update_cpp_builtins): Define
+	or undefine __ARM_FEATURE_SME2.
+
+2023-12-05  Richard Sandiford  <richard.sandiford@arm.com>
+
+	* config/aarch64/aarch64.md (ZT0_REGNUM): New constant.
+	(LAST_FAKE_REGNUM): Bump to include it.
+	* config/aarch64/aarch64.h (FIXED_REGISTERS): Add an entry for ZT0.
+	(CALL_REALLY_USED_REGISTERS, REGISTER_NAMES): Likewise.
+	(REG_CLASS_CONTENTS): Likewise.
+	(machine_function): Add zt0_save_buffer.
+	(CUMULATIVE_ARGS): Add shared_zt0_flags;
+	* config/aarch64/aarch64.cc (aarch64_check_state_string): Handle zt0.
+	(aarch64_fntype_pstate_za, aarch64_fndecl_pstate_za): Likewise.
+	(aarch64_function_arg): Add the shared ZT0 flags as an extra
+	limb of the parallel.
+	(aarch64_init_cumulative_args): Initialize shared_zt0_flags.
+	(aarch64_extra_live_on_entry): Handle ZT0_REGNUM.
+	(aarch64_epilogue_uses): Likewise.
+	(aarch64_get_zt0_save_buffer, aarch64_save_zt0): New functions.
+	(aarch64_restore_zt0): Likewise.
+	(aarch64_start_call_args): Reject calls to functions that share
+	ZT0 from functions that have no ZT0 state.  Save ZT0 around shared-ZA
+	calls that do not share ZT0.
+	(aarch64_expand_call): Handle ZT0.  Reject calls to functions that
+	share ZT0 but not ZA from functions with ZA state.
+	(aarch64_end_call_args): Restore ZT0 after calls to shared-ZA functions
+	that do not share ZT0.
+	(aarch64_set_current_function): Require +sme2 for functions that
+	have ZT0 state.
+	(aarch64_function_attribute_inlinable_p): Don't allow functions to
+	be inlined if they have local zt0 state.
+	(AARCH64_IPA_CLOBBERS_ZT0): New constant.
+	(aarch64_update_ipa_fn_target_info): Record asms that clobber ZT0.
+	(aarch64_can_inline_p): Don't inline callees that clobber ZT0
+	into functions that have ZT0 state.
+	(aarch64_comp_type_attributes): Check for compatible ZT0 sharing.
+	(aarch64_optimize_mode_switching): Use mode switching if the
+	function has ZT0 state.
+	(aarch64_mode_emit_local_sme_state): Save and restore ZT0 around
+	calls to private-ZA functions.
+	(aarch64_mode_needed_local_sme_state): Require ZA to be active
+	for instructions that access ZT0.
+	(aarch64_mode_entry): Mark ZA as dead on entry if the function
+	only shares state other than "za" itself.
+	(aarch64_mode_exit): Likewise mark ZA as dead on return.
+	(aarch64_md_asm_adjust): Extend handling of ZA clobbers to ZT0.
+	* config/aarch64/aarch64-c.cc (aarch64_define_unconditional_macros):
+	Define __ARM_STATE_ZT0.
+	* config/aarch64/aarch64-sme.md (UNSPECV_ASM_UPDATE_ZT0): New unspecv.
+	(aarch64_asm_update_zt0): New insn.
+	(UNSPEC_RESTORE_ZT0): New unspec.
+	(aarch64_sme_ldr_zt0, aarch64_restore_zt0): New insns.
+	(aarch64_sme_str_zt0): Likewise.
+
+2023-12-05  Richard Sandiford  <richard.sandiford@arm.com>
+
+	* config/aarch64/aarch64-modes.def (VNx32BI): New mode.
+	* config/aarch64/aarch64-protos.h (aarch64_split_double_move): Declare.
+	* config/aarch64/aarch64-sve-builtins.cc
+	(register_tuple_type): Handle tuples of predicates.
+	(handle_arm_sve_h): Define svboolx2_t as a pair of two svbool_ts.
+	* config/aarch64/aarch64-sve.md (movvnx32bi): New insn.
+	* config/aarch64/aarch64.cc
+	(pure_scalable_type_info::piece::get_rtx): Use VNx32BI for pairs
+	of predicates.
+	(pure_scalable_type_info::add_piece): Don't try to form pairs of
+	predicates.
+	(VEC_STRUCT): Generalize comment.
+	(aarch64_classify_vector_mode): Handle VNx32BI.
+	(aarch64_array_mode): Likewise.  Return BLKmode for arrays of
+	predicates that have no associated mode, rather than allowing
+	an integer mode to be chosen.
+	(aarch64_hard_regno_nregs): Handle VNx32BI.
+	(aarch64_hard_regno_mode_ok): Likewise.
+	(aarch64_split_double_move): New function, split out from...
+	(aarch64_split_128bit_move): ...here.
+	(aarch64_ptrue_reg): Tighten assert to aarch64_sve_pred_mode_p.
+	(aarch64_pfalse_reg): Likewise.
+	(aarch64_sve_same_pred_for_ptest_p): Likewise.
+	(aarch64_sme_mode_switch_regs::add_reg): Handle VNx32BI.
+	(aarch64_expand_mov_immediate): Restrict handling of boolean vector
+	constants to single-predicate modes.
+	(aarch64_classify_address): Handle VNx32BI, ensuring that both halves
+	can be addressed.
+	(aarch64_class_max_nregs): Handle VNx32BI.
+	(aarch64_member_type_forces_blk): Don't for BLKmode for svboolx2_t.
+	(aarch64_simd_valid_immediate): Allow all-zeros and all-ones for
+	VNx32BI.
+	(aarch64_mov_operand_p): Restrict predicate constant canonicalization
+	to single-predicate modes.
+	(aarch64_evpc_ext): Generalize exclusion to all predicate modes.
+	(aarch64_evpc_rev_local, aarch64_evpc_dup): Likewise.
+	* config/aarch64/constraints.md (PR_REGS): New predicate.
+
+2023-12-05  Richard Sandiford  <richard.sandiford@arm.com>
+
+	* config/aarch64/aarch64-sve-builtins-base.cc
+	(svreinterpret_impl::fold): Handle reinterprets between svbool_t
+	and svcount_t.
+	(svreinterpret_impl::expand): Likewise.
+	* config/aarch64/aarch64-sve-builtins-base.def (svreinterpret): Add
+	b<->c forms.
+	* config/aarch64/aarch64-sve-builtins.cc (TYPES_reinterpret_b): New
+	type suffix list.
+	(wrap_type_in_struct, register_type_decl): New functions, split out
+	from...
+	(register_tuple_type): ...here.
+	(register_builtin_types): Handle svcount_t.
+	(handle_arm_sve_h): Don't create tuples of svcount_t.
+	* config/aarch64/aarch64-sve-builtins.def (svcount_t): New type.
+	(c): New type suffix.
+	* config/aarch64/aarch64-sve-builtins.h (TYPE_count): New type class.
+
+2023-12-05  Richard Sandiford  <richard.sandiford@arm.com>
+
+	* doc/invoke.texi: Document +sme2.
+	* doc/sourcebuild.texi: Document aarch64_sme2.
+	* config/aarch64/aarch64-option-extensions.def (AARCH64_OPT_EXTENSION):
+	Add sme2.
+	* config/aarch64/aarch64.h (AARCH64_ISA_SME2, TARGET_SME2): New macros.
+
+2023-12-05  Richard Sandiford  <richard.sandiford@arm.com>
+
+	* config/aarch64/aarch64.cc (aarch64_function_ok_for_sibcall):
+	Enforce PSTATE.SM and PSTATE.ZA restrictions.
+	(aarch64_expand_epilogue): Save and restore the arguments
+	to a sibcall around any change to PSTATE.SM.
+
+2023-12-05  Richard Sandiford  <richard.sandiford@arm.com>
+
+	* config/aarch64/aarch64.cc: Include symbol-summary.h, ipa-prop.h,
+	and ipa-fnsummary.h
+	(aarch64_function_attribute_inlinable_p): New function.
+	(AARCH64_IPA_SM_FIXED, AARCH64_IPA_CLOBBERS_ZA): New constants.
+	(aarch64_need_ipa_fn_target_info): New function.
+	(aarch64_update_ipa_fn_target_info): Likewise.
+	(aarch64_can_inline_p): Restrict the previous ISA flag checks
+	to non-modal features.  Prevent callees that require a particular
+	PSTATE.SM state from being inlined into callers that can't guarantee
+	that state.  Also prevent callees that have ZA state from being
+	inlined into callers that don't.  Finally, prevent callees that
+	clobber ZA from being inlined into callers that have ZA state.
+	(TARGET_FUNCTION_ATTRIBUTE_INLINABLE_P): Define.
+	(TARGET_NEED_IPA_FN_TARGET_INFO): Likewise.
+	(TARGET_UPDATE_IPA_FN_TARGET_INFO): Likewise.
+
+2023-12-05  Richard Sandiford  <richard.sandiford@arm.com>
+
+	* config/aarch64/aarch64.cc: Include except.h
+	(aarch64_sme_mode_switch_regs::add_call_preserved_reg): New function.
+	(aarch64_sme_mode_switch_regs::add_call_preserved_regs): Likewise.
+	(aarch64_need_old_pstate_sm): Return true if the function has
+	a nonlocal-goto or exception receiver.
+	(aarch64_switch_pstate_sm_for_landing_pad): New function.
+	(aarch64_switch_pstate_sm_for_jump): Likewise.
+	(pass_switch_pstate_sm::gate): Enable the pass for all
+	streaming and streaming-compatible functions.
+	(pass_switch_pstate_sm::execute): Handle non-local gotos and their
+	receivers.  Handle exception handler entry points.
+
+2023-12-05  Richard Sandiford  <richard.sandiford@arm.com>
+
+	* config/aarch64/aarch64.cc (aarch64_arm_attribute_table): Add
+	arm::locally_streaming.
+	(aarch64_fndecl_is_locally_streaming): New function.
+	(aarch64_fndecl_sm_state): Handle locally-streaming functions.
+	(aarch64_cfun_enables_pstate_sm): New function.
+	(aarch64_add_offset): Add an argument that specifies whether
+	the streaming vector length should be used instead of the
+	prevailing one.
+	(aarch64_split_add_offset, aarch64_add_sp, aarch64_sub_sp): Likewise.
+	(aarch64_allocate_and_probe_stack_space): Likewise.
+	(aarch64_expand_mov_immediate): Update calls accordingly.
+	(aarch64_need_old_pstate_sm): Return true for locally-streaming
+	streaming-compatible functions.
+	(aarch64_layout_frame): Force all call-preserved Z and P registers
+	to be saved and restored if the function switches PSTATE.SM in the
+	prologue.
+	(aarch64_get_separate_components): Disable shrink-wrapping of
+	such Z and P saves and restores.
+	(aarch64_use_late_prologue_epilogue): New function.
+	(aarch64_expand_prologue): Measure SVE lengths in the streaming
+	vector length for locally-streaming functions, then emit code
+	to enable streaming mode.
+	(aarch64_expand_epilogue): Likewise in reverse.
+	(TARGET_USE_LATE_PROLOGUE_EPILOGUE): Define.
+	* config/aarch64/aarch64-c.cc (aarch64_define_unconditional_macros):
+	Define __arm_locally_streaming.
+
+2023-12-05  Richard Sandiford  <richard.sandiford@arm.com>
+
+	* doc/invoke.texi: Document +sme-i16i64 and +sme-f64f64.
+	* config.gcc (aarch64*-*-*): Add arm_sme.h to the list of headers
+	to install and aarch64-sve-builtins-sme.o to the list of objects
+	to build.
+	* config/aarch64/aarch64-c.cc (aarch64_update_cpp_builtins): Define
+	or undefine TARGET_SME, TARGET_SME_I16I64 and TARGET_SME_F64F64.
+	(aarch64_pragma_aarch64): Handle arm_sme.h.
+	* config/aarch64/aarch64-option-extensions.def (sme-i16i64)
+	(sme-f64f64): New extensions.
+	* config/aarch64/aarch64-protos.h (aarch64_sme_vq_immediate)
+	(aarch64_addsvl_addspl_immediate_p, aarch64_output_addsvl_addspl)
+	(aarch64_output_sme_zero_za): Declare.
+	(aarch64_output_move_struct): Delete.
+	(aarch64_sme_ldr_vnum_offset): Declare.
+	(aarch64_sve::handle_arm_sme_h): Likewise.
+	* config/aarch64/aarch64.h (AARCH64_ISA_SM_ON): New macro.
+	(AARCH64_ISA_SME_I16I64, AARCH64_ISA_SME_F64F64): Likewise.
+	(TARGET_STREAMING, TARGET_STREAMING_SME): Likewise.
+	(TARGET_SME_I16I64, TARGET_SME_F64F64): Likewise.
+	* config/aarch64/aarch64.cc (aarch64_sve_rdvl_factor_p): Rename to...
+	(aarch64_sve_rdvl_addvl_factor_p): ...this.
+	(aarch64_sve_rdvl_immediate_p): Update accordingly.
+	(aarch64_rdsvl_immediate_p, aarch64_add_offset): Likewise.
+	(aarch64_sme_vq_immediate): Likewise.  Make public.
+	(aarch64_sve_addpl_factor_p): New function.
+	(aarch64_sve_addvl_addpl_immediate_p): Use
+	aarch64_sve_rdvl_addvl_factor_p and aarch64_sve_addpl_factor_p.
+	(aarch64_addsvl_addspl_immediate_p): New function.
+	(aarch64_output_addsvl_addspl): Likewise.
+	(aarch64_cannot_force_const_mem): Return true for RDSVL immediates.
+	(aarch64_classify_index): Handle .Q scaling for VNx1TImode.
+	(aarch64_classify_address): Likewise for vnum offsets.
+	(aarch64_output_sme_zero_za): New function.
+	(aarch64_sme_ldr_vnum_offset_p): Likewise.
+	* config/aarch64/predicates.md (aarch64_addsvl_addspl_immediate):
+	New predicate.
+	(aarch64_pluslong_operand): Include it for SME.
+	* config/aarch64/constraints.md (Ucj, Uav): New constraints.
+	* config/aarch64/iterators.md (VNx1TI_ONLY): New mode iterator.
+	(SME_ZA_I, SME_ZA_SDI, SME_ZA_SDF_I, SME_MOP_BHI): Likewise.
+	(SME_MOP_HSDF): Likewise.
+	(UNSPEC_SME_ADDHA, UNSPEC_SME_ADDVA, UNSPEC_SME_FMOPA)
+	(UNSPEC_SME_FMOPS, UNSPEC_SME_LD1_HOR, UNSPEC_SME_LD1_VER)
+	(UNSPEC_SME_READ_HOR, UNSPEC_SME_READ_VER, UNSPEC_SME_SMOPA)
+	(UNSPEC_SME_SMOPS, UNSPEC_SME_ST1_HOR, UNSPEC_SME_ST1_VER)
+	(UNSPEC_SME_SUMOPA, UNSPEC_SME_SUMOPS, UNSPEC_SME_UMOPA)
+	(UNSPEC_SME_UMOPS, UNSPEC_SME_USMOPA, UNSPEC_SME_USMOPS)
+	(UNSPEC_SME_WRITE_HOR, UNSPEC_SME_WRITE_VER): New unspecs.
+	(elem_bits): Handle x2 and x4 structure modes, plus VNx1TI.
+	(Vetype, Vesize, VPRED): Handle VNx1TI.
+	(b): New mode attribute.
+	(SME_LD1, SME_READ, SME_ST1, SME_WRITE, SME_BINARY_SDI, SME_INT_MOP)
+	(SME_FP_MOP): New int iterators.
+	(optab): Handle SME unspecs.
+	(hv): New int attribute.
+	* config/aarch64/aarch64.md (*add<mode>3_aarch64): Handle ADDSVL
+	and ADDSPL.
+	* config/aarch64/aarch64-sme.md (UNSPEC_SME_LDR): New unspec.
+	(@aarch64_sme_<optab><mode>, @aarch64_sme_<optab><mode>_plus)
+	(aarch64_sme_ldr0, @aarch64_sme_ldrn<mode>): New patterns.
+	(UNSPEC_SME_STR): New unspec.
+	(@aarch64_sme_<optab><mode>, @aarch64_sme_<optab><mode>_plus)
+	(aarch64_sme_str0, @aarch64_sme_strn<mode>): New patterns.
+	(@aarch64_sme_<optab><v_int_container><mode>): Likewise.
+	(*aarch64_sme_<optab><v_int_container><mode>_plus): Likewise.
+	(@aarch64_sme_<optab><VNx1TI_ONLY:mode><SVE_FULL:mode>): Likewise.
+	(@aarch64_sme_<optab><v_int_container><mode>): Likewise.
+	(*aarch64_sme_<optab><v_int_container><mode>_plus): Likewise.
+	(@aarch64_sme_<optab><VNx1TI_ONLY:mode><SVE_FULL:mode>): Likewise.
+	(UNSPEC_SME_ZERO): New unspec.
+	(aarch64_sme_zero): New pattern.
+	(@aarch64_sme_<SME_BINARY_SDI:optab><mode>): Likewise.
+	(@aarch64_sme_<SME_INT_MOP:optab><mode>): Likewise.
+	(@aarch64_sme_<SME_FP_MOP:optab><mode>): Likewise.
+	* config/aarch64/aarch64-sve-builtins.def: Add ZA type suffixes.
+	Include aarch64-sve-builtins-sme.def.
+	(DEF_SME_ZA_FUNCTION): New macro.
+	* config/aarch64/aarch64-sve-builtins.h (CP_READ_ZA): New call
+	property.
+	(CP_WRITE_ZA): Likewise.
+	(PRED_za_m): New predication type.
+	(type_suffix_index): Handle DEF_SME_ZA_SUFFIX.
+	(type_suffix_info): Add vector_p and za_p fields.
+	(function_instance::num_za_tiles): New member function.
+	(function_builder::get_attributes): Add an aarch64_feature_flags
+	argument.
+	(function_expander::get_contiguous_base): Take a base argument
+	number, a vnum argument number, and an argument that indicates
+	whether the vnum parameter is a factor of the SME vector length
+	or the prevailing vector length.
+	(function_expander::add_integer_operand): Take a poly_int64.
+	(sve_switcher::sve_switcher): Take a base set of flags.
+	(sme_switcher): New class.
+	(scalar_types): Add a null entry for NUM_VECTOR_TYPES.
+	* config/aarch64/aarch64-sve-builtins.cc: Include
+	aarch64-sve-builtins-sme.h.
+	(pred_suffixes): Add an entry for PRED_za_m.
+	(type_suffixes): Initialize vector_p and za_p.  Handle ZA suffixes.
+	(TYPES_all_za, TYPES_d_za, TYPES_za_bhsd_data, TYPES_za_all_data)
+	(TYPES_za_s_integer, TYPES_za_d_integer, TYPES_mop_base)
+	(TYPES_mop_base_signed, TYPES_mop_base_unsigned, TYPES_mop_i16i64)
+	(TYPES_mop_i16i64_signed, TYPES_mop_i16i64_unsigned, TYPES_za): New
+	type suffix macros.
+	(preds_m, preds_za_m): New predication lists.
+	(function_groups): Handle DEF_SME_ZA_FUNCTION.
+	(scalar_types): Add an entry for NUM_VECTOR_TYPES.
+	(find_type_suffix_for_scalar_type): Check positively for vectors
+	rather than negatively for predicates.
+	(check_required_extensions): Handle PSTATE.SM and PSTATE.ZA
+	requirements.
+	(report_out_of_range): Handle the case where the minimum and
+	maximum are the same.
+	(function_instance::reads_global_state_p): Return true for functions
+	that read ZA.
+	(function_instance::modifies_global_state_p): Return true for functions
+	that write to ZA.
+	(sve_switcher::sve_switcher): Add a base flags argument.
+	(function_builder::get_name): Handle "__arm_" prefixes.
+	(add_attribute): Add an overload that takes a namespaces.
+	(add_shared_state_attribute): New function.
+	(function_builder::get_attributes): Take the required feature flags
+	as argument.  Add streaming and ZA attributes where appropriate.
+	(function_builder::add_unique_function): Update calls accordingly.
+	(function_resolver::check_gp_argument): Assert that the predication
+	isn't ZA _m predication.
+	(function_checker::function_checker): Don't bias the argument
+	number for ZA _m predication.
+	(function_expander::get_contiguous_base): Add arguments that
+	specify the base argument number, the vnum argument number,
+	and an argument that indicates whether the vnum parameter is
+	a factor of the SME vector length or the prevailing vector length.
+	Handle the SME case.
+	(function_expander::add_input_operand): Handle pmode_register_operand.
+	(function_expander::add_integer_operand): Take a poly_int64.
+	(init_builtins): Call handle_arm_sme_h for LTO.
+	(handle_arm_sve_h): Skip SME intrinsics.
+	(handle_arm_sme_h): New function.
+	* config/aarch64/aarch64-sve-builtins-functions.h
+	(read_write_za, write_za): New classes.
+	(unspec_based_sme_function, za_arith_function): New using aliases.
+	(quiet_za_arith_function): Likewise.
+	* config/aarch64/aarch64-sve-builtins-shapes.h
+	(binary_za_int_m, binary_za_m, binary_za_uint_m, bool_inherent)
+	(inherent_za, inherent_mask_za, ldr_za, load_za, read_za_m, store_za)
+	(str_za, unary_za_m, write_za_m): Declare.
+	* config/aarch64/aarch64-sve-builtins-shapes.cc (apply_predication):
+	Expect za_m functions to have an existing governing predicate.
+	(binary_za_m_base, binary_za_int_m_def, binary_za_m_def): New classes.
+	(binary_za_uint_m_def, bool_inherent_def, inherent_za_def): Likewise.
+	(inherent_mask_za_def, ldr_za_def, load_za_def, read_za_m_def)
+	(store_za_def, str_za_def, unary_za_m_def, write_za_m_def): Likewise.
+	* config/aarch64/arm_sme.h: New file.
+	* config/aarch64/aarch64-sve-builtins-sme.h: Likewise.
+	* config/aarch64/aarch64-sve-builtins-sme.cc: Likewise.
+	* config/aarch64/aarch64-sve-builtins-sme.def: Likewise.
+	* config/aarch64/t-aarch64 (aarch64-sve-builtins.o): Depend on
+	aarch64-sve-builtins-sme.def and aarch64-sve-builtins-sme.h.
+	(aarch64-sve-builtins-sme.o): New rule.
+
+2023-12-05  Richard Sandiford  <richard.sandiford@arm.com>
+
+	* config/aarch64/aarch64-sve-builtins.h
+	(function_shape::has_merge_argument_p): New member function.
+	* config/aarch64/aarch64-sve-builtins.cc:
+	(function_resolver::check_gp_argument): Use it.
+	(function_expander::get_fallback_value): Likewise.
+	* config/aarch64/aarch64-sve-builtins-shapes.cc
+	(apply_predication): Likewise.
+	(unary_convert_narrowt_def::has_merge_argument_p): New function.
+
+2023-12-05  Richard Sandiford  <richard.sandiford@arm.com>
+
+	* config/aarch64/aarch64-sve-builtins-functions.h
+	(unspec_based_function_base): Allow type suffix 1 to determine
+	the mode of the operation.
+	(unspec_based_function): Update accordingly.
+	(unspec_based_fused_function): Likewise.
+	(unspec_based_fused_lane_function): Likewise.
+
+2023-12-05  Richard Sandiford  <richard.sandiford@arm.com>
+
+	* config/aarch64/aarch64-modes.def: Add VNx1TI.
+
+2023-12-05  Richard Sandiford  <richard.sandiford@arm.com>
+
+	* config/aarch64/aarch64.h (W12_W15_REGNUM_P): New macro.
+	(W12_W15_REGS): New register class.
+	(REG_CLASS_NAMES, REG_CLASS_CONTENTS): Add entries for it.
+	* config/aarch64/aarch64.cc (aarch64_regno_regclass)
+	(aarch64_class_max_nregs, aarch64_register_move_cost): Handle
+	W12_W15_REGS.
+
+2023-12-05  Richard Sandiford  <richard.sandiford@arm.com>
+
+	* config/aarch64/aarch64-isa-modes.def (ZA_ON): New ISA mode.
+	* config/aarch64/aarch64-protos.h (aarch64_rdsvl_immediate_p)
+	(aarch64_output_rdsvl, aarch64_optimize_mode_switching)
+	(aarch64_restore_za): Declare.
+	* config/aarch64/constraints.md (UsR): New constraint.
+	* config/aarch64/aarch64.md (LOWERING_REGNUM, TPIDR_BLOCK_REGNUM)
+	(SME_STATE_REGNUM, TPIDR2_SETUP_REGNUM, ZA_FREE_REGNUM)
+	(ZA_SAVED_REGNUM, ZA_REGNUM, FIRST_FAKE_REGNUM): New constants.
+	(LAST_FAKE_REGNUM): Likewise.
+	(UNSPEC_SAVE_NZCV, UNSPEC_RESTORE_NZCV, UNSPEC_SME_VQ): New unspecs.
+	(arches): Add sme.
+	(arch_enabled): Handle it.
+	(*cb<optab><mode>1): Rename to...
+	(aarch64_cb<optab><mode>1): ...this.
+	(*movsi_aarch64): Add an alternative for RDSVL.
+	(*movdi_aarch64): Likewise.
+	(aarch64_save_nzcv, aarch64_restore_nzcv): New insns.
+	* config/aarch64/aarch64-sme.md (UNSPEC_SMSTOP_ZA)
+	(UNSPEC_INITIAL_ZERO_ZA, UNSPEC_TPIDR2_SAVE, UNSPEC_TPIDR2_RESTORE)
+	(UNSPEC_READ_TPIDR2, UNSPEC_WRITE_TPIDR2, UNSPEC_SETUP_LOCAL_TPIDR2)
+	(UNSPEC_RESTORE_ZA, UNSPEC_START_PRIVATE_ZA_CALL): New unspecs.
+	(UNSPEC_END_PRIVATE_ZA_CALL, UNSPEC_COMMIT_LAZY_SAVE): Likewise.
+	(UNSPECV_ASM_UPDATE_ZA): New unspecv.
+	(aarch64_tpidr2_save, aarch64_smstart_za, aarch64_smstop_za)
+	(aarch64_initial_zero_za, aarch64_setup_local_tpidr2)
+	(aarch64_clear_tpidr2, aarch64_write_tpidr2, aarch64_read_tpidr2)
+	(aarch64_tpidr2_restore, aarch64_restore_za, aarch64_asm_update_za)
+	(aarch64_start_private_za_call, aarch64_end_private_za_call)
+	(aarch64_commit_lazy_save): New patterns.
+	* config/aarch64/aarch64.h (AARCH64_ISA_ZA_ON, TARGET_ZA): New macros.
+	(FIXED_REGISTERS, REGISTER_NAMES): Add the new fake ZA registers.
+	(CALL_USED_REGISTERS): Replace with...
+	(CALL_REALLY_USED_REGISTERS): ...this and add the fake ZA registers.
+	(FIRST_PSEUDO_REGISTER): Bump to include the fake ZA registers.
+	(FAKE_REGS): New register class.
+	(REG_CLASS_NAMES): Update accordingly.
+	(REG_CLASS_CONTENTS): Likewise.
+	(machine_function::tpidr2_block): New member variable.
+	(machine_function::tpidr2_block_ptr): Likewise.
+	(machine_function::za_save_buffer): Likewise.
+	(machine_function::next_asm_update_za_id): Likewise.
+	(CUMULATIVE_ARGS::shared_za_flags): Likewise.
+	(aarch64_mode_entity, aarch64_local_sme_state): New enums.
+	(aarch64_tristate_mode): Likewise.
+	(OPTIMIZE_MODE_SWITCHING, NUM_MODES_FOR_MODE_SWITCHING): Define.
+	* config/aarch64/aarch64.cc (AARCH64_STATE_SHARED, AARCH64_STATE_IN)
+	(AARCH64_STATE_OUT): New constants.
+	(aarch64_attribute_shared_state_flags): New function.
+	(aarch64_lookup_shared_state_flags, aarch64_fndecl_has_new_state)
+	(aarch64_check_state_string, cmp_string_csts): Likewise.
+	(aarch64_merge_string_arguments, aarch64_check_arm_new_against_type)
+	(handle_arm_new, handle_arm_shared): Likewise.
+	(handle_arm_new_za_attribute): New
+	(aarch64_arm_attribute_table): Add new, preserves, in, out, and inout.
+	(aarch64_hard_regno_nregs): Handle FAKE_REGS.
+	(aarch64_hard_regno_mode_ok): Likewise.
+	(aarch64_fntype_shared_flags, aarch64_fntype_pstate_za): New functions.
+	(aarch64_fntype_isa_mode): Include aarch64_fntype_pstate_za.
+	(aarch64_fndecl_has_state, aarch64_fndecl_pstate_za): New functions.
+	(aarch64_fndecl_isa_mode): Include aarch64_fndecl_pstate_za.
+	(aarch64_cfun_incoming_pstate_za, aarch64_cfun_shared_flags)
+	(aarch64_cfun_has_new_state, aarch64_cfun_has_state): New functions.
+	(aarch64_sme_vq_immediate, aarch64_sme_vq_unspec_p): Likewise.
+	(aarch64_rdsvl_immediate_p, aarch64_output_rdsvl): Likewise.
+	(aarch64_expand_mov_immediate): Handle RDSVL immediates.
+	(aarch64_function_arg): Add the ZA sharing flags as a third limb
+	of the PARALLEL.
+	(aarch64_init_cumulative_args): Record the ZA sharing flags.
+	(aarch64_extra_live_on_entry): New function.  Handle the new
+	ZA-related fake registers.
+	(aarch64_epilogue_uses): Handle the new ZA-related fake registers.
+	(aarch64_cannot_force_const_mem): Handle UNSPEC_SME_VQ constants.
+	(aarch64_get_tpidr2_block, aarch64_get_tpidr2_ptr): New functions.
+	(aarch64_init_tpidr2_block, aarch64_restore_za): Likewise.
+	(aarch64_layout_frame): Check whether the current function creates
+	new ZA state.  Record that it clobbers LR if so.
+	(aarch64_expand_prologue): Handle functions that create new ZA state.
+	(aarch64_expand_epilogue): Likewise.
+	(aarch64_create_tpidr2_block): New function.
+	(aarch64_restore_za): Likewise.
+	(aarch64_start_call_args): Disallow calls to shared-ZA functions
+	from functions that have no ZA state.  Emit a marker instruction
+	before calls to private-ZA functions from functions that have
+	SME state.
+	(aarch64_expand_call): Add return registers for state that is
+	managed via attributes.  Record the use and clobber information
+	for the ZA registers.
+	(aarch64_end_call_args): New function.
+	(aarch64_regno_regclass): Handle FAKE_REGS.
+	(aarch64_class_max_nregs): Likewise.
+	(aarch64_override_options_internal): Require TARGET_SME for
+	functions that have ZA state.
+	(aarch64_conditional_register_usage): Handle FAKE_REGS.
+	(aarch64_mov_operand_p): Handle RDSVL immediates.
+	(aarch64_comp_type_attributes): Check that the ZA sharing flags
+	are equal.
+	(aarch64_merge_decl_attributes): New function.
+	(aarch64_optimize_mode_switching, aarch64_mode_emit_za_save_buffer)
+	(aarch64_mode_emit_local_sme_state, aarch64_mode_emit):  Likewise.
+	(aarch64_insn_references_sme_state_p): Likewise.
+	(aarch64_mode_needed_local_sme_state): Likewise.
+	(aarch64_mode_needed_za_save_buffer, aarch64_mode_needed): Likewise.
+	(aarch64_mode_after_local_sme_state, aarch64_mode_after): Likewise.
+	(aarch64_local_sme_confluence, aarch64_mode_confluence): Likewise.
+	(aarch64_one_shot_backprop, aarch64_local_sme_backprop): Likewise.
+	(aarch64_mode_backprop, aarch64_mode_entry): Likewise.
+	(aarch64_mode_exit, aarch64_mode_eh_handler): Likewise.
+	(aarch64_mode_priority, aarch64_md_asm_adjust): Likewise.
+	(TARGET_END_CALL_ARGS, TARGET_MERGE_DECL_ATTRIBUTES): Define.
+	(TARGET_MODE_EMIT, TARGET_MODE_NEEDED, TARGET_MODE_AFTER): Likewise.
+	(TARGET_MODE_CONFLUENCE, TARGET_MODE_BACKPROP): Likewise.
+	(TARGET_MODE_ENTRY, TARGET_MODE_EXIT): Likewise.
+	(TARGET_MODE_EH_HANDLER, TARGET_MODE_PRIORITY): Likewise.
+	(TARGET_EXTRA_LIVE_ON_ENTRY): Likewise.
+	(TARGET_MD_ASM_ADJUST): Use aarch64_md_asm_adjust.
+	* config/aarch64/aarch64-c.cc (aarch64_define_unconditional_macros):
+	Define __arm_new, __arm_preserves,__arm_in, __arm_out, and __arm_inout.
+
+2023-12-05  Richard Sandiford  <richard.sandiford@arm.com>
+
+	* config/aarch64/aarch64-passes.def
+	(pass_late_thread_prologue_and_epilogue): New pass.
+	* config/aarch64/aarch64-sme.md: New file.
+	* config/aarch64/aarch64.md: Include it.
+	(*tb<optab><mode>1): Rename to...
+	(@aarch64_tb<optab><mode>): ...this.
+	(call, call_value, sibcall, sibcall_value): Don't require operand 2
+	to be a CONST_INT.
+	* config/aarch64/aarch64-protos.h (aarch64_emit_call_insn): Return
+	the insn.
+	(make_pass_switch_sm_state): Declare.
+	* config/aarch64/aarch64.h (TARGET_STREAMING_COMPATIBLE): New macro.
+	(CALL_USED_REGISTER): Mark VG as call-preserved.
+	(aarch64_frame::old_svcr_offset): New member variable.
+	(machine_function::call_switches_sm_state): Likewise.
+	(CUMULATIVE_ARGS::num_sme_mode_switch_args): Likewise.
+	(CUMULATIVE_ARGS::sme_mode_switch_args): Likewise.
+	* config/aarch64/aarch64.cc: Include tree-pass.h and cfgbuild.h.
+	(aarch64_cfun_incoming_pstate_sm): New function.
+	(aarch64_call_switches_pstate_sm): Likewise.
+	(aarch64_reg_save_mode): Return DImode for VG_REGNUM.
+	(aarch64_callee_isa_mode): New function.
+	(aarch64_insn_callee_isa_mode): Likewise.
+	(aarch64_guard_switch_pstate_sm): Likewise.
+	(aarch64_switch_pstate_sm): Likewise.
+	(aarch64_sme_mode_switch_regs): New class.
+	(aarch64_record_sme_mode_switch_args): New function.
+	(aarch64_finish_sme_mode_switch_args): Likewise.
+	(aarch64_function_arg): Handle the end marker by returning a
+	PARALLEL that contains the ABI cookie that we used previously
+	alongside the result of aarch64_finish_sme_mode_switch_args.
+	(aarch64_init_cumulative_args): Initialize num_sme_mode_switch_args.
+	(aarch64_function_arg_advance): If a call would switch SM state,
+	record all argument registers that would need to be saved around
+	the mode switch.
+	(aarch64_need_old_pstate_sm): New function.
+	(aarch64_layout_frame): Decide whether the frame needs to store the
+	incoming value of PSTATE.SM and allocate a save slot for it if so.
+	If a function switches SME state, arrange to save the old value
+	of the DWARF VG register.  Handle the case where this is the only
+	register save slot above the FP.
+	(aarch64_save_callee_saves): Handles saves of the DWARF VG register.
+	(aarch64_get_separate_components): Prevent such saves from being
+	shrink-wrapped.
+	(aarch64_old_svcr_mem): New function.
+	(aarch64_read_old_svcr): Likewise.
+	(aarch64_guard_switch_pstate_sm): Likewise.
+	(aarch64_expand_prologue): Handle saves of the DWARF VG register.
+	Initialize any SVCR save slot.
+	(aarch64_expand_call): Allow the cookie to be PARALLEL that contains
+	both the UNSPEC_CALLEE_ABI value and a list of registers that need
+	to be preserved across a change to PSTATE.SM.  If the call does
+	involve such a change to PSTATE.SM, record the registers that
+	would be clobbered by this process.  Also emit an instruction
+	to mark the temporary change in VG.  Update call_switches_pstate_sm.
+	(aarch64_emit_call_insn): Return the emitted instruction.
+	(aarch64_frame_pointer_required): New function.
+	(aarch64_conditional_register_usage): Prevent VG_REGNUM from being
+	treated as a register operand.
+	(aarch64_switch_pstate_sm_for_call): New function.
+	(pass_data_switch_pstate_sm): New pass variable.
+	(pass_switch_pstate_sm): New pass class.
+	(make_pass_switch_pstate_sm): New function.
+	(TARGET_FRAME_POINTER_REQUIRED): Define.
+	* config/aarch64/t-aarch64 (s-check-sve-md): Add aarch64-sme.md.
+
+2023-12-05  Richard Sandiford  <richard.sandiford@arm.com>
+
+	* config/aarch64/aarch64.h (TARGET_NON_STREAMING): New macro.
+	(TARGET_SVE2_AES, TARGET_SVE2_BITPERM): Use it.
+	(TARGET_SVE2_SHA3, TARGET_SVE2_SM4): Likewise.
+	* config/aarch64/aarch64-sve-builtins-base.def: Separate out
+	the functions that require PSTATE.SM to be 0 and guard them
+	with AARCH64_FL_SM_OFF.
+	* config/aarch64/aarch64-sve-builtins-sve2.def: Likewise.
+	* config/aarch64/aarch64-sve-builtins.cc (check_required_extensions):
+	Enforce AARCH64_FL_SM_OFF requirements.
+	* config/aarch64/aarch64-sve.md (aarch64_wrffr): Require
+	TARGET_NON_STREAMING
+	(aarch64_rdffr, aarch64_rdffr_z, *aarch64_rdffr_z_ptest): Likewise.
+	(*aarch64_rdffr_ptest, *aarch64_rdffr_z_cc, *aarch64_rdffr_cc)
+	(@aarch64_ld<fn>f1<mode>): Likewise.
+	(@aarch64_ld<fn>f1_<ANY_EXTEND:optab><SVE_HSDI:mode><SVE_PARTIAL_I:mode>)
+	(gather_load<mode><v_int_container>): Likewise
+	(mask_gather_load<mode><v_int_container>): Likewise.
+	(mask_gather_load<mode><v_int_container>): Likewise.
+	(*mask_gather_load<mode><v_int_container>_<su>xtw_unpacked): Likewise.
+	(*mask_gather_load<mode><v_int_container>_sxtw): Likewise.
+	(*mask_gather_load<mode><v_int_container>_uxtw): Likewise.
+	(@aarch64_gather_load_<ANY_EXTEND:optab><SVE_4HSI:mode><SVE_4BHI:mode>)
+	(@aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
+	<SVE_2BHSI:mode>): Likewise.
+	(*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
+	<SVE_2BHSI:mode>_<ANY_EXTEND2:su>xtw_unpacked)
+	(*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
+	<SVE_2BHSI:mode>_sxtw): Likewise.
+	(*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
+	<SVE_2BHSI:mode>_uxtw): Likewise.
+	(@aarch64_ldff1_gather<mode>, @aarch64_ldff1_gather<mode>): Likewise.
+	(*aarch64_ldff1_gather<mode>_sxtw): Likewise.
+	(*aarch64_ldff1_gather<mode>_uxtw): Likewise.
+	(@aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx4_WIDE:mode>
+	<VNx4_NARROW:mode>): Likewise.
+	(@aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
+	<VNx2_NARROW:mode>): Likewise.
+	(*aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
+	<VNx2_NARROW:mode>_sxtw): Likewise.
+	(*aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
+	<VNx2_NARROW:mode>_uxtw): Likewise.
+	(@aarch64_sve_gather_prefetch<SVE_FULL_I:mode><VNx4SI_ONLY:mode>)
+	(@aarch64_sve_gather_prefetch<SVE_FULL_I:mode><VNx2DI_ONLY:mode>)
+	(*aarch64_sve_gather_prefetch<SVE_FULL_I:mode><VNx2DI_ONLY:mode>_sxtw)
+	(*aarch64_sve_gather_prefetch<SVE_FULL_I:mode><VNx2DI_ONLY:mode>_uxtw)
+	(scatter_store<mode><v_int_container>): Likewise.
+	(mask_scatter_store<mode><v_int_container>): Likewise.
+	(*mask_scatter_store<mode><v_int_container>_<su>xtw_unpacked)
+	(*mask_scatter_store<mode><v_int_container>_sxtw): Likewise.
+	(*mask_scatter_store<mode><v_int_container>_uxtw): Likewise.
+	(@aarch64_scatter_store_trunc<VNx4_NARROW:mode><VNx4_WIDE:mode>)
+	(@aarch64_scatter_store_trunc<VNx2_NARROW:mode><VNx2_WIDE:mode>)
+	(*aarch64_scatter_store_trunc<VNx2_NARROW:mode><VNx2_WIDE:mode>_sxtw)
+	(*aarch64_scatter_store_trunc<VNx2_NARROW:mode><VNx2_WIDE:mode>_uxtw)
+	(@aarch64_sve_ld1ro<mode>, @aarch64_adr<mode>): Likewise.
+	(*aarch64_adr_sxtw, *aarch64_adr_uxtw_unspec): Likewise.
+	(*aarch64_adr_uxtw_and, @aarch64_adr<mode>_shift): Likewise.
+	(*aarch64_adr<mode>_shift, *aarch64_adr_shift_sxtw): Likewise.
+	(*aarch64_adr_shift_uxtw, @aarch64_sve_add_<optab><vsi2qi>): Likewise.
+	(@aarch64_sve_<sve_fp_op><mode>, fold_left_plus_<mode>): Likewise.
+	(mask_fold_left_plus_<mode>, @aarch64_sve_compact<mode>): Likewise.
+	* config/aarch64/aarch64-sve2.md (@aarch64_gather_ldnt<mode>)
+	(@aarch64_gather_ldnt_<ANY_EXTEND:optab><SVE_FULL_SDI:mode>
+	<SVE_PARTIAL_I:mode>): Likewise.
+	(@aarch64_sve2_histcnt<mode>, @aarch64_sve2_histseg<mode>): Likewise.
+	(@aarch64_pred_<SVE2_MATCH:sve_int_op><mode>): Likewise.
+	(*aarch64_pred_<SVE2_MATCH:sve_int_op><mode>_cc): Likewise.
+	(*aarch64_pred_<SVE2_MATCH:sve_int_op><mode>_ptest): Likewise.
+	* config/aarch64/iterators.md (SVE_FP_UNARY_INT): Make FEXPA
+	depend on TARGET_NON_STREAMING.
+	(SVE_BFLOAT_TERNARY_LONG): Likewise BFMMLA.
+
+2023-12-05  Richard Sandiford  <richard.sandiford@arm.com>
+
+	* config/aarch64/aarch64.h (TARGET_BASE_SIMD): New macro.
+	(TARGET_SIMD): Require PSTATE.SM to be 0.
+	(AARCH64_ISA_SM_OFF): New macro.
+	* config/aarch64/aarch64.cc (aarch64_array_mode_supported_p):
+	Allow Advanced SIMD structure modes for TARGET_BASE_SIMD.
+	(aarch64_print_operand): Support '%Z'.
+	(aarch64_secondary_reload): Expect SVE moves to be used for
+	Advanced SIMD modes if SVE is enabled and non-streaming
+	Advanced SIMD isn't.
+	(aarch64_register_move_cost): Likewise.
+	(aarch64_simd_container_mode): Extend Advanced SIMD mode
+	handling to TARGET_BASE_SIMD.
+	(aarch64_expand_cpymem): Expand commentary.
+	* config/aarch64/aarch64.md (arches): Add base_simd and nobase_simd.
+	(arch_enabled): Handle it.
+	(*mov<mode>_aarch64): Extend UMOV alternative to TARGET_BASE_SIMD.
+	(*movti_aarch64): Use an SVE move instruction if non-streaming
+	SIMD isn't available.
+	(*mov<TFD:mode>_aarch64): Likewise.
+	(load_pair_dw_tftf): Extend to TARGET_BASE_SIMD.
+	(store_pair_dw_tftf): Likewise.
+	(loadwb_pair<TX:mode>_<P:mode>): Likewise.
+	(storewb_pair<TX:mode>_<P:mode>): Likewise.
+	* config/aarch64/aarch64-simd.md (*aarch64_simd_mov<VDMOV:mode>):
+	Allow UMOV in streaming mode.
+	(*aarch64_simd_mov<VQMOV:mode>): Use an SVE move instruction
+	if non-streaming SIMD isn't available.
+	(aarch64_store_lane0<mode>): Depend on TARGET_FLOAT rather than
+	TARGET_SIMD.
+	(aarch64_simd_mov_from_<mode>low): Likewise.  Use fmov if
+	Advanced SIMD is completely disabled.
+	(aarch64_simd_mov_from_<mode>high): Use SVE EXT instructions if
+	non-streaming SIMD isn't available.
+
+2023-12-05  Richard Sandiford  <richard.sandiford@arm.com>
+
+	* doc/invoke.texi: Document SME.
+	* doc/sourcebuild.texi: Document aarch64_sve.
+	* config/aarch64/aarch64-option-extensions.def (sme): Define.
+	* config/aarch64/aarch64.h (AARCH64_ISA_SME): New macro.
+	(TARGET_SME): Likewise.
+	* config/aarch64/aarch64.cc (aarch64_override_options_internal):
+	Ensure that SME is present when compiling streaming code.
+
+2023-12-05  Richard Sandiford  <richard.sandiford@arm.com>
+
+	* config/aarch64/aarch64-isa-modes.def: New file.
+	* config/aarch64/aarch64.h: Include it in the feature enumerations.
+	(AARCH64_FL_SM_STATE, AARCH64_FL_ISA_MODES): New constants.
+	(AARCH64_FL_DEFAULT_ISA_MODE): Likewise.
+	(AARCH64_ISA_MODE): New macro.
+	(CUMULATIVE_ARGS): Add an isa_mode field.
+	* config/aarch64/aarch64-protos.h (aarch64_gen_callee_cookie): Declare.
+	(aarch64_tlsdesc_abi_id): Return an arm_pcs.
+	* config/aarch64/aarch64.cc (attr_streaming_exclusions)
+	(aarch64_gnu_attributes, aarch64_gnu_attribute_table)
+	(aarch64_arm_attributes, aarch64_arm_attribute_table): New tables.
+	(aarch64_attribute_table): Redefine to include the gnu and arm
+	attributes.
+	(aarch64_fntype_pstate_sm, aarch64_fntype_isa_mode): New functions.
+	(aarch64_fndecl_pstate_sm, aarch64_fndecl_isa_mode): Likewise.
+	(aarch64_gen_callee_cookie, aarch64_callee_abi): Likewise.
+	(aarch64_insn_callee_cookie, aarch64_insn_callee_abi): Use them.
+	(aarch64_function_arg, aarch64_output_mi_thunk): Likewise.
+	(aarch64_init_cumulative_args): Initialize the isa_mode field.
+	(aarch64_output_mi_thunk): Use aarch64_gen_callee_cookie to get
+	the ABI cookie.
+	(aarch64_override_options): Add the ISA mode to the feature set.
+	(aarch64_temporary_target::copy_from_fndecl): Likewise.
+	(aarch64_fndecl_options, aarch64_handle_attr_arch): Likewise.
+	(aarch64_set_current_function): Maintain the correct ISA mode.
+	(aarch64_tlsdesc_abi_id): Return an arm_pcs.
+	(aarch64_comp_type_attributes): Handle arm::streaming and
+	arm::streaming_compatible.
+	* config/aarch64/aarch64-c.cc (aarch64_define_unconditional_macros):
+	Define __arm_streaming and __arm_streaming_compatible.
+	* config/aarch64/aarch64.md (tlsdesc_small_<mode>): Use
+	aarch64_gen_callee_cookie to get the ABI cookie.
+	* config/aarch64/t-aarch64 (TM_H): Add all feature-related .def files.
+
+2023-12-05  Richard Sandiford  <richard.sandiford@arm.com>
+
+	* config/aarch64/aarch64-sve-builtins-base.cc
+	(svreinterpret_impl::fold): Punt on tuple forms.
+	(svreinterpret_impl::expand): Use tuple_mode instead of vector_mode.
+	* config/aarch64/aarch64-sve-builtins-base.def (svreinterpret):
+	Extend to x1234 groups.
+	* config/aarch64/aarch64-sve-builtins-functions.h
+	(multi_vector_function::vectors_per_tuple): If the function has
+	a group suffix, get the number of vectors from there.
+	* config/aarch64/aarch64-sve-builtins-shapes.h (reinterpret): Declare.
+	* config/aarch64/aarch64-sve-builtins-shapes.cc (reinterpret_def)
+	(reinterpret): New function shape.
+	* config/aarch64/aarch64-sve-builtins.cc (function_groups): Handle
+	DEF_SVE_FUNCTION_GS.
+	* config/aarch64/aarch64-sve-builtins.def (DEF_SVE_FUNCTION_GS): New
+	macro.
+	(DEF_SVE_FUNCTION): Forward to DEF_SVE_FUNCTION_GS by default.
+	* config/aarch64/aarch64-sve-builtins.h
+	(function_instance::tuple_mode): New member function.
+	(function_base::vectors_per_tuple): Take the function instance
+	as argument and get the number from the group suffix.
+	(function_instance::vectors_per_tuple): Update accordingly.
+	* config/aarch64/iterators.md (SVE_FULLx2, SVE_FULLx3, SVE_FULLx4)
+	(SVE_ALL_STRUCT): New mode iterators.
+	(SVE_STRUCT): Redefine in terms of SVE_FULL*.
+	* config/aarch64/aarch64-sve.md (@aarch64_sve_reinterpret<mode>)
+	(*aarch64_sve_reinterpret<mode>): Extend to SVE structure modes.
+
+2023-12-05  Richard Sandiford  <richard.sandiford@arm.com>
+
+	* config/aarch64/aarch64-sve-builtins.cc
+	(function_resolver::require_derived_vector_type): Add a specific
+	error message for the case in which the caller wants a single
+	vector whose element type matches a previous tuyple argument.
+
+2023-12-05  Richard Sandiford  <richard.sandiford@arm.com>
+
+	* config/aarch64/aarch64-sve-builtins.h
+	(function_resolver::lookup_form): Add an overload that takes
+	an sve_type rather than type and group suffixes.
+	(function_resolver::resolve_to): Likewise.
+	(function_resolver::infer_vector_or_tuple_type): Return an sve_type.
+	(function_resolver::infer_tuple_type): Likewise.
+	(function_resolver::require_matching_vector_type): Take an sve_type
+	rather than a type_suffix_index.
+	(function_resolver::require_derived_vector_type): Likewise.
+	* config/aarch64/aarch64-sve-builtins.cc (num_vectors_to_group):
+	New function.
+	(function_resolver::lookup_form): Add an overload that takes
+	an sve_type rather than type and group suffixes.
+	(function_resolver::resolve_to): Likewise.
+	(function_resolver::infer_vector_or_tuple_type): Return an sve_type.
+	(function_resolver::infer_tuple_type): Likewise.
+	(function_resolver::infer_vector_type): Update accordingly.
+	(function_resolver::require_matching_vector_type): Take an sve_type
+	rather than a type_suffix_index.
+	(function_resolver::require_derived_vector_type): Likewise.
+	* config/aarch64/aarch64-sve-builtins-shapes.cc (get_def::resolve)
+	(set_def::resolve, store_def::resolve, tbl_tuple_def::resolve): Update
+	calls accordingly.
+
+2023-12-05  Richard Sandiford  <richard.sandiford@arm.com>
+
+	* config/aarch64/aarch64-sve-builtins.h
+	(function_resolver::require_matching_vector_type): Add a parameter
+	that specifies the number of the earlier argument that is being
+	matched against.
+	* config/aarch64/aarch64-sve-builtins.cc
+	(function_resolver::require_matching_vector_type): Likewise.
+	(require_derived_vector_type): Update calls accordingly.
+	(function_resolver::resolve_unary): Likewise.
+	(function_resolver::resolve_uniform): Likewise.
+	(function_resolver::resolve_uniform_opt_n): Likewise.
+	* config/aarch64/aarch64-sve-builtins-shapes.cc
+	(binary_long_lane_def::resolve): Likewise.
+	(clast_def::resolve, ternary_uint_def::resolve): Likewise.
+
+2023-12-05  Richard Sandiford  <richard.sandiford@arm.com>
+
+	* config/aarch64/aarch64-sve-builtins.h
+	(function_resolver::infer_sve_type): New member function.
+	(function_resolver::report_incorrect_num_vectors): Likewise.
+	* config/aarch64/aarch64-sve-builtins.cc
+	(function_resolver::infer_sve_type): New function,.
+	(function_resolver::report_incorrect_num_vectors): New function,
+	split out from...
+	(function_resolver::infer_vector_or_tuple_type): ...here.  Use
+	infer_sve_type.
+
+2023-12-05  Richard Sandiford  <richard.sandiford@arm.com>
+
+	* config/aarch64/aarch64-sve-builtins.h (sve_type): New struct.
+	(sve_type::operator==): New function.
+	(function_resolver::get_vector_type): Delete.
+	(function_resolver::report_no_such_form): Take an sve_type rather
+	than a type_suffix_index.
+	* config/aarch64/aarch64-sve-builtins.cc (get_vector_type): New
+	function.
+	(function_resolver::get_vector_type): Delete.
+	(function_resolver::report_no_such_form): Take an sve_type rather
+	than a type_suffix_index.
+	(find_sve_type): New function, split out from...
+	(function_resolver::infer_vector_or_tuple_type): ...here.
+
+2023-12-05  Richard Sandiford  <richard.sandiford@arm.com>
+
+	* config/aarch64/aarch64-sve-builtins-shapes.cc (build_one): Take
+	a group suffix index parameter.
+	(build_32_64, build_all): Update accordingly.  Iterate over all
+	group suffixes.
+	* config/aarch64/aarch64-sve-builtins-sve2.cc (svqrshl_impl::fold)
+	(svqshl_impl::fold, svrshl_impl::fold): Update function_instance
+	constructors.
+	* config/aarch64/aarch64-sve-builtins.cc (group_suffixes): New array.
+	(groups_none): New constant.
+	(function_groups): Initialize the groups field.
+	(function_instance::hash): Hash the group index.
+	(function_builder::get_name): Add the group suffix.
+	(function_builder::add_overloaded_functions): Iterate over all
+	group suffixes.
+	(function_resolver::lookup_form): Take a group suffix parameter.
+	(function_resolver::resolve_to): Likewise.
+	* config/aarch64/aarch64-sve-builtins.def (DEF_SVE_GROUP_SUFFIX): New
+	macro.
+	(x2, x3, x4): New group suffixes.
+	* config/aarch64/aarch64-sve-builtins.h (group_suffix_index): New enum.
+	(group_suffix_info): New structure.
+	(function_group_info::groups): New member variable.
+	(function_instance::group_suffix_id): Likewise.
+	(group_suffixes): New array.
+	(function_instance::operator==): Compare the group suffixes.
+	(function_instance::group_suffix): New function.
+
+2023-12-05  Richard Sandiford  <richard.sandiford@arm.com>
+
+	* config/aarch64/aarch64-sve-builtins.cc (function_groups): Remove
+	implied requirement on SVE.
+	* config/aarch64/aarch64-sve-builtins-base.def: Explicitly require SVE.
+	* config/aarch64/aarch64-sve-builtins-sve2.def: Likewise.
+
+2023-12-05  Richard Sandiford  <richard.sandiford@arm.com>
+
+	* config/aarch64/aarch64-protos.h (aarch64_sve_rdvl_immediate_p)
+	(aarch64_output_sve_rdvl): Declare.
+	* config/aarch64/aarch64.cc (aarch64_sve_cnt_factor_p): New
+	function, split out from...
+	(aarch64_sve_cnt_immediate_p): ...here.
+	(aarch64_sve_rdvl_factor_p): New function.
+	(aarch64_sve_rdvl_immediate_p): Likewise.
+	(aarch64_output_sve_rdvl): Likewise.
+	(aarch64_offset_temporaries): Rewrite the SVE handling to use RDVL
+	for some cases.
+	(aarch64_expand_mov_immediate): Handle RDVL immediates.
+	(aarch64_mov_operand_p): Likewise.
+	* config/aarch64/constraints.md (Usr): New constraint.
+	* config/aarch64/aarch64.md (*mov<SHORT:mode>_aarch64): Add an RDVL
+	alternative.
+	(*movsi_aarch64, *movdi_aarch64): Likewise.
+
+2023-12-05  Richard Sandiford  <richard.sandiford@arm.com>
+
+	* config/aarch64/aarch64-sve-builtins.h:
+	(function_checker::require_immediate_lane_index): Add an argument
+	for the index of the indexed vector argument.
+	* config/aarch64/aarch64-sve-builtins.cc
+	(function_checker::require_immediate_lane_index): Likewise.
+	* config/aarch64/aarch64-sve-builtins-shapes.cc
+	(ternary_bfloat_lane_base::check): Update accordingly.
+	(ternary_qq_lane_base::check): Likewise.
+	(binary_lane_def::check): Likewise.
+	(binary_long_lane_def::check): Likewise.
+	(ternary_lane_def::check): Likewise.
+	(ternary_lane_rotate_def::check): Likewise.
+	(ternary_long_lane_def::check): Likewise.
+	(ternary_qq_lane_rotate_def::check): Likewise.
+
+2023-12-05  Richard Sandiford  <richard.sandiford@arm.com>
+
+	* target.def (md_asm_adjust): Add a uses parameter.
+	* doc/tm.texi: Regenerate.
+	* cfgexpand.cc (expand_asm_loc): Update call to md_asm_adjust.
+	Handle any USEs created by the target.
+	(expand_asm_stmt): Likewise.
+	* recog.cc (asm_noperands): Handle asms with USEs.
+	(decode_asm_operands): Likewise.
+	* config/arm/aarch-common-protos.h (arm_md_asm_adjust): Add uses
+	parameter.
+	* config/arm/aarch-common.cc (arm_md_asm_adjust): Likewise.
+	* config/arm/arm.cc (thumb1_md_asm_adjust): Likewise.
+	* config/avr/avr.cc (avr_md_asm_adjust): Likewise.
+	* config/cris/cris.cc (cris_md_asm_adjust): Likewise.
+	* config/i386/i386.cc (ix86_md_asm_adjust): Likewise.
+	* config/mn10300/mn10300.cc (mn10300_md_asm_adjust): Likewise.
+	* config/nds32/nds32.cc (nds32_md_asm_adjust): Likewise.
+	* config/pdp11/pdp11.cc (pdp11_md_asm_adjust): Likewise.
+	* config/rs6000/rs6000.cc (rs6000_md_asm_adjust): Likewise.
+	* config/s390/s390.cc (s390_md_asm_adjust): Likewise.
+	* config/vax/vax.cc (vax_md_asm_adjust): Likewise.
+	* config/visium/visium.cc (visium_md_asm_adjust): Likewise.
+
+2023-12-05  Richard Sandiford  <richard.sandiford@arm.com>
+
+	* doc/tm.texi.in: Add TARGET_START_CALL_ARGS.
+	* doc/tm.texi: Regenerate.
+	* target.def (start_call_args): New hook.
+	(call_args, end_call_args): Add a parameter for the cumulative
+	argument information.
+	* hooks.h (hook_void_rtx_tree): Delete.
+	* hooks.cc (hook_void_rtx_tree): Likewise.
+	* targhooks.h (hook_void_CUMULATIVE_ARGS): Declare.
+	(hook_void_CUMULATIVE_ARGS_rtx_tree): Likewise.
+	* targhooks.cc (hook_void_CUMULATIVE_ARGS): New function.
+	(hook_void_CUMULATIVE_ARGS_rtx_tree): Likewise.
+	* calls.cc (expand_call): Call start_call_args before computing
+	and storing stack parameters.  Pass the cumulative argument
+	information to call_args and end_call_args.
+	(emit_library_call_value_1): Likewise.
+	* config/nvptx/nvptx.cc (nvptx_call_args): Add a cumulative
+	argument parameter.
+	(nvptx_end_call_args): Likewise.
+
+2023-12-05  Richard Sandiford  <richard.sandiford@arm.com>
+
+	* doc/tm.texi.in: Add TARGET_EMIT_EPILOGUE_FOR_SIBCALL.
+	* doc/tm.texi: Regenerate.
+	* target.def (emit_epilogue_for_sibcall): New hook.
+	* calls.cc (can_implement_as_sibling_call_p): Use it.
+	* function.cc (thread_prologue_and_epilogue_insns): Likewise.
+	(reposition_prologue_and_epilogue_notes): Likewise.
+	* config/aarch64/aarch64-protos.h (aarch64_expand_epilogue): Take
+	an rtx_call_insn * rather than a bool.
+	* config/aarch64/aarch64.cc (aarch64_expand_epilogue): Likewise.
+	(TARGET_EMIT_EPILOGUE_FOR_SIBCALL): Define.
+	* config/aarch64/aarch64.md (epilogue): Update call.
+	(sibcall_epilogue): Delete.
+
+2023-12-05  Richard Sandiford  <richard.sandiford@arm.com>
+
+	* target.def (use_late_prologue_epilogue): New hook.
+	* doc/tm.texi.in: Add TARGET_USE_LATE_PROLOGUE_EPILOGUE.
+	* doc/tm.texi: Regenerate.
+	* passes.def (pass_late_thread_prologue_and_epilogue): New pass.
+	* tree-pass.h (make_pass_late_thread_prologue_and_epilogue): Declare.
+	* function.cc (pass_thread_prologue_and_epilogue::gate): New function.
+	(pass_data_late_thread_prologue_and_epilogue): New pass variable.
+	(pass_late_thread_prologue_and_epilogue): New pass class.
+	(make_pass_late_thread_prologue_and_epilogue): New function.
+
+2023-12-05  Kito Cheng  <kito.cheng@sifive.com>
+
+	* common/config/riscv/riscv-common.cc
+	(riscv_subset_list::check_conflict_ext): Check zcd conflicts
+	with zcmt and zcmp.
+
+2023-12-05  Richard Sandiford  <richard.sandiford@arm.com>
+
+	PR rtl-optimization/112278
+	* lra-int.h (lra_update_biggest_mode): New function.
+	* lra-coalesce.cc (merge_pseudos): Use it.
+	* lra-lives.cc (process_bb_lives): Likewise.
+	* lra.cc (new_insn_reg): Likewise.
+
+2023-12-05  Jakub Jelinek  <jakub@redhat.com>
+
+	PR tree-optimization/112843
+	* gimple-lower-bitint.cc (gimple_lower_bitint): Change lhs of stmt
+	to lhs2 before building and inserting lhs = (cast) lhs2; assignment.
+	Adjust stmt operands before adjusting lhs.
+
+2023-12-05  xuli  <xuli1@eswincomputing.com>
+
+	* config/riscv/riscv-v.cc (sew64_scalar_helper): Bugfix.
+
+2023-12-05  Jakub Jelinek  <jakub@redhat.com>
+
+	PR target/112816
+	* config/i386/sse.md ((eq (eq (lshiftrt x elt_bits-1) 0) 0)): New
+	splitter to turn psrld $31; pcmpeq; pcmpeq into psrad $31.
+
+2023-12-05  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
+
+	* config/riscv/autovec.md: Add blocker.
+	* config/riscv/riscv-protos.h (gather_scatter_valid_offset_p): New function.
+	* config/riscv/riscv-v.cc (gather_scatter_valid_offset_p): Ditto.
+
+2023-12-05  Richard Biener  <rguenther@suse.de>
+
+	PR tree-optimization/112827
+	PR tree-optimization/112848
+	* tree-scalar-evolution.cc (final_value_replacement_loop):
+	Compute the insert location for each insert.
+
+2023-12-05  liuhongt  <hongtao.liu@intel.com>
+
+	* config/i386/i386.cc (ix86_vector_costs::add_stmt_cost):
+	Count sse_reg/gpr_regs for components not loaded from memory.
+	(ix86_vector_costs:ix86_vector_costs): New constructor.
+	(ix86_vector_costs::m_num_gpr_needed[3]): New private memeber.
+	(ix86_vector_costs::m_num_sse_needed[3]): Ditto.
+	(ix86_vector_costs::finish_cost): Estimate overall register
+	pressure cost.
+	(ix86_vector_costs::ix86_vect_estimate_reg_pressure): New
+	function.
+
+2023-12-05  liuhongt  <hongtao.liu@intel.com>
+
+	* config/i386/sse.md (udot_prodv64qi): New expander.
+	(udot_prod<mode>): Emulates with VEC_UNPACKU_EXPR +
+	DOT_PROD (short, int).
+
+2023-12-05  Marek Polacek  <polacek@redhat.com>
+
+	PR c++/107687
+	PR c++/110997
+	* doc/invoke.texi: Document -fno-immediate-escalation.
+
 2023-12-04  Andrew Pinski  <quic_apinski@quicinc.com>
 
 	* match.pd (zero_one_valued_p): For convert
diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP
index 6f4231ffb41..76ff872532c 100644
--- a/gcc/DATESTAMP
+++ b/gcc/DATESTAMP
@@ -1 +1 @@
-20231205
+20231206
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index 9c4ec217df9..48a5bb74253 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -1,3 +1,23 @@
+2023-12-06  Alexandre Oliva  <oliva@adacore.com>
+
+	* 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  <richard.sandiford@arm.com>
+
+	* gcc-interface/utils.cc (gnat_internal_attribute_table): Add extra
+	braces to work around PR 16333 in older compilers.
+
+2023-12-05  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+
+	* adaint.c: Include <signal.h>.
+	* expect.c: Include <string.h>.
+
 2023-12-02  Richard Sandiford  <richard.sandiford@arm.com>
 
 	* gcc-interface/gigi.h (gnat_internal_attribute_table): Change
diff --git a/gcc/c-family/ChangeLog b/gcc/c-family/ChangeLog
index c7265b86138..3dc8cbc7da0 100644
--- a/gcc/c-family/ChangeLog
+++ b/gcc/c-family/ChangeLog
@@ -1,3 +1,29 @@
+2023-12-06  Alexandre Oliva  <oliva@adacore.com>
+
+	* c-attribs.cc: Include ipa-strub.h.
+	(handle_strub_attribute): New.
+	(c_common_attribute_table): Add strub.
+
+2023-12-05  Richard Sandiford  <richard.sandiford@arm.com>
+
+	* c-attribs.cc (c_common_gnu_attribute_table): Add extra
+	braces to work around PR 16333 in older compilers.
+
+2023-12-05  Richard Biener  <rguenther@suse.de>
+
+	PR c/89270
+	* c-common.cc (c_common_type_for_size): Consider
+	registered_builtin_types.
+
+2023-12-05  Marek Polacek  <polacek@redhat.com>
+
+	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  <richard.sandiford@arm.com>
 
 	* c-common.h (c_common_attribute_table): Replace with...
diff --git a/gcc/c/ChangeLog b/gcc/c/ChangeLog
index 20c97d05381..f6175775c20 100644
--- a/gcc/c/ChangeLog
+++ b/gcc/c/ChangeLog
@@ -1,3 +1,14 @@
+2023-12-05  Richard Sandiford  <richard.sandiford@arm.com>
+
+	* c-decl.cc (std_attribute_table): Add extra braces to work
+	around PR 16333 in older compilers.
+
+2023-12-05  Richard Biener  <rguenther@suse.de>
+
+	PR c/86869
+	* c-typeck.cc (c_build_qualified_type): Preserve address-space
+	info for ARRAY_TYPE.
+
 2023-12-02  Richard Sandiford  <richard.sandiford@arm.com>
 
 	* c-tree.h (std_attribute_table): Declare.
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index b7167519dc6..308d02b95ae 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,68 @@
+2023-12-05  Jakub Jelinek  <jakub@redhat.com>
+
+	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) <case ANNOTATE_EXPR>: Likewise.
+	(tsubst_stmt) <case RANGE_FOR_STMT>: Likwsie.
+
+2023-12-05  Richard Sandiford  <richard.sandiford@arm.com>
+
+	* tree.cc (cxx_gnu_attribute_table): Add extra braces to work
+	around PR 16333 in older compilers.
+
+2023-12-05  Jakub Jelinek  <jakub@redhat.com>
+
+	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  <polacek@redhat.com>
+
+	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) <case CALL_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.
+	<case CALL_EXPR>: 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  <jason@redhat.com>
 
 	* constexpr.cc (potential_constant_expression_1): Fix
diff --git a/gcc/d/ChangeLog b/gcc/d/ChangeLog
index 04a9199d6c5..b002b459adc 100644
--- a/gcc/d/ChangeLog
+++ b/gcc/d/ChangeLog
@@ -1,3 +1,9 @@
+2023-12-05  Richard Sandiford  <richard.sandiford@arm.com>
+
+	* 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  <richard.sandiford@arm.com>
 
 	* d-tree.h (d_langhook_attribute_table): Replace with...
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index 3cc25c541df..be4fe9afa69 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,18 @@
+2023-12-05  Harald Anlauf  <anlauf@gmx.de>
+	    Tobias Burnus   <tobias@codesourcery.com>
+
+	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  <richard.sandiford@arm.com>
+
+	* f95-lang.cc (gfc_gnu_attribute_table): Add extra braces to work
+	around PR 16333 in older compilers.
+
 2023-12-02  Harald Anlauf  <anlauf@gmx.de>
 
 	PR fortran/93762
diff --git a/gcc/jit/ChangeLog b/gcc/jit/ChangeLog
index af2c09d07d3..11a0cb1fb02 100644
--- a/gcc/jit/ChangeLog
+++ b/gcc/jit/ChangeLog
@@ -1,3 +1,9 @@
+2023-12-05  Richard Sandiford  <richard.sandiford@arm.com>
+
+	* 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  <richard.sandiford@arm.com>
 
 	* dummy-frontend.cc (jit_format_attribute_table): Change type to
diff --git a/gcc/lto/ChangeLog b/gcc/lto/ChangeLog
index aa301266c34..71727d0fca8 100644
--- a/gcc/lto/ChangeLog
+++ b/gcc/lto/ChangeLog
@@ -1,3 +1,9 @@
+2023-12-05  Richard Sandiford  <richard.sandiford@arm.com>
+
+	* 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  <richard.sandiford@arm.com>
 
 	* lto-lang.cc (lto_format_attribute_table): Change type to
diff --git a/gcc/m2/ChangeLog b/gcc/m2/ChangeLog
index 26f7614286b..a1b339208ca 100644
--- a/gcc/m2/ChangeLog
+++ b/gcc/m2/ChangeLog
@@ -1,3 +1,18 @@
+2023-12-05  Gaius Mulley  <gaiusmod2@gmail.com>
+
+	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  <ro@CeBiTec.Uni-Bielefeld.DE>
+
+	* mc/mc.flex [__GNUC__]: Define alloca as __builtin_alloca.
+	(handleDate): Use strchr instead of index.
+
 2023-12-04  Gaius Mulley  <gaiusmod2@gmail.com>
 
 	PR modula2/112825
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 66e3c6e8d99..b5162970262 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,1736 @@
+2023-12-06  Alexandre Oliva  <oliva@adacore.com>
+
+	* 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  <juzhe.zhong@rivai.ai>
+
+	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  <david.faust@oracle.com>
+
+	PR debug/112849
+	* gcc.dg/debug/btf/btf-datasec-3.c: New test.
+
+2023-12-05  Jakub Jelinek  <jakub@redhat.com>
+
+	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  <anlauf@gmx.de>
+	    Tobias Burnus   <tobias@codesourcery.com>
+
+	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  <jakub@redhat.com>
+
+	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  <rguenther@suse.de>
+
+	PR middle-end/112830
+	* gcc.target/avr/pr112830.c: New testcase.
+	* gcc.target/i386/pr112830.c: Likewise.
+
+2023-12-05  Richard Biener  <rguenther@suse.de>
+
+	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  <jakub@redhat.com>
+
+	PR target/112845
+	* gcc.dg/pr112845.c: New file.
+
+2023-12-05  Richard Sandiford  <richard.sandiford@arm.com>
+
+	* 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  <richard.sandiford@arm.com>
+
+	* 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  <richard.sandiford@arm.com>
+
+	* 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  <richard.sandiford@arm.com>
+
+	* 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  <richard.sandiford@arm.com>
+
+	* 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  <richard.sandiford@arm.com>
+
+	* 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  <richard.sandiford@arm.com>
+
+	* 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  <richard.sandiford@arm.com>
+
+	* 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  <richard.sandiford@arm.com>
+
+	* 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  <richard.sandiford@arm.com>
+
+	* 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  <richard.sandiford@arm.com>
+
+	* 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  <richard.sandiford@arm.com>
+
+	* 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  <richard.sandiford@arm.com>
+
+	* 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  <richard.sandiford@arm.com>
+
+	* 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  <richard.sandiford@arm.com>
+
+	* 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  <richard.sandiford@arm.com>
+
+	* 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  <richard.sandiford@arm.com>
+
+	* 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  <richard.sandiford@arm.com>
+
+	* 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  <richard.sandiford@arm.com>
+
+	* gcc.target/aarch64/sve/acle/general-c/*: Replace "but previous
+	arguments had" with "but argument N had".
+
+2023-12-05  Richard Sandiford  <richard.sandiford@arm.com>
+
+	* gcc.target/aarch64/sve/acle/general-c/*: Update expected error
+	messages.
+
+2023-12-05  Richard Sandiford  <richard.sandiford@arm.com>
+
+	* 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  <szabolcs.nagy@arm.com>
+
+	* gcc.target/aarch64/eh_return-3.c: Fix when retaa is available.
+
+2023-12-05  Thomas Schwinge  <thomas@codesourcery.com>
+
+	* gcc.dg/gnu23-builtins-no-dfp-1.c: Remove '-fpermissive'.
+	'dg-error "implicit"' instead of 'dg-warning "implicit"'.
+
+2023-12-05  Kito Cheng  <kito.cheng@sifive.com>
+
+	* gcc.target/riscv/arch-29.c: New test.
+	* gcc.target/riscv/arch-30.c: New test.
+
+2023-12-05  Richard Sandiford  <richard.sandiford@arm.com>
+
+	PR rtl-optimization/112278
+	* gcc.target/aarch64/sve/pr112278.c: New test.
+
+2023-12-05  Jakub Jelinek  <jakub@redhat.com>
+
+	PR tree-optimization/112843
+	* gcc.dg/bitint-47.c: New test.
+
+2023-12-05  Jakub Jelinek  <jakub@redhat.com>
+
+	PR target/112816
+	* gcc.target/i386/pr112816.c: New test.
+
+2023-12-05  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
+
+	* g++.target/riscv/rvv/autovec/bug-2.C: New test.
+
+2023-12-05  Richard Biener  <rguenther@suse.de>
+
+	PR c/89270
+	* gcc.target/avr/pr89270.c: New testcase.
+
+2023-12-05  Richard Biener  <rguenther@suse.de>
+
+	PR c/86869
+	* gcc.target/avr/pr86869.c: New testcase.
+
+2023-12-05  liuhongt  <hongtao.liu@intel.com>
+
+	* gcc.target/i386/udotprodint8_emulate.c: New test.
+
+2023-12-05  Marek Polacek  <polacek@redhat.com>
+
+	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  <jason@redhat.com>
 
 	* g++.dg/cpp0x/constexpr-noreturn1.C: New test.
diff --git a/libgcc/ChangeLog b/libgcc/ChangeLog
index 6b3451200a0..542cfe5aa4e 100644
--- a/libgcc/ChangeLog
+++ b/libgcc/ChangeLog
@@ -1,3 +1,12 @@
+2023-12-06  Alexandre Oliva  <oliva@adacore.com>
+
+	* 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  <jlaw@ventanamicro.com>
 
 	* unwind-pe.h (_Unwind_gnu_Find_got): Add prototype.
diff --git a/libgfortran/ChangeLog b/libgfortran/ChangeLog
index 613db785471..2393305a864 100644
--- a/libgfortran/ChangeLog
+++ b/libgfortran/ChangeLog
@@ -1,3 +1,15 @@
+2023-12-05  Florian Weimer  <fweimer@redhat.com>
+	    Jakub Jelinek  <jakub@redhat.com>
+
+	* io/list_read.c (list_formatted_read_scalar) <case BT_CLASS>:
+	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) <case BT_CLASS>: Likewise.
+	(nml_write_obj): Likewise.
+	* io/transfer.c (unformatted_read, unformatted_write): Likewise.
+
 2023-11-08  Mikael Morin  <mikael@gcc.gnu.org>
 
 	PR fortran/112371
diff --git a/libiberty/ChangeLog b/libiberty/ChangeLog
index 1005bf8a974..884c8b70f87 100644
--- a/libiberty/ChangeLog
+++ b/libiberty/ChangeLog
@@ -1,3 +1,13 @@
+2023-12-05  Jakub Jelinek  <jakub@redhat.com>
+
+	* 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  <ro@CeBiTec.Uni-Bielefeld.DE>
+
+	* pex-unix.c (pex_unix_wait): Change return type to pid_t.
+
 2023-12-01  Jason Merrill  <jason@redhat.com>
 
 	* cp-demangle.c (d_make_comp): Handle
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index c471773cf42..c2e220ee6c3 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,70 @@
+2023-12-05  Jonathan Wakely  <jwakely@redhat.com>
+
+	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  <jwakely@redhat.com>
+
+	* 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  <jwakely@redhat.com>
+
+	* 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  <jwakely@redhat.com>
+
+	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  <hawkinsw@obs.cr>
+	    Jonathan Wakely  <jwakely@redhat.com>
+
+	* testsuite/20_util/smartptr.adapt/inout_ptr/2.cc: Add check
+	for LWG Issue 3897.
+
+2023-12-05  Marek Polacek  <polacek@redhat.com>
+
+	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  <oliva@adacore.com>
 
 	* libsupc++/atexit_thread.cc [__GXX_WEAK__]: Add dynamic


More information about the Gcc-cvs mailing list