From cefd4ad06b5756819b5371755bb4b2c4e3967d82 Mon Sep 17 00:00:00 2001 From: Pan Li Date: Fri, 22 Sep 2023 17:10:42 +0800 Subject: RISC-V: Move ceil test cases to unop folder gcc/testsuite/ChangeLog: * gcc.target/riscv/rvv/autovec/math-ceil-0.c: Moved to... * gcc.target/riscv/rvv/autovec/unop/math-ceil-0.c: ...here. * gcc.target/riscv/rvv/autovec/math-ceil-1.c: Moved to... * gcc.target/riscv/rvv/autovec/unop/math-ceil-1.c: ...here. * gcc.target/riscv/rvv/autovec/math-ceil-2.c: Moved to... * gcc.target/riscv/rvv/autovec/unop/math-ceil-2.c: ...here. * gcc.target/riscv/rvv/autovec/math-ceil-3.c: Moved to... * gcc.target/riscv/rvv/autovec/unop/math-ceil-3.c: ...here. * gcc.target/riscv/rvv/autovec/math-ceil-run-0.c: Moved to... * gcc.target/riscv/rvv/autovec/unop/math-ceil-run-0.c: ...here. * gcc.target/riscv/rvv/autovec/math-ceil-run-1.c: Moved to... * gcc.target/riscv/rvv/autovec/unop/math-ceil-run-1.c: ...here. * gcc.target/riscv/rvv/autovec/math-ceil-run-2.c: Moved to... * gcc.target/riscv/rvv/autovec/unop/math-ceil-run-2.c: ...here. * gcc.target/riscv/rvv/autovec/test-math.h: Moved to... * gcc.target/riscv/rvv/autovec/unop/test-math.h: ...here. Signed-off-by: Pan Li --- .../gcc.target/riscv/rvv/autovec/math-ceil-0.c | 26 --------------- .../gcc.target/riscv/rvv/autovec/math-ceil-1.c | 26 --------------- .../gcc.target/riscv/rvv/autovec/math-ceil-2.c | 26 --------------- .../gcc.target/riscv/rvv/autovec/math-ceil-3.c | 28 ---------------- .../gcc.target/riscv/rvv/autovec/math-ceil-run-0.c | 39 ---------------------- .../gcc.target/riscv/rvv/autovec/math-ceil-run-1.c | 39 ---------------------- .../gcc.target/riscv/rvv/autovec/math-ceil-run-2.c | 39 ---------------------- .../gcc.target/riscv/rvv/autovec/test-math.h | 38 --------------------- .../riscv/rvv/autovec/unop/math-ceil-0.c | 26 +++++++++++++++ .../riscv/rvv/autovec/unop/math-ceil-1.c | 26 +++++++++++++++ .../riscv/rvv/autovec/unop/math-ceil-2.c | 26 +++++++++++++++ .../riscv/rvv/autovec/unop/math-ceil-3.c | 28 ++++++++++++++++ .../riscv/rvv/autovec/unop/math-ceil-run-0.c | 39 ++++++++++++++++++++++ .../riscv/rvv/autovec/unop/math-ceil-run-1.c | 39 ++++++++++++++++++++++ .../riscv/rvv/autovec/unop/math-ceil-run-2.c | 39 ++++++++++++++++++++++ .../gcc.target/riscv/rvv/autovec/unop/test-math.h | 38 +++++++++++++++++++++ 16 files changed, 261 insertions(+), 261 deletions(-) delete mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/math-ceil-0.c delete mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/math-ceil-1.c delete mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/math-ceil-2.c delete mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/math-ceil-3.c delete mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/math-ceil-run-0.c delete mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/math-ceil-run-1.c delete mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/math-ceil-run-2.c delete mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/test-math.h create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/unop/math-ceil-0.c create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/unop/math-ceil-1.c create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/unop/math-ceil-2.c create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/unop/math-ceil-3.c create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/unop/math-ceil-run-0.c create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/unop/math-ceil-run-1.c create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/unop/math-ceil-run-2.c create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/unop/test-math.h (limited to 'gcc') diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/math-ceil-0.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/math-ceil-0.c deleted file mode 100644 index 0959afd..0000000 --- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/math-ceil-0.c +++ /dev/null @@ -1,26 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-march=rv64gcv_zvfh -mabi=lp64d -O3 -ftree-vectorize -fno-vect-cost-model -ffast-math -fno-schedule-insns -fno-schedule-insns2" } */ -/* { dg-final { check-function-bodies "**" "" } } */ - -#include "test-math.h" - -/* -** test__Float16___builtin_ceilf16: -** frrm\s+[atx][0-9]+ -** ... -** fsrmi\s+3 -** ... -** vsetvli\s+[atx][0-9]+,\s*zero,\s*e16,\s*m1,\s*ta,\s*mu -** vfabs\.v\s+v[0-9]+,\s*v[0-9]+ -** ... -** vmflt\.vv\s+v0,\s*v[0-9]+,\s*v[0-9]+ -** ... -** vfcvt\.x\.f\.v\s+v[0-9]+,\s*v[0-9]+,\s*v0\.t -** ... -** vfcvt\.f\.x\.v\s+v[0-9]+,\s*v[0-9]+,\s*v0\.t -** vfsgnj\.vv\s+v[0-9]+,v[0-9]+,v[0-9]+ -** ... -** fsrm\s+[atx][0-9]+ -** ... -*/ -TEST_UNARY_CALL (_Float16, __builtin_ceilf16) diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/math-ceil-1.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/math-ceil-1.c deleted file mode 100644 index 142705b..0000000 --- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/math-ceil-1.c +++ /dev/null @@ -1,26 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-march=rv64gcv -mabi=lp64d -O3 -ftree-vectorize -fno-vect-cost-model -ffast-math -fno-schedule-insns -fno-schedule-insns2" } */ -/* { dg-final { check-function-bodies "**" "" } } */ - -#include "test-math.h" - -/* -** test_float___builtin_ceilf: -** frrm\s+[atx][0-9]+ -** ... -** fsrmi\s+3 -** ... -** vsetvli\s+[atx][0-9]+,\s*zero,\s*e32,\s*m1,\s*ta,\s*mu -** vfabs\.v\s+v[0-9]+,\s*v[0-9]+ -** ... -** vmflt\.vv\s+v0,\s*v[0-9]+,\s*v[0-9]+ -** ... -** vfcvt\.x\.f\.v\s+v[0-9]+,\s*v[0-9]+,\s*v0\.t -** ... -** vfcvt\.f\.x\.v\s+v[0-9]+,\s*v[0-9]+,\s*v0\.t -** vfsgnj\.vv\s+v[0-9]+,v[0-9]+,v[0-9]+ -** ... -** fsrm\s+[atx][0-9]+ -** ... -*/ -TEST_UNARY_CALL (float, __builtin_ceilf) diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/math-ceil-2.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/math-ceil-2.c deleted file mode 100644 index d232e36..0000000 --- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/math-ceil-2.c +++ /dev/null @@ -1,26 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-march=rv64gcv -mabi=lp64d -O3 -ftree-vectorize -fno-vect-cost-model -ffast-math -fno-schedule-insns -fno-schedule-insns2" } */ -/* { dg-final { check-function-bodies "**" "" } } */ - -#include "test-math.h" - -/* -** test_double___builtin_ceil: -** frrm\s+[atx][0-9]+ -** ... -** fsrmi\s+3 -** ... -** vsetvli\s+[atx][0-9]+,\s*zero,\s*e64,\s*m1,\s*ta,\s*mu -** vfabs\.v\s+v[0-9]+,\s*v[0-9]+ -** ... -** vmflt\.vv\s+v0,\s*v[0-9]+,\s*v[0-9]+ -** ... -** vfcvt\.x\.f\.v\s+v[0-9]+,\s*v[0-9]+,\s*v0\.t -** ... -** vfcvt\.f\.x\.v\s+v[0-9]+,\s*v[0-9]+,\s*v0\.t -** vfsgnj\.vv\s+v[0-9]+,v[0-9]+,v[0-9]+ -** ... -** fsrm\s+[atx][0-9]+ -** ... -*/ -TEST_UNARY_CALL (double, __builtin_ceil) diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/math-ceil-3.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/math-ceil-3.c deleted file mode 100644 index 82e4f89..0000000 --- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/math-ceil-3.c +++ /dev/null @@ -1,28 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-march=rv64gcv -mabi=lp64d -O3 -ftree-vectorize -fno-vect-cost-model -ffast-math -fno-schedule-insns -fno-schedule-insns2" } */ -/* { dg-final { check-function-bodies "**" "" } } */ - -#include "test-math.h" - -/* -** test_float___builtin_ceilf: -** frrm\s+[atx][0-9]+ -** ... -** fsrmi\s+3 -** ... -** vsetvli\s+[atx][0-9]+,\s*zero,\s*e32,\s*m1,\s*ta,\s*mu -** vfabs\.v\s+v[0-9]+,\s*v[0-9]+ -** ... -** vmflt\.vv\s+v0,\s*v[0-9]+,\s*v[0-9]+ -** ... -** vfcvt\.x\.f\.v\s+v[0-9]+,\s*v[0-9]+,\s*v0\.t -** ... -** vfcvt\.f\.x\.v\s+v[0-9]+,\s*v[0-9]+,\s*v0\.t -** vfsgnj\.vv\s+v[0-9]+,v[0-9]+,v[0-9]+ -** ... -** vmerge\.vvm\s+v[0-9]+,\s*v[0-9]+,\s*v[0-9]+,\s*v0 -** ... -** fsrm\s+[atx][0-9]+ -** ... -*/ -TEST_COND_UNARY_CALL (float, __builtin_ceilf) diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/math-ceil-run-0.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/math-ceil-run-0.c deleted file mode 100644 index 600c161..0000000 --- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/math-ceil-run-0.c +++ /dev/null @@ -1,39 +0,0 @@ -/* { dg-do run { target { riscv_vector } } } */ -/* { dg-additional-options "-std=c2x -O3 -ftree-vectorize -fno-vect-cost-model -ffast-math" } */ - -#include "test-math.h" - -#define ARRAY_SIZE 128 - -_Float16 in[ARRAY_SIZE]; -_Float16 out[ARRAY_SIZE]; -_Float16 ref[ARRAY_SIZE]; - -TEST_UNARY_CALL (_Float16, __builtin_ceilf16) -TEST_ASSERT (_Float16) - -TEST_INIT (_Float16, 1.2, 2.0, 1) -TEST_INIT (_Float16, -1.2, -1.0, 2) -TEST_INIT (_Float16, 3.0, 3.0, 3) -TEST_INIT (_Float16, 1023.5, 1024.0, 4) -TEST_INIT (_Float16, 1025.0, 1025.0, 5) -TEST_INIT (_Float16, 0.0, 0.0, 6) -TEST_INIT (_Float16, -0.0, -0.0, 7) -TEST_INIT (_Float16, -1023.5, -1023.0, 8) -TEST_INIT (_Float16, -1024.0, -1024.0, 9) - -int -main () -{ - RUN_TEST (_Float16, 1, __builtin_ceilf16, in, out, ref, ARRAY_SIZE); - RUN_TEST (_Float16, 2, __builtin_ceilf16, in, out, ref, ARRAY_SIZE); - RUN_TEST (_Float16, 3, __builtin_ceilf16, in, out, ref, ARRAY_SIZE); - RUN_TEST (_Float16, 4, __builtin_ceilf16, in, out, ref, ARRAY_SIZE); - RUN_TEST (_Float16, 5, __builtin_ceilf16, in, out, ref, ARRAY_SIZE); - RUN_TEST (_Float16, 6, __builtin_ceilf16, in, out, ref, ARRAY_SIZE); - RUN_TEST (_Float16, 7, __builtin_ceilf16, in, out, ref, ARRAY_SIZE); - RUN_TEST (_Float16, 8, __builtin_ceilf16, in, out, ref, ARRAY_SIZE); - RUN_TEST (_Float16, 9, __builtin_ceilf16, in, out, ref, ARRAY_SIZE); - - return 0; -} diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/math-ceil-run-1.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/math-ceil-run-1.c deleted file mode 100644 index 415c198..0000000 --- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/math-ceil-run-1.c +++ /dev/null @@ -1,39 +0,0 @@ -/* { dg-do run { target { riscv_vector } } } */ -/* { dg-additional-options "-std=c99 -O3 -ftree-vectorize -fno-vect-cost-model -ffast-math" } */ - -#include "test-math.h" - -#define ARRAY_SIZE 128 - -float in[ARRAY_SIZE]; -float out[ARRAY_SIZE]; -float ref[ARRAY_SIZE]; - -TEST_UNARY_CALL (float, __builtin_ceilf) -TEST_ASSERT (float) - -TEST_INIT (float, 1.2, 2.0, 1) -TEST_INIT (float, -1.2, -1.0, 2) -TEST_INIT (float, 3.0, 3.0, 3) -TEST_INIT (float, 8388607.5, 8388608.0, 4) -TEST_INIT (float, 8388609.0, 8388609.0, 5) -TEST_INIT (float, 0.0, 0.0, 6) -TEST_INIT (float, -0.0, -0.0, 7) -TEST_INIT (float, -8388607.5, -8388607.0, 8) -TEST_INIT (float, -8388608.0, -8388608.0, 9) - -int -main () -{ - RUN_TEST (float, 1, __builtin_ceilf, in, out, ref, ARRAY_SIZE); - RUN_TEST (float, 2, __builtin_ceilf, in, out, ref, ARRAY_SIZE); - RUN_TEST (float, 3, __builtin_ceilf, in, out, ref, ARRAY_SIZE); - RUN_TEST (float, 4, __builtin_ceilf, in, out, ref, ARRAY_SIZE); - RUN_TEST (float, 5, __builtin_ceilf, in, out, ref, ARRAY_SIZE); - RUN_TEST (float, 6, __builtin_ceilf, in, out, ref, ARRAY_SIZE); - RUN_TEST (float, 7, __builtin_ceilf, in, out, ref, ARRAY_SIZE); - RUN_TEST (float, 8, __builtin_ceilf, in, out, ref, ARRAY_SIZE); - RUN_TEST (float, 9, __builtin_ceilf, in, out, ref, ARRAY_SIZE); - - return 0; -} diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/math-ceil-run-2.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/math-ceil-run-2.c deleted file mode 100644 index 493b506..0000000 --- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/math-ceil-run-2.c +++ /dev/null @@ -1,39 +0,0 @@ -/* { dg-do run { target { riscv_vector } } } */ -/* { dg-additional-options "-std=c99 -O3 -ftree-vectorize -fno-vect-cost-model -ffast-math" } */ - -#include "test-math.h" - -#define ARRAY_SIZE 128 - -double in[ARRAY_SIZE]; -double out[ARRAY_SIZE]; -double ref[ARRAY_SIZE]; - -TEST_UNARY_CALL (double, __builtin_ceil) -TEST_ASSERT (double) - -TEST_INIT (double, 1.2, 2.0, 1) -TEST_INIT (double, -1.2, -1.0, 2) -TEST_INIT (double, 3.0, 3.0, 3) -TEST_INIT (double, 4503599627370495.5, 4503599627370496.0, 4) -TEST_INIT (double, 4503599627370497.0, 4503599627370497.0, 5) -TEST_INIT (double, 0.0, 0.0, 6) -TEST_INIT (double, -0.0, -0.0, 7) -TEST_INIT (double, -4503599627370495.5, -4503599627370495.0, 8) -TEST_INIT (double, -4503599627370496.0, -4503599627370496.0, 9) - -int -main () -{ - RUN_TEST (double, 1, __builtin_ceil, in, out, ref, ARRAY_SIZE); - RUN_TEST (double, 2, __builtin_ceil, in, out, ref, ARRAY_SIZE); - RUN_TEST (double, 3, __builtin_ceil, in, out, ref, ARRAY_SIZE); - RUN_TEST (double, 4, __builtin_ceil, in, out, ref, ARRAY_SIZE); - RUN_TEST (double, 5, __builtin_ceil, in, out, ref, ARRAY_SIZE); - RUN_TEST (double, 6, __builtin_ceil, in, out, ref, ARRAY_SIZE); - RUN_TEST (double, 7, __builtin_ceil, in, out, ref, ARRAY_SIZE); - RUN_TEST (double, 8, __builtin_ceil, in, out, ref, ARRAY_SIZE); - RUN_TEST (double, 9, __builtin_ceil, in, out, ref, ARRAY_SIZE); - - return 0; -} diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/test-math.h b/gcc/testsuite/gcc.target/riscv/rvv/autovec/test-math.h deleted file mode 100644 index d035835..0000000 --- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/test-math.h +++ /dev/null @@ -1,38 +0,0 @@ -#define TEST_UNARY_CALL(TYPE, CALL) \ - void test_##TYPE##_##CALL (TYPE *out, TYPE *in, unsigned count) \ - { \ - for (unsigned i = 0; i < count; i++) \ - out[i] = CALL (in[i]); \ - } - -#define TEST_COND_UNARY_CALL(TYPE, CALL) \ - void test_##TYPE##_##CALL (TYPE *out, int *cond, TYPE *in, unsigned count) \ - { \ - for (unsigned i = 0; i < count; i++) \ - out[i] = cond[i] ? CALL (in[i]) : in[i]; \ - } - -#define TEST_INIT(TYPE, VAL_IN, VAL_REF, NUM) \ - void test_##TYPE##_init_##NUM (TYPE *in, TYPE *ref, unsigned size) \ - { \ - for (unsigned i = 0; i < size; i++) \ - { \ - in[i] = VAL_IN; \ - ref[i] = VAL_REF; \ - } \ - } - -#define TEST_ASSERT(TYPE) \ - void test_##TYPE##_assert (TYPE *out, TYPE *ref, unsigned size) \ - { \ - for (unsigned i = 0; i < size; i++) \ - { \ - if (out[i] != ref[i]) \ - __builtin_abort (); \ - } \ - } - -#define RUN_TEST(TYPE, NUM, CALL, IN, OUT, REF, SIZE) \ - test_##TYPE##_init_##NUM (IN, REF, SIZE); \ - test_##TYPE##_##CALL (OUT, IN, SIZE); \ - test_##TYPE##_assert (OUT, REF, SIZE); diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/unop/math-ceil-0.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/unop/math-ceil-0.c new file mode 100644 index 0000000..0959afd --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/unop/math-ceil-0.c @@ -0,0 +1,26 @@ +/* { dg-do compile } */ +/* { dg-options "-march=rv64gcv_zvfh -mabi=lp64d -O3 -ftree-vectorize -fno-vect-cost-model -ffast-math -fno-schedule-insns -fno-schedule-insns2" } */ +/* { dg-final { check-function-bodies "**" "" } } */ + +#include "test-math.h" + +/* +** test__Float16___builtin_ceilf16: +** frrm\s+[atx][0-9]+ +** ... +** fsrmi\s+3 +** ... +** vsetvli\s+[atx][0-9]+,\s*zero,\s*e16,\s*m1,\s*ta,\s*mu +** vfabs\.v\s+v[0-9]+,\s*v[0-9]+ +** ... +** vmflt\.vv\s+v0,\s*v[0-9]+,\s*v[0-9]+ +** ... +** vfcvt\.x\.f\.v\s+v[0-9]+,\s*v[0-9]+,\s*v0\.t +** ... +** vfcvt\.f\.x\.v\s+v[0-9]+,\s*v[0-9]+,\s*v0\.t +** vfsgnj\.vv\s+v[0-9]+,v[0-9]+,v[0-9]+ +** ... +** fsrm\s+[atx][0-9]+ +** ... +*/ +TEST_UNARY_CALL (_Float16, __builtin_ceilf16) diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/unop/math-ceil-1.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/unop/math-ceil-1.c new file mode 100644 index 0000000..142705b --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/unop/math-ceil-1.c @@ -0,0 +1,26 @@ +/* { dg-do compile } */ +/* { dg-options "-march=rv64gcv -mabi=lp64d -O3 -ftree-vectorize -fno-vect-cost-model -ffast-math -fno-schedule-insns -fno-schedule-insns2" } */ +/* { dg-final { check-function-bodies "**" "" } } */ + +#include "test-math.h" + +/* +** test_float___builtin_ceilf: +** frrm\s+[atx][0-9]+ +** ... +** fsrmi\s+3 +** ... +** vsetvli\s+[atx][0-9]+,\s*zero,\s*e32,\s*m1,\s*ta,\s*mu +** vfabs\.v\s+v[0-9]+,\s*v[0-9]+ +** ... +** vmflt\.vv\s+v0,\s*v[0-9]+,\s*v[0-9]+ +** ... +** vfcvt\.x\.f\.v\s+v[0-9]+,\s*v[0-9]+,\s*v0\.t +** ... +** vfcvt\.f\.x\.v\s+v[0-9]+,\s*v[0-9]+,\s*v0\.t +** vfsgnj\.vv\s+v[0-9]+,v[0-9]+,v[0-9]+ +** ... +** fsrm\s+[atx][0-9]+ +** ... +*/ +TEST_UNARY_CALL (float, __builtin_ceilf) diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/unop/math-ceil-2.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/unop/math-ceil-2.c new file mode 100644 index 0000000..d232e36 --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/unop/math-ceil-2.c @@ -0,0 +1,26 @@ +/* { dg-do compile } */ +/* { dg-options "-march=rv64gcv -mabi=lp64d -O3 -ftree-vectorize -fno-vect-cost-model -ffast-math -fno-schedule-insns -fno-schedule-insns2" } */ +/* { dg-final { check-function-bodies "**" "" } } */ + +#include "test-math.h" + +/* +** test_double___builtin_ceil: +** frrm\s+[atx][0-9]+ +** ... +** fsrmi\s+3 +** ... +** vsetvli\s+[atx][0-9]+,\s*zero,\s*e64,\s*m1,\s*ta,\s*mu +** vfabs\.v\s+v[0-9]+,\s*v[0-9]+ +** ... +** vmflt\.vv\s+v0,\s*v[0-9]+,\s*v[0-9]+ +** ... +** vfcvt\.x\.f\.v\s+v[0-9]+,\s*v[0-9]+,\s*v0\.t +** ... +** vfcvt\.f\.x\.v\s+v[0-9]+,\s*v[0-9]+,\s*v0\.t +** vfsgnj\.vv\s+v[0-9]+,v[0-9]+,v[0-9]+ +** ... +** fsrm\s+[atx][0-9]+ +** ... +*/ +TEST_UNARY_CALL (double, __builtin_ceil) diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/unop/math-ceil-3.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/unop/math-ceil-3.c new file mode 100644 index 0000000..82e4f89 --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/unop/math-ceil-3.c @@ -0,0 +1,28 @@ +/* { dg-do compile } */ +/* { dg-options "-march=rv64gcv -mabi=lp64d -O3 -ftree-vectorize -fno-vect-cost-model -ffast-math -fno-schedule-insns -fno-schedule-insns2" } */ +/* { dg-final { check-function-bodies "**" "" } } */ + +#include "test-math.h" + +/* +** test_float___builtin_ceilf: +** frrm\s+[atx][0-9]+ +** ... +** fsrmi\s+3 +** ... +** vsetvli\s+[atx][0-9]+,\s*zero,\s*e32,\s*m1,\s*ta,\s*mu +** vfabs\.v\s+v[0-9]+,\s*v[0-9]+ +** ... +** vmflt\.vv\s+v0,\s*v[0-9]+,\s*v[0-9]+ +** ... +** vfcvt\.x\.f\.v\s+v[0-9]+,\s*v[0-9]+,\s*v0\.t +** ... +** vfcvt\.f\.x\.v\s+v[0-9]+,\s*v[0-9]+,\s*v0\.t +** vfsgnj\.vv\s+v[0-9]+,v[0-9]+,v[0-9]+ +** ... +** vmerge\.vvm\s+v[0-9]+,\s*v[0-9]+,\s*v[0-9]+,\s*v0 +** ... +** fsrm\s+[atx][0-9]+ +** ... +*/ +TEST_COND_UNARY_CALL (float, __builtin_ceilf) diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/unop/math-ceil-run-0.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/unop/math-ceil-run-0.c new file mode 100644 index 0000000..600c161 --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/unop/math-ceil-run-0.c @@ -0,0 +1,39 @@ +/* { dg-do run { target { riscv_vector } } } */ +/* { dg-additional-options "-std=c2x -O3 -ftree-vectorize -fno-vect-cost-model -ffast-math" } */ + +#include "test-math.h" + +#define ARRAY_SIZE 128 + +_Float16 in[ARRAY_SIZE]; +_Float16 out[ARRAY_SIZE]; +_Float16 ref[ARRAY_SIZE]; + +TEST_UNARY_CALL (_Float16, __builtin_ceilf16) +TEST_ASSERT (_Float16) + +TEST_INIT (_Float16, 1.2, 2.0, 1) +TEST_INIT (_Float16, -1.2, -1.0, 2) +TEST_INIT (_Float16, 3.0, 3.0, 3) +TEST_INIT (_Float16, 1023.5, 1024.0, 4) +TEST_INIT (_Float16, 1025.0, 1025.0, 5) +TEST_INIT (_Float16, 0.0, 0.0, 6) +TEST_INIT (_Float16, -0.0, -0.0, 7) +TEST_INIT (_Float16, -1023.5, -1023.0, 8) +TEST_INIT (_Float16, -1024.0, -1024.0, 9) + +int +main () +{ + RUN_TEST (_Float16, 1, __builtin_ceilf16, in, out, ref, ARRAY_SIZE); + RUN_TEST (_Float16, 2, __builtin_ceilf16, in, out, ref, ARRAY_SIZE); + RUN_TEST (_Float16, 3, __builtin_ceilf16, in, out, ref, ARRAY_SIZE); + RUN_TEST (_Float16, 4, __builtin_ceilf16, in, out, ref, ARRAY_SIZE); + RUN_TEST (_Float16, 5, __builtin_ceilf16, in, out, ref, ARRAY_SIZE); + RUN_TEST (_Float16, 6, __builtin_ceilf16, in, out, ref, ARRAY_SIZE); + RUN_TEST (_Float16, 7, __builtin_ceilf16, in, out, ref, ARRAY_SIZE); + RUN_TEST (_Float16, 8, __builtin_ceilf16, in, out, ref, ARRAY_SIZE); + RUN_TEST (_Float16, 9, __builtin_ceilf16, in, out, ref, ARRAY_SIZE); + + return 0; +} diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/unop/math-ceil-run-1.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/unop/math-ceil-run-1.c new file mode 100644 index 0000000..415c198 --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/unop/math-ceil-run-1.c @@ -0,0 +1,39 @@ +/* { dg-do run { target { riscv_vector } } } */ +/* { dg-additional-options "-std=c99 -O3 -ftree-vectorize -fno-vect-cost-model -ffast-math" } */ + +#include "test-math.h" + +#define ARRAY_SIZE 128 + +float in[ARRAY_SIZE]; +float out[ARRAY_SIZE]; +float ref[ARRAY_SIZE]; + +TEST_UNARY_CALL (float, __builtin_ceilf) +TEST_ASSERT (float) + +TEST_INIT (float, 1.2, 2.0, 1) +TEST_INIT (float, -1.2, -1.0, 2) +TEST_INIT (float, 3.0, 3.0, 3) +TEST_INIT (float, 8388607.5, 8388608.0, 4) +TEST_INIT (float, 8388609.0, 8388609.0, 5) +TEST_INIT (float, 0.0, 0.0, 6) +TEST_INIT (float, -0.0, -0.0, 7) +TEST_INIT (float, -8388607.5, -8388607.0, 8) +TEST_INIT (float, -8388608.0, -8388608.0, 9) + +int +main () +{ + RUN_TEST (float, 1, __builtin_ceilf, in, out, ref, ARRAY_SIZE); + RUN_TEST (float, 2, __builtin_ceilf, in, out, ref, ARRAY_SIZE); + RUN_TEST (float, 3, __builtin_ceilf, in, out, ref, ARRAY_SIZE); + RUN_TEST (float, 4, __builtin_ceilf, in, out, ref, ARRAY_SIZE); + RUN_TEST (float, 5, __builtin_ceilf, in, out, ref, ARRAY_SIZE); + RUN_TEST (float, 6, __builtin_ceilf, in, out, ref, ARRAY_SIZE); + RUN_TEST (float, 7, __builtin_ceilf, in, out, ref, ARRAY_SIZE); + RUN_TEST (float, 8, __builtin_ceilf, in, out, ref, ARRAY_SIZE); + RUN_TEST (float, 9, __builtin_ceilf, in, out, ref, ARRAY_SIZE); + + return 0; +} diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/unop/math-ceil-run-2.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/unop/math-ceil-run-2.c new file mode 100644 index 0000000..493b506 --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/unop/math-ceil-run-2.c @@ -0,0 +1,39 @@ +/* { dg-do run { target { riscv_vector } } } */ +/* { dg-additional-options "-std=c99 -O3 -ftree-vectorize -fno-vect-cost-model -ffast-math" } */ + +#include "test-math.h" + +#define ARRAY_SIZE 128 + +double in[ARRAY_SIZE]; +double out[ARRAY_SIZE]; +double ref[ARRAY_SIZE]; + +TEST_UNARY_CALL (double, __builtin_ceil) +TEST_ASSERT (double) + +TEST_INIT (double, 1.2, 2.0, 1) +TEST_INIT (double, -1.2, -1.0, 2) +TEST_INIT (double, 3.0, 3.0, 3) +TEST_INIT (double, 4503599627370495.5, 4503599627370496.0, 4) +TEST_INIT (double, 4503599627370497.0, 4503599627370497.0, 5) +TEST_INIT (double, 0.0, 0.0, 6) +TEST_INIT (double, -0.0, -0.0, 7) +TEST_INIT (double, -4503599627370495.5, -4503599627370495.0, 8) +TEST_INIT (double, -4503599627370496.0, -4503599627370496.0, 9) + +int +main () +{ + RUN_TEST (double, 1, __builtin_ceil, in, out, ref, ARRAY_SIZE); + RUN_TEST (double, 2, __builtin_ceil, in, out, ref, ARRAY_SIZE); + RUN_TEST (double, 3, __builtin_ceil, in, out, ref, ARRAY_SIZE); + RUN_TEST (double, 4, __builtin_ceil, in, out, ref, ARRAY_SIZE); + RUN_TEST (double, 5, __builtin_ceil, in, out, ref, ARRAY_SIZE); + RUN_TEST (double, 6, __builtin_ceil, in, out, ref, ARRAY_SIZE); + RUN_TEST (double, 7, __builtin_ceil, in, out, ref, ARRAY_SIZE); + RUN_TEST (double, 8, __builtin_ceil, in, out, ref, ARRAY_SIZE); + RUN_TEST (double, 9, __builtin_ceil, in, out, ref, ARRAY_SIZE); + + return 0; +} diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/unop/test-math.h b/gcc/testsuite/gcc.target/riscv/rvv/autovec/unop/test-math.h new file mode 100644 index 0000000..d035835 --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/unop/test-math.h @@ -0,0 +1,38 @@ +#define TEST_UNARY_CALL(TYPE, CALL) \ + void test_##TYPE##_##CALL (TYPE *out, TYPE *in, unsigned count) \ + { \ + for (unsigned i = 0; i < count; i++) \ + out[i] = CALL (in[i]); \ + } + +#define TEST_COND_UNARY_CALL(TYPE, CALL) \ + void test_##TYPE##_##CALL (TYPE *out, int *cond, TYPE *in, unsigned count) \ + { \ + for (unsigned i = 0; i < count; i++) \ + out[i] = cond[i] ? CALL (in[i]) : in[i]; \ + } + +#define TEST_INIT(TYPE, VAL_IN, VAL_REF, NUM) \ + void test_##TYPE##_init_##NUM (TYPE *in, TYPE *ref, unsigned size) \ + { \ + for (unsigned i = 0; i < size; i++) \ + { \ + in[i] = VAL_IN; \ + ref[i] = VAL_REF; \ + } \ + } + +#define TEST_ASSERT(TYPE) \ + void test_##TYPE##_assert (TYPE *out, TYPE *ref, unsigned size) \ + { \ + for (unsigned i = 0; i < size; i++) \ + { \ + if (out[i] != ref[i]) \ + __builtin_abort (); \ + } \ + } + +#define RUN_TEST(TYPE, NUM, CALL, IN, OUT, REF, SIZE) \ + test_##TYPE##_init_##NUM (IN, REF, SIZE); \ + test_##TYPE##_##CALL (OUT, IN, SIZE); \ + test_##TYPE##_assert (OUT, REF, SIZE); -- cgit v1.1