diff options
author | Simon Pilgrim <llvm-dev@redking.me.uk> | 2015-08-05 08:18:00 +0000 |
---|---|---|
committer | Simon Pilgrim <llvm-dev@redking.me.uk> | 2015-08-05 08:18:00 +0000 |
commit | 18617d193fa54edb41acd39cf6a7623fdbbce897 (patch) | |
tree | 51887a6d93c661b3ce6a569335071b1b7ead01d3 /llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp | |
parent | 17caf326e5dbf5f4aa320948f8a195d7465eeab0 (diff) | |
download | bcm5719-llvm-18617d193fa54edb41acd39cf6a7623fdbbce897.tar.gz bcm5719-llvm-18617d193fa54edb41acd39cf6a7623fdbbce897.zip |
Fixed line endings.
llvm-svn: 244021
Diffstat (limited to 'llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp')
-rw-r--r-- | llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp | 144 |
1 files changed, 72 insertions, 72 deletions
diff --git a/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp b/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp index e09c0025351..668789b516d 100644 --- a/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp +++ b/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp @@ -194,44 +194,44 @@ Instruction *InstCombiner::SimplifyMemSet(MemSetInst *MI) { return MI; } - return nullptr;
-}
-
-static Value *SimplifyX86immshift(const IntrinsicInst &II,
- InstCombiner::BuilderTy &Builder,
- bool ShiftLeft) {
- // Simplify if count is constant. To 0 if >= BitWidth,
- // otherwise to shl/lshr.
- auto CDV = dyn_cast<ConstantDataVector>(II.getArgOperand(1));
- auto CInt = dyn_cast<ConstantInt>(II.getArgOperand(1));
- if (!CDV && !CInt)
- return nullptr;
- ConstantInt *Count;
- if (CDV)
- Count = cast<ConstantInt>(CDV->getElementAsConstant(0));
- else
- Count = CInt;
-
- auto Vec = II.getArgOperand(0);
- auto VT = cast<VectorType>(Vec->getType());
- auto SVT = VT->getElementType();
- if (Count->getZExtValue() > (SVT->getPrimitiveSizeInBits() - 1))
- return ConstantAggregateZero::get(VT);
-
- unsigned VWidth = VT->getNumElements();
-
- // Get a constant vector of the same type as the first operand.
- auto VTCI = ConstantInt::get(VT->getElementType(), Count->getZExtValue());
-
- if (ShiftLeft)
- return Builder.CreateShl(Vec, Builder.CreateVectorSplat(VWidth, VTCI));
-
- return Builder.CreateLShr(Vec, Builder.CreateVectorSplat(VWidth, VTCI));
-}
-
-static Value *SimplifyX86extend(const IntrinsicInst &II,
- InstCombiner::BuilderTy &Builder,
- bool SignExtend) {
+ return nullptr; +} + +static Value *SimplifyX86immshift(const IntrinsicInst &II, + InstCombiner::BuilderTy &Builder, + bool ShiftLeft) { + // Simplify if count is constant. To 0 if >= BitWidth, + // otherwise to shl/lshr. + auto CDV = dyn_cast<ConstantDataVector>(II.getArgOperand(1)); + auto CInt = dyn_cast<ConstantInt>(II.getArgOperand(1)); + if (!CDV && !CInt) + return nullptr; + ConstantInt *Count; + if (CDV) + Count = cast<ConstantInt>(CDV->getElementAsConstant(0)); + else + Count = CInt; + + auto Vec = II.getArgOperand(0); + auto VT = cast<VectorType>(Vec->getType()); + auto SVT = VT->getElementType(); + if (Count->getZExtValue() > (SVT->getPrimitiveSizeInBits() - 1)) + return ConstantAggregateZero::get(VT); + + unsigned VWidth = VT->getNumElements(); + + // Get a constant vector of the same type as the first operand. + auto VTCI = ConstantInt::get(VT->getElementType(), Count->getZExtValue()); + + if (ShiftLeft) + return Builder.CreateShl(Vec, Builder.CreateVectorSplat(VWidth, VTCI)); + + return Builder.CreateLShr(Vec, Builder.CreateVectorSplat(VWidth, VTCI)); +} + +static Value *SimplifyX86extend(const IntrinsicInst &II, + InstCombiner::BuilderTy &Builder, + bool SignExtend) { VectorType *SrcTy = cast<VectorType>(II.getArgOperand(0)->getType()); VectorType *DstTy = cast<VectorType>(II.getType()); unsigned NumDstElts = DstTy->getNumElements(); @@ -750,46 +750,46 @@ Instruction *InstCombiner::visitCallInst(CallInst &CI) { II->setArgOperand(0, V); return II; } - break;
- }
-
- // Constant fold lshr( <A x Bi>, Ci ).
- case Intrinsic::x86_sse2_psrl_d:
- case Intrinsic::x86_sse2_psrl_q:
- case Intrinsic::x86_sse2_psrl_w:
- case Intrinsic::x86_sse2_psrli_d:
- case Intrinsic::x86_sse2_psrli_q:
- case Intrinsic::x86_sse2_psrli_w:
- case Intrinsic::x86_avx2_psrl_d:
- case Intrinsic::x86_avx2_psrl_q:
- case Intrinsic::x86_avx2_psrl_w:
- case Intrinsic::x86_avx2_psrli_d:
- case Intrinsic::x86_avx2_psrli_q:
- case Intrinsic::x86_avx2_psrli_w:
- if (Value *V = SimplifyX86immshift(*II, *Builder, false))
- return ReplaceInstUsesWith(*II, V);
- break;
-
- // Constant fold shl( <A x Bi>, Ci ).
- case Intrinsic::x86_sse2_psll_d:
- case Intrinsic::x86_sse2_psll_q:
- case Intrinsic::x86_sse2_psll_w:
+ break; + } + + // Constant fold lshr( <A x Bi>, Ci ). + case Intrinsic::x86_sse2_psrl_d: + case Intrinsic::x86_sse2_psrl_q: + case Intrinsic::x86_sse2_psrl_w: + case Intrinsic::x86_sse2_psrli_d: + case Intrinsic::x86_sse2_psrli_q: + case Intrinsic::x86_sse2_psrli_w: + case Intrinsic::x86_avx2_psrl_d: + case Intrinsic::x86_avx2_psrl_q: + case Intrinsic::x86_avx2_psrl_w: + case Intrinsic::x86_avx2_psrli_d: + case Intrinsic::x86_avx2_psrli_q: + case Intrinsic::x86_avx2_psrli_w: + if (Value *V = SimplifyX86immshift(*II, *Builder, false)) + return ReplaceInstUsesWith(*II, V); + break; + + // Constant fold shl( <A x Bi>, Ci ). + case Intrinsic::x86_sse2_psll_d: + case Intrinsic::x86_sse2_psll_q: + case Intrinsic::x86_sse2_psll_w: case Intrinsic::x86_sse2_pslli_d: case Intrinsic::x86_sse2_pslli_q: case Intrinsic::x86_sse2_pslli_w: case Intrinsic::x86_avx2_psll_d: case Intrinsic::x86_avx2_psll_q: case Intrinsic::x86_avx2_psll_w: - case Intrinsic::x86_avx2_pslli_d:
- case Intrinsic::x86_avx2_pslli_q:
- case Intrinsic::x86_avx2_pslli_w:
- if (Value *V = SimplifyX86immshift(*II, *Builder, true))
- return ReplaceInstUsesWith(*II, V);
- break;
-
- case Intrinsic::x86_sse41_pmovsxbd:
- case Intrinsic::x86_sse41_pmovsxbq:
- case Intrinsic::x86_sse41_pmovsxbw:
+ case Intrinsic::x86_avx2_pslli_d: + case Intrinsic::x86_avx2_pslli_q: + case Intrinsic::x86_avx2_pslli_w: + if (Value *V = SimplifyX86immshift(*II, *Builder, true)) + return ReplaceInstUsesWith(*II, V); + break; + + case Intrinsic::x86_sse41_pmovsxbd: + case Intrinsic::x86_sse41_pmovsxbq: + case Intrinsic::x86_sse41_pmovsxbw: case Intrinsic::x86_sse41_pmovsxdq: case Intrinsic::x86_sse41_pmovsxwd: case Intrinsic::x86_sse41_pmovsxwq: |