diff --git a/mlir/lib/Transforms/Utils/LoopUtils.cpp b/mlir/lib/Transforms/Utils/LoopUtils.cpp --- a/mlir/lib/Transforms/Utils/LoopUtils.cpp +++ b/mlir/lib/Transforms/Utils/LoopUtils.cpp @@ -1411,22 +1411,24 @@ auto numElementsSSA = top.create(loc, numElements.getValue()); - SmallVector strideInfos; - getMultiLevelStrides(region, fastBufferShape, &strideInfos); - - // TODO(bondhugula): use all stride levels once DmaStartOp is extended for - // multi-level strides. - if (strideInfos.size() > 1) { - LLVM_DEBUG(llvm::dbgs() << "Only up to one level of stride supported\n"); - return failure(); - } - Value stride = nullptr; Value numEltPerStride = nullptr; - if (!strideInfos.empty()) { - stride = top.create(loc, strideInfos[0].stride); - numEltPerStride = - top.create(loc, strideInfos[0].numEltPerStride); + if (copyOptions.generateDma) { + SmallVector strideInfos; + getMultiLevelStrides(region, fastBufferShape, &strideInfos); + + // TODO(bondhugula): use all stride levels once DmaStartOp is extended for + // multi-level strides. + if (strideInfos.size() > 1) { + LLVM_DEBUG(llvm::dbgs() << "Only up to one level of stride supported\n"); + return failure(); + } + + if (!strideInfos.empty()) { + stride = top.create(loc, strideInfos[0].stride); + numEltPerStride = + top.create(loc, strideInfos[0].numEltPerStride); + } } // Record the last operation where we want the memref replacement to end. We