]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
RISC-V: testsuite: Fix 32-bit FAILs.
authorRobin Dapp <rdapp@ventanamicro.com>
Fri, 10 Nov 2023 09:03:30 +0000 (10:03 +0100)
committerRobin Dapp <rdapp@ventanamicro.com>
Fri, 10 Nov 2023 13:43:35 +0000 (14:43 +0100)
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.

33 files changed:
gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vmul-zvfh-run.c
gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vsub-zvfh-run.c
gcc/testsuite/gcc.target/riscv/rvv/autovec/cond/cond_narrow_shift_run-3.c
gcc/testsuite/gcc.target/riscv/rvv/autovec/cond/pr111401.c
gcc/testsuite/gcc.target/riscv/rvv/autovec/conversions/vfcvt-itof-zvfh-run.c
gcc/testsuite/gcc.target/riscv/rvv/autovec/conversions/vfcvt_rtz-zvfh-run.c
gcc/testsuite/gcc.target/riscv/rvv/autovec/conversions/vfncvt-ftoi-zvfh-run.c
gcc/testsuite/gcc.target/riscv/rvv/autovec/conversions/vfncvt-itof-template.h
gcc/testsuite/gcc.target/riscv/rvv/autovec/conversions/vfncvt-itof-zvfh-run.c
gcc/testsuite/gcc.target/riscv/rvv/autovec/conversions/vfncvt-zvfh-run.c
gcc/testsuite/gcc.target/riscv/rvv/autovec/conversions/vfwcvt-ftoi-zvfh-run.c
gcc/testsuite/gcc.target/riscv/rvv/autovec/conversions/vfwcvt-itof-zvfh-run.c
gcc/testsuite/gcc.target/riscv/rvv/autovec/conversions/vfwcvt-zvfh-run.c
gcc/testsuite/gcc.target/riscv/rvv/autovec/slp-mask-run-1.c
gcc/testsuite/gcc.target/riscv/rvv/autovec/ternop/ternop_run_zvfh-1.c
gcc/testsuite/gcc.target/riscv/rvv/autovec/ternop/ternop_run_zvfh-10.c
gcc/testsuite/gcc.target/riscv/rvv/autovec/ternop/ternop_run_zvfh-11.c
gcc/testsuite/gcc.target/riscv/rvv/autovec/ternop/ternop_run_zvfh-12.c
gcc/testsuite/gcc.target/riscv/rvv/autovec/ternop/ternop_run_zvfh-2.c
gcc/testsuite/gcc.target/riscv/rvv/autovec/ternop/ternop_run_zvfh-3.c
gcc/testsuite/gcc.target/riscv/rvv/autovec/ternop/ternop_run_zvfh-4.c
gcc/testsuite/gcc.target/riscv/rvv/autovec/ternop/ternop_run_zvfh-5.c
gcc/testsuite/gcc.target/riscv/rvv/autovec/ternop/ternop_run_zvfh-6.c
gcc/testsuite/gcc.target/riscv/rvv/autovec/ternop/ternop_run_zvfh-7.c
gcc/testsuite/gcc.target/riscv/rvv/autovec/ternop/ternop_run_zvfh-8.c
gcc/testsuite/gcc.target/riscv/rvv/autovec/ternop/ternop_run_zvfh-9.c
gcc/testsuite/gcc.target/riscv/rvv/autovec/unop/vfsqrt-run.c
gcc/testsuite/gcc.target/riscv/rvv/autovec/unop/vfsqrt-rv32gcv.c
gcc/testsuite/gcc.target/riscv/rvv/autovec/unop/vfsqrt-rv64gcv.c
gcc/testsuite/gcc.target/riscv/rvv/autovec/unop/vfsqrt-template.h
gcc/testsuite/gcc.target/riscv/rvv/autovec/unop/vfsqrt-zvfh-run.c
gcc/testsuite/gcc.target/riscv/rvv/autovec/vls-vlmax/vec_extract-zvfh-run.c
gcc/testsuite/gcc.target/riscv/rvv/autovec/vls-vlmax/vec_set-zvfh-run.c

index a4271810e587cd775bda9e8a87900a7a3b5230bc..1082695c5dec346f38a116d16febd500d57823e8 100644 (file)
@@ -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()      \
index c996ce81270b654307e5b4d68dfb4b36c87c3899..b438beafeb967b4b1b6cc739532af008bb6bd468 100644 (file)
@@ -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)      \
index 27f9b686b38376ed07701091b566743ff605e41d..0fcf2c5ca0fcc7373520c5edcfc17caf88e11140 100644 (file)
@@ -3,7 +3,7 @@
 
 #include "cond_narrow_shift-3.c"
 
-#define N 99
+#define N 61
 
 #define TEST_LOOP(TYPE1, TYPE2)                                                \
   {                                                                            \
index 83dbd61b3f30ea7e0ed8007a34c7de050668a92a..f593db3192adff59ff8c0ad58260c54ddc2a101f 100644 (file)
@@ -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))
index f30e55bf7f7f75c390fd3e4c61e3173ba0d385d0..bd85f3f581424cdc95e326112103019e993e0265 100644 (file)
@@ -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"
 
