diff options
author | Pierre van Houtryve <pierre.vanhoutryve@amd.com> | 2025-07-30 10:27:19 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-07-30 10:27:19 +0200 |
commit | c4b155709714fb3381049b6d523c1f518dc363f5 (patch) | |
tree | d983a1354ce966e0f51939665c0edddd7d281e32 /clang/lib/CodeGen/CodeGenModule.cpp | |
parent | fb49c6784ad425a332bd528567b9c26624fff5b0 (diff) | |
download | llvm-c4b155709714fb3381049b6d523c1f518dc363f5.zip llvm-c4b155709714fb3381049b6d523c1f518dc363f5.tar.gz llvm-c4b155709714fb3381049b6d523c1f518dc363f5.tar.bz2 |
[DAG] Fold (setcc ((x | x >> c0 | ...) & mask)) sequences (#146054)
Fold sequences where we extract a bunch of contiguous bits from a value,
merge them into the low bit and then check if the low bits are zero or
not.
Usually the and would be on the outside (the leaves) of the expression,
but the DAG canonicalizes it to a single `and` at the root of the
expression.
The reason I put this in DAGCombiner instead of the target combiner is
because this is a generic, valid transform that's also fairly niche, so
there isn't much risk of a combine loop I think.
See #136727
Diffstat (limited to 'clang/lib/CodeGen/CodeGenModule.cpp')
0 files changed, 0 insertions, 0 deletions