[LoopVectorizer] Support reverse elimination in VPlan
- Dominant language
- LLVM
- Stars
- 40.5k
- Forks
- 18.7k
- PR merge metrics
- PR metrics pending
Description
Here are the simplification rules for reverse elimination:
- [x] reverse(splat(X)) --> splat(X)
- [ ] reduce.add(reverse(V)) --> reduce.add(V)
- [x] ~~reverse(BinOp reverse(V1), reverse(V2)) --> BinOp V1, V2~~
- [x] ~~reverse(BinOp(reverse(V1), splat))) --> BinOp(V1, splat)~~
- [x] ~~reverse(BinOp(splat, reverse(V2)))) --> BinOp(splat, V2)~~
- [ ] reverse(UnaryOp reverse(V)) --> UnaryOp V
- [ ] select reverse(Cond), reverse(TVal), reverse(FVal) --> reverse(select Cond, TVal, FVal)
- [ ] select reverse(Cond), reverse(TVal), splat --> reverse(select Cond, TVal, splat)
- [ ] select reverse(Cond), splat, reverse(FVal) --> reverse(select Cond, splat, FVal)
- [x] BinOp(reverse(V1), reverse(V2)) --> reverse(BinOp(V1, V2))
- [x] BinOp(reverse(V1), splat)) --> reverse(BinOp(V1, splat))
- [x] BinOp(splat, reverse(V2))) --> reverse(BinOp(splat, V2))
- [ ] cmp(Pred, reverse(V1), reverse(V2)) --> reverse(cmp Pred, V1, V2)
- [ ] cmp(Pred, reverse(V1), splat) --> reverse(cmp Pred, V1, splat)
- [ ] cmp(Pred, splat, reverse(V2)) --> reverse(cmp Pred, splat, V2)
Contributor guide
Assessment
This issue has not been assessed yet.