From: Pan Li <pan2...@intel.com> In some cases the widen-mul may generate unnecessary cast similar as below, this patch series would like to refine it. Then, some pattern match like SAT_MUL could be simplified based on it.
29 │ _1 = (__int128 unsigned) a_8(D); 30 │ _2 = (__int128 unsigned) b_9(D); 31 │ _35 = (unsigned long) _1; 32 │ _34 = (unsigned long) _2; 33 │ x_10 = _35 w* _34; Pan Li (2): Widening-Mul: Refine build_and_insert_cast when rhs is cast Match: Adjust the unsigned SAT_MUL pattern gcc/match.pd | 4 ++-- .../gcc.target/riscv/sat/widen-mul-0.c | 8 +++++++ .../gcc.target/riscv/sat/widen-mul-1.c | 8 +++++++ .../gcc.target/riscv/sat/widen-mul-2.c | 8 +++++++ .../gcc.target/riscv/sat/widen-mul-3.c | 8 +++++++ .../gcc.target/riscv/sat/widen-mul.h | 15 +++++++++++++ gcc/tree-ssa-math-opts.cc | 21 ++++++++++++++++++- 7 files changed, 69 insertions(+), 3 deletions(-) create mode 100644 gcc/testsuite/gcc.target/riscv/sat/widen-mul-0.c create mode 100644 gcc/testsuite/gcc.target/riscv/sat/widen-mul-1.c create mode 100644 gcc/testsuite/gcc.target/riscv/sat/widen-mul-2.c create mode 100644 gcc/testsuite/gcc.target/riscv/sat/widen-mul-3.c create mode 100644 gcc/testsuite/gcc.target/riscv/sat/widen-mul.h -- 2.43.0