[AggressiveInstCombine] Lower Table Based CTTZ
authorDjordje Todorovic <djordje.todorovic@syrmia.com>
Thu, 1 Sep 2022 07:21:34 +0000 (09:21 +0200)
committerDjordje Todorovic <djordje.todorovic@syrmia.com>
Fri, 2 Sep 2022 15:26:55 +0000 (17:26 +0200)
commitfec01ee3f5244bb9a04bc4310fc892c56c5b6bab
treef5d3a466ab6a27f657a4bbc7d5b937c6594ae13b
parentf458d9f6f892c3765174ad8f0cc912d930329f43
[AggressiveInstCombine] Lower Table Based CTTZ

This patch introduces recognition of table-based ctz implementation
during the AggressiveInstCombine.

This fixes the [0].

[0] https://bugs.llvm.org/show_bug.cgi?id=46434

Differential Revision: https://reviews.llvm.org/D113291
llvm/lib/Transforms/AggressiveInstCombine/AggressiveInstCombine.cpp
llvm/test/Transforms/AggressiveInstCombine/lower-table-based-cttz-basics.ll [new file with mode: 0644]
llvm/test/Transforms/AggressiveInstCombine/lower-table-based-cttz-dereferencing-pointer.ll [new file with mode: 0644]
llvm/test/Transforms/AggressiveInstCombine/lower-table-based-cttz-non-argument-value.ll [new file with mode: 0644]
llvm/test/Transforms/AggressiveInstCombine/lower-table-based-cttz-zero-element.ll [new file with mode: 0644]
llvm/test/Transforms/AggressiveInstCombine/negative-lower-table-based-cttz.ll [new file with mode: 0644]
llvm/test/Transforms/PhaseOrdering/lower-table-based-cttz.ll [new file with mode: 0644]