Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[BACKEND] Optimize code style in rewrite-tensor-pointer and add more …
…tests (#4724) The core Triton is a small number of people, and we receive many PRs (thank you!). To help us review your code more quickly, **if you are a new contributor (less than 3 PRs merged) we ask that you complete the following tasks and include the filled-out checklist in your PR description.** Complete the following tasks before sending your PR, and replace `[ ]` with `[x]` to indicate you have done them. - [x] I am not making a trivial change, such as fixing a typo in a comment. - [x] I have written a PR description following these [rules](https://cbea.ms/git-commit/#why-not-how). - [x] I have run `pre-commit run --from-ref origin/main --to-ref HEAD`. - Select one of the following. - [x] I have added tests. - `/test` for `lit` tests - `/unittest` for C++ tests - `/python/test` for end-to-end tests - [ ] This PR does not need a test because `FILL THIS IN`. - Select one of the following. - [ ] I have not added any `lit` tests. - [x] The `lit` tests I have added follow these [best practices](https://mlir.llvm.org/getting_started/TestingGuide/#filecheck-best-practices), including the "tests should be minimal" section. (Usually running Python code and using the instructions it generates is not minimal.) --- Hello, maintainers and reviewers! While reading the [RewriteTensorPointer.cpp](https://github.com/triton-lang/triton/blob/main/lib/Dialect/Triton/Transforms/RewriteTensorPointer.cpp) pass, I noticed that the current implementation to be somewhat redundant and the test is hard to understand, so I submitted this PR. PR description: - Use `llvm::make_early_inc_range` to ensure no issues arise during visiting ops, instead of making a copy ```mlir for (auto ®ion : op->getRegions()) { for (auto &block : region) { SmallVector<Operation *> blockCopy; for (auto &nestedOp : block) blockCopy.push_back(&nestedOp); for (auto &nestedOp : blockCopy) { if (auto newOp = rewriteOp(nestedOp, eraser)) -> for (Region ®ion : op->getRegions()) { for (Block &block : region) { for (Operation &nestedOp : llvm::make_early_inc_range(block)) { if (auto newOp = rewriteOp(&nestedOp, eraser)) { visitOperation(newOp, eraser); } ``` - Return directly from the parameter instead of constructing a new SmallVector. ```mlir static SmallVector<Value> generateNewOperands(const SmallVector<Value> &oldOperands, unsigned index, const SmallVector<Value> &newValues) { -> static void generateNewOperands(SmallVector<Value> &oldOperands, unsigned index, ArrayRef<Value> newValues) { ``` - delete some dead code - add detailed tests. see test/Triton/rewrite-tensor-pointer.mlir Co-authored-by: Keren Zhou <[email protected]>
- Loading branch information