You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
[BACKEND] Optimize code style in rewrite-tensor-pointer and add more tests (triton-lang#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]>
0 commit comments