Lines Matching full:extract
144 /// <0, 2, 4, 6> (mask of index 0 to extract even elements)
145 /// <1, 3, 5, 7> (mask of index 1 to extract odd elements)
206 // they can be modifed to extract from one of the shufflevectors instead of
209 auto *Extract = dyn_cast<ExtractElementInst>(*UI);
210 if (Extract && isa<ConstantInt>(Extract->getIndexOperand())) {
211 Extracts.push_back(Extract);
280 for (auto *Extract : Extracts) {
283 auto *IndexOperand = cast<ConstantInt>(Extract->getIndexOperand());
291 // If the shufflevector instruction doesn't dominate the extract, we
293 if (!DT->dominates(Shuffle, Extract))
303 assert(Extract->getOperand(0) == Shuffle->getOperand(0) &&
305 ReplacementMap[Extract] = std::make_pair(Shuffle, I);
310 if (ReplacementMap.count(Extract))
316 if (!ReplacementMap.count(Extract))
323 auto *Extract = Replacement.first;
326 Builder.SetInsertPoint(Extract);
327 Extract->replaceAllUsesWith(Builder.CreateExtractElement(Vector, Index));
328 Extract->eraseFromParent();