aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobin Dapp <rdapp@ventanamicro.com>2023-11-10 10:03:30 +0100
committerRobin Dapp <rdapp@ventanamicro.com>2023-11-10 14:43:35 +0100
commit62e6ded7ae8582ade4e56aea10d67b9e942d8026 (patch)
tree924eece88be9ff56cb8db2880509f86def0c69f1
parentd7b971cf61ae0091dbc777c9aa056e6f1293da2f (diff)
downloadgcc-62e6ded7ae8582ade4e56aea10d67b9e942d8026.zip
gcc-62e6ded7ae8582ade4e56aea10d67b9e942d8026.tar.gz
gcc-62e6ded7ae8582ade4e56aea10d67b9e942d8026.tar.bz2
RISC-V: testsuite: Fix 32-bit FAILs.
This patch fixes several more FAILs that would only show in 32-bit runs. gcc/testsuite/ChangeLog: * gcc.target/riscv/rvv/autovec/binop/vmul-zvfh-run.c: Adjust. * gcc.target/riscv/rvv/autovec/binop/vsub-zvfh-run.c: Ditto. * gcc.target/riscv/rvv/autovec/cond/cond_narrow_shift_run-3.c: Ditto. * gcc.target/riscv/rvv/autovec/cond/pr111401.c: Ditto. * gcc.target/riscv/rvv/autovec/conversions/vfcvt-itof-zvfh-run.c: Ditto. * gcc.target/riscv/rvv/autovec/conversions/vfcvt_rtz-zvfh-run.c: Ditto. * gcc.target/riscv/rvv/autovec/conversions/vfncvt-ftoi-zvfh-run.c: Ditto. * gcc.target/riscv/rvv/autovec/conversions/vfncvt-itof-template.h: Ditto. * gcc.target/riscv/rvv/autovec/conversions/vfncvt-itof-zvfh-run.c: Ditto. * gcc.target/riscv/rvv/autovec/conversions/vfncvt-zvfh-run.c: Ditto. * gcc.target/riscv/rvv/autovec/conversions/vfwcvt-ftoi-zvfh-run.c: Ditto. * gcc.target/riscv/rvv/autovec/conversions/vfwcvt-itof-zvfh-run.c: Ditto. * gcc.target/riscv/rvv/autovec/conversions/vfwcvt-zvfh-run.c: Ditto. * gcc.target/riscv/rvv/autovec/slp-mask-run-1.c: Ditto. * gcc.target/riscv/rvv/autovec/ternop/ternop_run_zvfh-1.c: Ditto. * gcc.target/riscv/rvv/autovec/ternop/ternop_run_zvfh-10.c: Ditto. * gcc.target/riscv/rvv/autovec/ternop/ternop_run_zvfh-11.c: Ditto. * gcc.target/riscv/rvv/autovec/ternop/ternop_run_zvfh-12.c: Ditto. * gcc.target/riscv/rvv/autovec/ternop/ternop_run_zvfh-2.c: Ditto. * gcc.target/riscv/rvv/autovec/ternop/ternop_run_zvfh-3.c: Ditto. * gcc.target/riscv/rvv/autovec/ternop/ternop_run_zvfh-4.c: Ditto. * gcc.target/riscv/rvv/autovec/ternop/ternop_run_zvfh-5.c: Ditto. * gcc.target/riscv/rvv/autovec/ternop/ternop_run_zvfh-6.c: Ditto. * gcc.target/riscv/rvv/autovec/ternop/ternop_run_zvfh-7.c: Ditto. * gcc.target/riscv/rvv/autovec/ternop/ternop_run_zvfh-8.c: Ditto. * gcc.target/riscv/rvv/autovec/ternop/ternop_run_zvfh-9.c: Ditto. * gcc.target/riscv/rvv/autovec/unop/vfsqrt-run.c: Ditto. * gcc.target/riscv/rvv/autovec/unop/vfsqrt-rv32gcv.c: Ditto. * gcc.target/riscv/rvv/autovec/unop/vfsqrt-rv64gcv.c: Ditto. * gcc.target/riscv/rvv/autovec/unop/vfsqrt-template.h: Ditto. * gcc.target/riscv/rvv/autovec/unop/vfsqrt-zvfh-run.c: Ditto. * gcc.target/riscv/rvv/autovec/vls-vlmax/vec_extract-zvfh-run.c: Ditto. * gcc.target/riscv/rvv/autovec/vls-vlmax/vec_set-zvfh-run.c: Ditto.
-rw-r--r--gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vmul-zvfh-run.c34
-rw-r--r--gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vsub-zvfh-run.c72
-rw-r--r--gcc/testsuite/gcc.target/riscv/rvv/autovec/cond/cond_narrow_shift_run-3.c2
-rw-r--r--gcc/testsuite/gcc.target/riscv/rvv/autovec/cond/pr111401.c2
-rw-r--r--gcc/testsuite/gcc.target/riscv/rvv/autovec/conversions/vfcvt-itof-zvfh-run.c4
-rw-r--r--gcc/testsuite/gcc.target/riscv/rvv/autovec/conversions/vfcvt_rtz-zvfh-run.c4
-rw-r--r--gcc/testsuite/gcc.target/riscv/rvv/autovec/conversions/vfncvt-ftoi-zvfh-run.c18
-rw-r--r--gcc/testsuite/gcc.target/riscv/rvv/autovec/conversions/vfncvt-itof-template.h36
-rw-r--r--gcc/testsuite/gcc.target/riscv/rvv/autovec/conversions/vfncvt-itof-zvfh-run.c31
-rw-r--r--gcc/testsuite/gcc.target/riscv/rvv/autovec/conversions/vfncvt-zvfh-run.c4
-rw-r--r--gcc/testsuite/gcc.target/riscv/rvv/autovec/conversions/vfwcvt-ftoi-zvfh-run.c10
-rw-r--r--gcc/testsuite/gcc.target/riscv/rvv/autovec/conversions/vfwcvt-itof-zvfh-run.c4
-rw-r--r--gcc/testsuite/gcc.target/riscv/rvv/autovec/conversions/vfwcvt-zvfh-run.c40
-rw-r--r--gcc/testsuite/gcc.target/riscv/rvv/autovec/slp-mask-run-1.c2
-rw-r--r--gcc/testsuite/gcc.target/riscv/rvv/autovec/ternop/ternop_run_zvfh-1.c4
-rw-r--r--gcc/testsuite/gcc.target/riscv/rvv/autovec/ternop/ternop_run_zvfh-10.c4
-rw-r--r--gcc/testsuite/gcc.target/riscv/rvv/autovec/ternop/ternop_run_zvfh-11.c50
-rw-r--r--gcc/testsuite/gcc.target/riscv/rvv/autovec/ternop/ternop_run_zvfh-12.c49
-rw-r--r--gcc/testsuite/gcc.target/riscv/rvv/autovec/ternop/ternop_run_zvfh-2.c24
-rw-r--r--gcc/testsuite/gcc.target/riscv/rvv/autovec/ternop/ternop_run_zvfh-3.c21
-rw-r--r--gcc/testsuite/gcc.target/riscv/rvv/autovec/ternop/ternop_run_zvfh-4.c4
-rw-r--r--gcc/testsuite/gcc.target/riscv/rvv/autovec/ternop/ternop_run_zvfh-5.c50
-rw-r--r--gcc/testsuite/gcc.target/riscv/rvv/autovec/ternop/ternop_run_zvfh-6.c50
-rw-r--r--gcc/testsuite/gcc.target/riscv/rvv/autovec/ternop/ternop_run_zvfh-7.c4
-rw-r--r--gcc/testsuite/gcc.target/riscv/rvv/autovec/ternop/ternop_run_zvfh-8.c21
-rw-r--r--gcc/testsuite/gcc.target/riscv/rvv/autovec/ternop/ternop_run_zvfh-9.c22
-rw-r--r--gcc/testsuite/gcc.target/riscv/rvv/autovec/unop/vfsqrt-run.c30
-rw-r--r--gcc/testsuite/gcc.target/riscv/rvv/autovec/unop/vfsqrt-rv32gcv.c2
-rw-r--r--gcc/testsuite/gcc.target/riscv/rvv/autovec/unop/vfsqrt-rv64gcv.c2
-rw-r--r--gcc/testsuite/gcc.target/riscv/rvv/autovec/unop/vfsqrt-template.h24
-rw-r--r--gcc/testsuite/gcc.target/riscv/rvv/autovec/unop/vfsqrt-zvfh-run.c34
-rw-r--r--gcc/testsuite/gcc.target/riscv/rvv/autovec/vls-vlmax/vec_extract-zvfh-run.c4
-rw-r--r--gcc/testsuite/gcc.target/riscv/rvv/autovec/vls-vlmax/vec_set-zvfh-run.c4
33 files changed, 335 insertions, 331 deletions
diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vmul-zvfh-run.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vmul-zvfh-run.c
index a427181..1082695 100644
--- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vmul-zvfh-run.c
+++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vmul-zvfh-run.c
@@ -1,4 +1,4 @@
-/* { dg-do run { target { riscv_v && riscv_zvfh_hw } } } */
+/* { dg-do run { target { riscv_zvfh } } } */
/* { dg-additional-options "-std=c99 -fno-vect-cost-model --param=riscv-autovec-preference=fixed-vlmax -ffast-math" } */
#include "vmul-template.h"
@@ -7,24 +7,24 @@
#define SZ 512
-#define RUN(TYPE,VAL) \
- TYPE a##TYPE[SZ]; \
- TYPE b##TYPE[SZ]; \
- for (int i = 0; i < SZ; i++) \
- { \
- a##TYPE[i] = 2; \
- b##TYPE[i] = VAL; \
- } \
- vadd_##TYPE (a##TYPE, a##TYPE, b##TYPE, SZ); \
- for (int i = 0; i < SZ; i++) \
+#define RUN(TYPE, VAL) \
+ TYPE a##TYPE[SZ]; \
+ TYPE b##TYPE[SZ]; \
+ for (int i = 0; i < SZ; i++) \
+ { \
+ a##TYPE[i] = 2; \
+ b##TYPE[i] = VAL; \
+ } \
+ vmul_##TYPE (a##TYPE, a##TYPE, b##TYPE, SZ); \
+ for (int i = 0; i < SZ; i++) \
assert (a##TYPE[i] == 2 * VAL);
-#define RUN2(TYPE,VAL) \
- TYPE as##TYPE[SZ]; \
- for (int i = 0; i < SZ; i++) \
- as##TYPE[i] = 3; \
- vadds_##TYPE (as##TYPE, as##TYPE, VAL, SZ); \
- for (int i = 0; i < SZ; i++) \
+#define RUN2(TYPE, VAL) \
+ TYPE as##TYPE[SZ]; \
+ for (int i = 0; i < SZ; i++) \
+ as##TYPE[i] = 3; \
+ vmuls_##TYPE (as##TYPE, as##TYPE, VAL, SZ); \
+ for (int i = 0; i < SZ; i++) \
assert (as##TYPE[i] == 3 * VAL);
#define RUN_ALL() \
diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vsub-zvfh-run.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vsub-zvfh-run.c
index c996ce8..b438bea 100644
--- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vsub-zvfh-run.c
+++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vsub-zvfh-run.c
@@ -1,4 +1,4 @@
-/* { dg-do run { target { riscv_v && riscv_zvfh_hw } } } */
+/* { dg-do run { target { riscv_v && riscv_zvfh } } } */
/* { dg-additional-options "-std=c99 -fno-vect-cost-model --param=riscv-autovec-preference=fixed-vlmax -ffast-math" } */
#include "vsub-template.h"
@@ -7,41 +7,41 @@
#define SZ 512
-#define RUN(TYPE,VAL) \
- TYPE a##TYPE[SZ]; \
- TYPE b##TYPE[SZ]; \
- for (int i = 0; i < SZ; i++) \
- { \
- a##TYPE[i] = 999; \
- b##TYPE[i] = VAL; \
- } \
- vsub_##TYPE (a##TYPE, a##TYPE, b##TYPE, SZ); \
- for (int i = 0; i < SZ; i++) \
- assert (a##TYPE[i] == 999 - VAL);
-
-#define RUN2(TYPE,VAL) \
- TYPE as##TYPE[SZ]; \
- for (int i = 0; i < SZ; i++) \
- as##TYPE[i] = 999; \
- vsubs_##TYPE (as##TYPE, as##TYPE, VAL, SZ); \
- for (int i = 0; i < SZ; i++) \
- assert (as##TYPE[i] == 999 - VAL);
-
-#define RUN3(TYPE) \
- TYPE as2##TYPE[SZ]; \
- for (int i = 0; i < SZ; i++) \
- as2##TYPE[i] = i * 33 - 779; \
- vsubi_##TYPE (as2##TYPE, as2##TYPE, SZ); \
- for (int i = 0; i < SZ; i++) \
- assert (as2##TYPE[i] == (TYPE)(-16 - (i * 33 - 779)));
-
-#define RUN4(TYPE) \
- TYPE as3##TYPE[SZ]; \
- for (int i = 0; i < SZ; i++) \
- as3##TYPE[i] = i * -17 + 667; \
- vsubi2_##TYPE (as3##TYPE, as3##TYPE, SZ); \
- for (int i = 0; i < SZ; i++) \
- assert (as3##TYPE[i] == (TYPE)(15 - (i * -17 + 667)));
+#define RUN(TYPE, VAL) \
+ TYPE a##TYPE[SZ]; \
+ TYPE b##TYPE[SZ]; \
+ for (int i = 0; i < SZ; i++) \
+ { \
+ a##TYPE[i] = 123; \
+ b##TYPE[i] = VAL; \
+ } \
+ vsub_##TYPE (a##TYPE, a##TYPE, b##TYPE, SZ); \
+ for (int i = 0; i < SZ; i++) \
+ assert (a##TYPE[i] == 123 - VAL);
+
+#define RUN2(TYPE, VAL) \
+ TYPE as##TYPE[SZ]; \
+ for (int i = 0; i < SZ; i++) \
+ as##TYPE[i] = 234; \
+ vsubs_##TYPE (as##TYPE, as##TYPE, VAL, SZ); \
+ for (int i = 0; i < SZ; i++) \
+ assert (as##TYPE[i] == 234 - VAL);
+
+#define RUN3(TYPE) \
+ TYPE as2##TYPE[SZ]; \
+ for (int i = 0; i < SZ; i++) \
+ as2##TYPE[i] = i * 33 - 779; \
+ vsubi_##TYPE (as2##TYPE, as2##TYPE, SZ); \
+ for (int i = 0; i < SZ; i++) \
+ assert (as2##TYPE[i] == (TYPE) (-16 - (i * 33 - 779)));
+
+#define RUN4(TYPE) \
+ TYPE as3##TYPE[SZ]; \
+ for (int i = 0; i < SZ; i++) \
+ as3##TYPE[i] = i * -3 + 267; \
+ vsubi2_##TYPE (as3##TYPE, as3##TYPE, SZ); \
+ for (int i = 0; i < SZ; i++) \
+ assert (as3##TYPE[i] == (TYPE) (15 - (i * -3 + 267)));
#define RUN_ALL() \
RUN(_Float16, 4) \
diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/cond/cond_narrow_shift_run-3.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/cond/cond_narrow_shift_run-3.c
index 27f9b68..0fcf2c5 100644
--- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/cond/cond_narrow_shift_run-3.c
+++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/cond/cond_narrow_shift_run-3.c
@@ -3,7 +3,7 @@
#include "cond_narrow_shift-3.c"
-#define N 99
+#define N 61
#define TEST_LOOP(TYPE1, TYPE2) \
{ \
diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/cond/pr111401.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/cond/pr111401.c
index 83dbd61..f593db3 100644
--- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/cond/pr111401.c
+++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/cond/pr111401.c
@@ -1,5 +1,5 @@
/* { dg-do run { target { riscv_v } } } */
-/* { dg-additional-options "-march=rv64gcv -mabi=lp64d --param riscv-autovec-preference=scalable -fdump-tree-vect-details" } */
+/* { dg-additional-options "--param riscv-autovec-preference=scalable -fdump-tree-vect-details" } */
double
__attribute__ ((noipa))
diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/conversions/vfcvt-itof-zvfh-run.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/conversions/vfcvt-itof-zvfh-run.c
index f30e55b..bd85f3f 100644
--- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/conversions/vfcvt-itof-zvfh-run.c
+++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/conversions/vfcvt-itof-zvfh-run.c
@@ -1,5 +1,5 @@
-/* { dg-do run { target { riscv_v && riscv_zvfh_hw } } } */
-/* { dg-additional-options "-std=c99 -march=rv64gcv_zvfh -mabi=lp64d -fno-vect-cost-model --param=riscv-autovec-preference=scalable" } */
+/* { dg-do run { target { riscv_v && riscv_zvfh } } } */
+/* { dg-additional-options "-std=c99 -fno-vect-cost-model --param=riscv-autovec-preference=scalable" } */
#include "vfcvt-itof-template.h"
diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/conversions/vfcvt_rtz-zvfh-run.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/conversions/vfcvt_rtz-zvfh-run.c
index 637e51a..3164fed 100644
--- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/conversions/vfcvt_rtz-zvfh-run.c
+++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/conversions/vfcvt_rtz-zvfh-run.c
@@ -1,5 +1,5 @@
-/* { dg-do run { target { riscv_v && riscv_zvfh_hw } } } */
-/* { dg-additional-options "-std=c99 -march=rv64gcv_zvfh -mabi=lp64d -fno-vect-cost-model --param=riscv-autovec-preference=scalable" } */
+/* { dg-do run { target { riscv_v && riscv_zvfh } } } */
+/* { dg-additional-options "-std=c99 -fno-vect-cost-model --param=riscv-autovec-preference=scalable" } */
#include "vfcvt_rtz-template.h"
diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/conversions/vfncvt-ftoi-zvfh-run.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/conversions/vfncvt-ftoi-zvfh-run.c
index ddbbdf3..dbbbb61 100644
--- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/conversions/vfncvt-ftoi-zvfh-run.c
+++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/conversions/vfncvt-ftoi-zvfh-run.c
@@ -1,5 +1,5 @@
-/* { dg-do run { target { riscv_v && riscv_zvfh_hw } } } */
-/* { dg-additional-options "-std=c99 -march=rv64gcv_zvfh -mabi=lp64d -fno-vect-cost-model --param=riscv-autovec-preference=scalable" } */
+/* { dg-do run { target { riscv_v && riscv_zvfh } } } */
+/* { dg-additional-options "-std=c99 -fno-vect-cost-model --param=riscv-autovec-preference=scalable" } */
#include "vfncvt-ftoi-template.h"
@@ -7,10 +7,8 @@
TYPE1 src##TYPE1##TYPE2##NUM[NUM]; \
TYPE2 dst##TYPE1##TYPE2##NUM[NUM]; \
for (int i = 0; i < NUM; i++) \
- { \
- src##TYPE1##TYPE2##NUM[i] = i * -3.1315926 - 8.947289; \
- } \
- vfcvt_##TYPE1##TYPE2 (dst##TYPE1##TYPE2##NUM, src##TYPE1##TYPE2##NUM, NUM); \
+ src##TYPE1##TYPE2##NUM[i] = i * -3.1315926 - 8.947289; \
+ vfncvt_##TYPE1##TYPE2 (dst##TYPE1##TYPE2##NUM, src##TYPE1##TYPE2##NUM, NUM); \
for (int i = 0; i < NUM; i++) \
if (dst##TYPE1##TYPE2##NUM[i] != (TYPE2) src##TYPE1##TYPE2##NUM[i]) \
__builtin_abort ();
@@ -19,10 +17,8 @@
TYPE1 src##TYPE1##TYPE2##NUM[NUM]; \
TYPE2 dst##TYPE1##TYPE2##NUM[NUM]; \
for (int i = 0; i < NUM; i++) \
- { \
- src##TYPE1##TYPE2##NUM[i] = i * 3.1315926 + 8.947289; \
- } \
- vfcvt_##TYPE1##TYPE2 (dst##TYPE1##TYPE2##NUM, src##TYPE1##TYPE2##NUM, NUM); \
+ src##TYPE1##TYPE2##NUM[i] = i * 3.1315926 + 8.947289; \
+ vfncvt_##TYPE1##TYPE2 (dst##TYPE1##TYPE2##NUM, src##TYPE1##TYPE2##NUM, NUM); \
for (int i = 0; i < NUM; i++) \
if (dst##TYPE1##TYPE2##NUM[i] != (TYPE2) src##TYPE1##TYPE2##NUM[i]) \
__builtin_abort ();
@@ -33,7 +29,7 @@ main ()
RUN (_Float16, int8_t, 3)
RUN (_Float16, int8_t, 4)
RUN (_Float16, int8_t, 13)
- RUN (_Float16, int8_t, 40)
+ RUN (_Float16, int8_t, 29)
RUN2 (_Float16, uint8_t, 1)
RUN2 (_Float16, uint8_t, 8)
diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/conversions/vfncvt-itof-template.h b/gcc/testsuite/gcc.target/riscv/rvv/autovec/conversions/vfncvt-itof-template.h
index c427cd1..bfc9179 100644
--- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/conversions/vfncvt-itof-template.h
+++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/conversions/vfncvt-itof-template.h
@@ -1,21 +1,29 @@
#include <stdint-gcc.h>
-#define TEST(TYPE1, TYPE2) \
- __attribute__ ((noipa)) \
- void vfncvt_##TYPE1##TYPE2 (TYPE2 *restrict dst, \
- TYPE1 *restrict a, int n) \
- { \
- for (int i = 0; i < n; i++) \
- dst[i] = (TYPE2) (a[i] & 0x7ffffffful); \
+#define TEST(TYPE1, TYPE2) \
+ __attribute__ ((noipa)) void vfncvt_##TYPE1##TYPE2 (TYPE2 *restrict dst, \
+ TYPE1 *restrict a, \
+ int n) \
+ { \
+ for (int i = 0; i < n; i++) \
+ dst[i] = (TYPE2) (a[i] & 0x7ffffffful); \
}
+#define TESTS(TYPE1, TYPE2) \
+ __attribute__ ((noipa)) void vfncvts_##TYPE1##TYPE2 (TYPE2 *restrict dst, \
+ TYPE1 *restrict a, \
+ int n) \
+ { \
+ for (int i = 0; i < n; i++) \
+ dst[i] = (TYPE2) (a[i]); \
+ }
-#define TEST_ALL() \
- TEST (int64_t, float) \
- TEST (uint64_t, float) \
- TEST (int64_t, _Float16) \
- TEST (uint64_t, _Float16) \
- TEST (int32_t, _Float16) \
- TEST (uint32_t, _Float16) \
+#define TEST_ALL() \
+ TEST (int64_t, float) \
+ TEST (uint64_t, float) \
+ TEST (int64_t, _Float16) \
+ TEST (uint64_t, _Float16) \
+ TEST (int32_t, _Float16) \
+ TEST (uint32_t, _Float16) \
TEST_ALL ()
diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/conversions/vfncvt-itof-zvfh-run.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/conversions/vfncvt-itof-zvfh-run.c
index ea08429..0342d14 100644
--- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/conversions/vfncvt-itof-zvfh-run.c
+++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/conversions/vfncvt-itof-zvfh-run.c
@@ -1,32 +1,39 @@
-/* { dg-do run { target { riscv_v && riscv_zvfh_hw } } } */
-/* { dg-additional-options "-std=c99 -march=rv64gcv_zvfh -mabi=lp64d -fno-vect-cost-model --param=riscv-autovec-preference=scalable" } */
+/* { dg-do run { target { riscv_zvfh && riscv_zfh} } } */
+/* { dg-additional-options "-std=c99 -fno-vect-cost-model --param=riscv-autovec-preference=scalable" } */
#include "vfncvt-itof-template.h"
+#include <math.h>
+
+TESTS (int64_t, _Float16)
+TESTS (int32_t, _Float16)
+
+#define EPS 1e-5
+
#define RUN(TYPE1, TYPE2, NUM) \
TYPE1 src##TYPE1##TYPE2##NUM[NUM]; \
TYPE2 dst##TYPE1##TYPE2##NUM[NUM]; \
for (int i = 0; i < NUM; i++) \
- { \
- src##TYPE1##TYPE2##NUM[i] = i * -3 - 832; \
- } \
- vfncvt_##TYPE1##TYPE2 (dst##TYPE1##TYPE2##NUM, src##TYPE1##TYPE2##NUM, NUM); \
+ src##TYPE1##TYPE2##NUM[i] = i * -3 + 833; \
+ vfncvts_##TYPE1##TYPE2 (dst##TYPE1##TYPE2##NUM, src##TYPE1##TYPE2##NUM, \
+ NUM); \
for (int i = 0; i < NUM; i++) \
- if (dst##TYPE1##TYPE2##NUM[i] != (TYPE2) src##TYPE1##TYPE2##NUM[i]) \
+ if (__builtin_fabsf16 (dst##TYPE1##TYPE2##NUM[i] \
+ - (TYPE2) src##TYPE1##TYPE2##NUM[i]) \
+ > EPS) \
__builtin_abort ();
#define RUN2(TYPE1, TYPE2, NUM) \
TYPE1 src##TYPE1##TYPE2##NUM[NUM]; \
TYPE2 dst##TYPE1##TYPE2##NUM[NUM]; \
for (int i = 0; i < NUM; i++) \
- { \
- src##TYPE1##TYPE2##NUM[i] = i * 3 + 892; \
- } \
+ src##TYPE1##TYPE2##NUM[i] = i * 3 + 892; \
vfncvt_##TYPE1##TYPE2 (dst##TYPE1##TYPE2##NUM, src##TYPE1##TYPE2##NUM, NUM); \
for (int i = 0; i < NUM; i++) \
- if (dst##TYPE1##TYPE2##NUM[i] != (TYPE2) src##TYPE1##TYPE2##NUM[i]) \
+ if (__builtin_fabsf16 (dst##TYPE1##TYPE2##NUM[i] \
+ - (TYPE2) src##TYPE1##TYPE2##NUM[i]) \
+ > EPS) \
__builtin_abort ();
-
int
main ()
{
diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/conversions/vfncvt-zvfh-run.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/conversions/vfncvt-zvfh-run.c
index 6b8f3b5..6eb9f14 100644
--- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/conversions/vfncvt-zvfh-run.c
+++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/conversions/vfncvt-zvfh-run.c
@@ -1,5 +1,5 @@
-/* { dg-do run { target { riscv_v && riscv_zvfh_hw } } } */
-/* { dg-additional-options "-std=c99 -march=rv64gcv_zvfh -mabi=lp64d -fno-vect-cost-model --param=riscv-autovec-preference=scalable" } */
+/* { dg-do run { target { riscv_v && riscv_zvfh } } } */
+/* { dg-additional-options "-std=c99 -fno-vect-cost-model --param=riscv-autovec-preference=scalable" } */
#include "vfncvt-template.h"
diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/conversions/vfwcvt-ftoi-zvfh-run.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/conversions/vfwcvt-ftoi-zvfh-run.c
index d13d4dd..3d11654 100644
--- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/conversions/vfwcvt-ftoi-zvfh-run.c
+++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/conversions/vfwcvt-ftoi-zvfh-run.c
@@ -1,7 +1,7 @@
-/* { dg-do run { target { riscv_v && riscv_zvfh_hw } } } */
-/* { dg-additional-options "-std=c99 -march=rv64gcv_zvfh -mabi=lp64d -fno-vect-cost-model --param=riscv-autovec-preference=scalable" } */
+/* { dg-do run { target { riscv_v && riscv_zvfh } } } */
+/* { dg-additional-options "-std=c99 -fno-vect-cost-model --param=riscv-autovec-preference=scalable" } */
-#include "vfcvt_rtz-template.h"
+#include "vfwcvt-ftoi-template.h"
#define RUN(TYPE1, TYPE2, NUM) \
TYPE1 src##TYPE1##TYPE2##NUM[NUM]; \
@@ -10,7 +10,7 @@
{ \
src##TYPE1##TYPE2##NUM[i] = i * -3.1315926 - 832.947289; \
} \
- vfcvt_##TYPE1##TYPE2 (dst##TYPE1##TYPE2##NUM, src##TYPE1##TYPE2##NUM, NUM); \
+ vfwcvt_##TYPE1##TYPE2 (dst##TYPE1##TYPE2##NUM, src##TYPE1##TYPE2##NUM, NUM); \
for (int i = 0; i < NUM; i++) \
if (dst##TYPE1##TYPE2##NUM[i] != (TYPE2) src##TYPE1##TYPE2##NUM[i]) \
__builtin_abort ();
@@ -22,7 +22,7 @@
{ \
src##TYPE1##TYPE2##NUM[i] = i * 3.1315926 + 832.947289; \
} \
- vfcvt_##TYPE1##TYPE2 (dst##TYPE1##TYPE2##NUM, src##TYPE1##TYPE2##NUM, NUM); \
+ vfwcvt_##TYPE1##TYPE2 (dst##TYPE1##TYPE2##NUM, src##TYPE1##TYPE2##NUM, NUM); \
for (int i = 0; i < NUM; i++) \
if (dst##TYPE1##TYPE2##NUM[i] != (TYPE2) src##TYPE1##TYPE2##NUM[i]) \
__builtin_abort ();
diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/conversions/vfwcvt-itof-zvfh-run.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/conversions/vfwcvt-itof-zvfh-run.c
index 8289e53..8df59a9 100644
--- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/conversions/vfwcvt-itof-zvfh-run.c
+++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/conversions/vfwcvt-itof-zvfh-run.c
@@ -1,5 +1,5 @@
-/* { dg-do run { target { riscv_v && riscv_zvfh_hw } } } */
-/* { dg-additional-options "-std=c99 -march=rv64gcv_zvfh -mabi=lp64d -fno-vect-cost-model --param=riscv-autovec-preference=scalable" } */
+/* { dg-do run { target { riscv_v && riscv_zvfh } } } */
+/* { dg-additional-options "-std=c99 -fno-vect-cost-model --param=riscv-autovec-preference=scalable" } */
#include "vfwcvt-itof-template.h"
diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/conversions/vfwcvt-zvfh-run.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/conversions/vfwcvt-zvfh-run.c
index 10c8bdd..9f2c983 100644
--- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/conversions/vfwcvt-zvfh-run.c
+++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/conversions/vfwcvt-zvfh-run.c
@@ -1,5 +1,5 @@
-/* { dg-do run { target { riscv_v && riscv_zvfh_hw } } } */
-/* { dg-additional-options "-std=c99 -march=rv64gcv_zvfh -mabi=lp64d -fno-vect-cost-model --param=riscv-autovec-preference=scalable" } */
+/* { dg-do run { target { riscv_v && riscv_zvfh } } } */
+/* { dg-additional-options "-std=c99 -fno-vect-cost-model --param=riscv-autovec-preference=scalable" } */
#include "vfwcvt-template.h"
@@ -8,26 +8,24 @@
#define SZ 512
#define EPS 1e-4
-#define RUN(TYPE1,TYPE2) \
- TYPE1 src##TYPE1##TYPE2[SZ]; \
- TYPE2 dst##TYPE1##TYPE2[SZ]; \
- for (int i = 0; i < SZ; i++) \
- { \
- src##TYPE1##TYPE2[i] = (i & 1) ? -i : i; \
- src##TYPE1##TYPE2[i] *= 0.0003141592; \
- dst##TYPE1##TYPE2[i] = -1; \
- } \
- vfwcvt_##TYPE1##TYPE2 (dst##TYPE1##TYPE2, \
- src##TYPE1##TYPE2, SZ); \
- for (int i = 0; i < SZ; i++) \
- assert (__builtin_fabs (dst##TYPE1##TYPE2[i] \
- - ((i & 1) ? -i : i) * 0.0003141592) < EPS); \
-
-
-#define RUN_ALL() \
- RUN(_Float16, float) \
- RUN(_Float16, double) \
+#define RUN(TYPE1, TYPE2) \
+ TYPE1 src##TYPE1##TYPE2[SZ]; \
+ TYPE2 dst##TYPE1##TYPE2[SZ]; \
+ for (int i = 0; i < SZ; i++) \
+ { \
+ src##TYPE1##TYPE2[i] = (i & 1) ? -i : i; \
+ src##TYPE1##TYPE2[i] *= 0.0003141592; \
+ dst##TYPE1##TYPE2[i] = -1; \
+ } \
+ vfwcvt_##TYPE1##TYPE2 (dst##TYPE1##TYPE2, src##TYPE1##TYPE2, SZ); \
+ for (int i = 0; i < SZ; i++) \
+ assert (__builtin_fabsf16 (dst##TYPE1##TYPE2[i] \
+ - ((i & 1) ? -i : i) * 0.0003141592) \
+ < EPS);
+#define RUN_ALL() \
+ RUN (_Float16, float) \
+ RUN (_Float16, double)
int main ()
{
RUN_ALL()
diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/slp-mask-run-1.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/slp-mask-run-1.c
index b3469c4..b7d86c6 100644
--- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/slp-mask-run-1.c
+++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/slp-mask-run-1.c
@@ -1,5 +1,5 @@
/* { dg-do run { target { riscv_v } } } */
-/* { dg-additional-options "-std=gnu99 -O3 -march=rv64gcv -mabi=lp64d --param=riscv-autovec-preference=scalable" } */
+/* { dg-additional-options "-std=gnu99 -O3 --param=riscv-autovec-preference=scalable" } */
#include <malloc.h>
#include <stdio.h>
diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/ternop/ternop_run_zvfh-1.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/ternop/ternop_run_zvfh-1.c
index 3ae6e59..6c707e3 100644
--- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/ternop/ternop_run_zvfh-1.c
+++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/ternop/ternop_run_zvfh-1.c
@@ -1,4 +1,4 @@
-/* { dg-do run { target { riscv_v && riscv_zvfh_hw } } } */
+/* { dg-do run { target { riscv_v && riscv_zvfh } } } */
/* { dg-additional-options "--param=riscv-autovec-preference=scalable -ffast-math" } */
#include "ternop-1.c"
@@ -30,6 +30,6 @@ int __attribute__ ((optimize (0))) main ()
TEST_LOOP (_Float16, 16)
TEST_LOOP (_Float16, 77)
TEST_LOOP (_Float16, 128)
- TEST_LOOP (_Float16, 795)
+ TEST_LOOP (_Float16, 299)
return 0;
}
diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/ternop/ternop_run_zvfh-10.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/ternop/ternop_run_zvfh-10.c
index 9b7e057..4d57fe5 100644
--- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/ternop/ternop_run_zvfh-10.c
+++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/ternop/ternop_run_zvfh-10.c
@@ -1,4 +1,4 @@
-/* { dg-do run { target { riscv_v && riscv_zvfh_hw } } } */
+/* { dg-do run { target { riscv_v && riscv_zvfh } } } */
/* { dg-additional-options "--param=riscv-autovec-preference=scalable -ffast-math" } */
#include "ternop-10.c"
@@ -30,6 +30,6 @@ int __attribute__ ((optimize (0))) main ()
TEST_LOOP (_Float16, 16)
TEST_LOOP (_Float16, 77)
TEST_LOOP (_Float16, 128)
- TEST_LOOP (_Float16, 795)
+ TEST_LOOP (_Float16, 299)
return 0;
}
diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/ternop/ternop_run_zvfh-11.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/ternop/ternop_run_zvfh-11.c
index 7a35d85..80f1d54 100644
--- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/ternop/ternop_run_zvfh-11.c
+++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/ternop/ternop_run_zvfh-11.c
@@ -1,4 +1,4 @@
-/* { dg-do run { target { riscv_v && riscv_zvfh_hw } } } */
+/* { dg-do run { target { riscv_v && riscv_zvfh } } } */
/* { dg-additional-options "--param=riscv-autovec-preference=scalable -ffast-math" } */
#include "ternop-11.c"
@@ -15,32 +15,34 @@
TYPE array8_##NUM[NUM] = {}; \
for (int i = 0; i < NUM; ++i) \
{ \
- array1_##NUM[i] = (i & 1) + 5; \
- array2_##NUM[i] = i - NUM / 3; \
- array3_##NUM[i] = NUM - NUM / 3 - i; \
- array6_##NUM[i] = NUM - NUM / 3 - i; \
- array4_##NUM[i] = NUM - NUM / 2 + i; \
- array7_##NUM[i] = NUM - NUM / 2 + i; \
- array5_##NUM[i] = NUM + i * 7; \
- array8_##NUM[i] = NUM + i * 7; \
- asm volatile("" ::: "memory"); \
+ int val = NUM / 18.3; \
+ int val2 = i / 18.7; \
+ array1_##NUM[i] = (i & 1) + 5; \
+ array2_##NUM[i] = val2 - val / 3; \
+ array3_##NUM[i] = val - val / 3 - val2; \
+ array6_##NUM[i] = val - val / 3 - val2; \
+ array4_##NUM[i] = val - val / 2 + val2; \
+ array7_##NUM[i] = val - val / 2 + val2; \
+ array5_##NUM[i] = val + val2; \
+ array8_##NUM[i] = val + val2; \
+ asm volatile ("" ::: "memory"); \
} \
ternop_##TYPE (array3_##NUM, array4_##NUM, array5_##NUM, array1_##NUM, \
- array2_##NUM, NUM); \
+ array2_##NUM, NUM); \
for (int i = 0; i < NUM; i++) \
{ \
- array6_##NUM[i] \
- = (TYPE) (-(array1_##NUM[i] * array2_##NUM[i]) - array6_##NUM[i]); \
- if (array3_##NUM[i] != array6_##NUM[i]) \
- __builtin_abort (); \
- array7_##NUM[i] \
- = (TYPE) (array1_##NUM[i] * array6_##NUM[i] - array7_##NUM[i]); \
- if (array4_##NUM[i] != array7_##NUM[i]) \
- __builtin_abort (); \
- array8_##NUM[i] \
- = (TYPE) (array2_##NUM[i] * array7_##NUM[i] - array8_##NUM[i]); \
- if (array5_##NUM[i] != array8_##NUM[i]) \
- __builtin_abort (); \
+ array6_##NUM[i] \
+ = (TYPE) (-(array1_##NUM[i] * array2_##NUM[i]) - array6_##NUM[i]); \
+ if (array3_##NUM[i] != array6_##NUM[i]) \
+ __builtin_abort (); \
+ array7_##NUM[i] \
+ = (TYPE) (array1_##NUM[i] * array6_##NUM[i] - array7_##NUM[i]); \
+ if (array4_##NUM[i] != array7_##NUM[i]) \
+ __builtin_abort (); \
+ array8_##NUM[i] \
+ = (TYPE) (array2_##NUM[i] * array7_##NUM[i] - array8_##NUM[i]); \
+ if (array5_##NUM[i] != array8_##NUM[i]) \
+ __builtin_abort (); \
} \
}
@@ -50,6 +52,6 @@ int __attribute__ ((optimize (0))) main ()
TEST_LOOP (_Float16, 16)
TEST_LOOP (_Float16, 77)
TEST_LOOP (_Float16, 128)
- TEST_LOOP (_Float16, 795)
+ TEST_LOOP (_Float16, 299)
return 0;
}
diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/ternop/ternop_run_zvfh-12.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/ternop/ternop_run_zvfh-12.c
index 51b77da..29b1683 100644
--- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/ternop/ternop_run_zvfh-12.c
+++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/ternop/ternop_run_zvfh-12.c
@@ -1,4 +1,4 @@
-/* { dg-do run { target { riscv_v && riscv_zvfh_hw } } } */
+/* { dg-do run { target { riscv_v && riscv_zvfh } } } */
/* { dg-additional-options "--param=riscv-autovec-preference=scalable -ffast-math" } */
#include "ternop-12.c"
@@ -15,32 +15,34 @@
TYPE array8_##NUM[NUM] = {}; \
for (int i = 0; i < NUM; ++i) \
{ \
- array1_##NUM[i] = (i & 1) + 5; \
- array2_##NUM[i] = i - NUM / 3; \
- array3_##NUM[i] = NUM - NUM / 3 - i; \
- array6_##NUM[i] = NUM - NUM / 3 - i; \
- array4_##NUM[i] = NUM - NUM / 2 + i; \
- array7_##NUM[i] = NUM - NUM / 2 + i; \
- array5_##NUM[i] = NUM + i * 7; \
- array8_##NUM[i] = NUM + i * 7; \
- asm volatile("" ::: "memory"); \
+ int val = NUM / 18.3; \
+ int val2 = i / 18.7; \
+ array1_##NUM[i] = (i & 1) + 5; \
+ array2_##NUM[i] = val2 - val / 3; \
+ array3_##NUM[i] = val - val / 3 - val2; \
+ array6_##NUM[i] = val - val / 3 - val2; \
+ array4_##NUM[i] = val - val / 2 + val2; \
+ array7_##NUM[i] = val - val / 2 + val2; \
+ array5_##NUM[i] = val + val2; \
+ array8_##NUM[i] = val + val2; \
+ asm volatile ("" ::: "memory"); \
} \
ternop_##TYPE (array3_##NUM, array4_##NUM, array5_##NUM, array1_##NUM, \
- array2_##NUM, NUM); \
+ array2_##NUM, NUM); \
for (int i = 0; i < NUM; i++) \
{ \
- array6_##NUM[i] \
- = (TYPE) (-(array1_##NUM[i] * array2_##NUM[i]) - array7_##NUM[i]); \
- if (array3_##NUM[i] != array6_##NUM[i]) \
- __builtin_abort (); \
- array7_##NUM[i] \
- = (TYPE) (array1_##NUM[i] * array6_##NUM[i] - array7_##NUM[i]); \
- if (array4_##NUM[i] != array7_##NUM[i]) \
- __builtin_abort (); \
- array8_##NUM[i] \
- = (TYPE) (array2_##NUM[i] * array7_##NUM[i] - array8_##NUM[i]); \
- if (array5_##NUM[i] != array8_##NUM[i]) \
- __builtin_abort (); \
+ array6_##NUM[i] \
+ = (TYPE) (-(array1_##NUM[i] * array2_##NUM[i]) - array7_##NUM[i]); \
+ if (array3_##NUM[i] != array6_##NUM[i]) \
+ __builtin_abort (); \
+ array7_##NUM[i] \
+ = (TYPE) (array1_##NUM[i] * array6_##NUM[i] - array7_##NUM[i]); \
+ if (array4_##NUM[i] != array7_##NUM[i]) \
+ __builtin_abort (); \
+ array8_##NUM[i] \
+ = (TYPE) (array2_##NUM[i] * array7_##NUM[i] - array8_##NUM[i]); \
+ if (array5_##NUM[i] != array8_##NUM[i]) \
+ __builtin_abort (); \
} \
}
@@ -50,6 +52,5 @@ int __attribute__ ((optimize (0))) main ()
TEST_LOOP (_Float16, 16)
TEST_LOOP (_Float16, 77)
TEST_LOOP (_Float16, 128)
- TEST_LOOP (_Float16, 795)
return 0;
}
diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/ternop/ternop_run_zvfh-2.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/ternop/ternop_run_zvfh-2.c
index e069a8c..3f9036c 100644
--- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/ternop/ternop_run_zvfh-2.c
+++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/ternop/ternop_run_zvfh-2.c
@@ -1,4 +1,4 @@
-/* { dg-do run { target { riscv_v && riscv_zvfh_hw } } } */
+/* { dg-do run { target { riscv_v && riscv_zvfh } } } */
/* { dg-additional-options "--param=riscv-autovec-preference=scalable -ffast-math" } */
#include "ternop-2.c"
@@ -15,15 +15,17 @@
TYPE array8_##NUM[NUM] = {}; \
for (int i = 0; i < NUM; ++i) \
{ \
+ int val = NUM / 18.3; \
+ int val2 = i / 18.7; \
array1_##NUM[i] = (i & 1) + 5; \
- array2_##NUM[i] = i - NUM / 3; \
- array3_##NUM[i] = NUM - NUM / 3 - i; \
- array6_##NUM[i] = NUM - NUM / 3 - i; \
- array4_##NUM[i] = NUM - NUM / 2 + i; \
- array7_##NUM[i] = NUM - NUM / 2 + i; \
- array5_##NUM[i] = NUM + i * 7; \
- array8_##NUM[i] = NUM + i * 7; \
- asm volatile("" ::: "memory"); \
+ array2_##NUM[i] = val2 - val / 3; \
+ array3_##NUM[i] = val - val / 3 - val2; \
+ array6_##NUM[i] = val - val / 3 - val2; \
+ array4_##NUM[i] = val - val / 2 + val2; \
+ array7_##NUM[i] = val - val / 2 + val2; \
+ array5_##NUM[i] = val + val2; \
+ array8_##NUM[i] = val + val2; \
+ asm volatile ("" ::: "memory"); \
} \
ternop_##TYPE (array3_##NUM, array4_##NUM, array5_##NUM, array1_##NUM, \
array2_##NUM, NUM); \
@@ -48,8 +50,8 @@ int __attribute__ ((optimize (0))) main ()
{
TEST_LOOP (_Float16, 7)
TEST_LOOP (_Float16, 16)
- TEST_LOOP (_Float16, 77)
+ TEST_LOOP (_Float16, 94)
TEST_LOOP (_Float16, 128)
- TEST_LOOP (_Float16, 795)
+ TEST_LOOP (_Float16, 199)
return 0;
}
diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/ternop/ternop_run_zvfh-3.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/ternop/ternop_run_zvfh-3.c
index 8b3994d..e9ad951 100644
--- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/ternop/ternop_run_zvfh-3.c
+++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/ternop/ternop_run_zvfh-3.c
@@ -1,4 +1,4 @@
-/* { dg-do run { target { riscv_v && riscv_zvfh_hw } } } */
+/* { dg-do run { target { riscv_v && riscv_zvfh } } } */
/* { dg-additional-options "--param=riscv-autovec-preference=scalable -ffast-math" } */
#include "ternop-3.c"
@@ -15,15 +15,17 @@
TYPE array8_##NUM[NUM] = {}; \
for (int i = 0; i < NUM; ++i) \
{ \
+ int val = NUM / 18.3; \
+ int val2 = i / 18.7; \
array1_##NUM[i] = (i & 1) + 5; \
- array2_##NUM[i] = i - NUM / 3; \
- array3_##NUM[i] = NUM - NUM / 3 - i; \
- array6_##NUM[i] = NUM - NUM / 3 - i; \
- array4_##NUM[i] = NUM - NUM / 2 + i; \
- array7_##NUM[i] = NUM - NUM / 2 + i; \
- array5_##NUM[i] = NUM + i * 7; \
- array8_##NUM[i] = NUM + i * 7; \
- asm volatile("" ::: "memory"); \
+ array2_##NUM[i] = val2 - val / 3; \
+ array3_##NUM[i] = val - val / 3 - val2; \
+ array6_##NUM[i] = val - val / 3 - val2; \
+ array4_##NUM[i] = val - val / 2 + val2; \
+ array7_##NUM[i] = val - val / 2 + val2; \
+ array5_##NUM[i] = val + val2; \
+ array8_##NUM[i] = val + val2; \
+ asm volatile ("" ::: "memory"); \
} \
ternop_##TYPE (array3_##NUM, array4_##NUM, array5_##NUM, array1_##NUM, \
array2_##NUM, NUM); \
@@ -50,6 +52,5 @@ int __attribute__ ((optimize (0))) main ()
TEST_LOOP (_Float16, 16)
TEST_LOOP (_Float16, 77)
TEST_LOOP (_Float16, 128)
- TEST_LOOP (_Float16, 795)
return 0;
}
diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/ternop/ternop_run_zvfh-4.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/ternop/ternop_run_zvfh-4.c
index ef5bf49..fb0cb1f 100644
--- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/ternop/ternop_run_zvfh-4.c
+++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/ternop/ternop_run_zvfh-4.c
@@ -1,4 +1,4 @@
-/* { dg-do run { target { riscv_v && riscv_zvfh_hw } } } */
+/* { dg-do run { target { riscv_v && riscv_zvfh } } } */
/* { dg-additional-options "--param=riscv-autovec-preference=scalable -ffast-math" } */
#include "ternop-4.c"
@@ -30,6 +30,6 @@ int __attribute__ ((optimize (0))) main ()
TEST_LOOP (_Float16, 16)
TEST_LOOP (_Float16, 77)
TEST_LOOP (_Float16, 128)
- TEST_LOOP (_Float16, 795)
+ TEST_LOOP (_Float16, 299)
return 0;
}
diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/ternop/ternop_run_zvfh-5.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/ternop/ternop_run_zvfh-5.c
index 67fc570c..06f6dbd 100644
--- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/ternop/ternop_run_zvfh-5.c
+++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/ternop/ternop_run_zvfh-5.c
@@ -1,4 +1,4 @@
-/* { dg-do run { target { riscv_v && riscv_zvfh_hw } } } */
+/* { dg-do run { target { riscv_v && riscv_zvfh } } } */
/* { dg-additional-options "--param=riscv-autovec-preference=scalable -ffast-math" } */
#include "ternop-5.c"
@@ -15,32 +15,34 @@
TYPE array8_##NUM[NUM] = {}; \
for (int i = 0; i < NUM; ++i) \
{ \
- array1_##NUM[i] = (i & 1) + 5; \
- array2_##NUM[i] = i - NUM / 3; \
- array3_##NUM[i] = NUM - NUM / 3 - i; \
- array6_##NUM[i] = NUM - NUM / 3 - i; \
- array4_##NUM[i] = NUM - NUM / 2 + i; \
- array7_##NUM[i] = NUM - NUM / 2 + i; \
- array5_##NUM[i] = NUM + i * 7; \
- array8_##NUM[i] = NUM + i * 7; \
- asm volatile("" ::: "memory"); \
+ int val = NUM / 18.3; \
+ int val2 = i / 18.7; \
+ array1_##NUM[i] = (i & 1) + 5; \
+ array2_##NUM[i] = val2 - val / 3; \
+ array3_##NUM[i] = val - val / 3 - val2; \
+ array6_##NUM[i] = val - val / 3 - val2; \
+ array4_##NUM[i] = val - val / 2 + val2; \
+ array7_##NUM[i] = val - val / 2 + val2; \
+ array5_##NUM[i] = val + val2 * 2; \
+ array8_##NUM[i] = val + val2 * 2; \
+ asm volatile ("" ::: "memory"); \
} \
ternop_##TYPE (array3_##NUM, array4_##NUM, array5_##NUM, array1_##NUM, \
- array2_##NUM, NUM); \
+ array2_##NUM, NUM); \
for (int i = 0; i < NUM; i++) \
{ \
- array6_##NUM[i] \
- = (TYPE) (-(array1_##NUM[i] * array2_##NUM[i]) + array6_##NUM[i]); \
- if (array3_##NUM[i] != array6_##NUM[i]) \
- __builtin_abort (); \
- array7_##NUM[i] \
- = (TYPE) (array1_##NUM[i] * array6_##NUM[i] + array7_##NUM[i]); \
- if (array4_##NUM[i] != array7_##NUM[i]) \
- __builtin_abort (); \
- array8_##NUM[i] \
- = (TYPE) (array2_##NUM[i] * array7_##NUM[i] + array8_##NUM[i]); \
- if (array5_##NUM[i] != array8_##NUM[i]) \
- __builtin_abort (); \
+ array6_##NUM[i] \
+ = (TYPE) (-(array1_##NUM[i] * array2_##NUM[i]) + array6_##NUM[i]); \
+ if (array3_##NUM[i] != array6_##NUM[i]) \
+ __builtin_abort (); \
+ array7_##NUM[i] \
+ = (TYPE) (array1_##NUM[i] * array6_##NUM[i] + array7_##NUM[i]); \
+ if (array4_##NUM[i] != array7_##NUM[i]) \
+ __builtin_abort (); \
+ array8_##NUM[i] \
+ = (TYPE) (array2_##NUM[i] * array7_##NUM[i] + array8_##NUM[i]); \
+ if (array5_##NUM[i] != array8_##NUM[i]) \
+ __builtin_abort (); \
} \
}
@@ -50,6 +52,6 @@ int __attribute__ ((optimize (0))) main ()
TEST_LOOP (_Float16, 16)
TEST_LOOP (_Float16, 77)
TEST_LOOP (_Float16, 128)
- TEST_LOOP (_Float16, 795)
+ TEST_LOOP (_Float16, 299)
return 0;
}
diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/ternop/ternop_run_zvfh-6.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/ternop/ternop_run_zvfh-6.c
index d036184..b7f931e 100644
--- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/ternop/ternop_run_zvfh-6.c
+++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/ternop/ternop_run_zvfh-6.c
@@ -1,4 +1,4 @@
-/* { dg-do run { target { riscv_v && riscv_zvfh_hw } } } */
+/* { dg-do run { target { riscv_v && riscv_zvfh } } } */
/* { dg-additional-options "--param=riscv-autovec-preference=scalable -ffast-math" } */
#include "ternop-6.c"
@@ -15,32 +15,34 @@
TYPE array8_##NUM[NUM] = {}; \
for (int i = 0; i < NUM; ++i) \
{ \
- array1_##NUM[i] = (i & 1) + 5; \
- array2_##NUM[i] = i - NUM / 3; \
- array3_##NUM[i] = NUM - NUM / 3 - i; \
- array6_##NUM[i] = NUM - NUM / 3 - i; \
- array4_##NUM[i] = NUM - NUM / 2 + i; \
- array7_##NUM[i] = NUM - NUM / 2 + i; \
- array5_##NUM[i] = NUM + i * 7; \
- array8_##NUM[i] = NUM + i * 7; \
- asm volatile("" ::: "memory"); \
+ int val = NUM / 18.3; \
+ int val2 = i / 18.7; \
+ array1_##NUM[i] = (i & 1) + 5; \
+ array2_##NUM[i] = val2 - val / 3; \
+ array3_##NUM[i] = val - val / 3 - val2; \
+ array6_##NUM[i] = val - val / 3 - val2; \
+ array4_##NUM[i] = val - val / 2 + val2; \
+ array7_##NUM[i] = val - val / 2 + val2; \
+ array5_##NUM[i] = val + val2; \
+ array8_##NUM[i] = val + val2; \
+ asm volatile ("" ::: "memory"); \
} \
ternop_##TYPE (array3_##NUM, array4_##NUM, array5_##NUM, array1_##NUM, \
- array2_##NUM, NUM); \
+ array2_##NUM, NUM); \
for (int i = 0; i < NUM; i++) \
{ \
- array6_##NUM[i] \
- = (TYPE) (-(array1_##NUM[i] * array2_##NUM[i]) + array7_##NUM[i]); \
- if (array3_##NUM[i] != array6_##NUM[i]) \
- __builtin_abort (); \
- array7_##NUM[i] \
- = (TYPE) (array1_##NUM[i] * array6_##NUM[i] + array7_##NUM[i]); \
- if (array4_##NUM[i] != array7_##NUM[i]) \
- __builtin_abort (); \
- array8_##NUM[i] \
- = (TYPE) (array2_##NUM[i] * array7_##NUM[i] + array8_##NUM[i]); \
- if (array5_##NUM[i] != array8_##NUM[i]) \
- __builtin_abort (); \
+ array6_##NUM[i] \
+ = (TYPE) (-(array1_##NUM[i] * array2_##NUM[i]) + array7_##NUM[i]); \
+ if (array3_##NUM[i] != array6_##NUM[i]) \
+ __builtin_abort (); \
+ array7_##NUM[i] \
+ = (TYPE) (array1_##NUM[i] * array6_##NUM[i] + array7_##NUM[i]); \
+ if (array4_##NUM[i] != array7_##NUM[i]) \
+ __builtin_abort (); \
+ array8_##NUM[i] \
+ = (TYPE) (array2_##NUM[i] * array7_##NUM[i] + array8_##NUM[i]); \
+ if (array5_##NUM[i] != array8_##NUM[i]) \
+ __builtin_abort (); \
} \
}
@@ -50,6 +52,6 @@ int __attribute__ ((optimize (0))) main ()
TEST_LOOP (_Float16, 16)
TEST_LOOP (_Float16, 77)
TEST_LOOP (_Float16, 128)
- TEST_LOOP (_Float16, 795)
+ TEST_LOOP (_Float16, 299)
return 0;
}
diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/ternop/ternop_run_zvfh-7.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/ternop/ternop_run_zvfh-7.c
index 7838406..3a712fd 100644
--- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/ternop/ternop_run_zvfh-7.c
+++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/ternop/ternop_run_zvfh-7.c
@@ -1,4 +1,4 @@
-/* { dg-do run { target { riscv_v && riscv_zvfh_hw } } } */
+/* { dg-do run { target { riscv_v && riscv_zvfh } } } */
/* { dg-additional-options "--param=riscv-autovec-preference=scalable -ffast-math" } */
#include "ternop-7.c"
@@ -30,6 +30,6 @@ int __attribute__ ((optimize (0))) main ()
TEST_LOOP (_Float16, 16)
TEST_LOOP (_Float16, 77)
TEST_LOOP (_Float16, 128)
- TEST_LOOP (_Float16, 795)
+ TEST_LOOP (_Float16, 299)
return 0;
}
diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/ternop/ternop_run_zvfh-8.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/ternop/ternop_run_zvfh-8.c
index ec2907b3..f01cf6d 100644
--- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/ternop/ternop_run_zvfh-8.c
+++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/ternop/ternop_run_zvfh-8.c
@@ -1,4 +1,4 @@
-/* { dg-do run { target { riscv_v && riscv_zvfh_hw } } } */
+/* { dg-do run { target { riscv_v && riscv_zvfh } } } */
/* { dg-additional-options "--param=riscv-autovec-preference=scalable -ffast-math" } */
#include "ternop-8.c"
@@ -15,15 +15,17 @@
TYPE array8_##NUM[NUM] = {}; \
for (int i = 0; i < NUM; ++i) \
{ \
+ int val = NUM / 18.3; \
+ int val2 = i / 18.7; \
array1_##NUM[i] = (i & 1) + 5; \
- array2_##NUM[i] = i - NUM / 3; \
- array3_##NUM[i] = NUM - NUM / 3 - i; \
- array6_##NUM[i] = NUM - NUM / 3 - i; \
- array4_##NUM[i] = NUM - NUM / 2 + i; \
- array7_##NUM[i] = NUM - NUM / 2 + i; \
- array5_##NUM[i] = NUM + i * 7; \
- array8_##NUM[i] = NUM + i * 7; \
- asm volatile("" ::: "memory"); \
+ array2_##NUM[i] = val2 - val / 3; \
+ array3_##NUM[i] = val - val2 / 3 - val2; \
+ array6_##NUM[i] = val - val2 / 3 - val2; \
+ array4_##NUM[i] = val - val2 / 2 + val2; \
+ array7_##NUM[i] = val - val2 / 2 + val2; \
+ array5_##NUM[i] = val + val2; \
+ array8_##NUM[i] = val + val2; \
+ asm volatile ("" ::: "memory"); \
} \
ternop_##TYPE (array3_##NUM, array4_##NUM, array5_##NUM, array1_##NUM, \
array2_##NUM, NUM); \
@@ -50,6 +52,5 @@ int __attribute__ ((optimize (0))) main ()
TEST_LOOP (_Float16, 16)
TEST_LOOP (_Float16, 77)
TEST_LOOP (_Float16, 128)
- TEST_LOOP (_Float16, 795)
return 0;
}
diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/ternop/ternop_run_zvfh-9.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/ternop/ternop_run_zvfh-9.c
index a855e0c..eb8a105 100644
--- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/ternop/ternop_run_zvfh-9.c
+++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/ternop/ternop_run_zvfh-9.c
@@ -1,4 +1,4 @@
-/* { dg-do run { target { riscv_v && riscv_zvfh_hw } } } */
+/* { dg-do run { target { riscv_v && riscv_zvfh } } } */
/* { dg-additional-options "--param=riscv-autovec-preference=scalable -ffast-math" } */
#include "ternop-9.c"
@@ -15,15 +15,17 @@
TYPE array8_##NUM[NUM] = {}; \
for (int i = 0; i < NUM; ++i) \
{ \
+ int val = NUM / 18.3; \
+ int val2 = i / 18.7; \
array1_##NUM[i] = (i & 1) + 5; \
- array2_##NUM[i] = i - NUM / 3; \
- array3_##NUM[i] = NUM - NUM / 3 - i; \
- array6_##NUM[i] = NUM - NUM / 3 - i; \
- array4_##NUM[i] = NUM - NUM / 2 + i; \
- array7_##NUM[i] = NUM - NUM / 2 + i; \
- array5_##NUM[i] = NUM + i * 7; \
- array8_##NUM[i] = NUM + i * 7; \
- asm volatile("" ::: "memory"); \
+ array2_##NUM[i] = val2 - val / 3; \
+ array3_##NUM[i] = val - val / 3 - val2; \
+ array6_##NUM[i] = val - val / 3 - val2; \
+ array4_##NUM[i] = val - val / 2 + val2; \
+ array7_##NUM[i] = val - val / 2 + val2; \
+ array5_##NUM[i] = val + val2; \
+ array8_##NUM[i] = val + val2; \
+ asm volatile ("" ::: "memory"); \
} \
ternop_##TYPE (array3_##NUM, array4_##NUM, array5_##NUM, array1_##NUM, \
array2_##NUM, NUM); \
@@ -50,6 +52,6 @@ int __attribute__ ((optimize (0))) main ()
TEST_LOOP (_Float16, 16)
TEST_LOOP (_Float16, 77)
TEST_LOOP (_Float16, 128)
- TEST_LOOP (_Float16, 795)
+ TEST_LOOP (_Float16, 299)
return 0;
}
diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/unop/vfsqrt-run.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/unop/vfsqrt-run.c
index 427252c..739d197 100644
--- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/unop/vfsqrt-run.c
+++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/unop/vfsqrt-run.c
@@ -3,28 +3,26 @@
#include "vfsqrt-template.h"
-#include <assert.h>
-
#define SZ 255
#define EPS 1e-5
-#define RUN(TYPE) \
- TYPE a##TYPE[SZ]; \
- for (int i = 0; i < SZ; i++) \
- { \
- a##TYPE[i] = (TYPE)i; \
- } \
- vsqrt_##TYPE (a##TYPE, a##TYPE, SZ); \
- for (int i = 0; i < SZ; i++) \
- assert (__builtin_fabs \
- (a##TYPE[i] - __builtin_sqrtf ((TYPE)i)) < EPS); \
+#define RUN(TYPE, SUFFIX) \
+ TYPE a##TYPE[SZ]; \
+ for (int i = 0; i < SZ; i++) \
+ a##TYPE[i] = (TYPE) i; \
+ vsqrt_##TYPE (a##TYPE, a##TYPE, SZ); \
+ for (int i = 0; i < SZ; i++) \
+ if (__builtin_fabs##SUFFIX (a##TYPE[i] \
+ - __builtin_sqrt##SUFFIX ((TYPE) i)) \
+ > EPS) \
+ __builtin_abort ();
-#define RUN_ALL() \
- RUN(float) \
- RUN(double) \
+#define RUN_ALL() \
+ RUN (float, f) \
+ RUN (double, )
int main ()
{
- RUN_ALL()
+ RUN_ALL ()
}
diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/unop/vfsqrt-rv32gcv.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/unop/vfsqrt-rv32gcv.c
index a1874c8..dc3f7c4 100644
--- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/unop/vfsqrt-rv32gcv.c
+++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/unop/vfsqrt-rv32gcv.c
@@ -7,6 +7,6 @@
it here instead of in the template directly (which is also
included by the run test that might need to be linked without
the extension). */
-TEST_TYPE3(_Float16)
+TEST_TYPE (_Float16, f16)
/* { dg-final { scan-assembler-times {\tvfsqrt\.v} 3 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/unop/vfsqrt-rv64gcv.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/unop/vfsqrt-rv64gcv.c
index 955621d..31d9975 100644
--- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/unop/vfsqrt-rv64gcv.c
+++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/unop/vfsqrt-rv64gcv.c
@@ -7,6 +7,6 @@
it here instead of in the template directly (which is also
included by the run test that might need to be linked without
the extension). */
-TEST_TYPE3(_Float16)
+TEST_TYPE (_Float16, f16)
/* { dg-final { scan-assembler-times {\tvfsqrt\.v} 3 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/unop/vfsqrt-template.h b/gcc/testsuite/gcc.target/riscv/rvv/autovec/unop/vfsqrt-template.h
index 314ea64..473792d 100644
--- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/unop/vfsqrt-template.h
+++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/unop/vfsqrt-template.h
@@ -1,31 +1,15 @@
#include <stdint-gcc.h>
-#define TEST_TYPE(TYPE) \
+#define TEST_TYPE(TYPE, SUFFIX) \
__attribute__((noipa)) \
void vsqrt_##TYPE (TYPE *dst, TYPE *a, int n) \
{ \
for (int i = 0; i < n; i++) \
- dst[i] = __builtin_sqrtf (a[i]); \
- }
-
-#define TEST_TYPE2(TYPE) \
- __attribute__((noipa)) \
- void vsqrt_##TYPE (TYPE *dst, TYPE *a, int n) \
- { \
- for (int i = 0; i < n; i++) \
- dst[i] = __builtin_sqrt (a[i]); \
- }
-
-#define TEST_TYPE3(TYPE) \
- __attribute__((noipa)) \
- void vsqrt_##TYPE (TYPE *dst, TYPE *a, int n) \
- { \
- for (int i = 0; i < n; i++) \
- dst[i] = __builtin_sqrtf16 (a[i]); \
+ dst[i] = __builtin_sqrt##SUFFIX (a[i]); \
}
#define TEST_ALL() \
- TEST_TYPE(float) \
- TEST_TYPE2(double) \
+ TEST_TYPE(float, f) \
+ TEST_TYPE(double, ) \
TEST_ALL()
diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/unop/vfsqrt-zvfh-run.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/unop/vfsqrt-zvfh-run.c
index 5849e48..c974ef0 100644
--- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/unop/vfsqrt-zvfh-run.c
+++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/unop/vfsqrt-zvfh-run.c
@@ -1,31 +1,31 @@
-/* { dg-do run { target { riscv_zvfh_hw } } } */
+/* { dg-do run { target { riscv_zvfh && riscv_zfh } } } */
/* { dg-additional-options "-std=c99 -fno-vect-cost-model --param=riscv-autovec-preference=fixed-vlmax -ffast-math" } */
#include "vfsqrt-template.h"
/* We cannot link this without the Zvfh extension so define
it here instead of in the template directly. */
-TEST_TYPE3(_Float16)
-
-#include <assert.h>
+TEST_TYPE(_Float16, f16)
#define SZ 255
#define EPS 1e-5
-#define RUN(TYPE) \
- TYPE a##TYPE[SZ]; \
- for (int i = 0; i < SZ; i++) \
- { \
- a##TYPE[i] = (TYPE)i; \
- } \
- vsqrt_##TYPE (a##TYPE, a##TYPE, SZ); \
- for (int i = 0; i < SZ; i++) \
- assert (__builtin_fabs \
- (a##TYPE[i] - __builtin_sqrtf ((TYPE)i)) < EPS); \
-
-#define RUN_ALL() \
- RUN(_Float16) \
+#define RUN(TYPE, SUFFIX) \
+ TYPE a##TYPE[SZ]; \
+ for (int i = 0; i < SZ; i++) \
+ { \
+ a##TYPE[i] = (TYPE) i; \
+ } \
+ vsqrt_##TYPE (a##TYPE, a##TYPE, SZ); \
+ for (int i = 0; i < SZ; i++) \
+ if (__builtin_fabs##SUFFIX (a##TYPE[i] \
+ - __builtin_sqrt##SUFFIX ((TYPE) i)) \
+ > EPS) \
+ __builtin_abort ();
+
+#define RUN_ALL() \
+ RUN (_Float16, f16)
int main ()
{
diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls-vlmax/vec_extract-zvfh-run.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls-vlmax/vec_extract-zvfh-run.c
index 365480e..fa8551b 100644
--- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls-vlmax/vec_extract-zvfh-run.c
+++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls-vlmax/vec_extract-zvfh-run.c
@@ -1,5 +1,5 @@
-/* { dg-do run {target { riscv_zvfh_hw } } } */
-/* { dg-additional-options "-Wno-pedantic" } */
+/* { dg-do run {target { riscv_zvfh } } } */
+/* { dg-additional-options "-std=gnu99 -Wno-pedantic" } */
#include <assert.h>
diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls-vlmax/vec_set-zvfh-run.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls-vlmax/vec_set-zvfh-run.c
index 7e5a73a..98e673f 100644
--- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls-vlmax/vec_set-zvfh-run.c
+++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls-vlmax/vec_set-zvfh-run.c
@@ -1,5 +1,5 @@
-/* { dg-do run { target { riscv_zvfh_hw } } } */
-/* { dg-additional-options "-Wno-pedantic" } */
+/* { dg-do run { target { riscv_zvfh } } } */
+/* { dg-additional-options "-std=gnu99 -Wno-pedantic" } */
#include <assert.h>