Lines Matching defs:extractOp

1387 static LogicalResult foldExtractOpFromExtractChain(ExtractOp extractOp) {
1388 if (!extractOp.getVector().getDefiningOp<ExtractOp>())
1392 if (extractOp.hasDynamicPosition())
1396 ExtractOp currentOp = extractOp;
1407 extractOp.setOperand(0, currentOp.getVector());
1409 OpBuilder b(extractOp.getContext());
1411 extractOp.setStaticPosition(globalPosition);
1494 ExtractOp extractOp;
1516 : extractOp(e), vectorRank(extractOp.getSourceVectorType().getRank()),
1517 extractedRank(extractOp.getNumIndices()) {
1522 extractPosition.assign(extractOp.getStaticPosition().begin(),
1523 extractOp.getStaticPosition().end());
1531 if (extractOp.hasDynamicPosition())
1537 nextTransposeOp.getPermutation(), extractOp.getContext()));
1547 if (extractOp.hasDynamicPosition() || nextInsertOp.hasDynamicPosition())
1565 if (extractOp.hasDynamicPosition() || nextInsertOp.hasDynamicPosition())
1589 if (extractOp.hasDynamicPosition())
1593 bool nothingToFold = (source == extractOp.getVector());
1598 OpBuilder b(extractOp.getContext());
1599 extractOp.setStaticPosition(
1601 extractOp.getVectorMutable().assign(source);
1602 return extractOp.getResult();
1608 if (extractOp.hasDynamicPosition())
1611 Value valueToExtractFrom = extractOp.getVector();
1658 /// Fold extractOp with scalar result coming from BroadcastOp or SplatOp.
1659 static Value foldExtractFromBroadcast(ExtractOp extractOp) {
1661 if (extractOp.hasDynamicPosition())
1664 Operation *defOp = extractOp.getVector().getDefiningOp();
1669 if (extractOp.getType() == source.getType())
1678 if (broadcastSrcRank == 0 && source.getType() == extractOp.getType())
1681 unsigned extractResultRank = getRank(extractOp.getType());
1685 auto extractVecType = llvm::dyn_cast<VectorType>(extractOp.getType());
1700 SmallVector<int64_t> extractPos(extractOp.getStaticPosition());
1711 OpBuilder b(extractOp.getContext());
1712 extractOp.setOperand(0, source);
1713 extractOp.setStaticPosition(extractPos);
1714 return extractOp.getResult();
1717 /// Fold extractOp coming from ShuffleOp.
1727 static Value foldExtractFromShuffle(ExtractOp extractOp) {
1730 if (extractOp.hasDynamicPosition())
1733 auto shuffleOp = extractOp.getVector().getDefiningOp<ShuffleOp>();
1743 int64_t extractIdx = extractOp.getStaticPosition()[0];
1748 extractOp.setOperand(0, shuffleOp.getV1());
1749 extractOp.setStaticPosition({shuffleIdx});
1751 extractOp.setOperand(0, shuffleOp.getV2());
1752 extractOp.setStaticPosition({shuffleIdx - inputVecSize});
1755 return extractOp.getResult();
1758 // Fold extractOp with source coming from ShapeCast op.
1759 static Value foldExtractFromShapeCast(ExtractOp extractOp) {
1761 if (extractOp.hasDynamicPosition())
1764 auto shapeCastOp = extractOp.getVector().getDefiningOp<vector::ShapeCastOp>();
1773 llvm::isa<VectorType>(extractOp.getType())
1774 ? llvm::cast<VectorType>(extractOp.getType()).getRank()
1780 llvm::cast<VectorType>(extractOp.getResult().getType());
1792 SmallVector<int64_t> extractedPos(extractOp.getStaticPosition());
1799 getDimReverse(extractOp.getSourceVectorType(), i + destinationRank);
1817 OpBuilder b(extractOp.getContext());
1818 extractOp.setStaticPosition(newPosition);
1819 extractOp.setOperand(0, shapeCastOp.getSource());
1820 return extractOp.getResult();
1824 static Value foldExtractFromExtractStrided(ExtractOp extractOp) {
1826 if (extractOp.hasDynamicPosition())
1830 extractOp.getVector().getDefiningOp<vector::ExtractStridedSliceOp>();
1835 assert(!hasZeroDimVectors(extractOp) && "0-D vectors not supported");
1855 if (auto vecType = llvm::dyn_cast<VectorType>(extractOp.getType()))
1863 SmallVector<int64_t> extractedPos(extractOp.getStaticPosition());
1867 extractOp.getVectorMutable().assign(extractStridedSliceOp.getVector());
1870 OpBuilder b(extractOp.getContext());
1871 extractOp.setStaticPosition(extractedPos);
1872 return extractOp.getResult();
1876 static Value foldExtractStridedOpFromInsertChain(ExtractOp extractOp) {
1878 if (extractOp.hasDynamicPosition())
1882 llvm::isa<VectorType>(extractOp.getType())
1883 ? llvm::cast<VectorType>(extractOp.getType()).getRank()
1885 auto insertOp = extractOp.getVector().getDefiningOp<InsertStridedSliceOp>();
1890 assert(!hasZeroDimVectors(extractOp) && "0-D vectors not supported");
1900 ArrayRef<int64_t> extractOffsets = extractOp.getStaticPosition();
1937 extractOp.getVectorMutable().assign(insertOp.getSource());
1939 OpBuilder b(extractOp.getContext());
1940 extractOp.setStaticPosition(offsetDiffs);
1941 return extractOp.getResult();
1956 static Value foldScalarExtractFromFromElements(ExtractOp extractOp) {
1958 if (extractOp.hasDynamicPosition())
1962 auto fromElementsOp = extractOp.getVector().getDefiningOp<FromElementsOp>();
1973 ArrayRef<int64_t> indices = extractOp.getStaticPosition();
1974 if (extractOp.getType() != vecType.getElementType())
2035 LogicalResult matchAndRewrite(ExtractOp extractOp,
2037 Operation *defOp = extractOp.getVector().getDefiningOp();
2042 if (extractOp.getType() == source.getType())
2050 unsigned extractResultRank = getRank(extractOp.getType());
2060 rewriter.replaceOpWithNewOp<vector::ExtractElementOp>(extractOp, source);
2064 extractOp, extractOp.getType(), source);
2074 LogicalResult matchAndRewrite(ExtractOp extractOp,
2078 Value sourceVector = extractOp.getVector();
2086 if (auto vecDstType = llvm::dyn_cast<VectorType>(extractOp.getType()))
2088 rewriter.replaceOpWithNewOp<arith::ConstantOp>(extractOp, newAttr);
2099 LogicalResult matchAndRewrite(ExtractOp extractOp,
2102 if (extractOp.hasDynamicPosition())
2107 Value sourceVector = extractOp.getVector();
2124 copy(extractOp.getStaticPosition(), completePositions.begin());
2130 if (auto resVecTy = llvm::dyn_cast<VectorType>(extractOp.getType())) {
2138 rewriter.replaceOpWithNewOp<arith::ConstantOp>(extractOp, newAttr);
2148 LogicalResult matchAndRewrite(ExtractOp extractOp,
2151 extractOp.getVector().getDefiningOp<vector::CreateMaskOp>();
2156 llvm::dyn_cast<VectorType>(extractOp.getResult().getType());
2162 ArrayRef<int64_t> extractOpPos = extractOp.getStaticPosition();
2196 extractOp, DenseElementsAttr::get(extractedMaskType, false));
2199 extractOp, extractedMaskType,
2210 LogicalResult foldExtractFromShapeCastToShapeCast(ExtractOp extractOp,
2212 auto castOp = extractOp.getVector().getDefiningOp<ShapeCastOp>();
2217 auto targetType = dyn_cast<VectorType>(extractOp.getResult().getType());
2224 rewriter.replaceOpWithNewOp<vector::ShapeCastOp>(extractOp, targetType,
2235 LogicalResult foldExtractFromFromElements(ExtractOp extractOp,
2238 if (extractOp.hasDynamicPosition())
2242 auto resultType = dyn_cast<VectorType>(extractOp.getType());
2247 auto fromElementsOp = extractOp.getVector().getDefiningOp<FromElementsOp>();
2259 llvm::to_vector(extractOp.getStaticPosition());
2270 extractOp, resultType,
4930 auto extractOp =
4932 if (!extractOp || !extractOp.hasUnitStride() || !extractOp->hasOneUse())
4934 auto transferOp = extractOp.getSource().getDefiningOp<TransferWriteOp>();
4946 if (!extractOp.hasZeroOffset()) {
4960 if (insertOp.getMixedSizes().size() != extractOp.getMixedSizes().size()) {
4966 llvm::zip_equal(insertOp.getMixedSizes(), extractOp.getMixedSizes())) {
4988 extractOp.getLoc(), insertOp.getSourceType(), insertOp.getDest(),