1818using namespace mlir ;
1919using namespace mlir ::vector;
2020
21- // Helper that picks the proper sequence for inserting.
22- static Value insertOne (PatternRewriter &rewriter, Location loc, Value from,
23- Value into, int64_t offset) {
24- return rewriter.create <InsertOp>(loc, from, into, offset);
25- }
26-
27- // Helper that picks the proper sequence for extracting.
28- static Value extractOne (PatternRewriter &rewriter, Location loc, Value vector,
29- int64_t offset) {
30- return rewriter.create <ExtractOp>(loc, vector, offset);
31- }
32-
3321// / RewritePattern for InsertStridedSliceOp where source and destination vectors
3422// / have different ranks.
3523// /
@@ -163,11 +151,13 @@ class ConvertSameRankInsertStridedSliceIntoShuffle
163151 for (int64_t off = offset, e = offset + size * stride, idx = 0 ; off < e;
164152 off += stride, ++idx) {
165153 // 1. extract the proper subvector (or element) from source
166- Value extractedSource = extractOne (rewriter, loc, op.getSource (), idx);
154+ Value extractedSource =
155+ rewriter.create <ExtractOp>(loc, op.getSource (), idx);
167156 if (isa<VectorType>(extractedSource.getType ())) {
168157 // 2. If we have a vector, extract the proper subvector from destination
169158 // Otherwise we are at the element level and no need to recurse.
170- Value extractedDest = extractOne (rewriter, loc, op.getDest (), off);
159+ Value extractedDest =
160+ rewriter.create <ExtractOp>(loc, op.getDest (), off);
171161 // 3. Reduce the problem to lowering a new InsertStridedSlice op with
172162 // smaller rank.
173163 extractedSource = rewriter.create <InsertStridedSliceOp>(
@@ -176,7 +166,7 @@ class ConvertSameRankInsertStridedSliceIntoShuffle
176166 getI64SubArray (op.getStrides (), /* dropFront=*/ 1 ));
177167 }
178168 // 4. Insert the extractedSource into the res vector.
179- res = insertOne ( rewriter, loc, extractedSource, res, off);
169+ res = rewriter. create <InsertOp>( loc, extractedSource, res, off);
180170 }
181171
182172 rewriter.replaceOp (op, res);
@@ -307,12 +297,12 @@ class DecomposeNDExtractStridedSlice
307297 Value res = rewriter.create <SplatOp>(loc, dstType, zero);
308298 for (int64_t off = offset, e = offset + size * stride, idx = 0 ; off < e;
309299 off += stride, ++idx) {
310- Value one = extractOne ( rewriter, loc, op.getVector (), off);
300+ Value one = rewriter. create <ExtractOp>( loc, op.getVector (), off);
311301 Value extracted = rewriter.create <ExtractStridedSliceOp>(
312302 loc, one, getI64SubArray (op.getOffsets (), /* dropFront=*/ 1 ),
313303 getI64SubArray (op.getSizes (), /* dropFront=*/ 1 ),
314304 getI64SubArray (op.getStrides (), /* dropFront=*/ 1 ));
315- res = insertOne ( rewriter, loc, extracted, res, idx);
305+ res = rewriter. create <InsertOp>( loc, extracted, res, idx);
316306 }
317307 rewriter.replaceOp (op, res);
318308 return success ();
0 commit comments