[gcc(refs/vendors/riscv/heads/gcc-15-with-riscv-opts)] RISC-V: Add testcases for vec_duplicate + vadd.vv combine when GR2VR cost 0

2026-01-29 Thread Jeff Law via Gcc-cvs
https://gcc.gnu.org/g:5a6fd7dd426a537cf3523b2cf6a45d5ebc27d406

commit 5a6fd7dd426a537cf3523b2cf6a45d5ebc27d406
Author: Pan Li 
Date:   Sat May 3 10:40:20 2025 +0800

RISC-V: Add testcases for vec_duplicate + vadd.vv combine when GR2VR cost 0

Add asm dump check and run test for vec_duplicate + vadd.vv combine
to vadd.vx.  Introduce new folder to hold all related testcases.

The below test suites are passed for this patch.
* The rv64gcv fully regression test.

gcc/testsuite/ChangeLog:

* gcc.target/riscv/rvv/rvv.exp: Add new folder vx_vf for all
vec_dup + vv to vx testcases.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_binary.h: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_binary_data.h: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_binary_run.h: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-1-i16.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-1-i32.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-1-i64.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-1-i8.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-1-u16.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-1-u32.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-1-u64.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-1-u8.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-i16.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-i32.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-i64.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-i8.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-u16.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-u32.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-u64.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-u8.c: New test.

Signed-off-by: Pan Li 
(cherry picked from commit 1276430a48e4f6bb592d9e3f8c92e62341f09446)

Diff:
---
 .../gcc.target/riscv/rvv/autovec/vx_vf/vx_binary.h |  17 +
 .../riscv/rvv/autovec/vx_vf/vx_binary_data.h   | 401 +
 .../riscv/rvv/autovec/vx_vf/vx_binary_run.h|  26 ++
 .../riscv/rvv/autovec/vx_vf/vx_vadd-1-i16.c|   8 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-1-i32.c|   8 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-1-i64.c|   8 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-1-i8.c |   8 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-1-u16.c|   8 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-1-u32.c|   8 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-1-u64.c|   8 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-1-u8.c |   8 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-run-1-i16.c|  14 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-run-1-i32.c|  14 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-run-1-i64.c|  14 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-run-1-i8.c |  14 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-run-1-u16.c|  14 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-run-1-u32.c|  14 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-run-1-u64.c|  14 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-run-1-u8.c |  14 +
 gcc/testsuite/gcc.target/riscv/rvv/rvv.exp |   2 +
 20 files changed, 622 insertions(+)

diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_binary.h 
b/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_binary.h
new file mode 100644
index ..66654eb90227
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_binary.h
@@ -0,0 +1,17 @@
+#ifndef HAVE_DEFINED_VX_VF_BINARY_H
+#define HAVE_DEFINED_VX_VF_BINARY_H
+
+#include 
+
+#define DEF_VX_BINARY(T, OP)\
+void\
+test_vx_binary (T * restrict out, T * restrict in, T x, unsigned n) \
+{   \
+  for (unsigned i = 0; i < n; i++)  \
+out[i] = in[i] OP x;\
+}
+#define DEF_VX_BINARY_WRAP(T, OP) DEF_VX_BINARY(T, OP)
+#define RUN_VX_BINARY(out, in, x, n)  test_vx_binary(out, in, x, n)
+#define RUN_VX_BINARY_WRAP(out, in, x, n) RUN_VX_BINARY(out, in, x, n)
+
+#endif
diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_binary_data.h 
b/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_binary_data.h
new file mode 100644
index ..11a32cbbf0fc
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_binary_data.h
@@ -0,0 +1,401 @@
+#ifndef HAVE_DEFINED_VX_BINARY_DATA_H
+#define HAVE_DEFINED_VX_BINARY_DATA_H
+
+#define N 16
+
+#define TEST_BINARY_DATA(T, NAME)  test_##T##_##NAME##_data
+#define TEST_B

[gcc(refs/vendors/riscv/heads/gcc-15-with-riscv-opts)] RISC-V: Add testcases for vec_duplicate + vadd.vv combine when GR2VR cost 0

2026-01-16 Thread Jeff Law via Gcc-cvs
https://gcc.gnu.org/g:7855267420dc7e5c5be93a09dc5de713f6c689a3

commit 7855267420dc7e5c5be93a09dc5de713f6c689a3
Author: Pan Li 
Date:   Sat May 3 10:40:20 2025 +0800

RISC-V: Add testcases for vec_duplicate + vadd.vv combine when GR2VR cost 0

Add asm dump check and run test for vec_duplicate + vadd.vv combine
to vadd.vx.  Introduce new folder to hold all related testcases.

The below test suites are passed for this patch.
* The rv64gcv fully regression test.

gcc/testsuite/ChangeLog:

* gcc.target/riscv/rvv/rvv.exp: Add new folder vx_vf for all
vec_dup + vv to vx testcases.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_binary.h: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_binary_data.h: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_binary_run.h: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-1-i16.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-1-i32.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-1-i64.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-1-i8.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-1-u16.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-1-u32.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-1-u64.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-1-u8.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-i16.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-i32.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-i64.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-i8.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-u16.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-u32.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-u64.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-u8.c: New test.

Signed-off-by: Pan Li 
(cherry picked from commit 1276430a48e4f6bb592d9e3f8c92e62341f09446)

Diff:
---
 .../gcc.target/riscv/rvv/autovec/vx_vf/vx_binary.h |  17 +
 .../riscv/rvv/autovec/vx_vf/vx_binary_data.h   | 401 +
 .../riscv/rvv/autovec/vx_vf/vx_binary_run.h|  26 ++
 .../riscv/rvv/autovec/vx_vf/vx_vadd-1-i16.c|   8 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-1-i32.c|   8 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-1-i64.c|   8 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-1-i8.c |   8 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-1-u16.c|   8 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-1-u32.c|   8 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-1-u64.c|   8 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-1-u8.c |   8 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-run-1-i16.c|  14 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-run-1-i32.c|  14 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-run-1-i64.c|  14 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-run-1-i8.c |  14 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-run-1-u16.c|  14 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-run-1-u32.c|  14 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-run-1-u64.c|  14 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-run-1-u8.c |  14 +
 gcc/testsuite/gcc.target/riscv/rvv/rvv.exp |   2 +
 20 files changed, 622 insertions(+)

diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_binary.h 
b/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_binary.h
new file mode 100644
index ..66654eb90227
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_binary.h
@@ -0,0 +1,17 @@
+#ifndef HAVE_DEFINED_VX_VF_BINARY_H
+#define HAVE_DEFINED_VX_VF_BINARY_H
+
+#include 
+
+#define DEF_VX_BINARY(T, OP)\
+void\
+test_vx_binary (T * restrict out, T * restrict in, T x, unsigned n) \
+{   \
+  for (unsigned i = 0; i < n; i++)  \
+out[i] = in[i] OP x;\
+}
+#define DEF_VX_BINARY_WRAP(T, OP) DEF_VX_BINARY(T, OP)
+#define RUN_VX_BINARY(out, in, x, n)  test_vx_binary(out, in, x, n)
+#define RUN_VX_BINARY_WRAP(out, in, x, n) RUN_VX_BINARY(out, in, x, n)
+
+#endif
diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_binary_data.h 
b/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_binary_data.h
new file mode 100644
index ..11a32cbbf0fc
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_binary_data.h
@@ -0,0 +1,401 @@
+#ifndef HAVE_DEFINED_VX_BINARY_DATA_H
+#define HAVE_DEFINED_VX_BINARY_DATA_H
+
+#define N 16
+
+#define TEST_BINARY_DATA(T, NAME)  test_##T##_##NAME##_data
+#define TEST_B

[gcc(refs/vendors/riscv/heads/gcc-15-with-riscv-opts)] RISC-V: Add testcases for vec_duplicate + vadd.vv combine when GR2VR cost 0

2025-11-07 Thread Jeff Law via Gcc-cvs
https://gcc.gnu.org/g:327672c9dd2bc4892d45c9de5b81e81eeebf9b92

commit 327672c9dd2bc4892d45c9de5b81e81eeebf9b92
Author: Pan Li 
Date:   Sat May 3 10:40:20 2025 +0800

RISC-V: Add testcases for vec_duplicate + vadd.vv combine when GR2VR cost 0

Add asm dump check and run test for vec_duplicate + vadd.vv combine
to vadd.vx.  Introduce new folder to hold all related testcases.

The below test suites are passed for this patch.
* The rv64gcv fully regression test.

gcc/testsuite/ChangeLog:

* gcc.target/riscv/rvv/rvv.exp: Add new folder vx_vf for all
vec_dup + vv to vx testcases.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_binary.h: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_binary_data.h: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_binary_run.h: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-1-i16.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-1-i32.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-1-i64.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-1-i8.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-1-u16.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-1-u32.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-1-u64.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-1-u8.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-i16.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-i32.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-i64.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-i8.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-u16.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-u32.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-u64.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-u8.c: New test.

Signed-off-by: Pan Li 
(cherry picked from commit 1276430a48e4f6bb592d9e3f8c92e62341f09446)

Diff:
---
 .../gcc.target/riscv/rvv/autovec/vx_vf/vx_binary.h |  17 +
 .../riscv/rvv/autovec/vx_vf/vx_binary_data.h   | 401 +
 .../riscv/rvv/autovec/vx_vf/vx_binary_run.h|  26 ++
 .../riscv/rvv/autovec/vx_vf/vx_vadd-1-i16.c|   8 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-1-i32.c|   8 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-1-i64.c|   8 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-1-i8.c |   8 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-1-u16.c|   8 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-1-u32.c|   8 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-1-u64.c|   8 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-1-u8.c |   8 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-run-1-i16.c|  14 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-run-1-i32.c|  14 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-run-1-i64.c|  14 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-run-1-i8.c |  14 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-run-1-u16.c|  14 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-run-1-u32.c|  14 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-run-1-u64.c|  14 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-run-1-u8.c |  14 +
 gcc/testsuite/gcc.target/riscv/rvv/rvv.exp |   2 +
 20 files changed, 622 insertions(+)

diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_binary.h 
b/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_binary.h
new file mode 100644
index ..66654eb90227
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_binary.h
@@ -0,0 +1,17 @@
+#ifndef HAVE_DEFINED_VX_VF_BINARY_H
+#define HAVE_DEFINED_VX_VF_BINARY_H
+
+#include 
+
+#define DEF_VX_BINARY(T, OP)\
+void\
+test_vx_binary (T * restrict out, T * restrict in, T x, unsigned n) \
+{   \
+  for (unsigned i = 0; i < n; i++)  \
+out[i] = in[i] OP x;\
+}
+#define DEF_VX_BINARY_WRAP(T, OP) DEF_VX_BINARY(T, OP)
+#define RUN_VX_BINARY(out, in, x, n)  test_vx_binary(out, in, x, n)
+#define RUN_VX_BINARY_WRAP(out, in, x, n) RUN_VX_BINARY(out, in, x, n)
+
+#endif
diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_binary_data.h 
b/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_binary_data.h
new file mode 100644
index ..11a32cbbf0fc
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_binary_data.h
@@ -0,0 +1,401 @@
+#ifndef HAVE_DEFINED_VX_BINARY_DATA_H
+#define HAVE_DEFINED_VX_BINARY_DATA_H
+
+#define N 16
+
+#define TEST_BINARY_DATA(T, NAME)  test_##T##_##NAME##_data
+#define TEST_B

[gcc(refs/vendors/riscv/heads/gcc-15-with-riscv-opts)] RISC-V: Add testcases for vec_duplicate + vadd.vv combine when GR2VR cost 0

2025-11-01 Thread Jeff Law via Gcc-cvs
https://gcc.gnu.org/g:de6572d1d73ce9aedaa678f0d7eff633b3476d88

commit de6572d1d73ce9aedaa678f0d7eff633b3476d88
Author: Pan Li 
Date:   Sat May 3 10:40:20 2025 +0800

RISC-V: Add testcases for vec_duplicate + vadd.vv combine when GR2VR cost 0

Add asm dump check and run test for vec_duplicate + vadd.vv combine
to vadd.vx.  Introduce new folder to hold all related testcases.

The below test suites are passed for this patch.
* The rv64gcv fully regression test.

gcc/testsuite/ChangeLog:

* gcc.target/riscv/rvv/rvv.exp: Add new folder vx_vf for all
vec_dup + vv to vx testcases.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_binary.h: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_binary_data.h: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_binary_run.h: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-1-i16.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-1-i32.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-1-i64.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-1-i8.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-1-u16.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-1-u32.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-1-u64.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-1-u8.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-i16.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-i32.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-i64.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-i8.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-u16.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-u32.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-u64.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-u8.c: New test.

Signed-off-by: Pan Li 
(cherry picked from commit 1276430a48e4f6bb592d9e3f8c92e62341f09446)

Diff:
---
 .../gcc.target/riscv/rvv/autovec/vx_vf/vx_binary.h |  17 +
 .../riscv/rvv/autovec/vx_vf/vx_binary_data.h   | 401 +
 .../riscv/rvv/autovec/vx_vf/vx_binary_run.h|  26 ++
 .../riscv/rvv/autovec/vx_vf/vx_vadd-1-i16.c|   8 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-1-i32.c|   8 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-1-i64.c|   8 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-1-i8.c |   8 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-1-u16.c|   8 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-1-u32.c|   8 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-1-u64.c|   8 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-1-u8.c |   8 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-run-1-i16.c|  14 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-run-1-i32.c|  14 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-run-1-i64.c|  14 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-run-1-i8.c |  14 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-run-1-u16.c|  14 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-run-1-u32.c|  14 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-run-1-u64.c|  14 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-run-1-u8.c |  14 +
 gcc/testsuite/gcc.target/riscv/rvv/rvv.exp |   2 +
 20 files changed, 622 insertions(+)

diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_binary.h 
b/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_binary.h
new file mode 100644
index ..66654eb90227
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_binary.h
@@ -0,0 +1,17 @@
+#ifndef HAVE_DEFINED_VX_VF_BINARY_H
+#define HAVE_DEFINED_VX_VF_BINARY_H
+
+#include 
+
+#define DEF_VX_BINARY(T, OP)\
+void\
+test_vx_binary (T * restrict out, T * restrict in, T x, unsigned n) \
+{   \
+  for (unsigned i = 0; i < n; i++)  \
+out[i] = in[i] OP x;\
+}
+#define DEF_VX_BINARY_WRAP(T, OP) DEF_VX_BINARY(T, OP)
+#define RUN_VX_BINARY(out, in, x, n)  test_vx_binary(out, in, x, n)
+#define RUN_VX_BINARY_WRAP(out, in, x, n) RUN_VX_BINARY(out, in, x, n)
+
+#endif
diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_binary_data.h 
b/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_binary_data.h
new file mode 100644
index ..11a32cbbf0fc
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_binary_data.h
@@ -0,0 +1,401 @@
+#ifndef HAVE_DEFINED_VX_BINARY_DATA_H
+#define HAVE_DEFINED_VX_BINARY_DATA_H
+
+#define N 16
+
+#define TEST_BINARY_DATA(T, NAME)  test_##T##_##NAME##_data
+#define TEST_B

[gcc(refs/vendors/riscv/heads/gcc-15-with-riscv-opts)] RISC-V: Add testcases for vec_duplicate + vadd.vv combine when GR2VR cost 0

2025-10-17 Thread Jeff Law via Gcc-cvs
https://gcc.gnu.org/g:329ce6692d64c51adc17780f12687c0cc08f13bf

commit 329ce6692d64c51adc17780f12687c0cc08f13bf
Author: Pan Li 
Date:   Sat May 3 10:40:20 2025 +0800

