forked from OSchip/llvm-project
parent
dc883cf45a
commit
c89d2aad4c
|
@ -344,11 +344,11 @@ void llvm::UpgradeIntrinsicCall(CallInst *CI, Function *NewFn) {
|
|||
if (isLoadH || isLoadL || isMovL || isMovSD || isShufPD ||
|
||||
isUnpckhPD || isUnpcklPD || isPunpckhQPD || isPunpcklQPD) {
|
||||
std::vector<Constant*> Idxs;
|
||||
Value *Op0 = CI->getOperand(1);
|
||||
Value *Op0 = CI->getArgOperand(0);
|
||||
ShuffleVectorInst *SI = NULL;
|
||||
if (isLoadH || isLoadL) {
|
||||
Value *Op1 = UndefValue::get(Op0->getType());
|
||||
Value *Addr = new BitCastInst(CI->getOperand(2),
|
||||
Value *Addr = new BitCastInst(CI->getArgOperand(1),
|
||||
Type::getDoublePtrTy(C),
|
||||
"upgraded.", CI);
|
||||
Value *Load = new LoadInst(Addr, "upgraded.", false, 8, CI);
|
||||
|
@ -381,7 +381,7 @@ void llvm::UpgradeIntrinsicCall(CallInst *CI, Function *NewFn) {
|
|||
SI = new ShuffleVectorInst(ZeroV, Op0, Mask, "upgraded.", CI);
|
||||
} else if (isMovSD ||
|
||||
isUnpckhPD || isUnpcklPD || isPunpckhQPD || isPunpcklQPD) {
|
||||
Value *Op1 = CI->getOperand(2);
|
||||
Value *Op1 = CI->getArgOperand(1);
|
||||
if (isMovSD) {
|
||||
Idxs.push_back(ConstantInt::get(Type::getInt32Ty(C), 2));
|
||||
Idxs.push_back(ConstantInt::get(Type::getInt32Ty(C), 1));
|
||||
|
@ -395,8 +395,8 @@ void llvm::UpgradeIntrinsicCall(CallInst *CI, Function *NewFn) {
|
|||
Value *Mask = ConstantVector::get(Idxs);
|
||||
SI = new ShuffleVectorInst(Op0, Op1, Mask, "upgraded.", CI);
|
||||
} else if (isShufPD) {
|
||||
Value *Op1 = CI->getOperand(2);
|
||||
unsigned MaskVal = cast<ConstantInt>(CI->getOperand(3))->getZExtValue();
|
||||
Value *Op1 = CI->getArgOperand(1);
|
||||
unsigned MaskVal = cast<ConstantInt>(CI->getArgOperand(2))->getZExtValue();
|
||||
Idxs.push_back(ConstantInt::get(Type::getInt32Ty(C), MaskVal & 1));
|
||||
Idxs.push_back(ConstantInt::get(Type::getInt32Ty(C),
|
||||
((MaskVal >> 1) & 1)+2));
|
||||
|
@ -416,8 +416,8 @@ void llvm::UpgradeIntrinsicCall(CallInst *CI, Function *NewFn) {
|
|||
CI->eraseFromParent();
|
||||
} else if (F->getName() == "llvm.x86.sse41.pmulld") {
|
||||
// Upgrade this set of intrinsics into vector multiplies.
|
||||
Instruction *Mul = BinaryOperator::CreateMul(CI->getOperand(1),
|
||||
CI->getOperand(2),
|
||||
Instruction *Mul = BinaryOperator::CreateMul(CI->getArgOperand(0),
|
||||
CI->getArgOperand(1),
|
||||
CI->getName(),
|
||||
CI);
|
||||
// Fix up all the uses with our new multiply.
|
||||
|
@ -556,10 +556,10 @@ void llvm::UpgradeIntrinsicCall(CallInst *CI, Function *NewFn) {
|
|||
case Intrinsic::x86_mmx_psrl_w: {
|
||||
Value *Operands[2];
|
||||
|
||||
Operands[0] = CI->getOperand(1);
|
||||
Operands[0] = CI->getArgOperand(0);
|
||||
|
||||
// Cast the second parameter to the correct type.
|
||||
BitCastInst *BC = new BitCastInst(CI->getOperand(2),
|
||||
BitCastInst *BC = new BitCastInst(CI->getArgOperand(1),
|
||||
NewFn->getFunctionType()->getParamType(1),
|
||||
"upgraded.", CI);
|
||||
Operands[1] = BC;
|
||||
|
@ -643,8 +643,8 @@ void llvm::UpgradeIntrinsicCall(CallInst *CI, Function *NewFn) {
|
|||
case Intrinsic::memset: {
|
||||
// Add isVolatile
|
||||
const llvm::Type *I1Ty = llvm::Type::getInt1Ty(CI->getContext());
|
||||
Value *Operands[5] = { CI->getOperand(1), CI->getOperand(2),
|
||||
CI->getOperand(3), CI->getOperand(4),
|
||||
Value *Operands[5] = { CI->getArgOperand(0), CI->getArgOperand(1),
|
||||
CI->getArgOperand(2), CI->getArgOperand(3),
|
||||
llvm::ConstantInt::get(I1Ty, 0) };
|
||||
CallInst *NewCI = CallInst::Create(NewFn, Operands, Operands+5,
|
||||
CI->getName(), CI);
|
||||
|
@ -726,7 +726,8 @@ void llvm::CheckDebugInfoIntrinsics(Module *M) {
|
|||
if (Function *Declare = M->getFunction("llvm.dbg.declare")) {
|
||||
if (!Declare->use_empty()) {
|
||||
DbgDeclareInst *DDI = cast<DbgDeclareInst>(Declare->use_back());
|
||||
if (!isa<MDNode>(DDI->getOperand(1)) ||!isa<MDNode>(DDI->getOperand(2))) {
|
||||
if (!isa<MDNode>(DDI->getArgOperand(0)) ||
|
||||
!isa<MDNode>(DDI->getArgOperand(1))) {
|
||||
while (!Declare->use_empty()) {
|
||||
CallInst *CI = cast<CallInst>(Declare->use_back());
|
||||
CI->eraseFromParent();
|
||||
|
|
Loading…
Reference in New Issue