From: Kyrylo Tkachov <[email protected]>
This is a respin of the saturating matching improvement series.
Some patches have landed, after some small detours.
Thanks to Andrea and Richi for the reviews.
I'm resending the rebased series with what still remains.
Thanks,
Kyrill
Kyrylo Tkachov (9):
match-sat-alu.pd: Allow wider ranges for signed saturating truncation
match-sat-alu.pd: Recognize X - MIN (X, Y) as saturating subtraction
match-sat-alu.pd: Recognize signed saturation clamps
match-sat-alu.pd: Recognize more unsigned saturating subtraction forms
match-sat-alu.pd: Recognize strict widened unsigned saturation clamps
match-sat-alu.pd: Recognize signed saturating truncation after a shift
match-sat-alu.pd: Recognize unsigned constant-clamp truncation
match-sat-alu.pd: Recognize signed constant-clamp truncation
match-sat-alu.pd: Recognize complement masks for unsigned saturating
truncation
gcc/match-sat-alu.pd | 289 +++++++++++++++---
gcc/testsuite/gcc.dg/sat-trunc-signed-cmp-2.c | 42 +++
.../gcc.dg/vect/vect-sat-trunc-clamp-1.c | 121 ++++++++
.../gcc.dg/vect/vect-sat-trunc-clamp-2.c | 126 ++++++++
.../gcc.dg/vect/vect-sat-trunc-complement-1.c | 70 +++++
.../vect/vect-sat-trunc-range-precision-1.c | 121 ++++++++
.../vect/vect-sat-trunc-shift-sign-source-1.c | 220 +++++++++++++
.../gcc.target/aarch64/sat_s_clamp-1.c | 78 +++++
.../gcc.target/aarch64/sat_s_clamp-2.c | 43 +++
.../gcc.target/aarch64/sat_s_val_ashr-1.c | 30 ++
.../gcc.target/aarch64/sat_u_add_widen_lt-1.c | 32 ++
.../gcc.target/aarch64/sat_u_sub_minmax-1.c | 18 ++
.../gcc.target/aarch64/sat_u_sub_minmax-2.c | 32 ++
.../gcc.target/aarch64/sat_u_sub_minmax-3.c | 17 ++
.../gcc.target/aarch64/sat_u_sub_swapped-1.c | 27 ++
.../vect-sat-trunc-clamp-inner-use-1.c | 22 ++
.../vect-sat-trunc-clamp-multi-use-1.c | 21 ++
.../aarch64/vect-sat-trunc-clamp-s-1.c | 7 +
.../vect-sat-trunc-clamp-s-negative-1.c | 30 ++
.../aarch64/vect-sat-trunc-clamp-u-1.c | 7 +
.../vect-sat-trunc-clamp-u-negative-1.c | 30 ++
.../aarch64/vect-sat-trunc-complement-1.c | 30 ++
.../vect-sat-trunc-range-precision-1.c | 7 +
...ect-sat-trunc-range-precision-negative-1.c | 24 ++
.../vect-sat-trunc-shift-sign-source-1.c | 7 +
...t-sat-trunc-shift-sign-source-negative-1.c | 122 ++++++++
gcc/tree-ssa-math-opts.cc | 48 +--
27 files changed, 1567 insertions(+), 54 deletions(-)
create mode 100644 gcc/testsuite/gcc.dg/sat-trunc-signed-cmp-2.c
create mode 100644 gcc/testsuite/gcc.dg/vect/vect-sat-trunc-clamp-1.c
create mode 100644 gcc/testsuite/gcc.dg/vect/vect-sat-trunc-clamp-2.c
create mode 100644 gcc/testsuite/gcc.dg/vect/vect-sat-trunc-complement-1.c
create mode 100644 gcc/testsuite/gcc.dg/vect/vect-sat-trunc-range-precision-1.c
create mode 100644
gcc/testsuite/gcc.dg/vect/vect-sat-trunc-shift-sign-source-1.c
create mode 100644 gcc/testsuite/gcc.target/aarch64/sat_s_clamp-1.c
create mode 100644 gcc/testsuite/gcc.target/aarch64/sat_s_clamp-2.c
create mode 100644 gcc/testsuite/gcc.target/aarch64/sat_s_val_ashr-1.c
create mode 100644 gcc/testsuite/gcc.target/aarch64/sat_u_add_widen_lt-1.c
create mode 100644 gcc/testsuite/gcc.target/aarch64/sat_u_sub_minmax-1.c
create mode 100644 gcc/testsuite/gcc.target/aarch64/sat_u_sub_minmax-2.c
create mode 100644 gcc/testsuite/gcc.target/aarch64/sat_u_sub_minmax-3.c
create mode 100644 gcc/testsuite/gcc.target/aarch64/sat_u_sub_swapped-1.c
create mode 100644
gcc/testsuite/gcc.target/aarch64/vect-sat-trunc-clamp-inner-use-1.c
create mode 100644
gcc/testsuite/gcc.target/aarch64/vect-sat-trunc-clamp-multi-use-1.c
create mode 100644 gcc/testsuite/gcc.target/aarch64/vect-sat-trunc-clamp-s-1.c
create mode 100644
gcc/testsuite/gcc.target/aarch64/vect-sat-trunc-clamp-s-negative-1.c
create mode 100644 gcc/testsuite/gcc.target/aarch64/vect-sat-trunc-clamp-u-1.c
create mode 100644
gcc/testsuite/gcc.target/aarch64/vect-sat-trunc-clamp-u-negative-1.c
create mode 100644
gcc/testsuite/gcc.target/aarch64/vect-sat-trunc-complement-1.c
create mode 100644
gcc/testsuite/gcc.target/aarch64/vect-sat-trunc-range-precision-1.c
create mode 100644
gcc/testsuite/gcc.target/aarch64/vect-sat-trunc-range-precision-negative-1.c
create mode 100644
gcc/testsuite/gcc.target/aarch64/vect-sat-trunc-shift-sign-source-1.c
create mode 100644
gcc/testsuite/gcc.target/aarch64/vect-sat-trunc-shift-sign-source-negative-1.c
--
2.50.1 (Apple Git-155)