RISC-V: Add testcases for vec_duplicate + vadd.vv combine when GR2VR cost 0

Add asm dump check and run test for vec_duplicate + vadd.vv combine
to vadd.vx.  Introduce new folder to hold all related testcases.

The below test suites are passed for this patch.
* The rv64gcv fully regression test.

gcc/testsuite/ChangeLog:

* gcc.target/riscv/rvv/rvv.exp: Add new folder vx_vf for all
vec_dup + vv to vx testcases.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_binary.h: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_binary_data.h: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_binary_run.h: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-1-i16.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-1-i32.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-1-i64.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-1-i8.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-1-u16.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-1-u32.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-1-u64.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-1-u8.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-i16.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-i32.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-i64.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-i8.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-u16.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-u32.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-u64.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-u8.c: New test.

Signed-off-by: Pan Li 
(cherry picked from commit 1276430a48e4f6bb592d9e3f8c92e62341f09446)

Diff:
---
 .../gcc.target/riscv/rvv/autovec/vx_vf/vx_binary.h |  17 +
 .../riscv/rvv/autovec/vx_vf/vx_binary_data.h   | 401 +
 .../riscv/rvv/autovec/vx_vf/vx_binary_run.h|  26 ++
 .../riscv/rvv/autovec/vx_vf/vx_vadd-1-i16.c|   8 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-1-i32.c|   8 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-1-i64.c|   8 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-1-i8.c |   8 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-1-u16.c|   8 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-1-u32.c|   8 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-1-u64.c|   8 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-1-u8.c |   8 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-run-1-i16.c|  14 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-run-1-i32.c|  14 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-run-1-i64.c|  14 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-run-1-i8.c |  14 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-run-1-u16.c|  14 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-run-1-u32.c|  14 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-run-1-u64.c|  14 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-run-1-u8.c |  14 +
 gcc/testsuite/gcc.target/riscv/rvv/rvv.exp |   2 +
 20 files changed, 622 insertions(+)

diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_binary.h 
b/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_binary.h
new file mode 100644
index ..66654eb90227
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_binary.h
@@ -0,0 +1,17 @@
+#ifndef HAVE_DEFINED_VX_VF_BINARY_H
+#define HAVE_DEFINED_VX_VF_BINARY_H
+
+#include 
+
+#define DEF_VX_BINARY(T, OP)\
+void\
+test_vx_binary (T * restrict out, T * restrict in, T x, unsigned n) \
+{   \
+  for (unsigned i = 0; i < n; i++)  \
+out[i] = in[i] OP x;\
+}
+#define DEF_VX_BINARY_WRAP(T, OP) DEF_VX_BINARY(T, OP)
+#define RUN_VX_BINARY(out, in, x, n)  test_vx_binary(out, in, x, n)
+#define RUN_VX_BINARY_WRAP(out, in, x, n) RUN_VX_BINARY(out, in, x, n)
+
+#endif
diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_binary_data.h 
b/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_binary_data.h
new file mode 100644
index ..11a32cbbf0fc
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_binary_data.h
@@ -0,0 +1,401 @@
+#ifndef HAVE_DEFINED_VX_BINARY_DATA_H
+#define HAVE_DEFINED_VX_BINARY_DATA_H
+
+#define N 16
+
+#define TEST_BINARY_DATA(T, NAME)  test_##T##_##NAME##_data
+#define TEST_B

[gcc(refs/vendors/riscv/heads/gcc-15-with-riscv-opts)] RISC-V: Add testcases for vec_duplicate + vadd.vv combine when GR2VR cost 0

2025-09-13 Thread Jeff Law via Gcc-cvs
https://gcc.gnu.org/g:2ceff77897a6062d3e592c6d03b1f0cdd9e4d00e

commit 2ceff77897a6062d3e592c6d03b1f0cdd9e4d00e
Author: Pan Li 
Date:   Sat May 3 10:40:20 2025 +0800

RISC-V: Add testcases for vec_duplicate + vadd.vv combine when GR2VR cost 0

Add asm dump check and run test for vec_duplicate + vadd.vv combine
to vadd.vx.  Introduce new folder to hold all related testcases.

The below test suites are passed for this patch.
* The rv64gcv fully regression test.

gcc/testsuite/ChangeLog:

* gcc.target/riscv/rvv/rvv.exp: Add new folder vx_vf for all
vec_dup + vv to vx testcases.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_binary.h: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_binary_data.h: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_binary_run.h: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-1-i16.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-1-i32.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-1-i64.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-1-i8.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-1-u16.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-1-u32.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-1-u64.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-1-u8.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-i16.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-i32.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-i64.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-i8.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-u16.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-u32.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-u64.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-u8.c: New test.

Signed-off-by: Pan Li 
(cherry picked from commit 1276430a48e4f6bb592d9e3f8c92e62341f09446)

Diff:
---
 .../gcc.target/riscv/rvv/autovec/vx_vf/vx_binary.h |  17 +
 .../riscv/rvv/autovec/vx_vf/vx_binary_data.h   | 401 +
 .../riscv/rvv/autovec/vx_vf/vx_binary_run.h|  26 ++
 .../riscv/rvv/autovec/vx_vf/vx_vadd-1-i16.c|   8 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-1-i32.c|   8 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-1-i64.c|   8 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-1-i8.c |   8 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-1-u16.c|   8 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-1-u32.c|   8 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-1-u64.c|   8 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-1-u8.c |   8 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-run-1-i16.c|  14 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-run-1-i32.c|  14 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-run-1-i64.c|  14 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-run-1-i8.c |  14 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-run-1-u16.c|  14 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-run-1-u32.c|  14 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-run-1-u64.c|  14 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-run-1-u8.c |  14 +
 gcc/testsuite/gcc.target/riscv/rvv/rvv.exp |   2 +
 20 files changed, 622 insertions(+)

diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_binary.h 
b/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_binary.h
new file mode 100644
index ..66654eb90227
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_binary.h
@@ -0,0 +1,17 @@
+#ifndef HAVE_DEFINED_VX_VF_BINARY_H
+#define HAVE_DEFINED_VX_VF_BINARY_H
+
+#include 
+
+#define DEF_VX_BINARY(T, OP)\
+void\
+test_vx_binary (T * restrict out, T * restrict in, T x, unsigned n) \
+{   \
+  for (unsigned i = 0; i < n; i++)  \
+out[i] = in[i] OP x;\
+}
+#define DEF_VX_BINARY_WRAP(T, OP) DEF_VX_BINARY(T, OP)
+#define RUN_VX_BINARY(out, in, x, n)  test_vx_binary(out, in, x, n)
+#define RUN_VX_BINARY_WRAP(out, in, x, n) RUN_VX_BINARY(out, in, x, n)
+
+#endif
diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_binary_data.h 
b/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_binary_data.h
new file mode 100644
index ..11a32cbbf0fc
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_binary_data.h
@@ -0,0 +1,401 @@
+#ifndef HAVE_DEFINED_VX_BINARY_DATA_H
+#define HAVE_DEFINED_VX_BINARY_DATA_H
+
+#define N 16
+
+#define TEST_BINARY_DATA(T, NAME)  test_##T##_##NAME##_data
+#define TEST_B

[gcc(refs/vendors/riscv/heads/gcc-15-with-riscv-opts)] RISC-V: Add testcases for vec_duplicate + vadd.vv combine when GR2VR cost 0

2025-09-07 Thread Jeff Law via Gcc-cvs
https://gcc.gnu.org/g:3ebd71a5f0c673a6e7da57a169c3796acfa47b21

commit 3ebd71a5f0c673a6e7da57a169c3796acfa47b21
Author: Pan Li 
Date:   Sat May 3 10:40:20 2025 +0800

RISC-V: Add testcases for vec_duplicate + vadd.vv combine when GR2VR cost 0

Add asm dump check and run test for vec_duplicate + vadd.vv combine
to vadd.vx.  Introduce new folder to hold all related testcases.

The below test suites are passed for this patch.
* The rv64gcv fully regression test.

gcc/testsuite/ChangeLog:

* gcc.target/riscv/rvv/rvv.exp: Add new folder vx_vf for all
vec_dup + vv to vx testcases.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_binary.h: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_binary_data.h: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_binary_run.h: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-1-i16.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-1-i32.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-1-i64.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-1-i8.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-1-u16.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-1-u32.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-1-u64.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-1-u8.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-i16.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-i32.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-i64.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-i8.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-u16.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-u32.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-u64.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-u8.c: New test.

Signed-off-by: Pan Li 
(cherry picked from commit 1276430a48e4f6bb592d9e3f8c92e62341f09446)

Diff:
---
 .../gcc.target/riscv/rvv/autovec/vx_vf/vx_binary.h |  17 +
 .../riscv/rvv/autovec/vx_vf/vx_binary_data.h   | 401 +
 .../riscv/rvv/autovec/vx_vf/vx_binary_run.h|  26 ++
 .../riscv/rvv/autovec/vx_vf/vx_vadd-1-i16.c|   8 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-1-i32.c|   8 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-1-i64.c|   8 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-1-i8.c |   8 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-1-u16.c|   8 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-1-u32.c|   8 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-1-u64.c|   8 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-1-u8.c |   8 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-run-1-i16.c|  14 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-run-1-i32.c|  14 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-run-1-i64.c|  14 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-run-1-i8.c |  14 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-run-1-u16.c|  14 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-run-1-u32.c|  14 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-run-1-u64.c|  14 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-run-1-u8.c |  14 +
 gcc/testsuite/gcc.target/riscv/rvv/rvv.exp |   2 +
 20 files changed, 622 insertions(+)

diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_binary.h 
b/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_binary.h
new file mode 100644
index ..66654eb90227
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_binary.h
@@ -0,0 +1,17 @@
+#ifndef HAVE_DEFINED_VX_VF_BINARY_H
+#define HAVE_DEFINED_VX_VF_BINARY_H
+
+#include 
+
+#define DEF_VX_BINARY(T, OP)\
+void\
+test_vx_binary (T * restrict out, T * restrict in, T x, unsigned n) \
+{   \
+  for (unsigned i = 0; i < n; i++)  \
+out[i] = in[i] OP x;\
+}
+#define DEF_VX_BINARY_WRAP(T, OP) DEF_VX_BINARY(T, OP)
+#define RUN_VX_BINARY(out, in, x, n)  test_vx_binary(out, in, x, n)
+#define RUN_VX_BINARY_WRAP(out, in, x, n) RUN_VX_BINARY(out, in, x, n)
+
+#endif
diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_binary_data.h 
b/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_binary_data.h
new file mode 100644
index ..11a32cbbf0fc
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_binary_data.h
@@ -0,0 +1,401 @@
+#ifndef HAVE_DEFINED_VX_BINARY_DATA_H
+#define HAVE_DEFINED_VX_BINARY_DATA_H
+
+#define N 16
+
+#define TEST_BINARY_DATA(T, NAME)  test_##T##_##NAME##_data
+#define TEST_B

