public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
* [Committed V3] RISC-V: Optimize combine sequence by merge approach
@ 2023-11-13 11:06 Juzhe-Zhong
  0 siblings, 0 replies; only message in thread
From: Juzhe-Zhong @ 2023-11-13 11:06 UTC (permalink / raw)
  To: gcc-patches; +Cc: Juzhe-Zhong

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..9c19b9efb15
--- /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;
+  int64_t b = 8916156;
+
+  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] only message in thread

only message in thread, other threads:[~2023-11-13 11:06 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-11-13 11:06 [Committed V3] RISC-V: Optimize combine sequence by merge approach 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).