summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen/SelectionDAG/TargetLowering.cpp
diff options
context:
space:
mode:
authorSimon Pilgrim <llvm-dev@redking.me.uk>2019-04-09 12:29:26 +0000
committerSimon Pilgrim <llvm-dev@redking.me.uk>2019-04-09 12:29:26 +0000
commit55f79ef9fec6a6e805b5a7bd5aa30f02ede489d3 (patch)
tree221682781e38469b0e242b6f608dfac21bcd4917 /llvm/lib/CodeGen/SelectionDAG/TargetLowering.cpp
parent03c3e0d3bf032c72fb46ac2c1f90bda3b56493cc (diff)
downloadbcm5719-llvm-55f79ef9fec6a6e805b5a7bd5aa30f02ede489d3.tar.gz
bcm5719-llvm-55f79ef9fec6a6e805b5a7bd5aa30f02ede489d3.zip
[TargetLowering] SimplifyDemandedBits - Remove GetDemandedSrcMask lambda. NFCI.
An older version of this could return false but now that this always succeeds we can just inline and simplify it. llvm-svn: 357999
Diffstat (limited to 'llvm/lib/CodeGen/SelectionDAG/TargetLowering.cpp')
-rw-r--r--llvm/lib/CodeGen/SelectionDAG/TargetLowering.cpp49
1 files changed, 21 insertions, 28 deletions
diff --git a/llvm/lib/CodeGen/SelectionDAG/TargetLowering.cpp b/llvm/lib/CodeGen/SelectionDAG/TargetLowering.cpp
index 114bb1c11f6..ab934d18aee 100644
--- a/llvm/lib/CodeGen/SelectionDAG/TargetLowering.cpp
+++ b/llvm/lib/CodeGen/SelectionDAG/TargetLowering.cpp
@@ -1402,37 +1402,30 @@ bool TargetLowering::SimplifyDemandedBits(
if (SrcVT.isVector() && NumSrcEltBits > 1 &&
(BitWidth % NumSrcEltBits) == 0 &&
TLO.DAG.getDataLayout().isLittleEndian()) {
- auto GetDemandedSrcMask = [&](APInt &DemandedSrcBits,
- APInt &DemandedSrcElts) -> bool {
- unsigned Scale = BitWidth / NumSrcEltBits;
- unsigned NumSrcElts = SrcVT.getVectorNumElements();
- DemandedSrcBits = APInt::getNullValue(NumSrcEltBits);
- DemandedSrcElts = APInt::getNullValue(NumSrcElts);
- for (unsigned i = 0; i != Scale; ++i) {
- unsigned Offset = i * NumSrcEltBits;
- APInt Sub = DemandedBits.extractBits(NumSrcEltBits, Offset);
- if (!Sub.isNullValue()) {
- DemandedSrcBits |= Sub;
- for (unsigned j = 0; j != NumElts; ++j)
- if (DemandedElts[j])
- DemandedSrcElts.setBit((j * Scale) + i);
- }
+ unsigned Scale = BitWidth / NumSrcEltBits;
+ unsigned NumSrcElts = SrcVT.getVectorNumElements();
+ APInt DemandedSrcBits = APInt::getNullValue(NumSrcEltBits);
+ APInt DemandedSrcElts = APInt::getNullValue(NumSrcElts);
+ for (unsigned i = 0; i != Scale; ++i) {
+ unsigned Offset = i * NumSrcEltBits;
+ APInt Sub = DemandedBits.extractBits(NumSrcEltBits, Offset);
+ if (!Sub.isNullValue()) {
+ DemandedSrcBits |= Sub;
+ for (unsigned j = 0; j != NumElts; ++j)
+ if (DemandedElts[j])
+ DemandedSrcElts.setBit((j * Scale) + i);
}
- return true;
- };
+ }
- APInt DemandedSrcBits, DemandedSrcElts;
- if (GetDemandedSrcMask(DemandedSrcBits, DemandedSrcElts)) {
- APInt KnownSrcUndef, KnownSrcZero;
- if (SimplifyDemandedVectorElts(Src, DemandedSrcElts, KnownSrcUndef,
- KnownSrcZero, TLO, Depth + 1))
- return true;
+ APInt KnownSrcUndef, KnownSrcZero;
+ if (SimplifyDemandedVectorElts(Src, DemandedSrcElts, KnownSrcUndef,
+ KnownSrcZero, TLO, Depth + 1))
+ return true;
- KnownBits KnownSrcBits;
- if (SimplifyDemandedBits(Src, DemandedSrcBits, DemandedSrcElts,
- KnownSrcBits, TLO, Depth + 1))
- return true;
- }
+ KnownBits KnownSrcBits;
+ if (SimplifyDemandedBits(Src, DemandedSrcBits, DemandedSrcElts,
+ KnownSrcBits, TLO, Depth + 1))
+ return true;
}
// If this is a bitcast, let computeKnownBits handle it. Only do this on a
OpenPOWER on IntegriCloud