[gcc(refs/vendors/riscv/heads/gcc-15-with-riscv-opts)] RISC-V: Add testcases for vec_duplicate + vadd.vv combine when GR2VR cost 0

2025-08-25 Thread Jeff Law via Gcc-cvs
https://gcc.gnu.org/g:db56a6819aab663f769a7feba34b16f28d709cb9

commit db56a6819aab663f769a7feba34b16f28d709cb9
Author: Pan Li 
Date:   Sat May 3 10:40:20 2025 +0800

RISC-V: Add testcases for vec_duplicate + vadd.vv combine when GR2VR cost 0

Add asm dump check and run test for vec_duplicate + vadd.vv combine
to vadd.vx.  Introduce new folder to hold all related testcases.

The below test suites are passed for this patch.
* The rv64gcv fully regression test.

gcc/testsuite/ChangeLog:

* gcc.target/riscv/rvv/rvv.exp: Add new folder vx_vf for all
vec_dup + vv to vx testcases.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_binary.h: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_binary_data.h: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_binary_run.h: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-1-i16.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-1-i32.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-1-i64.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-1-i8.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-1-u16.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-1-u32.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-1-u64.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-1-u8.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-i16.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-i32.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-i64.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-i8.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-u16.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-u32.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-u64.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-u8.c: New test.

Signed-off-by: Pan Li 
(cherry picked from commit 1276430a48e4f6bb592d9e3f8c92e62341f09446)

Diff:
---
 .../gcc.target/riscv/rvv/autovec/vx_vf/vx_binary.h |  17 +
 .../riscv/rvv/autovec/vx_vf/vx_binary_data.h   | 401 +
 .../riscv/rvv/autovec/vx_vf/vx_binary_run.h|  26 ++
 .../riscv/rvv/autovec/vx_vf/vx_vadd-1-i16.c|   8 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-1-i32.c|   8 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-1-i64.c|   8 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-1-i8.c |   8 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-1-u16.c|   8 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-1-u32.c|   8 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-1-u64.c|   8 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-1-u8.c |   8 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-run-1-i16.c|  14 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-run-1-i32.c|  14 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-run-1-i64.c|  14 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-run-1-i8.c |  14 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-run-1-u16.c|  14 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-run-1-u32.c|  14 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-run-1-u64.c|  14 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-run-1-u8.c |  14 +
 gcc/testsuite/gcc.target/riscv/rvv/rvv.exp |   2 +
 20 files changed, 622 insertions(+)

diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_binary.h 
b/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_binary.h
new file mode 100644
index ..66654eb90227
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_binary.h
@@ -0,0 +1,17 @@
+#ifndef HAVE_DEFINED_VX_VF_BINARY_H
+#define HAVE_DEFINED_VX_VF_BINARY_H
+
+#include 
+
+#define DEF_VX_BINARY(T, OP)\
+void\
+test_vx_binary (T * restrict out, T * restrict in, T x, unsigned n) \
+{   \
+  for (unsigned i = 0; i < n; i++)  \
+out[i] = in[i] OP x;\
+}
+#define DEF_VX_BINARY_WRAP(T, OP) DEF_VX_BINARY(T, OP)
+#define RUN_VX_BINARY(out, in, x, n)  test_vx_binary(out, in, x, n)
+#define RUN_VX_BINARY_WRAP(out, in, x, n) RUN_VX_BINARY(out, in, x, n)
+
+#endif
diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_binary_data.h 
b/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_binary_data.h
new file mode 100644
index ..11a32cbbf0fc
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_binary_data.h
@@ -0,0 +1,401 @@
+#ifndef HAVE_DEFINED_VX_BINARY_DATA_H
+#define HAVE_DEFINED_VX_BINARY_DATA_H
+
+#define N 16
+
+#define TEST_BINARY_DATA(T, NAME)  test_##T##_##NAME##_data
+#define TEST_B

[gcc(refs/vendors/riscv/heads/gcc-15-with-riscv-opts)] RISC-V: Add testcases for vec_duplicate + vadd.vv combine when GR2VR cost 0

2025-07-23 Thread Jeff Law via Gcc-cvs
https://gcc.gnu.org/g:3a7248f9202d8aa6cbe1a0543a955e1cc236cc92

commit 3a7248f9202d8aa6cbe1a0543a955e1cc236cc92
Author: Pan Li 
Date:   Sat May 3 10:40:20 2025 +0800

RISC-V: Add testcases for vec_duplicate + vadd.vv combine when GR2VR cost 0

Add asm dump check and run test for vec_duplicate + vadd.vv combine
to vadd.vx.  Introduce new folder to hold all related testcases.

The below test suites are passed for this patch.
* The rv64gcv fully regression test.

gcc/testsuite/ChangeLog:

