Changeset View
Changeset View
Standalone View
Standalone View
llvm/lib/Transforms/Scalar/Scalarizer.cpp
Show First 20 Lines • Show All 573 Lines • ▼ Show 20 Lines | bool ScalarizerVisitor::splitCall(CallInst &CI) { | ||||
unsigned NumArgs = CI.arg_size(); | unsigned NumArgs = CI.arg_size(); | ||||
ValueVector ScalarOperands(NumArgs); | ValueVector ScalarOperands(NumArgs); | ||||
SmallVector<Scatterer, 8> Scattered(NumArgs); | SmallVector<Scatterer, 8> Scattered(NumArgs); | ||||
Scattered.resize(NumArgs); | Scattered.resize(NumArgs); | ||||
SmallVector<llvm::Type *, 3> Tys; | SmallVector<llvm::Type *, 3> Tys; | ||||
if (isVectorIntrinsicWithReturnOverloadType(ID)) | |||||
Tys.push_back(VT->getScalarType()); | Tys.push_back(VT->getScalarType()); | ||||
// Assumes that any vector type has the same number of elements as the return | // Assumes that any vector type has the same number of elements as the return | ||||
// vector type, which is true for all current intrinsics. | // vector type, which is true for all current intrinsics. | ||||
for (unsigned I = 0; I != NumArgs; ++I) { | for (unsigned I = 0; I != NumArgs; ++I) { | ||||
Value *OpI = CI.getOperand(I); | Value *OpI = CI.getOperand(I); | ||||
if (OpI->getType()->isVectorTy()) { | if (OpI->getType()->isVectorTy()) { | ||||
Scattered[I] = scatter(&CI, OpI); | Scattered[I] = scatter(&CI, OpI); | ||||
assert(Scattered[I].size() == NumElems && "mismatched call operands"); | assert(Scattered[I].size() == NumElems && "mismatched call operands"); | ||||
▲ Show 20 Lines • Show All 433 Lines • Show Last 20 Lines |