InstCombineVectorOps.cpp (263508) | InstCombineVectorOps.cpp (266715) |
---|---|
1//===- InstCombineVectorOps.cpp -------------------------------------------===// 2// 3// The LLVM Compiler Infrastructure 4// 5// This file is distributed under the University of Illinois Open Source 6// License. See LICENSE.TXT for details. 7// 8//===----------------------------------------------------------------------===// --- 11 unchanged lines hidden (view full) --- 20/// CheapToScalarize - Return true if the value is cheaper to scalarize than it 21/// is to leave as a vector operation. isConstant indicates whether we're 22/// extracting one known element. If false we're extracting a variable index. 23static bool CheapToScalarize(Value *V, bool isConstant) { 24 if (Constant *C = dyn_cast<Constant>(V)) { 25 if (isConstant) return true; 26 27 // If all elts are the same, we can extract it and use any of the values. | 1//===- InstCombineVectorOps.cpp -------------------------------------------===// 2// 3// The LLVM Compiler Infrastructure 4// 5// This file is distributed under the University of Illinois Open Source 6// License. See LICENSE.TXT for details. 7// 8//===----------------------------------------------------------------------===// --- 11 unchanged lines hidden (view full) --- 20/// CheapToScalarize - Return true if the value is cheaper to scalarize than it 21/// is to leave as a vector operation. isConstant indicates whether we're 22/// extracting one known element. If false we're extracting a variable index. 23static bool CheapToScalarize(Value *V, bool isConstant) { 24 if (Constant *C = dyn_cast<Constant>(V)) { 25 if (isConstant) return true; 26 27 // If all elts are the same, we can extract it and use any of the values. |
28 Constant *Op0 = C->getAggregateElement(0U); 29 for (unsigned i = 1, e = V->getType()->getVectorNumElements(); i != e; ++i) 30 if (C->getAggregateElement(i) != Op0) 31 return false; 32 return true; | 28 if (Constant *Op0 = C->getAggregateElement(0U)) { 29 for (unsigned i = 1, e = V->getType()->getVectorNumElements(); i != e; 30 ++i) 31 if (C->getAggregateElement(i) != Op0) 32 return false; 33 return true; 34 } |
33 } 34 Instruction *I = dyn_cast<Instruction>(V); 35 if (!I) return false; 36 37 // Insert element gets simplified to the inserted element or is deleted if 38 // this is constant idx extract element and its a constant idx insertelt. 39 if (I->getOpcode() == Instruction::InsertElement && isConstant && 40 isa<ConstantInt>(I->getOperand(2))) --- 1006 unchanged lines hidden --- | 35 } 36 Instruction *I = dyn_cast<Instruction>(V); 37 if (!I) return false; 38 39 // Insert element gets simplified to the inserted element or is deleted if 40 // this is constant idx extract element and its a constant idx insertelt. 41 if (I->getOpcode() == Instruction::InsertElement && isConstant && 42 isa<ConstantInt>(I->getOperand(2))) --- 1006 unchanged lines hidden --- |