summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen/PostRAHazardRecognizer.cpp
diff options
context:
space:
mode:
authorRoman Lebedev <lebedev.ri@gmail.com>2018-04-23 20:38:49 +0000
committerRoman Lebedev <lebedev.ri@gmail.com>2018-04-23 20:38:49 +0000
commit95c6eaf530c190e62c15e35fe7a8c1e7b30e37c6 (patch)
tree9fd52facacd42de6b4c21f0887ba47c94fa18bcd /llvm/lib/CodeGen/PostRAHazardRecognizer.cpp
parentbf18cc56d3a58a2016767024b199a483d2083e8b (diff)
downloadbcm5719-llvm-95c6eaf530c190e62c15e35fe7a8c1e7b30e37c6.tar.gz
bcm5719-llvm-95c6eaf530c190e62c15e35fe7a8c1e7b30e37c6.zip
[DAGCombiner] Unfold scalar masked merge if profitable
Summary: This is [[ https://bugs.llvm.org/show_bug.cgi?id=37104 | PR37104 ]]. [[ https://bugs.llvm.org/show_bug.cgi?id=6773 | PR6773 ]] will introduce an IR canonicalization that is likely bad for the end assembly. Previously, `andl`+`andn`/`andps`+`andnps` / `bic`/`bsl` would be generated. (see `@out`) Now, they would no longer be generated (see `@in`). So we need to make sure that they are still generated. If the mask is constant, we do nothing. InstCombine should have unfolded it. Else, i use `hasAndNot()` TLI hook. For now, only handle scalars. https://rise4fun.com/Alive/bO6 ---- I *really* don't like the code i wrote in `DAGCombiner::unfoldMaskedMerge()`. It is super fragile. Is there something like IR Pattern Matchers for this? Reviewers: spatel, craig.topper, RKSimon, javed.absar Reviewed By: spatel Subscribers: andreadb, courbet, kristof.beyls, javed.absar, rengolin, nemanjai, llvm-commits Differential Revision: https://reviews.llvm.org/D45733 llvm-svn: 330646
Diffstat (limited to 'llvm/lib/CodeGen/PostRAHazardRecognizer.cpp')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud