diff options
author | Simon Pilgrim <llvm-dev@redking.me.uk> | 2017-03-10 18:36:46 +0000 |
---|---|---|
committer | Simon Pilgrim <llvm-dev@redking.me.uk> | 2017-03-10 18:36:46 +0000 |
commit | 7dedbfa89d7380555f77abc624061de40ae91e5f (patch) | |
tree | fd8463dcd9c80cf71a1d765340b86ff349e15222 /llvm/lib/CodeGen | |
parent | 685fbda217eeb1f74770f9f44c48e0fcc6daf915 (diff) | |
download | bcm5719-llvm-7dedbfa89d7380555f77abc624061de40ae91e5f.tar.gz bcm5719-llvm-7dedbfa89d7380555f77abc624061de40ae91e5f.zip |
[SelectionDAG] Add support for BUILD_VECTOR to ComputeNumSignBits
llvm-svn: 297492
Diffstat (limited to 'llvm/lib/CodeGen')
-rw-r--r-- | llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp b/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp index f86984880ea..ab841873e13 100644 --- a/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp +++ b/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp @@ -2906,6 +2906,12 @@ unsigned SelectionDAG::ComputeNumSignBits(SDValue Op, unsigned Depth) const { return Val.getNumSignBits(); } + case ISD::BUILD_VECTOR: + Tmp = ComputeNumSignBits(Op.getOperand(0), Depth + 1); + for (unsigned i = 1, e = Op.getNumOperands(); (i < e) && (Tmp > 1); ++i) + Tmp = std::min(Tmp, ComputeNumSignBits(Op.getOperand(i), Depth + 1)); + return Tmp; + case ISD::SIGN_EXTEND: case ISD::SIGN_EXTEND_VECTOR_INREG: Tmp = VTBits - Op.getOperand(0).getScalarValueSizeInBits(); |