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