On Wed, Jun 24, 2026 at 11:04 PM Philipp Tomsich
<[email protected]> wrote:
>
> This is v2 of the second half of the PR122569 series (v1 1/2) is
> already applied.
>
> Reviewers asked to factor the shift-cascade matching out of
> clz_table_index: 1/2 does that (no functional change), introducing the
> msb_or_cascade_{32,64} helpers; 2/2 then recognises the variant CLZ
> idiom that isolates the MSB via (value - (value >> 1)) before the
> DeBruijn multiply, reusing the 64-bit helper.
>
> Bootstrapped and regression-tested on x86_64-linux-gnu and aarch64-linux-gnu.
OK.
Thanks,
Richard.
> Changes in v2:
> - v1 1/2 ("fix DeBruijn CLZ table validator shift-by-64 UB") has been
> applied upstream and is dropped from this series.
> - Per reviewer feedback, factor the MSB OR-cascade matching out of
> clz_table_index into reusable msb_or_cascade_32 / msb_or_cascade_64
> match helpers (new 1/2), so the recognition pattern (2/2) can be built
> on top of the 64-bit helper instead of respelling the cascade.
>
> Philipp Tomsich (2):
> match.pd: factor MSB OR-cascade out of clz_table_index
> tree-optimization/122569 - recognize CLZ via isolated MSB DeBruijn
> lookup
>
> gcc/match.pd | 78 ++++++++++++++--------
> gcc/testsuite/gcc.dg/tree-ssa/pr122569-3.c | 38 +++++++++++
> gcc/tree-ssa-forwprop.cc | 32 +++++++--
> 3 files changed, 116 insertions(+), 32 deletions(-)
> create mode 100644 gcc/testsuite/gcc.dg/tree-ssa/pr122569-3.c
>
> --
> 2.34.1
>
> base-commit: 1904b9207203bbe45d6ce6a472d6a0c7e1bbd873
> branch: ptomsich/pr122569-v2