reference, declarationdefinition
definition → references, declarations, derived classes, virtual overrides
reference to multiple definitions → definitions
unreferenced

References

lib/Transforms/Vectorize/SLPVectorizer.cpp
 2174   assert((allConstant(VL) || allSameType(VL)) && "Invalid types!");
 2174   assert((allConstant(VL) || allSameType(VL)) && "Invalid types!");
 2176   InstructionsState S = getSameOpcode(VL);
 2179     newTreeEntry(VL, None /*not vectorized*/, S, UserTreeIdx);
 2186     newTreeEntry(VL, None /*not vectorized*/, S, UserTreeIdx);
 2193       newTreeEntry(VL, None /*not vectorized*/, S, UserTreeIdx);
 2198   if (allConstant(VL) || isSplat(VL) || !allSameBlock(VL) || !S.getOpcode()) {
 2198   if (allConstant(VL) || isSplat(VL) || !allSameBlock(VL) || !S.getOpcode()) {
 2198   if (allConstant(VL) || isSplat(VL) || !allSameBlock(VL) || !S.getOpcode()) {
 2200     newTreeEntry(VL, None /*not vectorized*/, S, UserTreeIdx);
 2208   for (Value *V : VL) {
 2212       newTreeEntry(VL, None /*not vectorized*/, S, UserTreeIdx);
 2220     if (!E->isSame(VL)) {
 2222       newTreeEntry(VL, None /*not vectorized*/, S, UserTreeIdx);
 2234   for (Value *V : VL) {
 2241       newTreeEntry(VL, None /*not vectorized*/, S, UserTreeIdx);
 2249   for (Value *V : VL) {
 2252       newTreeEntry(VL, None /*not vectorized*/, S, UserTreeIdx);
 2266     newTreeEntry(VL, None /*not vectorized*/, S, UserTreeIdx);
 2274   for (Value *V : VL) {
 2281   if (NumUniqueScalarValues == VL.size()) {
 2288       newTreeEntry(VL, None /*not vectorized*/, S, UserTreeIdx);
 2291     VL = UniqueValues;
 2300   Optional<ScheduleData *> Bundle = BS.tryScheduleBundle(VL, this, S);
 2306     newTreeEntry(VL, None /*not vectorized*/, S, UserTreeIdx,
 2319       for (unsigned j = 0; j < VL.size(); ++j)
 2322               cast<PHINode>(VL[j])->getIncomingValueForBlock(
 2327             BS.cancelScheduling(VL, VL0);
 2328             newTreeEntry(VL, None /*not vectorized*/, S, UserTreeIdx,
 2335           newTreeEntry(VL, Bundle, S, UserTreeIdx, ReuseShuffleIndicies);
 2343         for (Value *j : VL)
 2356       bool Reuse = canReuseExtract(VL, VL0, CurrentOrder);
 2360         newTreeEntry(VL, Bundle /*vectorized*/, S, UserTreeIdx,
 2365         Op0.assign(VL.size(), VL0->getOperand(0));
 2382         newTreeEntry(VL, Bundle /*vectorized*/, S, UserTreeIdx,
 2388         Op0.assign(VL.size(), VL0->getOperand(0));
 2393       newTreeEntry(VL, None /*not vectorized*/, S, UserTreeIdx,
 2395       BS.cancelScheduling(VL, VL0);
 2409         BS.cancelScheduling(VL, VL0);
 2410         newTreeEntry(VL, None /*not vectorized*/, S, UserTreeIdx,
 2418       SmallVector<Value *, 4> PointerOps(VL.size());
 2420       for (Value *V : VL) {
 2423           BS.cancelScheduling(VL, VL0);
 2424           newTreeEntry(VL, None /*not vectorized*/, S, UserTreeIdx,
 2451         if (Diff && Diff->getAPInt().getZExtValue() == (VL.size() - 1) * Size) {
 2455             TreeEntry *TE = newTreeEntry(VL, Bundle /*vectorized*/, S,
 2464                 newTreeEntry(VL, Bundle /*vectorized*/, S, UserTreeIdx,
 2474       BS.cancelScheduling(VL, VL0);
 2475       newTreeEntry(VL, None /*not vectorized*/, S, UserTreeIdx,
 2492       for (Value *V : VL) {
 2495           BS.cancelScheduling(VL, VL0);
 2496           newTreeEntry(VL, None /*not vectorized*/, S, UserTreeIdx,
 2503       TreeEntry *TE = newTreeEntry(VL, Bundle /*vectorized*/, S, UserTreeIdx,
 2511         for (Value *V : VL)
 2524       for (Value *V : VL) {
 2528           BS.cancelScheduling(VL, VL0);
 2529           newTreeEntry(VL, None /*not vectorized*/, S, UserTreeIdx,
 2537       TreeEntry *TE = newTreeEntry(VL, Bundle /*vectorized*/, S, UserTreeIdx,
 2546         reorderInputsAccordingToOpcode(VL, Left, Right, *DL, *SE);
 2549         for (Value *V : VL) {
 2585       TreeEntry *TE = newTreeEntry(VL, Bundle /*vectorized*/, S, UserTreeIdx,
 2593         reorderInputsAccordingToOpcode(VL, Left, Right, *DL, *SE);
 2605         for (Value *j : VL)
 2614       for (Value *V : VL) {
 2617           BS.cancelScheduling(VL, VL0);
 2618           newTreeEntry(VL, None /*not vectorized*/, S, UserTreeIdx,
 2627       for (Value *V : VL) {
 2632           BS.cancelScheduling(VL, VL0);
 2633           newTreeEntry(VL, None /*not vectorized*/, S, UserTreeIdx,
 2640       for (Value *V : VL) {
 2645           BS.cancelScheduling(VL, VL0);
 2646           newTreeEntry(VL, None /*not vectorized*/, S, UserTreeIdx,
 2652       TreeEntry *TE = newTreeEntry(VL, Bundle /*vectorized*/, S, UserTreeIdx,
 2659         for (Value *V : VL)
 2668       for (unsigned i = 0, e = VL.size() - 1; i < e; ++i)
 2669         if (!isConsecutiveAccess(VL[i], VL[i + 1], *DL, *SE)) {
 2669         if (!isConsecutiveAccess(VL[i], VL[i + 1], *DL, *SE)) {
 2670           BS.cancelScheduling(VL, VL0);
 2671           newTreeEntry(VL, None /*not vectorized*/, S, UserTreeIdx,
 2677       TreeEntry *TE = newTreeEntry(VL, Bundle /*vectorized*/, S, UserTreeIdx,
 2682       for (Value *V : VL)
 2695         BS.cancelScheduling(VL, VL0);
 2696         newTreeEntry(VL, None /*not vectorized*/, S, UserTreeIdx,
 2707       for (Value *V : VL) {
 2712           BS.cancelScheduling(VL, VL0);
 2713           newTreeEntry(VL, None /*not vectorized*/, S, UserTreeIdx,
 2725               BS.cancelScheduling(VL, VL0);
 2726               newTreeEntry(VL, None /*not vectorized*/, S, UserTreeIdx,
 2740           BS.cancelScheduling(VL, VL0);
 2741           newTreeEntry(VL, None /*not vectorized*/, S, UserTreeIdx,
 2749       TreeEntry *TE = newTreeEntry(VL, Bundle /*vectorized*/, S, UserTreeIdx,
 2755         for (Value *V : VL) {
 2767         BS.cancelScheduling(VL, VL0);
 2768         newTreeEntry(VL, None /*not vectorized*/, S, UserTreeIdx,
 2773       TreeEntry *TE = newTreeEntry(VL, Bundle /*vectorized*/, S, UserTreeIdx,
 2780         reorderInputsAccordingToOpcode(VL, Left, Right, *DL, *SE);
 2792         for (Value *V : VL)
 2800       BS.cancelScheduling(VL, VL0);
 2801       newTreeEntry(VL, None /*not vectorized*/, S, UserTreeIdx,