On Thu, 31 Jul 2025, Spencer Abson wrote:

> On Thu, Jul 31, 2025 at 12:14:20PM +0200, Richard Biener wrote:
> > On Tue, 29 Jul 2025, Richard Biener wrote:
> > 
> > > This should be present only on SLP nodes now.  The RISC-V changes
> > > are mechanical along the line of the SLP_TREE_TYPE changes.  The
> > > aarch64 changes are for removing vect_mem_access_type and gating
> > > one problematical test with !m_costing_for_scalar (rather than
> > > on a NULL node).
> > > 
> > > Bootstrapped and tested on x86_64-unknown-linux-gnu.
> > 
> > I have now pushed this variant.
> > 
> > Richard.
> 
> Hi,
> 
> This seems to segfault quite a bit on aarch64.  I haven't had a moment to 
> look into it
> properly, but here is some info that might be helpful.

Can you try

diff --git a/gcc/config/aarch64/aarch64.cc b/gcc/config/aarch64/aarch64.cc
index a761addc06c..4fadd13637a 100644
--- a/gcc/config/aarch64/aarch64.cc
+++ b/gcc/config/aarch64/aarch64.cc
@@ -17997,7 +17997,7 @@ aarch64_vector_costs::add_stmt_cost (int count, 
vect_cost_for_stmt kind,
       stmt_cost = aarch64_detect_scalar_stmt_subtype (m_vinfo, kind,
                                                      stmt_info, 
stmt_cost);
 
-      if (vectype && m_vec_flags)
+      if (vectype && m_vec_flags && !m_costing_for_scalar)
        stmt_cost = aarch64_detect_vector_stmt_subtype (m_vinfo, kind,
                                                        stmt_info, node,
                                                        vectype, where,

?

> Below is the trace from compiling gcc.target/aarch64/sme/vect-dotprod-twoway.c
> 
> during GIMPLE pass: vect
> ../gcc/gcc/testsuite/gcc.target/aarch64/sme/vect-dotprod-twoway.c: In 
> function ‘udot2’:
> ../gcc/gcc/testsuite/gcc.target/aarch64/sme/vect-dotprod-twoway.c:6:10: 
> internal compiler error: Segmentation fault
>     6 | uint32_t udot2(int n, uint16_t* data) __arm_streaming
>       |          ^~~~~
> 0x26e937b internal_error(char const*, ...)
>       ../../gcc/gcc/diagnostic-global-context.cc:534
> 0x10fb6a3 crash_signal
>       ../../gcc/gcc/toplev.cc:323
> 0x15c1ebc aarch64_detect_vector_stmt_subtype
>       ../../gcc/gcc/config/aarch64/aarch64.cc:17469
> 0x15c1ebc aarch64_vector_costs::add_stmt_cost(int, vect_cost_for_stmt, 
> _stmt_vec_info*, _slp_tree*, tree_node*, int, vect_cost_model_location)
>       ../../gcc/gcc/config/aarch64/aarch64.cc:18001
> 0x143df57 add_stmt_cost(vector_costs*, int, vect_cost_for_stmt, 
> _stmt_vec_info*, _slp_tree*, tree_node*, int, vect_cost_model_location)
>       ../../gcc/gcc/tree-vectorizer.h:2006
> 0x143df57 vect_estimate_min_profitable_iters
>       ../../gcc/gcc/tree-vect-loop.cc:4438
> 0x143df57 vect_analyze_loop_costing
>       ../../gcc/gcc/tree-vect-loop.cc:2081
> 0x144064b vect_analyze_loop_2
>       ../../gcc/gcc/tree-vect-loop.cc:2781
> 0x1441d5b vect_analyze_loop_1
>       ../../gcc/gcc/tree-vect-loop.cc:3109
> 0x144220f vect_analyze_loop(loop*, gimple*, vec_info_shared*)
>       ../../gcc/gcc/tree-vect-loop.cc:3245
> 0x148b167 try_vectorize_loop_1
>       ../../gcc/gcc/tree-vectorizer.cc:1100
> 0x148b167 try_vectorize_loop
>       ../../gcc/gcc/tree-vectorizer.cc:1219
> 0x148ba37 execute
>       ../../gcc/gcc/tree-vectorizer.cc:1335
> 
> 
> And the new failiures from running gcc.target/aarch64/sve/aarch64-sve.exp
> 
> Unexpected results in this build (new failures)
>               === g++ tests ===
> 
> Running g++:g++.target/aarch64/sve/aarch64-sve.exp ...
> FAIL: g++.target/aarch64/sve/pr119706.C (internal compiler error: 
> Segmentation fault)
> FAIL: g++.target/aarch64/sve/pr119706.C (test for excess errors)
>               === gcc tests ===
> 
> Running gcc:gcc.target/aarch64/sve/aarch64-sve.exp ...
> FAIL: gcc.target/aarch64/sve/cost_model_10.c (internal compiler error: 
> Segmentation fault)
> FAIL: gcc.target/aarch64/sve/cost_model_10.c (test for excess errors)
> UNRESOLVED: gcc.target/aarch64/sve/cost_model_10.c scan-assembler 
> \\tcmp\\tx[0-9]+, x[0-9]+\\n
> UNRESOLVED: gcc.target/aarch64/sve/cost_model_10.c scan-assembler \\tptrue\\tp
> UNRESOLVED: gcc.target/aarch64/sve/cost_model_10.c scan-assembler-not 
> \\twhilelo\\t
> FAIL: gcc.target/aarch64/sve/cost_model_11.c (internal compiler error: 
> Segmentation fault)
> FAIL: gcc.target/aarch64/sve/cost_model_11.c (test for excess errors)
> UNRESOLVED: gcc.target/aarch64/sve/cost_model_11.c scan-assembler-not 
> \\tld4d\\t
> FAIL: gcc.target/aarch64/sve/cost_model_13.c (internal compiler error: 
> Segmentation fault)
> FAIL: gcc.target/aarch64/sve/cost_model_13.c (test for excess errors)
> UNRESOLVED: gcc.target/aarch64/sve/cost_model_13.c scan-assembler 
> \\tadd\\tz[0-9]+\\.h,
> UNRESOLVED: gcc.target/aarch64/sve/cost_model_13.c scan-assembler 
> \\tld1h\\tz[0-9]+\\.h,
> UNRESOLVED: gcc.target/aarch64/sve/cost_model_13.c scan-assembler-not 
> \\tldr\\tq[0-9]+,
> UNRESOLVED: gcc.target/aarch64/sve/cost_model_13.c scan-assembler-not 
> \\tv[0-9]+\\.8h,
> FAIL: gcc.target/aarch64/sve/cost_model_14.c (internal compiler error: 
> Segmentation fault)
> FAIL: gcc.target/aarch64/sve/cost_model_14.c (test for excess errors)
> UNRESOLVED: gcc.target/aarch64/sve/cost_model_14.c scan-assembler-times 
> \\tadd\\tz[0-9]+\\.d, 8
> UNRESOLVED: gcc.target/aarch64/sve/cost_model_14.c scan-assembler-times 
> \\tld1d\\tz[0-9]+\\.d, 1
> UNRESOLVED: gcc.target/aarch64/sve/cost_model_14.c scan-assembler-times 
> \\tldr\\tz[0-9]+, 4
> FAIL: gcc.target/aarch64/sve/extract_5.c (internal compiler error: 
> Segmentation fault)
> FAIL: gcc.target/aarch64/sve/extract_5.c (test for excess errors)
> XPASS: gcc.target/aarch64/sve/gather_load_13.c scan-assembler \\s+ld1w\\t
> FAIL: gcc.target/aarch64/sve/ld1_extend.c (internal compiler error: 
> Segmentation fault)
> FAIL: gcc.target/aarch64/sve/ld1_extend.c (test for excess errors)
> UNRESOLVED: gcc.target/aarch64/sve/ld1_extend.c scan-assembler-times 
> \\tld1sb\\t 4
> FAIL: gcc.target/aarch64/sve/mask_load_2.c (internal compiler error: 
> Segmentation fault)
> FAIL: gcc.target/aarch64/sve/mask_load_2.c (test for excess errors)
> UNRESOLVED: gcc.target/aarch64/sve/mask_load_2.c scan-assembler-times 
> add\\tz[0-9]+\\.s, p[0-7]/m 1
> UNRESOLVED: gcc.target/aarch64/sve/mask_load_2.c scan-assembler-times 
> ld1w\\tz[0-9]+\\.d, p[0-7]/z 1
> FAIL: gcc.target/aarch64/sve/part_vect_single_iter_epilog.c (internal 
> compiler error: Segmentation fault)
> FAIL: gcc.target/aarch64/sve/part_vect_single_iter_epilog.c (test for excess 
> errors)
> UNRESOLVED: gcc.target/aarch64/sve/part_vect_single_iter_epilog.c 
> scan-assembler-times \\twhilelo\\tp[0-9]+.h, wzr, [xw][0-9]+ 1
> FAIL: gcc.target/aarch64/sve/peel_ind_9.c (internal compiler error: 
> Segmentation fault)
> FAIL: gcc.target/aarch64/sve/peel_ind_9.c (test for excess errors)
> FAIL: gcc.target/aarch64/sve/peel_ind_9.c scan-tree-dump vect "LOOP 
> VECTORIZED"
> FAIL: gcc.target/aarch64/sve/peel_ind_9_run.c (internal compiler error: 
> Segmentation fault)
> FAIL: gcc.target/aarch64/sve/peel_ind_9_run.c (test for excess errors)
> UNRESOLVED: gcc.target/aarch64/sve/peel_ind_9_run.c compilation failed to 
> produce executable
> FAIL: gcc.target/aarch64/sve/pr103761.c (internal compiler error: 
> Segmentation fault)
> FAIL: gcc.target/aarch64/sve/pr103761.c (test for excess errors)
> FAIL: gcc.target/aarch64/sve/pr98535.c (internal compiler error: Segmentation 
> fault)
> FAIL: gcc.target/aarch64/sve/pr98535.c (test for excess errors)
> FAIL: gcc.target/aarch64/sve/pred-cond-reduc.c (internal compiler error: 
> Segmentation fault)
> FAIL: gcc.target/aarch64/sve/pred-cond-reduc.c (test for excess errors)
> FAIL: gcc.target/aarch64/sve/reduc_10.c (internal compiler error: 
> Segmentation fault)
> FAIL: gcc.target/aarch64/sve/reduc_10.c (test for excess errors)
> UNRESOLVED: gcc.target/aarch64/sve/reduc_10.c scan-assembler-times 
> \\tadd\\tz[0-9]+\\.h, p[0-7]/m, z[0-9]+\\.h, z[0-9]+\\.h\\n 1
> UNRESOLVED: gcc.target/aarch64/sve/reduc_10.c scan-assembler-times 
> \\tadd\\tz[0-9]+\\.h, z[0-9]+\\.h, z[0-9]+\\.h\\n 1
> UNRESOLVED: gcc.target/aarch64/sve/reduc_10.c scan-assembler-times 
> \\tand\\tz[0-9]+\\.d, z[0-9]+\\.d, z[0-9]+\\.d\\n 1
> UNRESOLVED: gcc.target/aarch64/sve/reduc_10.c scan-assembler-times 
> \\tand\\tz[0-9]+\\.h, p[0-7]/m, z[0-9]+\\.h, z[0-9]+\\.h\\n 1
> UNRESOLVED: gcc.target/aarch64/sve/reduc_10.c scan-assembler-times \\tandv\\t 
> 1
> UNRESOLVED: gcc.target/aarch64/sve/reduc_10.c scan-assembler-times 
> \\teor\\tz[0-9]+\\.d, z[0-9]+\\.d, z[0-9]+\\.d\\n 1
> UNRESOLVED: gcc.target/aarch64/sve/reduc_10.c scan-assembler-times 
> \\teor\\tz[0-9]+\\.h, p[0-7]/m, z[0-9]+\\.h, z[0-9]+\\.h\\n 1
> UNRESOLVED: gcc.target/aarch64/sve/reduc_10.c scan-assembler-times \\teorv\\t 
> 1
> UNRESOLVED: gcc.target/aarch64/sve/reduc_10.c scan-assembler-times 
> \\torr\\tz[0-9]+\\.d, z[0-9]+\\.d, z[0-9]+\\.d\\n 1
> UNRESOLVED: gcc.target/aarch64/sve/reduc_10.c scan-assembler-times 
> \\torr\\tz[0-9]+\\.h, p[0-7]/m, z[0-9]+\\.h, z[0-9]+\\.h\\n 1
> UNRESOLVED: gcc.target/aarch64/sve/reduc_10.c scan-assembler-times \\torv\\t 1
> UNRESOLVED: gcc.target/aarch64/sve/reduc_10.c scan-assembler-times 
> \\tuaddv\\t 1
> UNRESOLVED: gcc.target/aarch64/sve/reduc_10.c scan-assembler-times 
> \\tumax\\tz[0-9]+\\.h, p[0-7]/m, z[0-9]+\\.h, z[0-9]+\\.h\\n 2
> UNRESOLVED: gcc.target/aarch64/sve/reduc_10.c scan-assembler-times 
> \\tumaxv\\t 1
> UNRESOLVED: gcc.target/aarch64/sve/reduc_10.c scan-assembler-times 
> \\tumin\\tz[0-9]+\\.h, p[0-7]/m, z[0-9]+\\.h, z[0-9]+\\.h\\n 2
> UNRESOLVED: gcc.target/aarch64/sve/reduc_10.c scan-assembler-times 
> \\tuminv\\t 1
> FAIL: gcc.target/aarch64/sve/reduc_10_run.c (internal compiler error: 
> Segmentation fault)
> FAIL: gcc.target/aarch64/sve/reduc_10_run.c (test for excess errors)
> UNRESOLVED: gcc.target/aarch64/sve/reduc_10_run.c compilation failed to 
> produce executable
> FAIL: gcc.target/aarch64/sve/reduc_11.c (internal compiler error: 
> Segmentation fault)
> FAIL: gcc.target/aarch64/sve/reduc_11.c (test for excess errors)
> UNRESOLVED: gcc.target/aarch64/sve/reduc_11.c scan-assembler-times 
> \\tadd\\tz[0-9]+\\.h, p[0-7]/m, z[0-9]+\\.h, z[0-9]+\\.h\\n 1
> UNRESOLVED: gcc.target/aarch64/sve/reduc_11.c scan-assembler-times 
> \\tadd\\tz[0-9]+\\.h, z[0-9]+\\.h, z[0-9]+\\.h\\n 1
> UNRESOLVED: gcc.target/aarch64/sve/reduc_11.c scan-assembler-times 
> \\tand\\tz[0-9]+\\.d, z[0-9]+\\.d, z[0-9]+\\.d\\n 1
> UNRESOLVED: gcc.target/aarch64/sve/reduc_11.c scan-assembler-times 
> \\tand\\tz[0-9]+\\.h, p[0-7]/m, z[0-9]+\\.h, z[0-9]+\\.h\\n 1
> UNRESOLVED: gcc.target/aarch64/sve/reduc_11.c scan-assembler-times \\tandv\\t 
> 1
> UNRESOLVED: gcc.target/aarch64/sve/reduc_11.c scan-assembler-times 
> \\teor\\tz[0-9]+\\.d, z[0-9]+\\.d, z[0-9]+\\.d\\n 1
> UNRESOLVED: gcc.target/aarch64/sve/reduc_11.c scan-assembler-times 
> \\teor\\tz[0-9]+\\.h, p[0-7]/m, z[0-9]+\\.h, z[0-9]+\\.h\\n 1
> UNRESOLVED: gcc.target/aarch64/sve/reduc_11.c scan-assembler-times \\teorv\\t 
> 1
> UNRESOLVED: gcc.target/aarch64/sve/reduc_11.c scan-assembler-times 
> \\torr\\tz[0-9]+\\.d, z[0-9]+\\.d, z[0-9]+\\.d\\n 1
> UNRESOLVED: gcc.target/aarch64/sve/reduc_11.c scan-assembler-times 
> \\torr\\tz[0-9]+\\.h, p[0-7]/m, z[0-9]+\\.h, z[0-9]+\\.h\\n 1
> UNRESOLVED: gcc.target/aarch64/sve/reduc_11.c scan-assembler-times \\torv\\t 1
> UNRESOLVED: gcc.target/aarch64/sve/reduc_11.c scan-assembler-times 
> \\tuaddv\\t 1
> UNRESOLVED: gcc.target/aarch64/sve/reduc_11.c scan-assembler-times 
> \\tumax\\tz[0-9]+\\.h, p[0-7]/m, z[0-9]+\\.h, z[0-9]+\\.h\\n 2
> UNRESOLVED: gcc.target/aarch64/sve/reduc_11.c scan-assembler-times 
> \\tumaxv\\t 1
> UNRESOLVED: gcc.target/aarch64/sve/reduc_11.c scan-assembler-times 
> \\tumin\\tz[0-9]+\\.h, p[0-7]/m, z[0-9]+\\.h, z[0-9]+\\.h\\n 2
> UNRESOLVED: gcc.target/aarch64/sve/reduc_11.c scan-assembler-times 
> \\tuminv\\t 1
> FAIL: gcc.target/aarch64/sve/reduc_11_run.c (internal compiler error: 
> Segmentation fault)
> FAIL: gcc.target/aarch64/sve/reduc_11_run.c (test for excess errors)
> UNRESOLVED: gcc.target/aarch64/sve/reduc_11_run.c compilation failed to 
> produce executable
> FAIL: gcc.target/aarch64/sve/reduc_12.c (internal compiler error: 
> Segmentation fault)
> FAIL: gcc.target/aarch64/sve/reduc_12.c (test for excess errors)
> UNRESOLVED: gcc.target/aarch64/sve/reduc_12.c scan-assembler-times 
> \\tadd\\tz[0-9]+\\.h, p[0-7]/m, z[0-9]+\\.h, z[0-9]+\\.h\\n 1
> UNRESOLVED: gcc.target/aarch64/sve/reduc_12.c scan-assembler-times 
> \\tadd\\tz[0-9]+\\.h, z[0-9]+\\.h, z[0-9]+\\.h\\n 1
> UNRESOLVED: gcc.target/aarch64/sve/reduc_12.c scan-assembler-times 
> \\tand\\tz[0-9]+\\.d, z[0-9]+\\.d, z[0-9]+\\.d\\n 1
> UNRESOLVED: gcc.target/aarch64/sve/reduc_12.c scan-assembler-times 
> \\tand\\tz[0-9]+\\.h, p[0-7]/m, z[0-9]+\\.h, z[0-9]+\\.h\\n 1
> UNRESOLVED: gcc.target/aarch64/sve/reduc_12.c scan-assembler-times \\tandv\\t 
> 1
> UNRESOLVED: gcc.target/aarch64/sve/reduc_12.c scan-assembler-times 
> \\teor\\tz[0-9]+\\.d, z[0-9]+\\.d, z[0-9]+\\.d\\n 1
> UNRESOLVED: gcc.target/aarch64/sve/reduc_12.c scan-assembler-times 
> \\teor\\tz[0-9]+\\.h, p[0-7]/m, z[0-9]+\\.h, z[0-9]+\\.h\\n 1
> UNRESOLVED: gcc.target/aarch64/sve/reduc_12.c scan-assembler-times \\teorv\\t 
> 1
> UNRESOLVED: gcc.target/aarch64/sve/reduc_12.c scan-assembler-times 
> \\torr\\tz[0-9]+\\.d, z[0-9]+\\.d, z[0-9]+\\.d\\n 1
> UNRESOLVED: gcc.target/aarch64/sve/reduc_12.c scan-assembler-times 
> \\torr\\tz[0-9]+\\.h, p[0-7]/m, z[0-9]+\\.h, z[0-9]+\\.h\\n 1
> UNRESOLVED: gcc.target/aarch64/sve/reduc_12.c scan-assembler-times \\torv\\t 1
> UNRESOLVED: gcc.target/aarch64/sve/reduc_12.c scan-assembler-times 
> \\tuaddv\\t 1
> UNRESOLVED: gcc.target/aarch64/sve/reduc_12.c scan-assembler-times 
> \\tumax\\tz[0-9]+\\.h, p[0-7]/m, z[0-9]+\\.h, z[0-9]+\\.h\\n 2
> UNRESOLVED: gcc.target/aarch64/sve/reduc_12.c scan-assembler-times 
> \\tumaxv\\t 1
> UNRESOLVED: gcc.target/aarch64/sve/reduc_12.c scan-assembler-times 
> \\tumin\\tz[0-9]+\\.h, p[0-7]/m, z[0-9]+\\.h, z[0-9]+\\.h\\n 2
> UNRESOLVED: gcc.target/aarch64/sve/reduc_12.c scan-assembler-times 
> \\tuminv\\t 1
> FAIL: gcc.target/aarch64/sve/reduc_12_run.c (internal compiler error: 
> Segmentation fault)
> FAIL: gcc.target/aarch64/sve/reduc_12_run.c (test for excess errors)
> UNRESOLVED: gcc.target/aarch64/sve/reduc_12_run.c compilation failed to 
> produce executable
> FAIL: gcc.target/aarch64/sve/reduc_13.c (internal compiler error: 
> Segmentation fault)
> FAIL: gcc.target/aarch64/sve/reduc_13.c (test for excess errors)
> UNRESOLVED: gcc.target/aarch64/sve/reduc_13.c scan-assembler-times 
> \\tadd\\tz[0-9]+\\.s, p[0-7]/m, z[0-9]+\\.s, z[0-9]+\\.s\\n 1
> UNRESOLVED: gcc.target/aarch64/sve/reduc_13.c scan-assembler-times 
> \\tadd\\tz[0-9]+\\.s, z[0-9]+\\.s, z[0-9]+\\.s\\n 1
> UNRESOLVED: gcc.target/aarch64/sve/reduc_13.c scan-assembler-times 
> \\tand\\tz[0-9]+\\.d, z[0-9]+\\.d, z[0-9]+\\.d\\n 1
> UNRESOLVED: gcc.target/aarch64/sve/reduc_13.c scan-assembler-times 
> \\tand\\tz[0-9]+\\.s, p[0-7]/m, z[0-9]+\\.s, z[0-9]+\\.s\\n 1
> UNRESOLVED: gcc.target/aarch64/sve/reduc_13.c scan-assembler-times 
> \\teor\\tz[0-9]+\\.d, z[0-9]+\\.d, z[0-9]+\\.d\\n 1
> UNRESOLVED: gcc.target/aarch64/sve/reduc_13.c scan-assembler-times 
> \\teor\\tz[0-9]+\\.s, p[0-7]/m, z[0-9]+\\.s, z[0-9]+\\.s\\n 1
> UNRESOLVED: gcc.target/aarch64/sve/reduc_13.c scan-assembler-times 
> \\torr\\tz[0-9]+\\.d, z[0-9]+\\.d, z[0-9]+\\.d\\n 1
> UNRESOLVED: gcc.target/aarch64/sve/reduc_13.c scan-assembler-times 
> \\torr\\tz[0-9]+\\.s, p[0-7]/m, z[0-9]+\\.s, z[0-9]+\\.s\\n 1
> UNRESOLVED: gcc.target/aarch64/sve/reduc_13.c scan-assembler-times 
> \\tumax\\tz[0-9]+\\.s, p[0-7]/m, z[0-9]+\\.s, z[0-9]+\\.s\\n 2
> UNRESOLVED: gcc.target/aarch64/sve/reduc_13.c scan-assembler-times 
> \\tumin\\tz[0-9]+\\.s, p[0-7]/m, z[0-9]+\\.s, z[0-9]+\\.s\\n 2
> FAIL: gcc.target/aarch64/sve/reduc_13_run.c (internal compiler error: 
> Segmentation fault)
> FAIL: gcc.target/aarch64/sve/reduc_13_run.c (test for excess errors)
> UNRESOLVED: gcc.target/aarch64/sve/reduc_13_run.c compilation failed to 
> produce executable
> FAIL: gcc.target/aarch64/sve/reduc_14.c (internal compiler error: 
> Segmentation fault)
> FAIL: gcc.target/aarch64/sve/reduc_14.c (test for excess errors)
> UNRESOLVED: gcc.target/aarch64/sve/reduc_14.c scan-assembler-times 
> \\tadd\\tz[0-9]+\\.s, p[0-7]/m, z[0-9]+\\.s, z[0-9]+\\.s\\n 1
> UNRESOLVED: gcc.target/aarch64/sve/reduc_14.c scan-assembler-times 
> \\tadd\\tz[0-9]+\\.s, z[0-9]+\\.s, z[0-9]+\\.s\\n 1
> UNRESOLVED: gcc.target/aarch64/sve/reduc_14.c scan-assembler-times 
> \\tand\\tz[0-9]+\\.d, z[0-9]+\\.d, z[0-9]+\\.d\\n 1
> UNRESOLVED: gcc.target/aarch64/sve/reduc_14.c scan-assembler-times 
> \\tand\\tz[0-9]+\\.s, p[0-7]/m, z[0-9]+\\.s, z[0-9]+\\.s\\n 1
> UNRESOLVED: gcc.target/aarch64/sve/reduc_14.c scan-assembler-times \\tandv\\t 
> 2
> UNRESOLVED: gcc.target/aarch64/sve/reduc_14.c scan-assembler-times 
> \\teor\\tz[0-9]+\\.d, z[0-9]+\\.d, z[0-9]+\\.d\\n 1
> UNRESOLVED: gcc.target/aarch64/sve/reduc_14.c scan-assembler-times 
> \\teor\\tz[0-9]+\\.s, p[0-7]/m, z[0-9]+\\.s, z[0-9]+\\.s\\n 1
> UNRESOLVED: gcc.target/aarch64/sve/reduc_14.c scan-assembler-times \\teorv\\t 
> 2
> UNRESOLVED: gcc.target/aarch64/sve/reduc_14.c scan-assembler-times 
> \\torr\\tz[0-9]+\\.d, z[0-9]+\\.d, z[0-9]+\\.d\\n 1
> UNRESOLVED: gcc.target/aarch64/sve/reduc_14.c scan-assembler-times 
> \\torr\\tz[0-9]+\\.s, p[0-7]/m, z[0-9]+\\.s, z[0-9]+\\.s\\n 1
> UNRESOLVED: gcc.target/aarch64/sve/reduc_14.c scan-assembler-times \\torv\\t 2
> UNRESOLVED: gcc.target/aarch64/sve/reduc_14.c scan-assembler-times 
> \\tuaddv\\t 2
> UNRESOLVED: gcc.target/aarch64/sve/reduc_14.c scan-assembler-times 
> \\tumax\\tz[0-9]+\\.s, p[0-7]/m, z[0-9]+\\.s, z[0-9]+\\.s\\n 2
> UNRESOLVED: gcc.target/aarch64/sve/reduc_14.c scan-assembler-times 
> \\tumaxv\\t 2
> UNRESOLVED: gcc.target/aarch64/sve/reduc_14.c scan-assembler-times 
> \\tumin\\tz[0-9]+\\.s, p[0-7]/m, z[0-9]+\\.s, z[0-9]+\\.s\\n 2
> UNRESOLVED: gcc.target/aarch64/sve/reduc_14.c scan-assembler-times 
> \\tuminv\\t 2
> FAIL: gcc.target/aarch64/sve/reduc_14_run.c (internal compiler error: 
> Segmentation fault)
> FAIL: gcc.target/aarch64/sve/reduc_14_run.c (test for excess errors)
> UNRESOLVED: gcc.target/aarch64/sve/reduc_14_run.c compilation failed to 
> produce executable
> FAIL: gcc.target/aarch64/sve/reduc_15.c (internal compiler error: 
> Segmentation fault)
> FAIL: gcc.target/aarch64/sve/reduc_15.c (test for excess errors)
> UNRESOLVED: gcc.target/aarch64/sve/reduc_15.c scan-assembler-times 
> \\tadd\\tz[0-9]+\\.s, p[0-7]/m, z[0-9]+\\.s, z[0-9]+\\.s\\n 1
> UNRESOLVED: gcc.target/aarch64/sve/reduc_15.c scan-assembler-times 
> \\tadd\\tz[0-9]+\\.s, z[0-9]+\\.s, z[0-9]+\\.s\\n 1
> UNRESOLVED: gcc.target/aarch64/sve/reduc_15.c scan-assembler-times 
> \\tuaddv\\t 1
> FAIL: gcc.target/aarch64/sve/reduc_15_run.c (internal compiler error: 
> Segmentation fault)
> FAIL: gcc.target/aarch64/sve/reduc_15_run.c (test for excess errors)
> UNRESOLVED: gcc.target/aarch64/sve/reduc_15_run.c compilation failed to 
> produce executable
> FAIL: gcc.target/aarch64/sve/reduc_9.c (internal compiler error: Segmentation 
> fault)
> FAIL: gcc.target/aarch64/sve/reduc_9.c (test for excess errors)
> UNRESOLVED: gcc.target/aarch64/sve/reduc_9.c scan-assembler-times 
> \\tadd\\tz[0-9]+\\.h, p[0-7]/m, z[0-9]+\\.h, z[0-9]+\\.h\\n 1
> UNRESOLVED: gcc.target/aarch64/sve/reduc_9.c scan-assembler-times 
> \\tadd\\tz[0-9]+\\.h, z[0-9]+\\.h, z[0-9]+\\.h\\n 1
> UNRESOLVED: gcc.target/aarch64/sve/reduc_9.c scan-assembler-times 
> \\tand\\tz[0-9]+\\.d, z[0-9]+\\.d, z[0-9]+\\.d\\n 1
> UNRESOLVED: gcc.target/aarch64/sve/reduc_9.c scan-assembler-times 
> \\tand\\tz[0-9]+\\.h, p[0-7]/m, z[0-9]+\\.h, z[0-9]+\\.h\\n 1
> UNRESOLVED: gcc.target/aarch64/sve/reduc_9.c scan-assembler-times \\tandv\\t 1
> UNRESOLVED: gcc.target/aarch64/sve/reduc_9.c scan-assembler-times 
> \\teor\\tz[0-9]+\\.d, z[0-9]+\\.d, z[0-9]+\\.d\\n 1
> UNRESOLVED: gcc.target/aarch64/sve/reduc_9.c scan-assembler-times 
> \\teor\\tz[0-9]+\\.h, p[0-7]/m, z[0-9]+\\.h, z[0-9]+\\.h\\n 1
> UNRESOLVED: gcc.target/aarch64/sve/reduc_9.c scan-assembler-times \\teorv\\t 1
> UNRESOLVED: gcc.target/aarch64/sve/reduc_9.c scan-assembler-times 
> \\torr\\tz[0-9]+\\.d, z[0-9]+\\.d, z[0-9]+\\.d\\n 1
> UNRESOLVED: gcc.target/aarch64/sve/reduc_9.c scan-assembler-times 
> \\torr\\tz[0-9]+\\.h, p[0-7]/m, z[0-9]+\\.h, z[0-9]+\\.h\\n 1
> UNRESOLVED: gcc.target/aarch64/sve/reduc_9.c scan-assembler-times \\torv\\t 1
> UNRESOLVED: gcc.target/aarch64/sve/reduc_9.c scan-assembler-times \\tuaddv\\t 
> 1
> UNRESOLVED: gcc.target/aarch64/sve/reduc_9.c scan-assembler-times 
> \\tumax\\tz[0-9]+\\.h, p[0-7]/m, z[0-9]+\\.h, z[0-9]+\\.h\\n 2
> UNRESOLVED: gcc.target/aarch64/sve/reduc_9.c scan-assembler-times \\tumaxv\\t 
> 1
> UNRESOLVED: gcc.target/aarch64/sve/reduc_9.c scan-assembler-times 
> \\tumin\\tz[0-9]+\\.h, p[0-7]/m, z[0-9]+\\.h, z[0-9]+\\.h\\n 2
> UNRESOLVED: gcc.target/aarch64/sve/reduc_9.c scan-assembler-times \\tuminv\\t 
> 1
> FAIL: gcc.target/aarch64/sve/reduc_9_run.c (internal compiler error: 
> Segmentation fault)
> FAIL: gcc.target/aarch64/sve/reduc_9_run.c (test for excess errors)
> UNRESOLVED: gcc.target/aarch64/sve/reduc_9_run.c compilation failed to 
> produce executable
> FAIL: gcc.target/aarch64/sve/slp_perm_4.c (internal compiler error: 
> Segmentation fault)
> FAIL: gcc.target/aarch64/sve/slp_perm_4.c (test for excess errors)
> UNRESOLVED: gcc.target/aarch64/sve/slp_perm_4.c scan-assembler 
> \\ttrn1\\tz[0-9]+\\.b, z[0-9]+\\.b, z[0-9]+\\.b\\n
> FAIL: gcc.target/aarch64/sve/slp_perm_7.c (internal compiler error: 
> Segmentation fault)
> FAIL: gcc.target/aarch64/sve/slp_perm_7.c (test for excess errors)
> UNRESOLVED: gcc.target/aarch64/sve/slp_perm_7.c scan-assembler 
> \\ttbl\\tz[0-9]+\\.b, {z[0-9]+\\.b}, z[0-9]+\\.b\\n
> FAIL: gcc.target/aarch64/sve/slp_perm_8.c (internal compiler error: 
> Segmentation fault)
> FAIL: gcc.target/aarch64/sve/slp_perm_8.c (test for excess errors)
> UNRESOLVED: gcc.target/aarch64/sve/slp_perm_8.c scan-assembler 
> \\tld1s?b\\tz[0-9]+\\.h
> UNRESOLVED: gcc.target/aarch64/sve/slp_perm_8.c scan-assembler 
> \\tptrue\\tp[0-7]\\.h, vl6\\n
> UNRESOLVED: gcc.target/aarch64/sve/slp_perm_8.c scan-assembler 
> \\ttrn1\\tz[0-9]+\\.h,
> FAIL: gcc.target/aarch64/sve/struct_vect_18.c (internal compiler error: 
> Segmentation fault)
> FAIL: gcc.target/aarch64/sve/struct_vect_18.c (test for excess errors)
> UNRESOLVED: gcc.target/aarch64/sve/struct_vect_18.c scan-assembler-times 
> \\tb[.a-z]+\\t 4
> UNRESOLVED: gcc.target/aarch64/sve/struct_vect_18.c scan-assembler-times 
> \\tld1b\\t 1
> UNRESOLVED: gcc.target/aarch64/sve/struct_vect_18.c scan-assembler-times 
> \\tld1d\\t 1
> UNRESOLVED: gcc.target/aarch64/sve/struct_vect_18.c scan-assembler-times 
> \\tld1h\\t 1
> UNRESOLVED: gcc.target/aarch64/sve/struct_vect_18.c scan-assembler-times 
> \\tld1w\\t 1
> UNRESOLVED: gcc.target/aarch64/sve/struct_vect_18.c scan-assembler-times 
> \\tld3b\\t 1
> UNRESOLVED: gcc.target/aarch64/sve/struct_vect_18.c scan-assembler-times 
> \\tld3d\\t 1
> UNRESOLVED: gcc.target/aarch64/sve/struct_vect_18.c scan-assembler-times 
> \\tld3h\\t 1
> UNRESOLVED: gcc.target/aarch64/sve/struct_vect_18.c scan-assembler-times 
> \\tld3w\\t 1
> UNRESOLVED: gcc.target/aarch64/sve/struct_vect_18.c scan-assembler-times 
> \\tldr\\td 2
> UNRESOLVED: gcc.target/aarch64/sve/struct_vect_18.c scan-assembler-times 
> \\tldr\\ts 2
> UNRESOLVED: gcc.target/aarch64/sve/struct_vect_18.c scan-assembler-times 
> \\tldrb\\tw 2
> UNRESOLVED: gcc.target/aarch64/sve/struct_vect_18.c scan-assembler-times 
> \\tldrh\\tw 2
> UNRESOLVED: gcc.target/aarch64/sve/struct_vect_18.c scan-assembler-times 
> \\tst1b\\t 1
> UNRESOLVED: gcc.target/aarch64/sve/struct_vect_18.c scan-assembler-times 
> \\tst1d\\t 1
> UNRESOLVED: gcc.target/aarch64/sve/struct_vect_18.c scan-assembler-times 
> \\tst1h\\t 1
> UNRESOLVED: gcc.target/aarch64/sve/struct_vect_18.c scan-assembler-times 
> \\tst1w\\t 1
> UNRESOLVED: gcc.target/aarch64/sve/struct_vect_18.c scan-assembler-times 
> \\tstr\\td 1
> UNRESOLVED: gcc.target/aarch64/sve/struct_vect_18.c scan-assembler-times 
> \\tstr\\ts 1
> UNRESOLVED: gcc.target/aarch64/sve/struct_vect_18.c scan-assembler-times 
> \\tstrb\\tw 1
> UNRESOLVED: gcc.target/aarch64/sve/struct_vect_18.c scan-assembler-times 
> \\tstrh\\tw 1
> FAIL: gcc.target/aarch64/sve/struct_vect_18_run.c (internal compiler error: 
> Segmentation fault)
> FAIL: gcc.target/aarch64/sve/struct_vect_18_run.c (test for excess errors)
> UNRESOLVED: gcc.target/aarch64/sve/struct_vect_18_run.c compilation failed to 
> produce executable
> FAIL: gcc.target/aarch64/sve/struct_vect_19.c (internal compiler error: 
> Segmentation fault)
> FAIL: gcc.target/aarch64/sve/struct_vect_19.c (test for excess errors)
> UNRESOLVED: gcc.target/aarch64/sve/struct_vect_19.c scan-assembler-times 
> \\tb[.a-z]+\\t 12
> UNRESOLVED: gcc.target/aarch64/sve/struct_vect_19.c scan-assembler-times 
> \\tld1b\\t 1
> UNRESOLVED: gcc.target/aarch64/sve/struct_vect_19.c scan-assembler-times 
> \\tld1d\\t 1
> UNRESOLVED: gcc.target/aarch64/sve/struct_vect_19.c scan-assembler-times 
> \\tld1h\\t 1
> UNRESOLVED: gcc.target/aarch64/sve/struct_vect_19.c scan-assembler-times 
> \\tld1w\\t 1
> UNRESOLVED: gcc.target/aarch64/sve/struct_vect_19.c scan-assembler-times 
> \\tld3b\\t 1
> UNRESOLVED: gcc.target/aarch64/sve/struct_vect_19.c scan-assembler-times 
> \\tld3d\\t 1
> UNRESOLVED: gcc.target/aarch64/sve/struct_vect_19.c scan-assembler-times 
> \\tld3h\\t 1
> UNRESOLVED: gcc.target/aarch64/sve/struct_vect_19.c scan-assembler-times 
> \\tld3w\\t 1
> UNRESOLVED: gcc.target/aarch64/sve/struct_vect_19.c scan-assembler-times 
> \\tldr\\td 2
> UNRESOLVED: gcc.target/aarch64/sve/struct_vect_19.c scan-assembler-times 
> \\tldr\\ts 2
> UNRESOLVED: gcc.target/aarch64/sve/struct_vect_19.c scan-assembler-times 
> \\tldrb\\tw 2
> UNRESOLVED: gcc.target/aarch64/sve/struct_vect_19.c scan-assembler-times 
> \\tldrh\\tw 2
> UNRESOLVED: gcc.target/aarch64/sve/struct_vect_19.c scan-assembler-times 
> \\tst1b\\t 1
> UNRESOLVED: gcc.target/aarch64/sve/struct_vect_19.c scan-assembler-times 
> \\tst1d\\t 1
> UNRESOLVED: gcc.target/aarch64/sve/struct_vect_19.c scan-assembler-times 
> \\tst1h\\t 1
> UNRESOLVED: gcc.target/aarch64/sve/struct_vect_19.c scan-assembler-times 
> \\tst1w\\t 1
> UNRESOLVED: gcc.target/aarch64/sve/struct_vect_19.c scan-assembler-times 
> \\tstr\\td 1
> UNRESOLVED: gcc.target/aarch64/sve/struct_vect_19.c scan-assembler-times 
> \\tstr\\ts 1
> UNRESOLVED: gcc.target/aarch64/sve/struct_vect_19.c scan-assembler-times 
> \\tstrb\\tw 1
> UNRESOLVED: gcc.target/aarch64/sve/struct_vect_19.c scan-assembler-times 
> \\tstrh\\tw 1
> FAIL: gcc.target/aarch64/sve/struct_vect_19_run.c (internal compiler error: 
> Segmentation fault)
> FAIL: gcc.target/aarch64/sve/struct_vect_19_run.c (test for excess errors)
> UNRESOLVED: gcc.target/aarch64/sve/struct_vect_19_run.c compilation failed to 
> produce executable
> FAIL: gcc.target/aarch64/sve/struct_vect_20.c (internal compiler error: 
> Segmentation fault)
> FAIL: gcc.target/aarch64/sve/struct_vect_20.c (test for excess errors)
> UNRESOLVED: gcc.target/aarch64/sve/struct_vect_20.c scan-assembler-times 
> \\tb[.a-z]+\\t 4
> UNRESOLVED: gcc.target/aarch64/sve/struct_vect_20.c scan-assembler-times 
> \\tld1b\\t 1
> UNRESOLVED: gcc.target/aarch64/sve/struct_vect_20.c scan-assembler-times 
> \\tld1d\\t 1
> UNRESOLVED: gcc.target/aarch64/sve/struct_vect_20.c scan-assembler-times 
> \\tld1h\\t 1
> UNRESOLVED: gcc.target/aarch64/sve/struct_vect_20.c scan-assembler-times 
> \\tld1w\\t 1
> UNRESOLVED: gcc.target/aarch64/sve/struct_vect_20.c scan-assembler-times 
> \\tld2b\\t 1
> UNRESOLVED: gcc.target/aarch64/sve/struct_vect_20.c scan-assembler-times 
> \\tld2d\\t 1
> UNRESOLVED: gcc.target/aarch64/sve/struct_vect_20.c scan-assembler-times 
> \\tld2h\\t 1
> UNRESOLVED: gcc.target/aarch64/sve/struct_vect_20.c scan-assembler-times 
> \\tld2w\\t 1
> UNRESOLVED: gcc.target/aarch64/sve/struct_vect_20.c scan-assembler-times 
> \\tldr\\td 2
> UNRESOLVED: gcc.target/aarch64/sve/struct_vect_20.c scan-assembler-times 
> \\tldr\\ts 2
> UNRESOLVED: gcc.target/aarch64/sve/struct_vect_20.c scan-assembler-times 
> \\tldrb\\tw 2
> UNRESOLVED: gcc.target/aarch64/sve/struct_vect_20.c scan-assembler-times 
> \\tldrh\\tw 2
> UNRESOLVED: gcc.target/aarch64/sve/struct_vect_20.c scan-assembler-times 
> \\tst1b\\t 1
> UNRESOLVED: gcc.target/aarch64/sve/struct_vect_20.c scan-assembler-times 
> \\tst1d\\t 1
> UNRESOLVED: gcc.target/aarch64/sve/struct_vect_20.c scan-assembler-times 
> \\tst1h\\t 1
> UNRESOLVED: gcc.target/aarch64/sve/struct_vect_20.c scan-assembler-times 
> \\tst1w\\t 1
> UNRESOLVED: gcc.target/aarch64/sve/struct_vect_20.c scan-assembler-times 
> \\tstr\\td 1
> UNRESOLVED: gcc.target/aarch64/sve/struct_vect_20.c scan-assembler-times 
> \\tstr\\ts 1
> UNRESOLVED: gcc.target/aarch64/sve/struct_vect_20.c scan-assembler-times 
> \\tstrb\\tw 1
> UNRESOLVED: gcc.target/aarch64/sve/struct_vect_20.c scan-assembler-times 
> \\tstrh\\tw 1
> FAIL: gcc.target/aarch64/sve/struct_vect_20_run.c (internal compiler error: 
> Segmentation fault)
> FAIL: gcc.target/aarch64/sve/struct_vect_20_run.c (test for excess errors)
> UNRESOLVED: gcc.target/aarch64/sve/struct_vect_20_run.c compilation failed to 
> produce executable
> FAIL: gcc.target/aarch64/sve/struct_vect_21.c (internal compiler error: 
> Segmentation fault)
> FAIL: gcc.target/aarch64/sve/struct_vect_21.c (test for excess errors)
> UNRESOLVED: gcc.target/aarch64/sve/struct_vect_21.c scan-assembler-times 
> \\tb[.a-z]+\\t 12
> UNRESOLVED: gcc.target/aarch64/sve/struct_vect_21.c scan-assembler-times 
> \\tld1b\\t 1
> UNRESOLVED: gcc.target/aarch64/sve/struct_vect_21.c scan-assembler-times 
> \\tld1d\\t 1
> UNRESOLVED: gcc.target/aarch64/sve/struct_vect_21.c scan-assembler-times 
> \\tld1h\\t 1
> UNRESOLVED: gcc.target/aarch64/sve/struct_vect_21.c scan-assembler-times 
> \\tld1w\\t 1
> UNRESOLVED: gcc.target/aarch64/sve/struct_vect_21.c scan-assembler-times 
> \\tld2b\\t 1
> UNRESOLVED: gcc.target/aarch64/sve/struct_vect_21.c scan-assembler-times 
> \\tld2d\\t 1
> UNRESOLVED: gcc.target/aarch64/sve/struct_vect_21.c scan-assembler-times 
> \\tld2h\\t 1
> UNRESOLVED: gcc.target/aarch64/sve/struct_vect_21.c scan-assembler-times 
> \\tld2w\\t 1
> UNRESOLVED: gcc.target/aarch64/sve/struct_vect_21.c scan-assembler-times 
> \\tldr\\td 2
> UNRESOLVED: gcc.target/aarch64/sve/struct_vect_21.c scan-assembler-times 
> \\tldr\\ts 2
> UNRESOLVED: gcc.target/aarch64/sve/struct_vect_21.c scan-assembler-times 
> \\tldrb\\tw 2
> UNRESOLVED: gcc.target/aarch64/sve/struct_vect_21.c scan-assembler-times 
> \\tldrh\\tw 2
> UNRESOLVED: gcc.target/aarch64/sve/struct_vect_21.c scan-assembler-times 
> \\tst1b\\t 1
> UNRESOLVED: gcc.target/aarch64/sve/struct_vect_21.c scan-assembler-times 
> \\tst1d\\t 1
> UNRESOLVED: gcc.target/aarch64/sve/struct_vect_21.c scan-assembler-times 
> \\tst1h\\t 1
> UNRESOLVED: gcc.target/aarch64/sve/struct_vect_21.c scan-assembler-times 
> \\tst1w\\t 1
> UNRESOLVED: gcc.target/aarch64/sve/struct_vect_21.c scan-assembler-times 
> \\tstr\\td 1
> UNRESOLVED: gcc.target/aarch64/sve/struct_vect_21.c scan-assembler-times 
> \\tstr\\ts 1
> UNRESOLVED: gcc.target/aarch64/sve/struct_vect_21.c scan-assembler-times 
> \\tstrb\\tw 1
> UNRESOLVED: gcc.target/aarch64/sve/struct_vect_21.c scan-assembler-times 
> \\tstrh\\tw 1
> FAIL: gcc.target/aarch64/sve/struct_vect_21_run.c (internal compiler error: 
> Segmentation fault)
> FAIL: gcc.target/aarch64/sve/struct_vect_21_run.c (test for excess errors)
> UNRESOLVED: gcc.target/aarch64/sve/struct_vect_21_run.c compilation failed to 
> produce executable
> FAIL: gcc.target/aarch64/sve/struct_vect_22.c (internal compiler error: 
> Segmentation fault)
> FAIL: gcc.target/aarch64/sve/struct_vect_22.c (test for excess errors)
> UNRESOLVED: gcc.target/aarch64/sve/struct_vect_22.c scan-assembler-times 
> \\tb[.a-z]+\\t 4
> UNRESOLVED: gcc.target/aarch64/sve/struct_vect_22.c scan-assembler-times 
> \\tld1b\\t 1
> UNRESOLVED: gcc.target/aarch64/sve/struct_vect_22.c scan-assembler-times 
> \\tld1d\\t 1
> UNRESOLVED: gcc.target/aarch64/sve/struct_vect_22.c scan-assembler-times 
> \\tld1h\\t 1
> UNRESOLVED: gcc.target/aarch64/sve/struct_vect_22.c scan-assembler-times 
> \\tld1w\\t 1
> UNRESOLVED: gcc.target/aarch64/sve/struct_vect_22.c scan-assembler-times 
> \\tld4b\\t 1
> UNRESOLVED: gcc.target/aarch64/sve/struct_vect_22.c scan-assembler-times 
> \\tld4d\\t 1
> UNRESOLVED: gcc.target/aarch64/sve/struct_vect_22.c scan-assembler-times 
> \\tld4h\\t 1
> UNRESOLVED: gcc.target/aarch64/sve/struct_vect_22.c scan-assembler-times 
> \\tld4w\\t 1
> UNRESOLVED: gcc.target/aarch64/sve/struct_vect_22.c scan-assembler-times 
> \\tldr\\td 2
> UNRESOLVED: gcc.target/aarch64/sve/struct_vect_22.c scan-assembler-times 
> \\tldr\\ts 2
> UNRESOLVED: gcc.target/aarch64/sve/struct_vect_22.c scan-assembler-times 
> \\tldrb\\tw 2
> UNRESOLVED: gcc.target/aarch64/sve/struct_vect_22.c scan-assembler-times 
> \\tldrh\\tw 2
> UNRESOLVED: gcc.target/aarch64/sve/struct_vect_22.c scan-assembler-times 
> \\tst1b\\t 1
> UNRESOLVED: gcc.target/aarch64/sve/struct_vect_22.c scan-assembler-times 
> \\tst1d\\t 1
> UNRESOLVED: gcc.target/aarch64/sve/struct_vect_22.c scan-assembler-times 
> \\tst1h\\t 1
> UNRESOLVED: gcc.target/aarch64/sve/struct_vect_22.c scan-assembler-times 
> \\tst1w\\t 1
> UNRESOLVED: gcc.target/aarch64/sve/struct_vect_22.c scan-assembler-times 
> \\tstr\\td 1
> UNRESOLVED: gcc.target/aarch64/sve/struct_vect_22.c scan-assembler-times 
> \\tstr\\ts 1
> UNRESOLVED: gcc.target/aarch64/sve/struct_vect_22.c scan-assembler-times 
> \\tstrb\\tw 1
> UNRESOLVED: gcc.target/aarch64/sve/struct_vect_22.c scan-assembler-times 
> \\tstrh\\tw 1
> FAIL: gcc.target/aarch64/sve/struct_vect_22_run.c (internal compiler error: 
> Segmentation fault)
> FAIL: gcc.target/aarch64/sve/struct_vect_22_run.c (test for excess errors)
> UNRESOLVED: gcc.target/aarch64/sve/struct_vect_22_run.c compilation failed to 
> produce executable
> FAIL: gcc.target/aarch64/sve/struct_vect_23.c (internal compiler error: 
> Segmentation fault)
> FAIL: gcc.target/aarch64/sve/struct_vect_23.c (test for excess errors)
> UNRESOLVED: gcc.target/aarch64/sve/struct_vect_23.c scan-assembler-times 
> \\tb[.a-z]+\\t 12
> UNRESOLVED: gcc.target/aarch64/sve/struct_vect_23.c scan-assembler-times 
> \\tld1b\\t 1
> UNRESOLVED: gcc.target/aarch64/sve/struct_vect_23.c scan-assembler-times 
> \\tld1d\\t 1
> UNRESOLVED: gcc.target/aarch64/sve/struct_vect_23.c scan-assembler-times 
> \\tld1h\\t 1
> UNRESOLVED: gcc.target/aarch64/sve/struct_vect_23.c scan-assembler-times 
> \\tld1w\\t 1
> UNRESOLVED: gcc.target/aarch64/sve/struct_vect_23.c scan-assembler-times 
> \\tld4b\\t 1
> UNRESOLVED: gcc.target/aarch64/sve/struct_vect_23.c scan-assembler-times 
> \\tld4d\\t 1
> UNRESOLVED: gcc.target/aarch64/sve/struct_vect_23.c scan-assembler-times 
> \\tld4h\\t 1
> UNRESOLVED: gcc.target/aarch64/sve/struct_vect_23.c scan-assembler-times 
> \\tld4w\\t 1
> UNRESOLVED: gcc.target/aarch64/sve/struct_vect_23.c scan-assembler-times 
> \\tldr\\td 2
> UNRESOLVED: gcc.target/aarch64/sve/struct_vect_23.c scan-assembler-times 
> \\tldr\\ts 2
> UNRESOLVED: gcc.target/aarch64/sve/struct_vect_23.c scan-assembler-times 
> \\tldrb\\tw 2
> UNRESOLVED: gcc.target/aarch64/sve/struct_vect_23.c scan-assembler-times 
> \\tldrh\\tw 2
> UNRESOLVED: gcc.target/aarch64/sve/struct_vect_23.c scan-assembler-times 
> \\tst1b\\t 1
> UNRESOLVED: gcc.target/aarch64/sve/struct_vect_23.c scan-assembler-times 
> \\tst1d\\t 1
> UNRESOLVED: gcc.target/aarch64/sve/struct_vect_23.c scan-assembler-times 
> \\tst1h\\t 1
> UNRESOLVED: gcc.target/aarch64/sve/struct_vect_23.c scan-assembler-times 
> \\tst1w\\t 1
> UNRESOLVED: gcc.target/aarch64/sve/struct_vect_23.c scan-assembler-times 
> \\tstr\\td 1
> UNRESOLVED: gcc.target/aarch64/sve/struct_vect_23.c scan-assembler-times 
> \\tstr\\ts 1
> UNRESOLVED: gcc.target/aarch64/sve/struct_vect_23.c scan-assembler-times 
> \\tstrb\\tw 1
> UNRESOLVED: gcc.target/aarch64/sve/struct_vect_23.c scan-assembler-times 
> \\tstrh\\tw 1
> FAIL: gcc.target/aarch64/sve/struct_vect_23_run.c (internal compiler error: 
> Segmentation fault)
> FAIL: gcc.target/aarch64/sve/struct_vect_23_run.c (test for excess errors)
> UNRESOLVED: gcc.target/aarch64/sve/struct_vect_23_run.c compilation failed to 
> produce executable
> 
> Thanks,
> Spencer
> 
> >  
> > >   * tree-vectorizer.h (_stmt_vec_info::memory_access_type): Remove.
> > >   (STMT_VINFO_MEMORY_ACCESS_TYPE): Likewise.
> > >   (vect_mem_access_type): Likewise.
> > >   * tree-vect-stmts.cc (vectorizable_store): Do not set
> > >   STMT_VINFO_MEMORY_ACCESS_TYPE.  Fix SLP_TREE_MEMORY_ACCESS_TYPE
> > >   usage.
> > >   * tree-vect-loop.cc (update_epilogue_loop_vinfo): Remove
> > >   checking of memory access type.
> > >   * config/riscv/riscv-vector-costs.cc (costs::compute_local_live_ranges):
> > >   Use SLP_TREE_MEMORY_ACCESS_TYPE.
> > >   (costs::need_additional_vector_vars_p): Likewise.
> > >   (segment_loadstore_group_size): Get SLP node as argument,
> > >   use SLP_TREE_MEMORY_ACCESS_TYPE.
> > >   (costs::adjust_stmt_cost): Pass down SLP node.
> > >   * config/aarch64/aarch64.cc (aarch64_ld234_st234_vectors): Use
> > >   SLP_TREE_MEMORY_ACCESS_TYPE instead of vect_mem_access_type.
> > >   (aarch64_detect_vector_stmt_subtype): Likewise.
> > >   (aarch64_vector_costs::count_ops): Likewise.
> > >   (aarch64_vector_costs::add_stmt_cost): Likewise.
> > > ---
> > >  gcc/config/aarch64/aarch64.cc          | 15 ++++++++-------
> > >  gcc/config/riscv/riscv-vector-costs.cc | 16 ++++++++--------
> > >  gcc/tree-vect-loop.cc                  |  6 ++----
> > >  gcc/tree-vect-stmts.cc                 |  3 +--
> > >  gcc/tree-vectorizer.h                  | 17 -----------------
> > >  5 files changed, 19 insertions(+), 38 deletions(-)
> > > 
> > > diff --git a/gcc/config/aarch64/aarch64.cc b/gcc/config/aarch64/aarch64.cc
> > > index cb1699ab7c5..8acf24947ea 100644
> > > --- a/gcc/config/aarch64/aarch64.cc
> > > +++ b/gcc/config/aarch64/aarch64.cc
> > > @@ -17166,8 +17166,8 @@ aarch64_ld234_st234_vectors (vect_cost_for_stmt 
> > > kind, stmt_vec_info stmt_info,
> > >        && STMT_VINFO_DATA_REF (stmt_info))
> > >      {
> > >        stmt_info = DR_GROUP_FIRST_ELEMENT (stmt_info);
> > > -      if (stmt_info
> > > -   && vect_mem_access_type (stmt_info, node) == VMAT_LOAD_STORE_LANES)
> > > +      if (node
> > > +   && SLP_TREE_MEMORY_ACCESS_TYPE (node) == VMAT_LOAD_STORE_LANES)
> > >   return DR_GROUP_SIZE (stmt_info);
> > >      }
> > >    return 0;
> > > @@ -17439,7 +17439,7 @@ aarch64_detect_vector_stmt_subtype (vec_info 
> > > *vinfo, vect_cost_for_stmt kind,
> > >       cost by the number of elements in the vector.  */
> > >    if (kind == scalar_load
> > >        && sve_costs
> > > -      && vect_mem_access_type (stmt_info, node) == VMAT_GATHER_SCATTER)
> > > +      && SLP_TREE_MEMORY_ACCESS_TYPE (node) == VMAT_GATHER_SCATTER)
> > >      {
> > >        unsigned int nunits = vect_nunits_for_cost (vectype);
> > >        /* Test for VNx2 modes, which have 64-bit containers.  */
> > > @@ -17452,7 +17452,7 @@ aarch64_detect_vector_stmt_subtype (vec_info 
> > > *vinfo, vect_cost_for_stmt kind,
> > >       in a scatter operation.  */
> > >    if (kind == scalar_store
> > >        && sve_costs
> > > -      && vect_mem_access_type (stmt_info, node) == VMAT_GATHER_SCATTER)
> > > +      && SLP_TREE_MEMORY_ACCESS_TYPE (node) == VMAT_GATHER_SCATTER)
> > >      return sve_costs->scatter_store_elt_cost;
> > >  
> > >    /* Detect cases in which vec_to_scalar represents an in-loop 
> > > reduction.  */
> > > @@ -17708,7 +17708,7 @@ aarch64_vector_costs::count_ops (unsigned int 
> > > count, vect_cost_for_stmt kind,
> > >    if (stmt_info
> > >        && kind == vec_to_scalar
> > >        && (m_vec_flags & VEC_ADVSIMD)
> > > -      && vect_mem_access_type (stmt_info, node) == VMAT_GATHER_SCATTER)
> > > +      && SLP_TREE_MEMORY_ACCESS_TYPE (node) == VMAT_GATHER_SCATTER)
> > >      {
> > >        auto dr = STMT_VINFO_DATA_REF (stmt_info);
> > >        tree dr_ref = DR_REF (dr);
> > > @@ -17823,7 +17823,7 @@ aarch64_vector_costs::count_ops (unsigned int 
> > > count, vect_cost_for_stmt kind,
> > >    if (stmt_info
> > >        && sve_issue
> > >        && (kind == scalar_load || kind == scalar_store)
> > > -      && vect_mem_access_type (stmt_info, node) == VMAT_GATHER_SCATTER)
> > > +      && SLP_TREE_MEMORY_ACCESS_TYPE (node) == VMAT_GATHER_SCATTER)
> > >      {
> > >        unsigned int pairs = CEIL (count, 2);
> > >        ops->pred_ops += sve_issue->gather_scatter_pair_pred_ops * pairs;
> > > @@ -17978,9 +17978,10 @@ aarch64_vector_costs::add_stmt_cost (int count, 
> > > vect_cost_for_stmt kind,
> > >  
> > >        /* Check if we've seen an SVE gather/scatter operation and which 
> > > size.  */
> > >        if (kind == scalar_load
> > > +   && !m_costing_for_scalar
> > >     && vectype
> > >     && aarch64_sve_mode_p (TYPE_MODE (vectype))
> > > -   && vect_mem_access_type (stmt_info, node) == VMAT_GATHER_SCATTER)
> > > +   && SLP_TREE_MEMORY_ACCESS_TYPE (node) == VMAT_GATHER_SCATTER)
> > >   {
> > >     const sve_vec_cost *sve_costs = aarch64_tune_params.vec_costs->sve;
> > >     if (sve_costs)
> > > diff --git a/gcc/config/riscv/riscv-vector-costs.cc 
> > > b/gcc/config/riscv/riscv-vector-costs.cc
> > > index 1c6bc25c2ad..44ef44a1435 100644
> > > --- a/gcc/config/riscv/riscv-vector-costs.cc
> > > +++ b/gcc/config/riscv/riscv-vector-costs.cc
> > > @@ -400,7 +400,7 @@ costs::compute_local_live_ranges (
> > >             pair &live_range
> > >               = live_ranges->get_or_insert (lhs, &existed_p);
> > >             gcc_assert (!existed_p);
> > > -           if (STMT_VINFO_MEMORY_ACCESS_TYPE (program_point.stmt_info)
> > > +           if (SLP_TREE_MEMORY_ACCESS_TYPE (*node)
> > >                 == VMAT_LOAD_STORE_LANES)
> > >               point = get_first_lane_point (program_points,
> > >                                             program_point.stmt_info);
> > > @@ -418,8 +418,7 @@ costs::compute_local_live_ranges (
> > >                 bool existed_p = false;
> > >                 pair &live_range
> > >                   = live_ranges->get_or_insert (var, &existed_p);
> > > -               if (STMT_VINFO_MEMORY_ACCESS_TYPE (
> > > -                     program_point.stmt_info)
> > > +               if (SLP_TREE_MEMORY_ACCESS_TYPE (*node)
> > >                     == VMAT_LOAD_STORE_LANES)
> > >                   point = get_last_lane_point (program_points,
> > >                                                program_point.stmt_info);
> > > @@ -608,7 +607,7 @@ costs::need_additional_vector_vars_p (stmt_vec_info 
> > > stmt_info,
> > >    if (type == load_vec_info_type || type == store_vec_info_type)
> > >      {
> > >        if (STMT_VINFO_GATHER_SCATTER_P (stmt_info)
> > > -   && STMT_VINFO_MEMORY_ACCESS_TYPE (stmt_info) == VMAT_GATHER_SCATTER)
> > > +   && SLP_TREE_MEMORY_ACCESS_TYPE (node) == VMAT_GATHER_SCATTER)
> > >   return true;
> > >  
> > >        machine_mode mode = TYPE_MODE (STMT_VINFO_VECTYPE (stmt_info));
> > > @@ -1086,7 +1085,7 @@ costs::better_main_loop_than_p (const vector_costs 
> > > *uncast_other) const
> > >     load/store.  */
> > >  static int
> > >  segment_loadstore_group_size (enum vect_cost_for_stmt kind,
> > > -                       stmt_vec_info stmt_info)
> > > +                       stmt_vec_info stmt_info, slp_tree node)
> > >  {
> > >    if (stmt_info
> > >        && (kind == vector_load || kind == vector_store)
> > > @@ -1094,7 +1093,7 @@ segment_loadstore_group_size (enum 
> > > vect_cost_for_stmt kind,
> > >      {
> > >        stmt_info = DR_GROUP_FIRST_ELEMENT (stmt_info);
> > >        if (stmt_info
> > > -   && STMT_VINFO_MEMORY_ACCESS_TYPE (stmt_info) == VMAT_LOAD_STORE_LANES)
> > > +   && SLP_TREE_MEMORY_ACCESS_TYPE (node) == VMAT_LOAD_STORE_LANES)
> > >   return DR_GROUP_SIZE (stmt_info);
> > >      }
> > >    return 0;
> > > @@ -1108,7 +1107,7 @@ segment_loadstore_group_size (enum 
> > > vect_cost_for_stmt kind,
> > >  unsigned
> > >  costs::adjust_stmt_cost (enum vect_cost_for_stmt kind, loop_vec_info 
> > > loop,
> > >                    stmt_vec_info stmt_info,
> > > -                  slp_tree, tree vectype, int stmt_cost)
> > > +                  slp_tree node, tree vectype, int stmt_cost)
> > >  {
> > >    const cpu_vector_cost *costs = get_vector_costs ();
> > >    switch (kind)
> > > @@ -1131,7 +1130,8 @@ costs::adjust_stmt_cost (enum vect_cost_for_stmt 
> > > kind, loop_vec_info loop,
> > >            each vector in the group.  Here we additionally add permute
> > >            costs for each.  */
> > >         /* TODO: Indexed and ordered/unordered cost.  */
> > > -       int group_size = segment_loadstore_group_size (kind, stmt_info);
> > > +       int group_size = segment_loadstore_group_size (kind, stmt_info,
> > > +                                                      node);
> > >         if (group_size > 1)
> > >           {
> > >             switch (group_size)
> > > diff --git a/gcc/tree-vect-loop.cc b/gcc/tree-vect-loop.cc
> > > index 830fece33c6..ce08909ab83 100644
> > > --- a/gcc/tree-vect-loop.cc
> > > +++ b/gcc/tree-vect-loop.cc
> > > @@ -11294,11 +11294,9 @@ update_epilogue_loop_vinfo (class loop 
> > > *epilogue, tree advance)
> > >    updated offset we set using ADVANCE.  Instead we have to make sure the
> > >    reference in the data references point to the corresponding copy of
> > >    the original in the epilogue.  Make sure to update both
> > > -  gather/scatters recognized by dataref analysis and also other
> > > -  refs that get_load_store_type classified as VMAT_GATHER_SCATTER.  */
> > > +  gather/scatters recognized by dataref analysis.  */
> > >        auto vstmt_vinfo = vect_stmt_to_vectorize (stmt_vinfo);
> > > -      if (STMT_VINFO_MEMORY_ACCESS_TYPE (vstmt_vinfo) == 
> > > VMAT_GATHER_SCATTER
> > > -   || STMT_VINFO_STRIDED_P (vstmt_vinfo)
> > > +      if (STMT_VINFO_STRIDED_P (vstmt_vinfo)
> > >     || STMT_VINFO_GATHER_SCATTER_P (vstmt_vinfo))
> > >   {
> > >     /* ???  As we copy epilogues from the main loop incremental
> > > diff --git a/gcc/tree-vect-stmts.cc b/gcc/tree-vect-stmts.cc
> > > index 4cf6c3b1a6f..1dfb148e803 100644
> > > --- a/gcc/tree-vect-stmts.cc
> > > +++ b/gcc/tree-vect-stmts.cc
> > > @@ -7934,7 +7934,6 @@ vectorizable_store (vec_info *vinfo,
> > >    bool costing_p = cost_vec;
> > >    if (costing_p) /* transformation not required.  */
> > >      {
> > > -      STMT_VINFO_MEMORY_ACCESS_TYPE (stmt_info) = memory_access_type;
> > >        SLP_TREE_MEMORY_ACCESS_TYPE (slp_node) = memory_access_type;
> > >  
> > >        if (loop_vinfo
> > > @@ -7965,7 +7964,7 @@ vectorizable_store (vec_info *vinfo,
> > >  
> > >        SLP_TREE_TYPE (slp_node) = store_vec_info_type;
> > >      }
> > > -  gcc_assert (memory_access_type == SLP_TREE_MEMORY_ACCESS_TYPE 
> > > (stmt_info));
> > > +  gcc_assert (memory_access_type == SLP_TREE_MEMORY_ACCESS_TYPE 
> > > (slp_node));
> > >  
> > >    /* Transform.  */
> > >  
> > > diff --git a/gcc/tree-vectorizer.h b/gcc/tree-vectorizer.h
> > > index 76ff2cfea2f..7e7b2b4b836 100644
> > > --- a/gcc/tree-vectorizer.h
> > > +++ b/gcc/tree-vectorizer.h
> > > @@ -1437,10 +1437,6 @@ public:
> > >    /* For both loads and stores.  */
> > >    unsigned simd_lane_access_p : 3;
> > >  
> > > -  /* Classifies how the load or store is going to be implemented
> > > -     for loop vectorization.  */
> > > -  vect_memory_access_type memory_access_type;
> > > -
> > >    /* For INTEGER_INDUC_COND_REDUCTION, the initial value to be used.  */
> > >    tree induc_cond_initial_val;
> > >  
> > > @@ -1583,7 +1579,6 @@ struct gather_scatter_info {
> > >  #define STMT_VINFO_DATA_REF(S)             ((S)->dr_aux.dr + 0)
> > >  #define STMT_VINFO_GATHER_SCATTER_P(S)      (S)->gather_scatter_p
> > >  #define STMT_VINFO_STRIDED_P(S)             (S)->strided_p
> > > -#define STMT_VINFO_MEMORY_ACCESS_TYPE(S)   (S)->memory_access_type
> > >  #define STMT_VINFO_SIMD_LANE_ACCESS_P(S)   (S)->simd_lane_access_p
> > >  #define STMT_VINFO_VEC_INDUC_COND_INITIAL_VAL(S) 
> > > (S)->induc_cond_initial_val
> > >  #define STMT_VINFO_REDUC_EPILOGUE_ADJUSTMENT(S) 
> > > (S)->reduc_epilogue_adjustment
> > > @@ -2832,18 +2827,6 @@ vect_is_reduction (stmt_vec_info stmt_info)
> > >    return STMT_VINFO_REDUC_IDX (stmt_info) >= 0;
> > >  }
> > >  
> > > -/* Returns the memory acccess type being used to vectorize the 
> > > statement.  If
> > > -   SLP this is read from NODE, otherwise it's read from the STMT_VINFO.  
> > > */
> > > -
> > > -inline vect_memory_access_type
> > > -vect_mem_access_type (stmt_vec_info stmt_info, slp_tree node)
> > > -{
> > > -  if (node)
> > > -    return SLP_TREE_MEMORY_ACCESS_TYPE (node);
> > > -  else
> > > -    return STMT_VINFO_MEMORY_ACCESS_TYPE (stmt_info);
> > > -}
> > > -
> > >  /* If STMT_INFO describes a reduction, return the vect_reduction_type
> > >     of the reduction it describes, otherwise return -1.  */
> > >  inline int
> > > 
> > 
> > -- 
> > Richard Biener <rguent...@suse.de>
> > SUSE Software Solutions Germany GmbH,
> > Frankenstrasse 146, 90461 Nuernberg, Germany;
> > GF: Ivo Totev, Andrew McDonald, Werner Knoblich; (HRB 36809, AG Nuernberg)
> 

-- 
Richard Biener <rguent...@suse.de>
SUSE Software Solutions Germany GmbH,
Frankenstrasse 146, 90461 Nuernberg, Germany;
GF: Ivo Totev, Andrew McDonald, Werner Knoblich; (HRB 36809, AG Nuernberg)

Reply via email to