Message ID | 20240615024436.928307-1-pan2.li@intel.com |
---|---|
State | New |
Headers | show |
Series | [v1] RISC-V: Refine the SAT_ARITH test help header files [NFC] | expand |
LGTM juzhe.zhong@rivai.ai From: pan2.li Date: 2024-06-15 10:44 To: gcc-patches CC: juzhe.zhong; kito.cheng; jeffreyalaw; rdapp.gcc; Pan Li Subject: [PATCH v1] RISC-V: Refine the SAT_ARITH test help header files [NFC] From: Pan Li <pan2.li@intel.com> Separate the vector part code to one standalone header file, which is independent with the scalar part. gcc/testsuite/ChangeLog: * gcc.target/riscv/rvv/autovec/binop/vec_sat_u_add-1.c: Leverage the new header file for vector part. * gcc.target/riscv/rvv/autovec/binop/vec_sat_u_add-2.c: Ditto. * gcc.target/riscv/rvv/autovec/binop/vec_sat_u_add-3.c: Ditto. * gcc.target/riscv/rvv/autovec/binop/vec_sat_u_add-4.c: Ditto. * gcc.target/riscv/rvv/autovec/binop/vec_sat_u_add-run-1.c: Ditto. * gcc.target/riscv/rvv/autovec/binop/vec_sat_u_add-run-2.c: Ditto. * gcc.target/riscv/rvv/autovec/binop/vec_sat_u_add-run-3.c: Ditto. * gcc.target/riscv/rvv/autovec/binop/vec_sat_u_add-run-4.c: Ditto. * gcc.target/riscv/rvv/autovec/binop/vec_sat_u_sub-1.c: Ditto. * gcc.target/riscv/rvv/autovec/binop/vec_sat_u_sub-2.c: Ditto. * gcc.target/riscv/rvv/autovec/binop/vec_sat_u_sub-3.c: Ditto. * gcc.target/riscv/rvv/autovec/binop/vec_sat_u_sub-4.c: Ditto. * gcc.target/riscv/rvv/autovec/binop/vec_sat_u_sub-run-1.c: Ditto. * gcc.target/riscv/rvv/autovec/binop/vec_sat_u_sub-run-2.c: Ditto. * gcc.target/riscv/rvv/autovec/binop/vec_sat_u_sub-run-3.c: Ditto. * gcc.target/riscv/rvv/autovec/binop/vec_sat_u_sub-run-4.c: Ditto. * gcc.target/riscv/sat_arith.h: Move vector part out. * gcc.target/riscv/rvv/autovec/binop/vec_sat_arith.h: New test. Signed-off-by: Pan Li <pan2.li@intel.com> --- .../riscv/rvv/autovec/binop/vec_sat_arith.h | 59 +++++++++++++++++++ .../riscv/rvv/autovec/binop/vec_sat_u_add-1.c | 2 +- .../riscv/rvv/autovec/binop/vec_sat_u_add-2.c | 2 +- .../riscv/rvv/autovec/binop/vec_sat_u_add-3.c | 2 +- .../riscv/rvv/autovec/binop/vec_sat_u_add-4.c | 2 +- .../rvv/autovec/binop/vec_sat_u_add-run-1.c | 2 +- .../rvv/autovec/binop/vec_sat_u_add-run-2.c | 2 +- .../rvv/autovec/binop/vec_sat_u_add-run-3.c | 2 +- .../rvv/autovec/binop/vec_sat_u_add-run-4.c | 2 +- .../riscv/rvv/autovec/binop/vec_sat_u_sub-1.c | 2 +- .../riscv/rvv/autovec/binop/vec_sat_u_sub-2.c | 2 +- .../riscv/rvv/autovec/binop/vec_sat_u_sub-3.c | 2 +- .../riscv/rvv/autovec/binop/vec_sat_u_sub-4.c | 2 +- .../rvv/autovec/binop/vec_sat_u_sub-run-1.c | 2 +- .../rvv/autovec/binop/vec_sat_u_sub-run-2.c | 2 +- .../rvv/autovec/binop/vec_sat_u_sub-run-3.c | 2 +- .../rvv/autovec/binop/vec_sat_u_sub-run-4.c | 2 +- gcc/testsuite/gcc.target/riscv/sat_arith.h | 57 ++---------------- 18 files changed, 80 insertions(+), 68 deletions(-) create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_arith.h diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_arith.h b/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_arith.h new file mode 100644 index 00000000000..450f0fbbc72 --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_arith.h @@ -0,0 +1,59 @@ +#ifndef HAVE_VEC_SAT_ARITH +#define HAVE_VEC_SAT_ARITH + +#include <stdint-gcc.h> + +/******************************************************************************/ +/* Saturation Add (unsigned and signed) */ +/******************************************************************************/ +#define DEF_VEC_SAT_U_ADD_FMT_1(T) \ +void __attribute__((noinline)) \ +vec_sat_u_add_##T##_fmt_1 (T *out, T *op_1, T *op_2, unsigned limit) \ +{ \ + unsigned i; \ + for (i = 0; i < limit; i++) \ + { \ + T x = op_1[i]; \ + T y = op_2[i]; \ + out[i] = (x + y) | (-(T)((T)(x + y) < x)); \ + } \ +} + +#define RUN_VEC_SAT_U_ADD_FMT_1(T, out, op_1, op_2, N) \ + vec_sat_u_add_##T##_fmt_1(out, op_1, op_2, N) + +/******************************************************************************/ +/* Saturation Sub (Unsigned and Signed) */ +/******************************************************************************/ +#define DEF_VEC_SAT_U_SUB_FMT_1(T) \ +void __attribute__((noinline)) \ +vec_sat_u_sub_##T##_fmt_1 (T *out, T *op_1, T *op_2, unsigned limit) \ +{ \ + unsigned i; \ + for (i = 0; i < limit; i++) \ + { \ + T x = op_1[i]; \ + T y = op_2[i]; \ + out[i] = (x - y) & (-(T)(x >= y)); \ + } \ +} + +#define DEF_VEC_SAT_U_SUB_FMT_2(T) \ +void __attribute__((noinline)) \ +vec_sat_u_sub_##T##_fmt_2 (T *out, T *op_1, T *op_2, unsigned limit) \ +{ \ + unsigned i; \ + for (i = 0; i < limit; i++) \ + { \ + T x = op_1[i]; \ + T y = op_2[i]; \ + out[i] = (x - y) & (-(T)(x > y)); \ + } \ +} + +#define RUN_VEC_SAT_U_SUB_FMT_1(T, out, op_1, op_2, N) \ + vec_sat_u_sub_##T##_fmt_1(out, op_1, op_2, N) +#define RUN_VEC_SAT_U_SUB_FMT_2(T, out, op_1, op_2, N) \ + vec_sat_u_sub_##T##_fmt_2(out, op_1, op_2, N) + +#endif diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_u_add-1.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_u_add-1.c index dbbfa00afe2..6fe84f3945f 100644 --- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_u_add-1.c +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_u_add-1.c @@ -3,7 +3,7 @@ /* { dg-skip-if "" { *-*-* } { "-flto" } } */ /* { dg-final { check-function-bodies "**" "" } } */ -#include "../../../sat_arith.h" +#include "vec_sat_arith.h" /* ** vec_sat_u_add_uint8_t_fmt_1: diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_u_add-2.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_u_add-2.c index 1253fdb5f60..e9a40e0dcd0 100644 --- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_u_add-2.c +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_u_add-2.c @@ -3,7 +3,7 @@ /* { dg-skip-if "" { *-*-* } { "-flto" } } */ /* { dg-final { check-function-bodies "**" "" } } */ -#include "../../../sat_arith.h" +#include "vec_sat_arith.h" /* ** vec_sat_u_add_uint16_t_fmt_1: diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_u_add-3.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_u_add-3.c index 74bba9cadd1..f30000698a2 100644 --- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_u_add-3.c +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_u_add-3.c @@ -3,7 +3,7 @@ /* { dg-skip-if "" { *-*-* } { "-flto" } } */ /* { dg-final { check-function-bodies "**" "" } } */ -#include "../../../sat_arith.h" +#include "vec_sat_arith.h" /* ** vec_sat_u_add_uint32_t_fmt_1: diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_u_add-4.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_u_add-4.c index f3692b4cc25..9c9ba2797d0 100644 --- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_u_add-4.c +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_u_add-4.c @@ -3,7 +3,7 @@ /* { dg-skip-if "" { *-*-* } { "-flto" } } */ /* { dg-final { check-function-bodies "**" "" } } */ -#include "../../../sat_arith.h" +#include "vec_sat_arith.h" /* ** vec_sat_u_add_uint64_t_fmt_1: diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_u_add-run-1.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_u_add-run-1.c index 1dcb333f687..151bc466c72 100644 --- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_u_add-run-1.c +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_u_add-run-1.c @@ -1,7 +1,7 @@ /* { dg-do run { target { riscv_v } } } */ /* { dg-additional-options "-std=c99" } */ -#include "../../../sat_arith.h" +#include "vec_sat_arith.h" #define T uint8_t #define N 16 diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_u_add-run-2.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_u_add-run-2.c index dbf01ac863d..4d545226b2b 100644 --- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_u_add-run-2.c +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_u_add-run-2.c @@ -1,7 +1,7 @@ /* { dg-do run { target { riscv_v } } } */ /* { dg-additional-options "-std=c99" } */ -#include "../../../sat_arith.h" +#include "vec_sat_arith.h" #define T uint16_t #define N 16 diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_u_add-run-3.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_u_add-run-3.c index 20ad2736403..f1b3a4fc79e 100644 --- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_u_add-run-3.c +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_u_add-run-3.c @@ -1,7 +1,7 @@ /* { dg-do run { target { riscv_v } } } */ /* { dg-additional-options "-std=c99" } */ -#include "../../../sat_arith.h" +#include "vec_sat_arith.h" #define T uint32_t #define N 16 diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_u_add-run-4.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_u_add-run-4.c index 2f31edc527e..4768d6283c6 100644 --- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_u_add-run-4.c +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_u_add-run-4.c @@ -1,7 +1,7 @@ /* { dg-do run { target { riscv_v } } } */ /* { dg-additional-options "-std=c99" } */ -#include "../../../sat_arith.h" +#include "vec_sat_arith.h" #define T uint64_t #define N 16 diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_u_sub-1.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_u_sub-1.c index 1e6e323012d..ff444ea3862 100644 --- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_u_sub-1.c +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_u_sub-1.c @@ -3,7 +3,7 @@ /* { dg-skip-if "" { *-*-* } { "-flto" } } */ /* { dg-final { check-function-bodies "**" "" } } */ -#include "../../../sat_arith.h" +#include "vec_sat_arith.h" /* ** vec_sat_u_sub_uint8_t_fmt_1: diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_u_sub-2.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_u_sub-2.c index 9c570565048..2bde6a23ead 100644 --- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_u_sub-2.c +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_u_sub-2.c @@ -3,7 +3,7 @@ /* { dg-skip-if "" { *-*-* } { "-flto" } } */ /* { dg-final { check-function-bodies "**" "" } } */ -#include "../../../sat_arith.h" +#include "vec_sat_arith.h" /* ** vec_sat_u_sub_uint16_t_fmt_1: diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_u_sub-3.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_u_sub-3.c index 795d5ff5c70..ab688fcde96 100644 --- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_u_sub-3.c +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_u_sub-3.c @@ -3,7 +3,7 @@ /* { dg-skip-if "" { *-*-* } { "-flto" } } */ /* { dg-final { check-function-bodies "**" "" } } */ -#include "../../../sat_arith.h" +#include "vec_sat_arith.h" /* ** vec_sat_u_sub_uint32_t_fmt_1: diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_u_sub-4.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_u_sub-4.c index 00527c68003..8bcca4fa474 100644 --- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_u_sub-4.c +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_u_sub-4.c @@ -3,7 +3,7 @@ /* { dg-skip-if "" { *-*-* } { "-flto" } } */ /* { dg-final { check-function-bodies "**" "" } } */ -#include "../../../sat_arith.h" +#include "vec_sat_arith.h" /* ** vec_sat_u_sub_uint64_t_fmt_1: diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_u_sub-run-1.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_u_sub-run-1.c index 4f6b7927f19..b6c48388cf8 100644 --- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_u_sub-run-1.c +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_u_sub-run-1.c @@ -1,7 +1,7 @@ /* { dg-do run { target { riscv_v } } } */ /* { dg-additional-options "-std=c99" } */ -#include "../../../sat_arith.h" +#include "vec_sat_arith.h" #define T uint8_t #define N 16 diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_u_sub-run-2.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_u_sub-run-2.c index 8b115ea6ec3..18b53fd2df9 100644 --- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_u_sub-run-2.c +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_u_sub-run-2.c @@ -1,7 +1,7 @@ /* { dg-do run { target { riscv_v } } } */ /* { dg-additional-options "-std=c99" } */ -#include "../../../sat_arith.h" +#include "vec_sat_arith.h" #define T uint16_t #define N 16 diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_u_sub-run-3.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_u_sub-run-3.c index aa47ef7ce80..527a95b9a9f 100644 --- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_u_sub-run-3.c +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_u_sub-run-3.c @@ -1,7 +1,7 @@ /* { dg-do run { target { riscv_v } } } */ /* { dg-additional-options "-std=c99" } */ -#include "../../../sat_arith.h" +#include "vec_sat_arith.h" #define T uint32_t #define N 16 diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_u_sub-run-4.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_u_sub-run-4.c index 91daf3a7c1a..b78fd824acd 100644 --- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_u_sub-run-4.c +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_u_sub-run-4.c @@ -1,7 +1,7 @@ /* { dg-do run { target { riscv_v } } } */ /* { dg-additional-options "-std=c99" } */ -#include "../../../sat_arith.h" +#include "vec_sat_arith.h" #define T uint64_t #define N 16 diff --git a/gcc/testsuite/gcc.target/riscv/sat_arith.h b/gcc/testsuite/gcc.target/riscv/sat_arith.h index 4c02783e845..0f94c5ff087 100644 --- a/gcc/testsuite/gcc.target/riscv/sat_arith.h +++ b/gcc/testsuite/gcc.target/riscv/sat_arith.h @@ -52,19 +52,6 @@ sat_u_add_##T##_fmt_6 (T x, T y) \ return (T)(x + y) < x ? -1 : (x + y); \ } -#define DEF_VEC_SAT_U_ADD_FMT_1(T) \ -void __attribute__((noinline)) \ -vec_sat_u_add_##T##_fmt_1 (T *out, T *op_1, T *op_2, unsigned limit) \ -{ \ - unsigned i; \ - for (i = 0; i < limit; i++) \ - { \ - T x = op_1[i]; \ - T y = op_2[i]; \ - out[i] = (x + y) | (-(T)((T)(x + y) < x)); \ - } \ -} - #define RUN_SAT_U_ADD_FMT_1(T, x, y) sat_u_add_##T##_fmt_1(x, y) #define RUN_SAT_U_ADD_FMT_2(T, x, y) sat_u_add_##T##_fmt_2(x, y) #define RUN_SAT_U_ADD_FMT_3(T, x, y) sat_u_add_##T##_fmt_3(x, y) @@ -72,9 +59,6 @@ vec_sat_u_add_##T##_fmt_1 (T *out, T *op_1, T *op_2, unsigned limit) \ #define RUN_SAT_U_ADD_FMT_5(T, x, y) sat_u_add_##T##_fmt_5(x, y) #define RUN_SAT_U_ADD_FMT_6(T, x, y) sat_u_add_##T##_fmt_6(x, y) -#define RUN_VEC_SAT_U_ADD_FMT_1(T, out, op_1, op_2, N) \ - vec_sat_u_add_##T##_fmt_1(out, op_1, op_2, N) - /******************************************************************************/ /* Saturation Sub (Unsigned and Signed) */ /******************************************************************************/ @@ -92,11 +76,11 @@ sat_u_sub_##T##_fmt_2 (T x, T y) \ return (x - y) & (-(T)(x > y)); \ } -#define DEF_SAT_U_SUB_FMT_3(T) \ -T __attribute__((noinline)) \ -sat_u_sub_##T##_fmt_3 (T x, T y) \ -{ \ - return x > y ? x - y : 0; \ +#define DEF_SAT_U_SUB_FMT_3(T) \ +T __attribute__((noinline)) \ +sat_u_sub_##T##_fmt_3 (T x, T y) \ +{ \ + return x > y ? x - y : 0; \ } #define DEF_SAT_U_SUB_FMT_4(T) \ @@ -167,35 +151,4 @@ sat_u_sub_##T##_fmt_10 (T x, T y) \ #define RUN_SAT_U_SUB_FMT_9(T, x, y) sat_u_sub_##T##_fmt_9(x, y) #define RUN_SAT_U_SUB_FMT_10(T, x, y) sat_u_sub_##T##_fmt_10(x, y) -#define DEF_VEC_SAT_U_SUB_FMT_1(T) \ -void __attribute__((noinline)) \ -vec_sat_u_sub_##T##_fmt_1 (T *out, T *op_1, T *op_2, unsigned limit) \ -{ \ - unsigned i; \ - for (i = 0; i < limit; i++) \ - { \ - T x = op_1[i]; \ - T y = op_2[i]; \ - out[i] = (x - y) & (-(T)(x >= y)); \ - } \ -} - -#define DEF_VEC_SAT_U_SUB_FMT_2(T) \ -void __attribute__((noinline)) \ -vec_sat_u_sub_##T##_fmt_2 (T *out, T *op_1, T *op_2, unsigned limit) \ -{ \ - unsigned i; \ - for (i = 0; i < limit; i++) \ - { \ - T x = op_1[i]; \ - T y = op_2[i]; \ - out[i] = (x - y) & (-(T)(x > y)); \ - } \ -} - -#define RUN_VEC_SAT_U_SUB_FMT_1(T, out, op_1, op_2, N) \ - vec_sat_u_sub_##T##_fmt_1(out, op_1, op_2, N) -#define RUN_VEC_SAT_U_SUB_FMT_2(T, out, op_1, op_2, N) \ - vec_sat_u_sub_##T##_fmt_2(out, op_1, op_2, N) - #endif
diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_arith.h b/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_arith.h new file mode 100644 index 00000000000..450f0fbbc72 --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_arith.h @@ -0,0 +1,59 @@ +#ifndef HAVE_VEC_SAT_ARITH +#define HAVE_VEC_SAT_ARITH + +#include <stdint-gcc.h> + +/******************************************************************************/ +/* Saturation Add (unsigned and signed) */ +/******************************************************************************/ +#define DEF_VEC_SAT_U_ADD_FMT_1(T) \ +void __attribute__((noinline)) \ +vec_sat_u_add_##T##_fmt_1 (T *out, T *op_1, T *op_2, unsigned limit) \ +{ \ + unsigned i; \ + for (i = 0; i < limit; i++) \ + { \ + T x = op_1[i]; \ + T y = op_2[i]; \ + out[i] = (x + y) | (-(T)((T)(x + y) < x)); \ + } \ +} + +#define RUN_VEC_SAT_U_ADD_FMT_1(T, out, op_1, op_2, N) \ + vec_sat_u_add_##T##_fmt_1(out, op_1, op_2, N) + +/******************************************************************************/ +/* Saturation Sub (Unsigned and Signed) */ +/******************************************************************************/ +#define DEF_VEC_SAT_U_SUB_FMT_1(T) \ +void __attribute__((noinline)) \ +vec_sat_u_sub_##T##_fmt_1 (T *out, T *op_1, T *op_2, unsigned limit) \ +{ \ + unsigned i; \ + for (i = 0; i < limit; i++) \ + { \ + T x = op_1[i]; \ + T y = op_2[i]; \ + out[i] = (x - y) & (-(T)(x >= y)); \ + } \ +} + +#define DEF_VEC_SAT_U_SUB_FMT_2(T) \ +void __attribute__((noinline)) \ +vec_sat_u_sub_##T##_fmt_2 (T *out, T *op_1, T *op_2, unsigned limit) \ +{ \ + unsigned i; \ + for (i = 0; i < limit; i++) \ + { \ + T x = op_1[i]; \ + T y = op_2[i]; \ + out[i] = (x - y) & (-(T)(x > y)); \ + } \ +} + +#define RUN_VEC_SAT_U_SUB_FMT_1(T, out, op_1, op_2, N) \ + vec_sat_u_sub_##T##_fmt_1(out, op_1, op_2, N) +#define RUN_VEC_SAT_U_SUB_FMT_2(T, out, op_1, op_2, N) \ + vec_sat_u_sub_##T##_fmt_2(out, op_1, op_2, N) + +#endif diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_u_add-1.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_u_add-1.c index dbbfa00afe2..6fe84f3945f 100644 --- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_u_add-1.c +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_u_add-1.c @@ -3,7 +3,7 @@ /* { dg-skip-if "" { *-*-* } { "-flto" } } */ /* { dg-final { check-function-bodies "**" "" } } */ -#include "../../../sat_arith.h" +#include "vec_sat_arith.h" /* ** vec_sat_u_add_uint8_t_fmt_1: diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_u_add-2.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_u_add-2.c index 1253fdb5f60..e9a40e0dcd0 100644 --- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_u_add-2.c +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_u_add-2.c @@ -3,7 +3,7 @@ /* { dg-skip-if "" { *-*-* } { "-flto" } } */ /* { dg-final { check-function-bodies "**" "" } } */ -#include "../../../sat_arith.h" +#include "vec_sat_arith.h" /* ** vec_sat_u_add_uint16_t_fmt_1: diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_u_add-3.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_u_add-3.c index 74bba9cadd1..f30000698a2 100644 --- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_u_add-3.c +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_u_add-3.c @@ -3,7 +3,7 @@ /* { dg-skip-if "" { *-*-* } { "-flto" } } */ /* { dg-final { check-function-bodies "**" "" } } */ -#include "../../../sat_arith.h" +#include "vec_sat_arith.h" /* ** vec_sat_u_add_uint32_t_fmt_1: diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_u_add-4.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_u_add-4.c index f3692b4cc25..9c9ba2797d0 100644 --- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_u_add-4.c +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_u_add-4.c @@ -3,7 +3,7 @@ /* { dg-skip-if "" { *-*-* } { "-flto" } } */ /* { dg-final { check-function-bodies "**" "" } } */ -#include "../../../sat_arith.h" +#include "vec_sat_arith.h" /* ** vec_sat_u_add_uint64_t_fmt_1: diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_u_add-run-1.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_u_add-run-1.c index 1dcb333f687..151bc466c72 100644 --- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_u_add-run-1.c +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_u_add-run-1.c @@ -1,7 +1,7 @@ /* { dg-do run { target { riscv_v } } } */ /* { dg-additional-options "-std=c99" } */ -#include "../../../sat_arith.h" +#include "vec_sat_arith.h" #define T uint8_t #define N 16 diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_u_add-run-2.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_u_add-run-2.c index dbf01ac863d..4d545226b2b 100644 --- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_u_add-run-2.c +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_u_add-run-2.c @@ -1,7 +1,7 @@ /* { dg-do run { target { riscv_v } } } */ /* { dg-additional-options "-std=c99" } */ -#include "../../../sat_arith.h" +#include "vec_sat_arith.h" #define T uint16_t #define N 16 diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_u_add-run-3.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_u_add-run-3.c index 20ad2736403..f1b3a4fc79e 100644 --- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_u_add-run-3.c +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_u_add-run-3.c @@ -1,7 +1,7 @@ /* { dg-do run { target { riscv_v } } } */ /* { dg-additional-options "-std=c99" } */ -#include "../../../sat_arith.h" +#include "vec_sat_arith.h" #define T uint32_t #define N 16 diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_u_add-run-4.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_u_add-run-4.c index 2f31edc527e..4768d6283c6 100644 --- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_u_add-run-4.c +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_u_add-run-4.c @@ -1,7 +1,7 @@ /* { dg-do run { target { riscv_v } } } */ /* { dg-additional-options "-std=c99" } */ -#include "../../../sat_arith.h" +#include "vec_sat_arith.h" #define T uint64_t #define N 16 diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_u_sub-1.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_u_sub-1.c index 1e6e323012d..ff444ea3862 100644 --- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_u_sub-1.c +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_u_sub-1.c @@ -3,7 +3,7 @@ /* { dg-skip-if "" { *-*-* } { "-flto" } } */ /* { dg-final { check-function-bodies "**" "" } } */ -#include "../../../sat_arith.h" +#include "vec_sat_arith.h" /* ** vec_sat_u_sub_uint8_t_fmt_1: diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_u_sub-2.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_u_sub-2.c index 9c570565048..2bde6a23ead 100644 --- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_u_sub-2.c +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_u_sub-2.c @@ -3,7 +3,7 @@ /* { dg-skip-if "" { *-*-* } { "-flto" } } */ /* { dg-final { check-function-bodies "**" "" } } */ -#include "../../../sat_arith.h" +#include "vec_sat_arith.h" /* ** vec_sat_u_sub_uint16_t_fmt_1: diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_u_sub-3.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_u_sub-3.c index 795d5ff5c70..ab688fcde96 100644 --- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_u_sub-3.c +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_u_sub-3.c @@ -3,7 +3,7 @@ /* { dg-skip-if "" { *-*-* } { "-flto" } } */ /* { dg-final { check-function-bodies "**" "" } } */ -#include "../../../sat_arith.h" +#include "vec_sat_arith.h" /* ** vec_sat_u_sub_uint32_t_fmt_1: diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_u_sub-4.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_u_sub-4.c index 00527c68003..8bcca4fa474 100644 --- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_u_sub-4.c +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_u_sub-4.c @@ -3,7 +3,7 @@ /* { dg-skip-if "" { *-*-* } { "-flto" } } */ /* { dg-final { check-function-bodies "**" "" } } */ -#include "../../../sat_arith.h" +#include "vec_sat_arith.h" /* ** vec_sat_u_sub_uint64_t_fmt_1: diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_u_sub-run-1.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_u_sub-run-1.c index 4f6b7927f19..b6c48388cf8 100644 --- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_u_sub-run-1.c +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_u_sub-run-1.c @@ -1,7 +1,7 @@ /* { dg-do run { target { riscv_v } } } */ /* { dg-additional-options "-std=c99" } */ -#include "../../../sat_arith.h" +#include "vec_sat_arith.h" #define T uint8_t #define N 16 diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_u_sub-run-2.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_u_sub-run-2.c index 8b115ea6ec3..18b53fd2df9 100644 --- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_u_sub-run-2.c +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_u_sub-run-2.c @@ -1,7 +1,7 @@ /* { dg-do run { target { riscv_v } } } */ /* { dg-additional-options "-std=c99" } */ -#include "../../../sat_arith.h" +#include "vec_sat_arith.h" #define T uint16_t #define N 16 diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_u_sub-run-3.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_u_sub-run-3.c index aa47ef7ce80..527a95b9a9f 100644 --- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_u_sub-run-3.c +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_u_sub-run-3.c @@ -1,7 +1,7 @@ /* { dg-do run { target { riscv_v } } } */ /* { dg-additional-options "-std=c99" } */ -#include "../../../sat_arith.h" +#include "vec_sat_arith.h" #define T uint32_t #define N 16 diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_u_sub-run-4.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_u_sub-run-4.c index 91daf3a7c1a..b78fd824acd 100644 --- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_u_sub-run-4.c +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_u_sub-run-4.c @@ -1,7 +1,7 @@ /* { dg-do run { target { riscv_v } } } */ /* { dg-additional-options "-std=c99" } */ -#include "../../../sat_arith.h" +#include "vec_sat_arith.h" #define T uint64_t #define N 16 diff --git a/gcc/testsuite/gcc.target/riscv/sat_arith.h b/gcc/testsuite/gcc.target/riscv/sat_arith.h index 4c02783e845..0f94c5ff087 100644 --- a/gcc/testsuite/gcc.target/riscv/sat_arith.h +++ b/gcc/testsuite/gcc.target/riscv/sat_arith.h @@ -52,19 +52,6 @@ sat_u_add_##T##_fmt_6 (T x, T y) \ return (T)(x + y) < x ? -1 : (x + y); \ } -#define DEF_VEC_SAT_U_ADD_FMT_1(T) \ -void __attribute__((noinline)) \ -vec_sat_u_add_##T##_fmt_1 (T *out, T *op_1, T *op_2, unsigned limit) \ -{ \ - unsigned i; \ - for (i = 0; i < limit; i++) \ - { \ - T x = op_1[i]; \ - T y = op_2[i]; \ - out[i] = (x + y) | (-(T)((T)(x + y) < x)); \ - } \ -} - #define RUN_SAT_U_ADD_FMT_1(T, x, y) sat_u_add_##T##_fmt_1(x, y) #define RUN_SAT_U_ADD_FMT_2(T, x, y) sat_u_add_##T##_fmt_2(x, y) #define RUN_SAT_U_ADD_FMT_3(T, x, y) sat_u_add_##T##_fmt_3(x, y) @@ -72,9 +59,6 @@ vec_sat_u_add_##T##_fmt_1 (T *out, T *op_1, T *op_2, unsigned limit) \ #define RUN_SAT_U_ADD_FMT_5(T, x, y) sat_u_add_##T##_fmt_5(x, y) #define RUN_SAT_U_ADD_FMT_6(T, x, y) sat_u_add_##T##_fmt_6(x, y) -#define RUN_VEC_SAT_U_ADD_FMT_1(T, out, op_1, op_2, N) \ - vec_sat_u_add_##T##_fmt_1(out, op_1, op_2, N) - /******************************************************************************/ /* Saturation Sub (Unsigned and Signed) */ /******************************************************************************/ @@ -92,11 +76,11 @@ sat_u_sub_##T##_fmt_2 (T x, T y) \ return (x - y) & (-(T)(x > y)); \ } -#define DEF_SAT_U_SUB_FMT_3(T) \ -T __attribute__((noinline)) \ -sat_u_sub_##T##_fmt_3 (T x, T y) \ -{ \ - return x > y ? x - y : 0; \ +#define DEF_SAT_U_SUB_FMT_3(T) \ +T __attribute__((noinline)) \ +sat_u_sub_##T##_fmt_3 (T x, T y) \ +{ \ + return x > y ? x - y : 0; \ } #define DEF_SAT_U_SUB_FMT_4(T) \ @@ -167,35 +151,4 @@ sat_u_sub_##T##_fmt_10 (T x, T y) \ #define RUN_SAT_U_SUB_FMT_9(T, x, y) sat_u_sub_##T##_fmt_9(x, y) #define RUN_SAT_U_SUB_FMT_10(T, x, y) sat_u_sub_##T##_fmt_10(x, y) -#define DEF_VEC_SAT_U_SUB_FMT_1(T) \ -void __attribute__((noinline)) \ -vec_sat_u_sub_##T##_fmt_1 (T *out, T *op_1, T *op_2, unsigned limit) \ -{ \ - unsigned i; \ - for (i = 0; i < limit; i++) \ - { \ - T x = op_1[i]; \ - T y = op_2[i]; \ - out[i] = (x - y) & (-(T)(x >= y)); \ - } \ -} - -#define DEF_VEC_SAT_U_SUB_FMT_2(T) \ -void __attribute__((noinline)) \ -vec_sat_u_sub_##T##_fmt_2 (T *out, T *op_1, T *op_2, unsigned limit) \ -{ \ - unsigned i; \ - for (i = 0; i < limit; i++) \ - { \ - T x = op_1[i]; \ - T y = op_2[i]; \ - out[i] = (x - y) & (-(T)(x > y)); \ - } \ -} - -#define RUN_VEC_SAT_U_SUB_FMT_1(T, out, op_1, op_2, N) \ - vec_sat_u_sub_##T##_fmt_1(out, op_1, op_2, N) -#define RUN_VEC_SAT_U_SUB_FMT_2(T, out, op_1, op_2, N) \ - vec_sat_u_sub_##T##_fmt_2(out, op_1, op_2, N) - #endif