diff options
author | Simon Pilgrim <llvm-dev@redking.me.uk> | 2016-05-27 09:02:25 +0000 |
---|---|---|
committer | Simon Pilgrim <llvm-dev@redking.me.uk> | 2016-05-27 09:02:25 +0000 |
commit | 4642a57fbfda606d6af3da4f0ee5c17c96cfcce5 (patch) | |
tree | 9e974b951d5d21527747287cee31f89993d22637 /llvm/lib/IR/AutoUpgrade.cpp | |
parent | 99302edd1c63639204f0f1a8799384995dba4ca1 (diff) | |
download | llvm-4642a57fbfda606d6af3da4f0ee5c17c96cfcce5.zip llvm-4642a57fbfda606d6af3da4f0ee5c17c96cfcce5.tar.gz llvm-4642a57fbfda606d6af3da4f0ee5c17c96cfcce5.tar.bz2 |
Revert: r270973 - [X86][SSE] Replace (V)PMOVSX and (V)PMOVZX integer extension intrinsics with generic IR (llvm)
llvm-svn: 270976
Diffstat (limited to 'llvm/lib/IR/AutoUpgrade.cpp')
-rw-r--r-- | llvm/lib/IR/AutoUpgrade.cpp | 15 |
1 files changed, 3 insertions, 12 deletions
diff --git a/llvm/lib/IR/AutoUpgrade.cpp b/llvm/lib/IR/AutoUpgrade.cpp index fd2873e..d05bb47 100644 --- a/llvm/lib/IR/AutoUpgrade.cpp +++ b/llvm/lib/IR/AutoUpgrade.cpp @@ -178,9 +178,6 @@ static bool UpgradeIntrinsicFunction1(Function *F, Function *&NewFn) { Name.startswith("x86.avx2.pbroadcast") || Name.startswith("x86.avx.vpermil.") || Name.startswith("x86.sse41.pmovsx") || - Name.startswith("x86.sse41.pmovzx") || - Name.startswith("x86.avx2.pmovsx") || - Name.startswith("x86.avx2.pmovzx") || Name == "x86.sse2.cvtdq2pd" || Name == "x86.sse2.cvtps2pd" || Name == "x86.avx.cvtdq2.pd.256" || @@ -547,25 +544,19 @@ void llvm::UpgradeIntrinsicCall(CallInst *CI, Function *NewFn) { for (unsigned I = 0; I < EltNum; ++I) Rep = Builder.CreateInsertElement(Rep, Load, ConstantInt::get(I32Ty, I)); - } else if (Name.startswith("llvm.x86.sse41.pmovsx") || - Name.startswith("llvm.x86.sse41.pmovzx") || - Name.startswith("llvm.x86.avx2.pmovsx") || - Name.startswith("llvm.x86.avx2.pmovzx")) { + } else if (Name.startswith("llvm.x86.sse41.pmovsx")) { VectorType *SrcTy = cast<VectorType>(CI->getArgOperand(0)->getType()); VectorType *DstTy = cast<VectorType>(CI->getType()); unsigned NumDstElts = DstTy->getNumElements(); - // Extract a subvector of the first NumDstElts lanes and sign/zero extend. + // Extract a subvector of the first NumDstElts lanes and sign extend. SmallVector<int, 8> ShuffleMask; for (int i = 0; i != (int)NumDstElts; ++i) ShuffleMask.push_back(i); Value *SV = Builder.CreateShuffleVector( CI->getArgOperand(0), UndefValue::get(SrcTy), ShuffleMask); - - bool DoSext = (StringRef::npos != Name.find("pmovsx")); - Rep = DoSext ? Builder.CreateSExt(SV, DstTy) - : Builder.CreateZExt(SV, DstTy); + Rep = Builder.CreateSExt(SV, DstTy); } else if (Name == "llvm.x86.avx2.vbroadcasti128") { // Replace vbroadcasts with a vector shuffle. Type *VT = VectorType::get(Type::getInt64Ty(C), 2); |