diff options
author | Craig Topper <craig.topper@gmail.com> | 2016-05-25 06:56:32 +0000 |
---|---|---|
committer | Craig Topper <craig.topper@gmail.com> | 2016-05-25 06:56:32 +0000 |
commit | 12e322a8cfb1e043ea8d22a226de2f953b5c3f2a (patch) | |
tree | 999c2d8f205379052e107d203dbbff2676c48253 /llvm/lib/IR/AutoUpgrade.cpp | |
parent | 613e7041902f7469efeeac309b075b66d0a8b776 (diff) | |
download | bcm5719-llvm-12e322a8cfb1e043ea8d22a226de2f953b5c3f2a.tar.gz bcm5719-llvm-12e322a8cfb1e043ea8d22a226de2f953b5c3f2a.zip |
[X86] Remove the llvm.x86.sse2.storel.dq intrinsic. It hasn't been used in a long time.
llvm-svn: 270677
Diffstat (limited to 'llvm/lib/IR/AutoUpgrade.cpp')
-rw-r--r-- | llvm/lib/IR/AutoUpgrade.cpp | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/llvm/lib/IR/AutoUpgrade.cpp b/llvm/lib/IR/AutoUpgrade.cpp index 41d59b372ca..ff7588e7fcf 100644 --- a/llvm/lib/IR/AutoUpgrade.cpp +++ b/llvm/lib/IR/AutoUpgrade.cpp @@ -189,6 +189,7 @@ static bool UpgradeIntrinsicFunction1(Function *F, Function *&NewFn) { Name == "x86.avx.movnt.dq.256" || Name == "x86.avx.movnt.pd.256" || Name == "x86.avx.movnt.ps.256" || + Name == "x86.sse2.storel.dq" || Name == "x86.sse42.crc32.64.8" || Name == "x86.avx.vbroadcast.ss" || Name == "x86.avx.vbroadcast.ss.256" || @@ -422,6 +423,25 @@ void llvm::UpgradeIntrinsicCall(CallInst *CI, Function *NewFn) { // Remove intrinsic. CI->eraseFromParent(); return; + } else if (Name == "llvm.x86.sse2.storel.dq") { + IRBuilder<> Builder(C); + Builder.SetInsertPoint(CI->getParent(), CI->getIterator()); + + Value *Arg0 = CI->getArgOperand(0); + Value *Arg1 = CI->getArgOperand(1); + + Type *NewVecTy = VectorType::get(Type::getInt64Ty(C), 2); + Value *BC0 = Builder.CreateBitCast(Arg1, NewVecTy, "cast"); + Value *Elt = Builder.CreateExtractElement(BC0, (uint64_t)0); + Value *BC = Builder.CreateBitCast(Arg0, + PointerType::getUnqual(Elt->getType()), + "cast"); + StoreInst *SI = Builder.CreateStore(Elt, BC); + SI->setAlignment(1); + + // Remove intrinsic. + CI->eraseFromParent(); + return; } else if (Name.startswith("llvm.x86.xop.vpcom")) { Intrinsic::ID intID; if (Name.endswith("ub")) |