[all-commits] [llvm/llvm-project] fb13f6: [VPlan] Append recipes created via builder to work...
Luke Lau via All-commits
all-commits at lists.llvm.org
Fri Sep 25 03:11:59 PDT 2026
Branch: refs/heads/main
Home: https://github.com/llvm/llvm-project
Commit: fb13f6fa52cbcd501b0dcac128254818e2d24214
https://github.com/llvm/llvm-project/commit/fb13f6fa52cbcd501b0dcac128254818e2d24214
Author: Luke Lau <luke at igalia.com>
Date: 2026-09-25 (Fri, 25 Sep 2026)
Changed paths:
M llvm/lib/Transforms/Vectorize/LoopVectorizationPlanner.h
M llvm/lib/Transforms/Vectorize/VPlan.cpp
M llvm/lib/Transforms/Vectorize/VPlan.h
M llvm/lib/Transforms/Vectorize/VPlanTransforms.cpp
M llvm/lib/Transforms/Vectorize/VPlanTransforms.h
M llvm/lib/Transforms/Vectorize/VPlanUtils.h
M llvm/test/Transforms/LoopVectorize/RISCV/tail-folding-complex-mask.ll
Log Message:
-----------
[VPlan] Append recipes created via builder to worklist
(#213900)
The previous PR appended the top most created recipe to the worklist,
and this PR extends it to any other nested recipes that were created,
similar to InstCombine.
This removes the header mask in a good few more places on RISC-V as
measured on SPEC CPU 2017, e.g. for the following loop:
```c
long f(const int *p, const int *q, long n) {
long a = 0, b = 0;
for (long i = 0;; i++) {
if (p[i] && q[i]) { a += i; b += i; }
if (i + 1 == n) break;
}
return a + b;
}
```
Before:
```asm
LBB0_1:
sh2add a4, a3, a0
vsetvli a5, a2, e32, m1, ta, ma
vle32.v v16, (a4)
vmsne.vi v0, v16, 0
sh2add a4, a3, a1
vsetvli zero, zero, e64, m2, ta, ma
vmsltu.vx v16, v10, a5
vle32.v v17, (a4), v0.t
vsetvli zero, zero, e32, m1, ta, ma
vmsne.vi v17, v17, 0
vmand.mm v17, v0, v17
vmand.mm v0, v16, v17
vsetvli zero, zero, e64, m2, tu, mu
vadd.vv v8, v14, v8, v0.t
vadd.vv v12, v14, v12, v0.t
vsetvli zero, zero, e64, m2, ta, ma
vadd.vx v14, v14, a5
sub a2, a2, a5
add a3, a3, a5
bnez a2, .LBB0_1
```
After:
```asm
.LBB0_1:
sh2add a4, a3, a0
vsetvli a5, a2, e32, m1, ta, ma
vle32.v v14, (a4)
vmsne.vi v0, v14, 0
sh2add a4, a3, a1
vle32.v v14, (a4), v0.t
vmsne.vi v14, v14, 0
vmand.mm v0, v0, v14
vsetvli zero, zero, e64, m2, tu, mu
vadd.vv v8, v12, v8, v0.t
vadd.vv v10, v12, v10, v0.t
vsetvli zero, zero, e64, m2, ta, ma
vadd.vx v12, v12, a5
sub a2, a2, a5
add a3, a3, a5
bnez a2, .LBB0_1
```
We can also remove the (X && Y) | (X && !Y) -> X combine, but this is
left for another NFC PR.
To unsubscribe from these emails, change your notification settings at https://github.com/llvm/llvm-project/settings/notifications
More information about the All-commits
mailing list