Home | History | Annotate | Download | only in Vectorize

Lines Matching refs:Scalars

292   /// context means the creation of vectors from a group of scalars.
314 /// \returns a vector from a collection of scalars in \p VL.
318 TreeEntry() : Scalars(), VectorizedValue(0), LastScalarIndex(0),
321 /// \returns true if the scalars in VL are equal to this entry.
323 assert(VL.size() == Scalars.size() && "Invalid size");
325 if (VL[i] != Scalars[i])
330 /// A vector of scalars.
331 ValueList Scalars;
333 /// The Scalars are vectorized into this value. It is initialized to Null.
348 Last->Scalars.insert(Last->Scalars.begin(), VL.begin(), VL.end());
370 /// A list of scalars that we found that we need to keep as scalars.
423 for (int Lane = 0, LE = Entry->Scalars.size(); Lane != LE; ++Lane) {
424 Value *Scalar = Entry->Scalars[Lane];
436 // Skip in-tree scalars that become vectors.
498 if (E->Scalars[i] != VL[i]) {
518 // If any of the scalars appears in the table OR it is marked as a value that
519 // needs to stat scalar then we need to gather the scalars.
528 // Check that all of the users of the scalars that we want to vectorize are
795 ArrayRef<Value*> VL = E->Scalars;
808 return getGatherCost(E->Scalars);
917 unsigned BundleWidth = VectorizableTree[0].Scalars.size();
922 << *VectorizableTree[i].Scalars[0] << " .\n");
1121 if (E->Scalars[Lane] == VL[i]) {
1165 DEBUG(dbgs() << "SLP: Diamond merged for " << *E->Scalars[0] << ".\n");
1169 Type *ScalarTy = E->Scalars[0]->getType();
1170 if (StoreInst *SI = dyn_cast<StoreInst>(E->Scalars[0]))
1172 VectorType *VecTy = VectorType::get(ScalarTy, E->Scalars.size());
1175 return Gather(E->Scalars, VecTy);
1178 Instruction *VL0 = cast<Instruction>(E->Scalars[0]);
1180 assert(Opcode == getSameOpcode(E->Scalars) && "Invalid opcode");
1195 for (unsigned j = 0; j < E->Scalars.size(); ++j)
1196 Operands.push_back(cast<PHINode>(E->Scalars[j])->
1211 if (CanReuseExtract(E->Scalars)) {
1216 return Gather(E->Scalars, VecTy);
1231 for (int i = 0, e = E->Scalars.size(); i < e; ++i)
1232 INVL.push_back(cast<Instruction>(E->Scalars[i])->getOperand(0));
1234 Builder.SetInsertPoint(getLastInstruction(E->Scalars));
1239 if (Value *V = alreadyVectorized(E->Scalars))
1250 for (int i = 0, e = E->Scalars.size(); i < e; ++i) {
1251 LHSV.push_back(cast<Instruction>(E->Scalars[i])->getOperand(0));
1252 RHSV.push_back(cast<Instruction>(E->Scalars[i])->getOperand(1));
1255 Builder.SetInsertPoint(getLastInstruction(E->Scalars));
1261 if (Value *V = alreadyVectorized(E->Scalars))
1276 for (int i = 0, e = E->Scalars.size(); i < e; ++i) {
1277 CondVec.push_back(cast<Instruction>(E->Scalars[i])->getOperand(0));
1278 TrueVec.push_back(cast<Instruction>(E->Scalars[i])->getOperand(1));
1279 FalseVec.push_back(cast<Instruction>(E->Scalars[i])->getOperand(2));
1282 Builder.SetInsertPoint(getLastInstruction(E->Scalars));
1289 if (Value *V = alreadyVectorized(E->Scalars))
1315 for (int i = 0, e = E->Scalars.size(); i < e; ++i) {
1316 LHSVL.push_back(cast<Instruction>(E->Scalars[i])->getOperand(0));
1317 RHSVL.push_back(cast<Instruction>(E->Scalars[i])->getOperand(1));
1320 Builder.SetInsertPoint(getLastInstruction(E->Scalars));
1330 if (Value *V = alreadyVectorized(E->Scalars))
1341 Builder.SetInsertPoint(getLastInstruction(E->Scalars));
1358 for (int i = 0, e = E->Scalars.size(); i < e; ++i)
1359 ValueOp.push_back(cast<StoreInst>(E->Scalars[i])->getValueOperand());
1361 Builder.SetInsertPoint(getLastInstruction(E->Scalars));
1439 for (int Lane = 0, LE = Entry->Scalars.size(); Lane != LE; ++Lane) {
1440 Value *Scalar = Entry->Scalars[Lane];
1767 // Check that the pointer points to scalars.