This series fixes and improves the simplification and the canonicalization of signed compares. Luc Van Oostenryck (10): cmps: make clearer we're using the operands' size cmps: fix simplification of sext(x) + signed compare of {SMAX,SMIN} cmpu: fix canonicalization of unsigned (x {<,>=} C) --> (x {<=,>} C-1) cmps: add testcases for simplification of signed compares cmps: simplify signed compares with SMIN or SMAX cmps: canonicalize signed compares with SMIN/SMAX cmps: canonicalize SMIN/SMAX +- 1 --> EQ/NE cmps: canonicalize signed compares with constant cmps: canonicalize SEL(x {<,<=} y, a, b) --> SEL(x {>=,>} y, b, a) cmps: canonicalize SEL(x > 0, a, -a) --> SEL(x >= 0, a, -a) simplify.c | 73 +++++++++++++++++++++--- validation/optim/canonical-abs.c | 11 ++++ validation/optim/canonical-cmpe-minmax.c | 16 ++++++ validation/optim/canonical-cmps-minmax.c | 16 ++++++ validation/optim/canonical-cmps-sel.c | 25 ++++++++ validation/optim/canonical-cmps.c | 16 ++++++ validation/optim/cmp-sext-simm.c | 46 +++++++++++---- validation/optim/cmps-minmax.c | 16 ++++++ 8 files changed, 200 insertions(+), 19 deletions(-) create mode 100644 validation/optim/canonical-abs.c create mode 100644 validation/optim/canonical-cmpe-minmax.c create mode 100644 validation/optim/canonical-cmps-minmax.c create mode 100644 validation/optim/canonical-cmps-sel.c create mode 100644 validation/optim/canonical-cmps.c create mode 100644 validation/optim/cmps-minmax.c base-commit: 0fb77bb6e5429575f52b5e26f06db031f93de057 -- 2.30.0