Lines Matching full:extract
206 /// <0, 2, 4, 6> (mask of index 0 to extract even elements)
207 /// <1, 3, 5, 7> (mask of index 1 to extract odd elements)
259 // them to later check if they can be modified to extract from one of the
269 auto *Extract = dyn_cast<ExtractElementInst>(User);
270 if (Extract && isa<ConstantInt>(Extract->getIndexOperand())) {
271 Extracts.push_back(Extract);
404 for (auto *Extract : Extracts) {
406 auto *IndexOperand = cast<ConstantInt>(Extract->getIndexOperand());
413 // If the shufflevector instruction doesn't dominate the extract, we
415 if (!DT->dominates(Shuffle, Extract))
425 assert(Extract->getOperand(0) == Shuffle->getOperand(0) &&
427 ReplacementMap[Extract] = std::make_pair(Shuffle, I);
432 if (ReplacementMap.count(Extract))
438 if (!ReplacementMap.count(Extract))
445 auto *Extract = Replacement.first;
448 Builder.SetInsertPoint(Extract);
449 Extract->replaceAllUsesWith(Builder.CreateExtractElement(Vector, Index));
450 Extract->eraseFromParent();