Florian Hahn
4eb9838409
[VPlan] Generalize VPValue::isDefinedOutsideLoopRegions.
...
Update isDefinedOutsideLoopRegions to check if a recipe is defined
outside any region. Split off already approved
https://github.com/llvm/llvm-project/pull/95842 now that this can be
tested separately after landing VPlan-based LICM
https://github.com/llvm/llvm-project/issues/107501
2024-09-20 15:34:00 +01:00
Florian Hahn
a861ed411a
[VPlan] Add initial loop-invariant code motion transform. ( #107894 )
...
Add initial transform to move out loop-invariant recipes.
This also helps to fix a divergence between legacy and VPlan-based cost
model due to legacy using ScalarEvolution::isLoopInvariant in some
cases.
Fixes https://github.com/llvm/llvm-project/issues/107501 .
PR: https://github.com/llvm/llvm-project/pull/107894
2024-09-20 11:22:03 +01:00
Florian Hahn
a3092152ac
[VPlan] Don't create live-outs for induction increments.
...
Follow up to fc9cd3272b5 to also skip creating live-outs for IV
increments, as those are also generated independent of VPlan for now.
2024-07-25 21:34:55 +01:00
Florian Hahn
082c81ae4a
[LV] Properly extend versioned constant strides.
...
We only version unknown strides to 1. If the original type is i1, then
the sign of the extension matters. Properly extend the stride value
before replacing it.
Fixes https://github.com/llvm/llvm-project/issues/91369 .
2024-05-07 21:31:42 +01:00
Florian Hahn
c76ccf0f1e
[LV] Add test case for #91369 .
...
Add tests for https://github.com/llvm/llvm-project/issues/91369 .
2024-05-07 20:41:55 +01:00
Florian Hahn
9ee8e38cdc
[VPlan] Also propagate versioned strides to users via sext/zext.
...
The versioned value may not be used in the loop directly but through a
sext/zext. Add new live-ins in those cases.
2024-04-26 21:29:43 +01:00
Florian Hahn
c49b74a4e6
[LV] Add tests showing missed propgation of versiond stride values.
...
Strides are used through a sext/zext and the known constant value (1)
isn't propagated during codegen.
2024-04-26 18:41:22 +01:00