index 637e51a07bd9c84bf0998c102fb9fd3794ef0d51..3164fed03fb40315fbd85918a73a852dd9f71cd2 100644 (file)
@@ -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"
 
index ddbbdf3517932cab74550259c2091bf9989926d0..dbbbb615cc1986d991b07ff45df8d2ba7be8c937 100644 (file)
@@ -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 ();
   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)
index c427cd167f6dad7c14d1dece2a72365dcfed567b..bfc9179f31038a28cf5b9b1691a528ab681a3ba1 100644 (file)
@@ -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 ()
index ea084299d0b939a631f16378db82ee8dde56d807..0342d147de0bfd40fa20cded53c6deb46383cc24 100644 (file)
@@ -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 ()
 {
index 6b8f3b5dfb1e2088cd4f0016fe8110c26fab9add..6eb9f146704c9f304043f390c9d002eb74fd31dd 100644 (file)
@@ -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"
 
index d13d4dd633842562a935d32885db98560de6cf05..3d1165400d3b7da2b8eedea0e9ce57c60be3a397 100644 (file)
@@ -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 ();
index 8289e53523ec2ddf040fec349be2719d19c4cc3e..8df59a9a91d4a3e11fd7dffc21f11a5015f884a1 100644 (file)
@@ -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"
 
index 10c8bdd530fe7af1723fc220e4a8e6200bc4437b..9f2c9835fd6242ff6ef1fbeeb3e54eb1f4954bb0 100644 (file)
@@ -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()
index b3469c41c878a92e413e7ea574930e0ae69664ac..b7d86c6fbb51a874ee21b34d66c9965cf32f7b93 100644 (file)
@@ -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>
index 3ae6e59887729035e2c365bae66a448c07a4950b..6c707e3c6adbe16d00e8e666abc1dbd881d1d1ca 100644 (file)
@@ -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;
 }
index 9b7e0572c681f2a7169ccc5232b3d3b0bbf03cb7..4d57fe56e5b74d30df73a37d55f97c0a9ca036f8 100644 (file)
@@ -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;
 }
index 7a35d852ede655fb5fb5f82bd9ebfb4ef708f73c..80f1d54aefa7d3287de624eceaf3b57a51b34cd9 100644 (file)
@@ -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"
     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;
 }
index 51b77da0d5da438650689f2b467a832a5c64800a..29b1683ff67a52f1c3a93b94c42334a7366cecc6 100644 (file)
@@ -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"
     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;
 }
index e069a8c7c149840fff8e1fbca9959cb4ce3fe902..3f9036c2868329dafbab32055236d3c28611ca3f 100644 (file)
@@ -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"
     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;
 }
index 8b3994dad96e700ff93cc4ed5820a9cc01a96b1e..e9ad951e62febaae2dad16a421ea8f3aeb9cc122 100644 (file)
@@ -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"
     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;
 }
index ef5bf498e3fc3a995832e459258766ab37a1c336..fb0cb1fef6b718fa2e9c9f30796ab71805cc911d 100644 (file)
@@ -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;
 }
index 67fc570c6e3134bea13ee05f0c6a2fbfb59d3ba6..06f6dbd1dbf9ae8df5aae4e9d8788dd7ce3c9a60 100644 (file)
@@ -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"
     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;
 }
index d036184963972fdbf16edf4c3ad37bd65db47da8..b7f931e9d7831ecb204d38e31c27ffabdd8cbc9f 100644 (file)
@@ -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"
     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;
 }
index 7838406eba729547bea42b0132ad1811508df6b4..3a712fd0dcbc3d8cc74f289fadcc7e76ea36fd46 100644 (file)
@@ -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;
 }
index ec2907b3f25c1f57ccbcc1a8c651c2f92fbd47ac..f01cf6d964569a7802a59f5c2708af66052d0aaf 100644 (file)
@@ -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"
     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;
 }
index a855e0cc77f40dd622468b147f888256c6e99290..eb8a105d0f14f3df4382e0713c9b6269b7fcb3a3 100644 (file)
@@ -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"
     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;
 }
index 427252c81a3bfb17f69d4ebe313ec0974806a8a0..739d197322918299b1f4c090545e58ac6b1b86a7 100644 (file)
@@ -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 ()
 }
index a1874c8f9f0d461071c5bfede4c30112fdcb6b26..dc3f7c49e2401cfa09f12885012b900efe3f5f80 100644 (file)
@@ -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 } } */
index 955621d4bcde1137d6f4619115a1a7520dc215af..31d99756f020fa12ea8c174f40f6f83ea8942bee 100644 (file)
@@ -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 } } */
index 314ea646becad39f143e1af64376ef2405779092..473792d0f1b38b3bde832b29f8e59488b5ef2e7c 100644 (file)
@@ -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()
index 5849e486047a856962aac4988b09fdcb8c238c22..c974ef090bacde5ce52ab8ce37e715118270c6b4 100644 (file)
@@ -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 ()
 {
index 365480ec254a15b07d80335be15250864b6f2894..fa8551b158b5006316da7f2d267d82ace103f9f8 100644 (file)
@@ -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>
 
index 7e5a73a5ea8f33e825a4ba43eb51147866fd5f20..98e673f4ad9b05b6efa6b9df927ad0f977879553 100644 (file)
@@ -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>