* gcc.target/riscv/rvv/rvv.exp: Add new folder vx_vf for all
vec_dup + vv to vx testcases.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_binary.h: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_binary_data.h: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_binary_run.h: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-1-i16.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-1-i32.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-1-i64.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-1-i8.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-1-u16.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-1-u32.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-1-u64.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-1-u8.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-i16.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-i32.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-i64.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-i8.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-u16.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-u32.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-u64.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-u8.c: New test.

Signed-off-by: Pan Li 
(cherry picked from commit 1276430a48e4f6bb592d9e3f8c92e62341f09446)

Diff:
---
 .../gcc.target/riscv/rvv/autovec/vx_vf/vx_binary.h |  17 +
 .../riscv/rvv/autovec/vx_vf/vx_binary_data.h   | 401 +
 .../riscv/rvv/autovec/vx_vf/vx_binary_run.h|  26 ++
 .../riscv/rvv/autovec/vx_vf/vx_vadd-1-i16.c|   8 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-1-i32.c|   8 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-1-i64.c|   8 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-1-i8.c |   8 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-1-u16.c|   8 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-1-u32.c|   8 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-1-u64.c|   8 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-1-u8.c |   8 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-run-1-i16.c|  14 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-run-1-i32.c|  14 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-run-1-i64.c|  14 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-run-1-i8.c |  14 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-run-1-u16.c|  14 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-run-1-u32.c|  14 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-run-1-u64.c|  14 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-run-1-u8.c |  14 +
 gcc/testsuite/gcc.target/riscv/rvv/rvv.exp |   2 +
 20 files changed, 622 insertions(+)

diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_binary.h 
b/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_binary.h
new file mode 100644
index ..66654eb90227
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_binary.h
@@ -0,0 +1,17 @@
+#ifndef HAVE_DEFINED_VX_VF_BINARY_H
+#define HAVE_DEFINED_VX_VF_BINARY_H
+
+#include 
+
+#define DEF_VX_BINARY(T, OP)\
+void\
+test_vx_binary (T * restrict out, T * restrict in, T x, unsigned n) \
+{   \
+  for (unsigned i = 0; i < n; i++)  \
+out[i] = in[i] OP x;\
+}
+#define DEF_VX_BINARY_WRAP(T, OP) DEF_VX_BINARY(T, OP)
+#define RUN_VX_BINARY(out, in, x, n)  test_vx_binary(out, in, x, n)
+#define RUN_VX_BINARY_WRAP(out, in, x, n) RUN_VX_BINARY(out, in, x, n)
+
+#endif
diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_binary_data.h 
b/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_binary_data.h
new file mode 100644
index ..11a32cbbf0fc
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_binary_data.h
@@ -0,0 +1,401 @@
+#ifndef HAVE_DEFINED_VX_BINARY_DATA_H
+#define HAVE_DEFINED_VX_BINARY_DATA_H
+
+#define N 16
+
+#define TEST_BINARY_DATA(T, NAME)  test_##T##_##NAME##_data
+#define TEST_B

[gcc(refs/vendors/riscv/heads/gcc-15-with-riscv-opts)] RISC-V: Add testcases for vec_duplicate + vadd.vv combine when GR2VR cost 0

2025-07-05 Thread Jeff Law via Gcc-cvs
https://gcc.gnu.org/g:67fc086039292eb6aede82fe96c546a5dc192076

commit 67fc086039292eb6aede82fe96c546a5dc192076
Author: Pan Li 
Date:   Sat May 3 10:40:20 2025 +0800

RISC-V: Add testcases for vec_duplicate + vadd.vv combine when GR2VR cost 0

Add asm dump check and run test for vec_duplicate + vadd.vv combine
to vadd.vx.  Introduce new folder to hold all related testcases.

The below test suites are passed for this patch.
* The rv64gcv fully regression test.

gcc/testsuite/ChangeLog:

* gcc.target/riscv/rvv/rvv.exp: Add new folder vx_vf for all
vec_dup + vv to vx testcases.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_binary.h: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_binary_data.h: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_binary_run.h: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-1-i16.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-1-i32.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-1-i64.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-1-i8.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-1-u16.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-1-u32.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-1-u64.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-1-u8.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-i16.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-i32.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-i64.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-i8.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-u16.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-u32.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-u64.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-u8.c: New test.

Signed-off-by: Pan Li 
(cherry picked from commit 1276430a48e4f6bb592d9e3f8c92e62341f09446)

Diff:
---
 .../gcc.target/riscv/rvv/autovec/vx_vf/vx_binary.h |  17 +
 .../riscv/rvv/autovec/vx_vf/vx_binary_data.h   | 401 +
 .../riscv/rvv/autovec/vx_vf/vx_binary_run.h|  26 ++
 .../riscv/rvv/autovec/vx_vf/vx_vadd-1-i16.c|   8 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-1-i32.c|   8 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-1-i64.c|   8 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-1-i8.c |   8 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-1-u16.c|   8 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-1-u32.c|   8 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-1-u64.c|   8 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-1-u8.c |   8 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-run-1-i16.c|  14 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-run-1-i32.c|  14 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-run-1-i64.c|  14 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-run-1-i8.c |  14 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-run-1-u16.c|  14 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-run-1-u32.c|  14 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-run-1-u64.c|  14 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-run-1-u8.c |  14 +
 gcc/testsuite/gcc.target/riscv/rvv/rvv.exp |   2 +
 20 files changed, 622 insertions(+)

diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_binary.h 
b/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_binary.h
new file mode 100644
index ..66654eb90227
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_binary.h
@@ -0,0 +1,17 @@
+#ifndef HAVE_DEFINED_VX_VF_BINARY_H
+#define HAVE_DEFINED_VX_VF_BINARY_H
+
+#include 
+
+#define DEF_VX_BINARY(T, OP)\
+void\
+test_vx_binary (T * restrict out, T * restrict in, T x, unsigned n) \
+{   \
+  for (unsigned i = 0; i < n; i++)  \
+out[i] = in[i] OP x;\
+}
+#define DEF_VX_BINARY_WRAP(T, OP) DEF_VX_BINARY(T, OP)
+#define RUN_VX_BINARY(out, in, x, n)  test_vx_binary(out, in, x, n)
+#define RUN_VX_BINARY_WRAP(out, in, x, n) RUN_VX_BINARY(out, in, x, n)
+
+#endif
diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_binary_data.h 
b/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_binary_data.h
new file mode 100644
index ..11a32cbbf0fc
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_binary_data.h
@@ -0,0 +1,401 @@
+#ifndef HAVE_DEFINED_VX_BINARY_DATA_H
+#define HAVE_DEFINED_VX_BINARY_DATA_H
+
+#define N 16
+
+#define TEST_BINARY_DATA(T, NAME)  test_##T##_##NAME##_data
+#define TEST_B

[gcc(refs/vendors/riscv/heads/gcc-15-with-riscv-opts)] RISC-V: Add testcases for vec_duplicate + vadd.vv combine when GR2VR cost 0

2025-05-18 Thread Jeff Law via Gcc-cvs
https://gcc.gnu.org/g:39e81979866a62ef67a2d0bbd7ce4c33a2e4011f

commit 39e81979866a62ef67a2d0bbd7ce4c33a2e4011f
Author: Pan Li 
Date:   Sat May 3 10:40:20 2025 +0800

RISC-V: Add testcases for vec_duplicate + vadd.vv combine when GR2VR cost 0

Add asm dump check and run test for vec_duplicate + vadd.vv combine
to vadd.vx.  Introduce new folder to hold all related testcases.

The below test suites are passed for this patch.
* The rv64gcv fully regression test.

gcc/testsuite/ChangeLog:

* gcc.target/riscv/rvv/rvv.exp: Add new folder vx_vf for all
vec_dup + vv to vx testcases.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_binary.h: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_binary_data.h: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_binary_run.h: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-1-i16.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-1-i32.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-1-i64.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-1-i8.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-1-u16.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-1-u32.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-1-u64.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-1-u8.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-i16.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-i32.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-i64.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-i8.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-u16.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-u32.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-u64.c: New test.
* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-u8.c: New test.

Signed-off-by: Pan Li 
(cherry picked from commit 1276430a48e4f6bb592d9e3f8c92e62341f09446)

Diff:
---
 .../gcc.target/riscv/rvv/autovec/vx_vf/vx_binary.h |  17 +
 .../riscv/rvv/autovec/vx_vf/vx_binary_data.h   | 401 +
 .../riscv/rvv/autovec/vx_vf/vx_binary_run.h|  26 ++
 .../riscv/rvv/autovec/vx_vf/vx_vadd-1-i16.c|   8 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-1-i32.c|   8 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-1-i64.c|   8 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-1-i8.c |   8 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-1-u16.c|   8 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-1-u32.c|   8 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-1-u64.c|   8 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-1-u8.c |   8 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-run-1-i16.c|  14 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-run-1-i32.c|  14 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-run-1-i64.c|  14 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-run-1-i8.c |  14 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-run-1-u16.c|  14 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-run-1-u32.c|  14 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-run-1-u64.c|  14 +
 .../riscv/rvv/autovec/vx_vf/vx_vadd-run-1-u8.c |  14 +
 gcc/testsuite/gcc.target/riscv/rvv/rvv.exp |   2 +
 20 files changed, 622 insertions(+)

diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_binary.h 
b/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_binary.h
new file mode 100644
index ..66654eb90227
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_binary.h
@@ -0,0 +1,17 @@
+#ifndef HAVE_DEFINED_VX_VF_BINARY_H
+#define HAVE_DEFINED_VX_VF_BINARY_H
+
+#include 
+
+#define DEF_VX_BINARY(T, OP)\
+void\
+test_vx_binary (T * restrict out, T * restrict in, T x, unsigned n) \
+{   \
+  for (unsigned i = 0; i < n; i++)  \
+out[i] = in[i] OP x;\
+}
+#define DEF_VX_BINARY_WRAP(T, OP) DEF_VX_BINARY(T, OP)
+#define RUN_VX_BINARY(out, in, x, n)  test_vx_binary(out, in, x, n)
+#define RUN_VX_BINARY_WRAP(out, in, x, n) RUN_VX_BINARY(out, in, x, n)
+
+#endif
diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_binary_data.h 
b/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_binary_data.h
new file mode 100644
index ..11a32cbbf0fc
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_binary_data.h
@@ -0,0 +1,401 @@
+#ifndef HAVE_DEFINED_VX_BINARY_DATA_H
+#define HAVE_DEFINED_VX_BINARY_DATA_H
+
+#define N 16
+
+#define TEST_BINARY_DATA(T, NAME)  test_##T##_##NAME##_data
+#define TEST_B