* [PATCH V2] RISC-V: Optimize combine sequence by merge approach
@ 2023-11-13 8:41 Juzhe-Zhong
2023-11-13 10:05 ` Robin Dapp
0 siblings, 1 reply; 3+ messages in thread
From: Juzhe-Zhong @ 2023-11-13 8:41 UTC (permalink / raw)
To: gcc-patches; +Cc: kito.cheng, kito.cheng, jeffreyalaw, rdapp.gcc, Juzhe-Zhong
Update in V2 with testcases.
This patch optimization of combine 2 duplicate vectors when their elements are not equal.
typedef char v16qi __attribute__ ((vector_size (16)));
void
foo (char a, char b, char *out)
{
v16qi v = {a, a, a, a, a, b, b, b, b, b, b, b, b, b, b, b};
*(v16qi *) out = v;
}
Before this patch:
vsetivli zero,16,e8,m1,ta,ma
vmv.v.x v1,a0
vslide1down.vx v1,v1,a1
vslide1down.vx v1,v1,a1
vslide1down.vx v1,v1,a1
vslide1down.vx v1,v1,a1
vslide1down.vx v1,v1,a1
vslide1down.vx v1,v1,a1
vslide1down.vx v1,v1,a1
vslide1down.vx v1,v1,a1
vslide1down.vx v1,v1,a1
vslide1down.vx v1,v1,a1
vslide1down.vx v1,v1,a1
vse8.v v1,0(a2)
ret
After this patch:
vsetivli zero,16,e8,m1,ta,ma
vmv.v.x v1,a0
vid.v v0
vmsgtu.vi v0,v0,4
vmerge.vxm v1,v1,a1,v0
vse8.v v1,0(a2)
ret
gcc/ChangeLog:
* config/riscv/riscv-v.cc (rvv_builder::combine_sequence_use_merge_profitable_p): New function.
(expand_vector_init_merge_combine_sequence): Ditto.
(expand_vec_init): Adapt for new optimization.
gcc/testsuite/ChangeLog:
* gcc.target/riscv/rvv/autovec/vls-vlmax/combine-merge-1.c: New test.
* gcc.target/riscv/rvv/autovec/vls-vlmax/combine-merge-2.c: New test.
* gcc.target/riscv/rvv/autovec/vls-vlmax/combine-merge_run-1.c: New test.
* gcc.target/riscv/rvv/autovec/vls-vlmax/combine-merge_run-2.c: New test.
* gcc.target/riscv/rvv/autovec/vls/combine-merge-1.c: New test.
* gcc.target/riscv/rvv/autovec/vls/combine-merge-10.c: New test.
* gcc.target/riscv/rvv/autovec/vls/combine-merge-11.c: New test.
* gcc.target/riscv/rvv/autovec/vls/combine-merge-12.c: New test.
* gcc.target/riscv/rvv/autovec/vls/combine-merge-13.c: New test.
* gcc.target/riscv/rvv/autovec/vls/combine-merge-14.c: New test.
* gcc.target/riscv/rvv/autovec/vls/combine-merge-2.c: New test.
* gcc.target/riscv/rvv/autovec/vls/combine-merge-3.c: New test.
* gcc.target/riscv/rvv/autovec/vls/combine-merge-4.c: New test.
* gcc.target/riscv/rvv/autovec/vls/combine-merge-5.c: New test.
* gcc.target/riscv/rvv/autovec/vls/combine-merge-6.c: New test.
* gcc.target/riscv/rvv/autovec/vls/combine-merge-7.c: New test.
* gcc.target/riscv/rvv/autovec/vls/combine-merge-8.c: New test.
* gcc.target/riscv/rvv/autovec/vls/combine-merge-9.c: New test.
---
gcc/config/riscv/riscv-v.cc | 89 ++++-
.../rvv/autovec/vls-vlmax/combine-merge-1.c | 18 +
.../rvv/autovec/vls-vlmax/combine-merge-2.c | 18 +
.../autovec/vls-vlmax/combine-merge_run-1.c | 30 ++
.../autovec/vls-vlmax/combine-merge_run-2.c | 30 ++
.../riscv/rvv/autovec/vls/combine-merge-1.c | 179 ++++++++++
.../riscv/rvv/autovec/vls/combine-merge-10.c | 98 +++++
.../riscv/rvv/autovec/vls/combine-merge-11.c | 98 +++++
.../riscv/rvv/autovec/vls/combine-merge-12.c | 178 +++++++++
.../riscv/rvv/autovec/vls/combine-merge-13.c | 98 +++++
.../riscv/rvv/autovec/vls/combine-merge-14.c | 98 +++++
.../riscv/rvv/autovec/vls/combine-merge-2.c | 97 +++++
.../riscv/rvv/autovec/vls/combine-merge-3.c | 97 +++++
.../riscv/rvv/autovec/vls/combine-merge-4.c | 97 +++++
.../riscv/rvv/autovec/vls/combine-merge-5.c | 98 +++++
.../riscv/rvv/autovec/vls/combine-merge-6.c | 97 +++++
.../riscv/rvv/autovec/vls/combine-merge-7.c | 97 +++++
.../riscv/rvv/autovec/vls/combine-merge-8.c | 337 ++++++++++++++++++
.../riscv/rvv/autovec/vls/combine-merge-9.c | 178 +++++++++
19 files changed, 2031 insertions(+), 1 deletion(-)
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/vls-vlmax/combine-merge-1.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/vls-vlmax/combine-merge-2.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/vls-vlmax/combine-merge_run-1.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/vls-vlmax/combine-merge_run-2.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/combine-merge-1.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/combine-merge-10.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/combine-merge-11.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/combine-merge-12.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/combine-merge-13.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/combine-merge-14.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/combine-merge-2.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/combine-merge-3.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/combine-merge-4.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/combine-merge-5.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/combine-merge-6.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/combine-merge-7.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/combine-merge-8.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/combine-merge-9.c
diff --git a/gcc/config/riscv/riscv-v.cc b/gcc/config/riscv/riscv-v.cc
index b055de9f2d6..265a298f447 100644
--- a/gcc/config/riscv/riscv-v.cc
+++ b/gcc/config/riscv/riscv-v.cc
@@ -415,6 +415,7 @@ public:
bool repeating_sequence_use_merge_profitable_p ();
bool combine_sequence_use_slideup_profitable_p ();
+ bool combine_sequence_use_merge_profitable_p ();
rtx get_merge_scalar_mask (unsigned int) const;
bool single_step_npatterns_p () const;
@@ -528,6 +529,34 @@ rvv_builder::combine_sequence_use_slideup_profitable_p ()
return leading_ndups == trailing_ndups && trailing_ndups == nelts / 2;
}
+/* Return true if it's worthwhile to use merge combine vector with a scalar. */
+bool
+rvv_builder::combine_sequence_use_merge_profitable_p ()
+{
+ int nelts = full_nelts ().to_constant ();
+ int leading_ndups = this->count_dups (0, nelts - 1, 1);
+ int trailing_ndups = this->count_dups (nelts - 1, -1, -1);
+ int nregs = riscv_get_v_regno_alignment (int_mode ());
+
+ if (leading_ndups + trailing_ndups != nelts)
+ return false;
+
+ /* Leading elements num > 255 which exceeds the maximum value
+ of QImode, we will need to use HImode. */
+ machine_mode mode;
+ if (leading_ndups > 255 || nregs > 2)
+ {
+ if (!get_vector_mode (HImode, nelts).exists (&mode))
+ return false;
+ /* We will need one more AVL/VL toggling vsetvl instruction. */
+ return leading_ndups > 4 && trailing_ndups > 4;
+ }
+
+ /* { a, a, a, b, b, ... , b } and { b, b, b, a, a, ... , a }
+ consume 3 slide instructions. */
+ return leading_ndups > 3 && trailing_ndups > 3;
+}
+
/* Merge the repeating sequence into a single element and return the RTX. */
rtx
rvv_builder::get_merged_repeating_sequence ()
@@ -2166,6 +2195,49 @@ expand_vector_init_slideup_combine_sequence (rtx target,
emit_vlmax_insn (icode, SLIDEUP_OP_MERGE, ops);
}
+/* Use merge approach to merge a scalar into a vector.
+ v = {a, a, a, a, a, a, b, b}
+
+ v1 = {a, a, a, a, a, a, a, a}
+ scalar = b
+ mask = {0, 0, 0, 0, 0, 0, 1, 1}
+*/
+static void
+expand_vector_init_merge_combine_sequence (rtx target,
+ const rvv_builder &builder)
+{
+ machine_mode mode = GET_MODE (target);
+ machine_mode imode = builder.int_mode ();
+ machine_mode mmode = builder.mask_mode ();
+ int nelts = builder.full_nelts ().to_constant ();
+ int leading_ndups = builder.count_dups (0, nelts - 1, 1);
+ if ((leading_ndups > 255 && GET_MODE_INNER (imode) == QImode)
+ || riscv_get_v_regno_alignment (imode) > 1)
+ imode = get_vector_mode (HImode, nelts).require ();
+
+ /* Generate vid = { 0, 1, 2, ..., n }. */
+ rtx vid = gen_reg_rtx (imode);
+ expand_vec_series (vid, const0_rtx, const1_rtx);
+
+ /* Generate mask. */
+ rtx mask = gen_reg_rtx (mmode);
+ insn_code icode = code_for_pred_cmp_scalar (imode);
+ rtx index = gen_int_mode (leading_ndups - 1, builder.inner_int_mode ());
+ rtx dup_rtx = gen_rtx_VEC_DUPLICATE (imode, index);
+ /* vmsgtu.vi/vmsgtu.vx. */
+ rtx cmp = gen_rtx_fmt_ee (GTU, mmode, vid, dup_rtx);
+ rtx sel = builder.elt (nelts - 1);
+ rtx mask_ops[] = {mask, cmp, vid, index};
+ emit_vlmax_insn (icode, COMPARE_OP, mask_ops);
+
+ /* Duplicate the first elements. */
+ rtx dup = expand_vector_broadcast (mode, builder.elt (0));
+ /* Merge scalar into vector according to mask. */
+ rtx merge_ops[] = {target, dup, sel, mask};
+ icode = code_for_pred_merge_scalar (mode);
+ emit_vlmax_insn (icode, MERGE_OP, merge_ops);
+}
+
/* Initialize register TARGET from the elements in PARALLEL rtx VALS. */
void
@@ -2215,7 +2287,22 @@ expand_vec_init (rtx target, rtx vals)
return;
}
- /* TODO: We will support more Initialization of vector in the future. */
+ /* Case 4: Optimize combine sequence.
+ E.g. v = {a, a, a, a, a, a, a, a, a, a, a, b, b, b, b, b}.
+
+ Generate vector:
+ v = {a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a}.
+
+ Generate mask:
+ mask = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1}.
+
+ Merge b into v by mask:
+ v = {a, a, a, a, a, a, a, a, a, a, a, b, b, b, b, b}. */
+ if (v.combine_sequence_use_merge_profitable_p ())
+ {
+ expand_vector_init_merge_combine_sequence (target, v);
+ return;
+ }
}
/* Handle common situation by vslide1down. This function can handle any
diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls-vlmax/combine-merge-1.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls-vlmax/combine-merge-1.c
new file mode 100644
index 00000000000..ca2acbf785d
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls-vlmax/combine-merge-1.c
@@ -0,0 +1,18 @@
+/* { dg-do compile } */
+/* { dg-additional-options "-march=rv64gcv -mabi=lp64d" } */
+
+#include <stdint-gcc.h>
+
+typedef double vnx16df __attribute__ ((vector_size (128)));
+
+__attribute__ ((noipa)) void
+f_vnx16df (double a, double b, double *out)
+{
+ vnx16df v = {a, a, a, a, a, b, b, b, b, b, b, b, b, b, b, b};
+ *(vnx16df *) out = v;
+}
+
+/* { dg-final { scan-assembler-times {vfmv\.v\.f} 1 } } */
+/* { dg-final { scan-assembler-times {vid\.v} 1 } } */
+/* { dg-final { scan-assembler-times {vmsgtu\.vi} 1 } } */
+/* { dg-final { scan-assembler-times {vfmerge\.vfm} 1 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls-vlmax/combine-merge-2.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls-vlmax/combine-merge-2.c
new file mode 100644
index 00000000000..9a59b9cfd8f
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls-vlmax/combine-merge-2.c
@@ -0,0 +1,18 @@
+/* { dg-do compile } */
+/* { dg-additional-options "-march=rv64gcv -mabi=lp64d" } */
+
+#include <stdint-gcc.h>
+
+typedef int64_t vnx16di __attribute__ ((vector_size (128)));
+
+__attribute__ ((noipa)) void
+f_vnx16di (int64_t a, int64_t b, int64_t *out)
+{
+ vnx16di v = {a, a, a, a, a, b, b, b, b, b, b, b, b, b, b, b};
+ *(vnx16di *) out = v;
+}
+
+/* { dg-final { scan-assembler-times {vmv\.v\.x} 1 } } */
+/* { dg-final { scan-assembler-times {vid\.v} 1 } } */
+/* { dg-final { scan-assembler-times {vmsgtu\.vi} 1 } } */
+/* { dg-final { scan-assembler-times {vmerge\.vxm} 1 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls-vlmax/combine-merge_run-1.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls-vlmax/combine-merge_run-1.c
new file mode 100644
index 00000000000..71ccf54a6d3
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls-vlmax/combine-merge_run-1.c
@@ -0,0 +1,30 @@
+/* { dg-do run { target { riscv_v } } } */
+/* { dg-options "--param riscv-autovec-preference=fixed-vlmax -O3" } */
+
+#include "combine-merge-1.c"
+
+int
+main ()
+{
+ double a = -1789089.23423;
+ double b = -8916156.45644;
+
+ double v_vnx16df[sizeof (vnx16df) / sizeof (double)];
+ f_vnx16df (a, b, v_vnx16df);
+
+ for (int i = 0; i < sizeof (vnx16df) / sizeof (double); i++)
+ {
+ if (i < 5)
+ {
+ if (v_vnx16df[i] != a)
+ __builtin_abort ();
+ }
+ else
+ {
+ if (v_vnx16df[i] != b)
+ __builtin_abort ();
+ }
+ }
+
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls-vlmax/combine-merge_run-2.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls-vlmax/combine-merge_run-2.c
new file mode 100644
index 00000000000..292ce9be120
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls-vlmax/combine-merge_run-2.c
@@ -0,0 +1,30 @@
+/* { dg-do run { target { riscv_v } } } */
+/* { dg-options "--param riscv-autovec-preference=fixed-vlmax -O3" } */
+
+#include "combine-merge-2.c"
+
+int
+main ()
+{
+ int64_t a = -1789089.23423;
+ int64_t b = -8916156.45644;
+
+ int64_t v_vnx16di[sizeof (vnx16di) / sizeof (int64_t)];
+ f_vnx16di (a, b, v_vnx16di);
+
+ for (int i = 0; i < sizeof (vnx16di) / sizeof (int64_t); i++)
+ {
+ if (i < 5)
+ {
+ if (v_vnx16di[i] != a)
+ __builtin_abort ();
+ }
+ else
+ {
+ if (v_vnx16di[i] != b)
+ __builtin_abort ();
+ }
+ }
+
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/combine-merge-1.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/combine-merge-1.c
new file mode 100644
index 00000000000..4622a5b58ad
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/combine-merge-1.c
@@ -0,0 +1,179 @@
+/* { dg-do compile } */
+/* { dg-options "-march=rv64gcv_zvfh_zvl4096b -mabi=lp64d -O3 --param=riscv-autovec-lmul=m8" } */
+
+#include "def.h"
+
+DEF_REPEAT (v16qi, int8_t, 16, var0, var0, var0, var0, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1)
+DEF_REPEAT (v32qi, int8_t, 32, var0, var0, var0, var0, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1)
+DEF_REPEAT (v64qi, int8_t, 64, var0, var0, var0, var0, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1)
+DEF_REPEAT (v128qi, int8_t, 128, var0, var0, var0, var0, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1)
+DEF_REPEAT (
+ v256qi, int8_t, 256, var0, var0, var0, var0, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1)
+DEF_REPEAT (
+ v512qi, int8_t, 512, var0, var0, var0, var0, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1)
+DEF_REPEAT (
+ v1024qi, int8_t, 1024, var0, var0, var0, var0, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1)
+
+/* { dg-final { scan-assembler-times {vmv\.v\.x} 7 } } */
+/* { dg-final { scan-assembler-times {vid\.v} 7 } } */
+/* { dg-final { scan-assembler-times {vmsgtu\.vi} 7 } } */
+/* { dg-final { scan-assembler-times {vmerge\.vxm} 7 } } */
+
diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/combine-merge-10.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/combine-merge-10.c
new file mode 100644
index 00000000000..0d4776cac80
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/combine-merge-10.c
@@ -0,0 +1,98 @@
+/* { dg-do compile } */
+/* { dg-options "-march=rv64gcv_zvfh_zvl4096b -mabi=lp64d -O3 --param=riscv-autovec-lmul=m8" } */
+
+#include "def.h"
+
+DEF_REPEAT (v16si, int32_t, 16, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var0, var0, var0, var0, var0, var0)
+DEF_REPEAT (v32si, int32_t, 32, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var0, var0, var0, var0, var0, var0)
+DEF_REPEAT (v64si, int32_t, 64, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var0, var0, var0, var0)
+DEF_REPEAT (v128si, int32_t, 128, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var0, var0, var0, var0, var0, var0)
+DEF_REPEAT (
+ v256si, int32_t, 256, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var0, var0, var0, var0, var0, var0)
+DEF_REPEAT (
+ v512si, int32_t, 512, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var0, var0, var0, var0, var0, var0)
+
+
+/* { dg-final { scan-assembler-times {vmv\.v\.x} 6 } } */
+/* { dg-final { scan-assembler-times {vid\.v} 6 } } */
+/* { dg-final { scan-assembler-times {vmsgtu} 6 } } */
+/* { dg-final { scan-assembler-times {vmerge\.vxm} 6 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/combine-merge-11.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/combine-merge-11.c
new file mode 100644
index 00000000000..4af45cc0783
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/combine-merge-11.c
@@ -0,0 +1,98 @@
+/* { dg-do compile } */
+/* { dg-options "-march=rv64gcv_zvfh_zvl4096b -mabi=lp64d -O3 --param=riscv-autovec-lmul=m8" } */
+
+#include "def.h"
+
+DEF_REPEAT (v16di, int64_t, 16, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var0, var0, var0, var0, var0, var0)
+DEF_REPEAT (v32di, int64_t, 32, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var0, var0, var0, var0, var0, var0)
+DEF_REPEAT (v64di, int64_t, 64, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var0, var0, var0, var0)
+DEF_REPEAT (v128di, int64_t, 128, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var0, var0, var0, var0, var0, var0)
+DEF_REPEAT (
+ v256di, int64_t, 256, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var0, var0, var0, var0, var0, var0)
+DEF_REPEAT (
+ v512di, int64_t, 512, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var0, var0, var0, var0, var0, var0)
+
+
+/* { dg-final { scan-assembler-times {vmv\.v\.x} 6 } } */
+/* { dg-final { scan-assembler-times {vid\.v} 6 } } */
+/* { dg-final { scan-assembler-times {vmsgtu} 6 } } */
+/* { dg-final { scan-assembler-times {vmerge\.vxm} 6 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/combine-merge-12.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/combine-merge-12.c
new file mode 100644
index 00000000000..d2f18521d5a
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/combine-merge-12.c
@@ -0,0 +1,178 @@
+/* { dg-do compile } */
+/* { dg-options "-march=rv64gcv_zvfh_zvl4096b -mabi=lp64d -O3 --param=riscv-autovec-lmul=m8" } */
+
+#include "def.h"
+
+DEF_REPEAT (v16hf, _Float16, 16, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var0, var0, var0, var0, var0, var0)
+DEF_REPEAT (v32hf, _Float16, 32, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var0, var0, var0, var0, var0, var0)
+DEF_REPEAT (v64hf, _Float16, 64, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var0, var0, var0, var0)
+DEF_REPEAT (v128hf, _Float16, 128, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var0, var0, var0, var0, var0, var0)
+DEF_REPEAT (
+ v256hf, _Float16, 256, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var0, var0, var0, var0, var0, var0)
+DEF_REPEAT (
+ v512hf, _Float16, 512, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var0, var0, var0, var0, var0, var0)
+DEF_REPEAT (
+ v1024hf, _Float16, 1024, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var0,
+ var0, var0, var0, var0, var0)
+
+/* { dg-final { scan-assembler-times {vfmv\.v\.f} 7 } } */
+/* { dg-final { scan-assembler-times {vid\.v} 7 } } */
+/* { dg-final { scan-assembler-times {vmsgtu} 7 } } */
+/* { dg-final { scan-assembler-times {vfmerge\.vfm} 7 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/combine-merge-13.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/combine-merge-13.c
new file mode 100644
index 00000000000..ae6e712b9a5
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/combine-merge-13.c
@@ -0,0 +1,98 @@
+/* { dg-do compile } */
+/* { dg-options "-march=rv64gcv_zvfh_zvl4096b -mabi=lp64d -O3 --param=riscv-autovec-lmul=m8" } */
+
+#include "def.h"
+
+DEF_REPEAT (v16sf, float, 16, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var0, var0, var0, var0, var0, var0)
+DEF_REPEAT (v32sf, float, 32, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var0, var0, var0, var0, var0, var0)
+DEF_REPEAT (v64sf, float, 64, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var0, var0, var0, var0)
+DEF_REPEAT (v128sf, float, 128, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var0, var0, var0, var0, var0, var0)
+DEF_REPEAT (
+ v256sf, float, 256, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var0, var0, var0, var0, var0, var0)
+DEF_REPEAT (
+ v512sf, float, 512, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var0, var0, var0, var0, var0, var0)
+
+
+/* { dg-final { scan-assembler-times {vfmv\.v\.f} 6 } } */
+/* { dg-final { scan-assembler-times {vid\.v} 6 } } */
+/* { dg-final { scan-assembler-times {vmsgtu} 6 } } */
+/* { dg-final { scan-assembler-times {vfmerge\.vfm} 6 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/combine-merge-14.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/combine-merge-14.c
new file mode 100644
index 00000000000..f8d5e40c577
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/combine-merge-14.c
@@ -0,0 +1,98 @@
+/* { dg-do compile } */
+/* { dg-options "-march=rv64gcv_zvfh_zvl4096b -mabi=lp64d -O3 --param=riscv-autovec-lmul=m8" } */
+
+#include "def.h"
+
+DEF_REPEAT (v16df, double, 16, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var0, var0, var0, var0, var0, var0)
+DEF_REPEAT (v32df, double, 32, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var0, var0, var0, var0, var0, var0)
+DEF_REPEAT (v64df, double, 64, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var0, var0, var0, var0)
+DEF_REPEAT (v128df, double, 128, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var0, var0, var0, var0, var0, var0)
+DEF_REPEAT (
+ v256df, double, 256, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var0, var0, var0, var0, var0, var0)
+DEF_REPEAT (
+ v512df, double, 512, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var0, var0, var0, var0, var0, var0)
+
+
+/* { dg-final { scan-assembler-times {vfmv\.v\.f} 6 } } */
+/* { dg-final { scan-assembler-times {vid\.v} 6 } } */
+/* { dg-final { scan-assembler-times {vmsgtu} 6 } } */
+/* { dg-final { scan-assembler-times {vfmerge\.vfm} 6 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/combine-merge-2.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/combine-merge-2.c
new file mode 100644
index 00000000000..3eaf8bb948d
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/combine-merge-2.c
@@ -0,0 +1,97 @@
+/* { dg-do compile } */
+/* { dg-options "-march=rv64gcv_zvfh_zvl4096b -mabi=lp64d -O3 --param=riscv-autovec-lmul=m8" } */
+
+#include "def.h"
+
+DEF_REPEAT (v16hi, int16_t, 16, var0, var0, var0, var0, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1)
+DEF_REPEAT (v32hi, int16_t, 32, var0, var0, var0, var0, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1)
+DEF_REPEAT (v64hi, int16_t, 64, var0, var0, var0, var0, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1)
+DEF_REPEAT (v128hi, int16_t, 128, var0, var0, var0, var0, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1)
+DEF_REPEAT (
+ v256hi, int16_t, 256, var0, var0, var0, var0, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1)
+DEF_REPEAT (
+ v512hi, int16_t, 512, var0, var0, var0, var0, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1)
+
+/* { dg-final { scan-assembler-times {vmv\.v\.x} 6 } } */
+/* { dg-final { scan-assembler-times {vid\.v} 6 } } */
+/* { dg-final { scan-assembler-times {vmsgtu\.vi} 6 } } */
+/* { dg-final { scan-assembler-times {vmerge\.vxm} 6 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/combine-merge-3.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/combine-merge-3.c
new file mode 100644
index 00000000000..52fd64deaa8
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/combine-merge-3.c
@@ -0,0 +1,97 @@
+/* { dg-do compile } */
+/* { dg-options "-march=rv64gcv_zvfh_zvl4096b -mabi=lp64d -O3 --param=riscv-autovec-lmul=m8" } */
+
+#include "def.h"
+
+DEF_REPEAT (v16si, int32_t, 16, var0, var0, var0, var0, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1)
+DEF_REPEAT (v32si, int32_t, 32, var0, var0, var0, var0, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1)
+DEF_REPEAT (v64si, int32_t, 64, var0, var0, var0, var0, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1)
+DEF_REPEAT (v128si, int32_t, 128, var0, var0, var0, var0, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1)
+DEF_REPEAT (
+ v256si, int32_t, 256, var0, var0, var0, var0, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1)
+DEF_REPEAT (
+ v512si, int32_t, 512, var0, var0, var0, var0, var0, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1)
+
+/* { dg-final { scan-assembler-times {vmv\.v\.x} 6 } } */
+/* { dg-final { scan-assembler-times {vid\.v} 6 } } */
+/* { dg-final { scan-assembler-times {vmsgtu\.vi} 6 } } */
+/* { dg-final { scan-assembler-times {vmerge\.vxm} 6 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/combine-merge-4.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/combine-merge-4.c
new file mode 100644
index 00000000000..af6aaf369b7
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/combine-merge-4.c
@@ -0,0 +1,97 @@
+/* { dg-do compile } */
+/* { dg-options "-march=rv64gcv_zvfh_zvl4096b -mabi=lp64d -O3 --param=riscv-autovec-lmul=m8" } */
+
+#include "def.h"
+
+DEF_REPEAT (v16di, int64_t, 16, var0, var0, var0, var0, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1)
+DEF_REPEAT (v32di, int64_t, 32, var0, var0, var0, var0, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1)
+DEF_REPEAT (v64di, int64_t, 64, var0, var0, var0, var0, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1)
+DEF_REPEAT (v128di, int64_t, 128, var0, var0, var0, var0, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1)
+DEF_REPEAT (
+ v256di, int64_t, 256, var0, var0, var0, var0, var0, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1)
+DEF_REPEAT (
+ v512di, int64_t, 512, var0, var0, var0, var0, var0, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1)
+
+/* { dg-final { scan-assembler-times {vmv\.v\.x} 6 } } */
+/* { dg-final { scan-assembler-times {vid\.v} 6 } } */
+/* { dg-final { scan-assembler-times {vmsgtu\.vi} 6 } } */
+/* { dg-final { scan-assembler-times {vmerge\.vxm} 6 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/combine-merge-5.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/combine-merge-5.c
new file mode 100644
index 00000000000..a1dacaca20b
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/combine-merge-5.c
@@ -0,0 +1,98 @@
+/* { dg-do compile } */
+/* { dg-options "-march=rv64gcv_zvfh_zvl4096b -mabi=lp64d -O3 --param=riscv-autovec-lmul=m8" } */
+
+#include "def.h"
+
+DEF_REPEAT (v16hf, _Float16, 16, var0, var0, var0, var0, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1)
+DEF_REPEAT (v32hf, _Float16, 32, var0, var0, var0, var0, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1)
+DEF_REPEAT (v64hf, _Float16, 64, var0, var0, var0, var0, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1)
+DEF_REPEAT (v128hf, _Float16, 128, var0, var0, var0, var0, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1)
+DEF_REPEAT (
+ v256hf, _Float16, 256, var0, var0, var0, var0, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1)
+DEF_REPEAT (
+ v512hf, _Float16, 512, var0, var0, var0, var0, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1)
+
+
+/* { dg-final { scan-assembler-times {vfmv\.v\.f} 6 } } */
+/* { dg-final { scan-assembler-times {vid\.v} 6 } } */
+/* { dg-final { scan-assembler-times {vmsgtu\.vi} 6 } } */
+/* { dg-final { scan-assembler-times {vfmerge\.vfm} 6 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/combine-merge-6.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/combine-merge-6.c
new file mode 100644
index 00000000000..99d4019710b
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/combine-merge-6.c
@@ -0,0 +1,97 @@
+/* { dg-do compile } */
+/* { dg-options "-march=rv64gcv_zvfh_zvl4096b -mabi=lp64d -O3 --param=riscv-autovec-lmul=m8" } */
+
+#include "def.h"
+
+DEF_REPEAT (v16sf, float, 16, var0, var0, var0, var0, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1)
+DEF_REPEAT (v32sf, float, 32, var0, var0, var0, var0, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1)
+DEF_REPEAT (v64sf, float, 64, var0, var0, var0, var0, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1)
+DEF_REPEAT (v128sf, float, 128, var0, var0, var0, var0, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1)
+DEF_REPEAT (
+ v256sf, float, 256, var0, var0, var0, var0, var0, var0, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1)
+DEF_REPEAT (
+ v512sf, float, 512, var0, var0, var0, var0, var0, var0, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1)
+
+/* { dg-final { scan-assembler-times {vfmv\.v\.f} 6 } } */
+/* { dg-final { scan-assembler-times {vid\.v} 6 } } */
+/* { dg-final { scan-assembler-times {vmsgtu\.vi} 6 } } */
+/* { dg-final { scan-assembler-times {vfmerge\.vfm} 6 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/combine-merge-7.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/combine-merge-7.c
new file mode 100644
index 00000000000..5165d4743c6
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/combine-merge-7.c
@@ -0,0 +1,97 @@
+/* { dg-do compile } */
+/* { dg-options "-march=rv64gcv_zvfh_zvl4096b -mabi=lp64d -O3 --param=riscv-autovec-lmul=m8" } */
+
+#include "def.h"
+
+DEF_REPEAT (v16df, double, 16, var0, var0, var0, var0, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1)
+DEF_REPEAT (v32df, double, 32, var0, var0, var0, var0, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1)
+DEF_REPEAT (v64df, double, 64, var0, var0, var0, var0, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1)
+DEF_REPEAT (v128df, double, 128, var0, var0, var0, var0, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1)
+DEF_REPEAT (
+ v256df, double, 256, var0, var0, var0, var0, var0, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1)
+DEF_REPEAT (
+ v512df, double, 512, var0, var0, var0, var0, var0, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1)
+
+/* { dg-final { scan-assembler-times {vfmv\.v\.f} 6 } } */
+/* { dg-final { scan-assembler-times {vid\.v} 6 } } */
+/* { dg-final { scan-assembler-times {vmsgtu\.vi} 6 } } */
+/* { dg-final { scan-assembler-times {vfmerge\.vfm} 6 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/combine-merge-8.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/combine-merge-8.c
new file mode 100644
index 00000000000..d270dd9eebe
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/combine-merge-8.c
@@ -0,0 +1,337 @@
+/* { dg-do compile } */
+/* { dg-options "-march=rv64gcv_zvfh_zvl4096b -mabi=lp64d -O3 --param=riscv-autovec-lmul=m8" } */
+
+#include "def.h"
+
+DEF_REPEAT (v16qi, int8_t, 16, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var0, var0, var0, var0, var0, var0)
+DEF_REPEAT (v32qi, int8_t, 32, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var0, var0, var0, var0, var0, var0)
+DEF_REPEAT (v64qi, int8_t, 64, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var0, var0, var0, var0)
+DEF_REPEAT (v128qi, int8_t, 128, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var0, var0, var0, var0, var0, var0)
+DEF_REPEAT (
+ v256qi, int8_t, 256, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var0, var0, var0, var0, var0, var0)
+DEF_REPEAT (
+ v512qi, int8_t, 512, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var0, var0, var0, var0, var0, var0)
+DEF_REPEAT (
+ v1024qi, int8_t, 1024, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var0,
+ var0, var0, var0, var0, var0)
+DEF_REPEAT (
+ v2048qi, int8_t, 2048, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var0, var0, var0, var0, var0, var0)
+
+/* { dg-final { scan-assembler-times {vmv\.v\.x} 8 } } */
+/* { dg-final { scan-assembler-times {vid\.v} 8 } } */
+/* { dg-final { scan-assembler-times {vmsgtu} 8 } } */
+/* { dg-final { scan-assembler-times {vmerge\.vxm} 8 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/combine-merge-9.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/combine-merge-9.c
new file mode 100644
index 00000000000..ea77cb0c3f6
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/combine-merge-9.c
@@ -0,0 +1,178 @@
+/* { dg-do compile } */
+/* { dg-options "-march=rv64gcv_zvfh_zvl4096b -mabi=lp64d -O3 --param=riscv-autovec-lmul=m8" } */
+
+#include "def.h"
+
+DEF_REPEAT (v16hi, int16_t, 16, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var0, var0, var0, var0, var0, var0)
+DEF_REPEAT (v32hi, int16_t, 32, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var0, var0, var0, var0, var0, var0)
+DEF_REPEAT (v64hi, int16_t, 64, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var0, var0, var0, var0)
+DEF_REPEAT (v128hi, int16_t, 128, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var0, var0, var0, var0, var0, var0)
+DEF_REPEAT (
+ v256hi, int16_t, 256, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var0, var0, var0, var0, var0, var0)
+DEF_REPEAT (
+ v512hi, int16_t, 512, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var0, var0, var0, var0, var0, var0)
+DEF_REPEAT (
+ v1024hi, int16_t, 1024, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1,
+ var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var0,
+ var0, var0, var0, var0, var0)
+
+/* { dg-final { scan-assembler-times {vmv\.v\.x} 7 } } */
+/* { dg-final { scan-assembler-times {vid\.v} 7 } } */
+/* { dg-final { scan-assembler-times {vmsgtu} 7 } } */
+/* { dg-final { scan-assembler-times {vmerge\.vxm} 7 } } */
--
2.36.3
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH V2] RISC-V: Optimize combine sequence by merge approach
2023-11-13 8:41 [PATCH V2] RISC-V: Optimize combine sequence by merge approach Juzhe-Zhong
@ 2023-11-13 10:05 ` Robin Dapp
2023-11-13 10:31 ` juzhe.zhong
0 siblings, 1 reply; 3+ messages in thread
From: Robin Dapp @ 2023-11-13 10:05 UTC (permalink / raw)
To: Juzhe-Zhong, gcc-patches; +Cc: rdapp.gcc, kito.cheng, kito.cheng, jeffreyalaw
Hi Juzhe,
LGTM apart from:
> + int64_t a = -1789089.23423;
> + int64_t b = -8916156.45644;
What's that? :) Doesn't really matter of course but please change to
a proper integer. OK with that changed.
Regards
Robin
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: Re: [PATCH V2] RISC-V: Optimize combine sequence by merge approach
2023-11-13 10:05 ` Robin Dapp
@ 2023-11-13 10:31 ` juzhe.zhong
0 siblings, 0 replies; 3+ messages in thread
From: juzhe.zhong @ 2023-11-13 10:31 UTC (permalink / raw)
To: Robin Dapp, gcc-patches; +Cc: Robin Dapp, kito.cheng, Kito.cheng, jeffreyalaw
[-- Attachment #1: Type: text/plain, Size: 552 bytes --]
Thanks for noticing it.
Will commit it with adjusting the testcase.
Thanks.
juzhe.zhong@rivai.ai
From: Robin Dapp
Date: 2023-11-13 18:05
To: Juzhe-Zhong; gcc-patches
CC: rdapp.gcc; kito.cheng; kito.cheng; jeffreyalaw
Subject: Re: [PATCH V2] RISC-V: Optimize combine sequence by merge approach
Hi Juzhe,
LGTM apart from:
> + int64_t a = -1789089.23423;
> + int64_t b = -8916156.45644;
What's that? :) Doesn't really matter of course but please change to
a proper integer. OK with that changed.
Regards
Robin
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2023-11-13 10:31 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-11-13 8:41 [PATCH V2] RISC-V: Optimize combine sequence by merge approach Juzhe-Zhong
2023-11-13 10:05 ` Robin Dapp
2023-11-13 10:31 ` juzhe.zhong
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).