diff options
author | Roman Lebedev <lebedev.ri@gmail.com> | 2020-01-03 17:11:49 +0300 |
---|---|---|
committer | Roman Lebedev <lebedev.ri@gmail.com> | 2020-01-03 17:55:46 +0300 |
commit | 473deaf34bc942f4ff50d4363e47ddcb510b56e0 (patch) | |
tree | 2bc8929669415cdb06e667f036e7bc8849b530f0 /llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp | |
parent | df4119c1146997e9a9dcc7129658f561c7eeadb4 (diff) | |
download | bcm5719-llvm-473deaf34bc942f4ff50d4363e47ddcb510b56e0.tar.gz bcm5719-llvm-473deaf34bc942f4ff50d4363e47ddcb510b56e0.zip |
[NFC][X86][AArch64] Add 'A - (A & B)' pattern tests (PR44448)
The fold 'A - (A & (B - 1))' -> 'A & (0 - B)'
added in 8dab0a4a7d691f2704f1079538e0ef29548db159
is too specific. It should just be 'A - (A & B)' -> 'A & (~B)'
Name: X - (X & Y) -> X & (~Y)
%o = and i32 %X, %Y
%r = sub i32 %X, %o
=>
%n = xor i32 %Y, -1
%r = and i32 %X, %n
https://rise4fun.com/Alive/kOUl
See
https://bugs.llvm.org/show_bug.cgi?id=44448
https://reviews.llvm.org/D71499
Diffstat (limited to 'llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp')
0 files changed, 0 insertions, 0 deletions