diff options
author | Craig Topper <craig.topper@gmail.com> | 2017-02-18 19:51:19 +0000 |
---|---|---|
committer | Craig Topper <craig.topper@gmail.com> | 2017-02-18 19:51:19 +0000 |
commit | 03a9adc2ba4179fc17522658f84535c310ec8c6c (patch) | |
tree | 43ef3d98dfd3a6b0ccba9fbb236382f3b31af9aa /llvm/lib/IR/AutoUpgrade.cpp | |
parent | aa49f144963f872fab2ce40adda265b668dcdacf (diff) | |
download | bcm5719-llvm-03a9adc2ba4179fc17522658f84535c310ec8c6c.tar.gz bcm5719-llvm-03a9adc2ba4179fc17522658f84535c310ec8c6c.zip |
[X86][IR] Simplify the XOP vpcmov autoupgrade code. NFC
llvm-svn: 295563
Diffstat (limited to 'llvm/lib/IR/AutoUpgrade.cpp')
-rw-r--r-- | llvm/lib/IR/AutoUpgrade.cpp | 10 |
1 files changed, 3 insertions, 7 deletions
diff --git a/llvm/lib/IR/AutoUpgrade.cpp b/llvm/lib/IR/AutoUpgrade.cpp index 099acbf0e78..977a61f0542 100644 --- a/llvm/lib/IR/AutoUpgrade.cpp +++ b/llvm/lib/IR/AutoUpgrade.cpp @@ -1079,14 +1079,10 @@ void llvm::UpgradeIntrinsicCall(CallInst *CI, Function *NewFn) { Builder.CreateCall(VPCOM, {CI->getArgOperand(0), CI->getArgOperand(1), Builder.getInt8(Imm)}); } else if (IsX86 && Name == "xop.vpcmov") { - Value *Arg0 = CI->getArgOperand(0); - Value *Arg1 = CI->getArgOperand(1); Value *Sel = CI->getArgOperand(2); - unsigned NumElts = CI->getType()->getVectorNumElements(); - Constant *MinusOne = ConstantVector::getSplat(NumElts, Builder.getInt64(-1)); - Value *NotSel = Builder.CreateXor(Sel, MinusOne); - Value *Sel0 = Builder.CreateAnd(Arg0, Sel); - Value *Sel1 = Builder.CreateAnd(Arg1, NotSel); + Value *NotSel = Builder.CreateNot(Sel); + Value *Sel0 = Builder.CreateAnd(CI->getArgOperand(0), Sel); + Value *Sel1 = Builder.CreateAnd(CI->getArgOperand(1), NotSel); Rep = Builder.CreateOr(Sel0, Sel1); } else if (IsX86 && Name == "sse42.crc32.64.8") { Function *CRC32 = Intrinsic::getDeclaration(F->getParent(), |