[PATCH] D102679: [llvm] Make Sequence reverse-iterable

Arthur O'Dwyer via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Tue Jun 8 10:31:57 PDT 2021


Quuxplusone added inline comments.


================
Comment at: mlir/lib/Dialect/Linalg/Transforms/Vectorization.cpp:321
-  SmallVector<int64_t> transposition(
-      llvm::seq<int64_t>(0, linalgOp.getNumLoops()));
   std::swap(transposition.back(), transposition[indexOp.dim()]);
----------------
mehdi_amini wrote:
> Why did we lose this direct initialization pattern? Can we adjust something to keep this?
FWIW, I don't think we //want// to keep this. A lazy `llvm::seq` object physically-is something very different from a `SmallVector<int64_t>`; I think it's very good that the new code separates them. It might be even better to just use the `std::iota` algorithm to initialize the vector's contents:
```
SmallVector<int64_t> transposition(linalgOp.getNumLoops());
std::iota(transposition.begin(), transposition.end(), 0);
std::swap(transposition.back(), transposition[indexOp.dim()]);
```
If we were to keep it a one-liner, I would argue in favor of a named method on `seq`:
```
SmallVector<int64_t> transposition =
    llvm::seq<int64_t>(0, linalgOp.getNumLoops()).asSmallVector();
std::swap(transposition.back(), transposition[indexOp.dim()]);
```


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D102679/new/

https://reviews.llvm.org/D102679



More information about the llvm-commits mailing list