[LoopVectorize] Support nested predicates and guarded stores for check-first vectorization
- Dominant language
- LLVM
- Stars
- 40.5k
- Forks
- 18.7k
- PR merge metrics
- PR metrics pending
Description
Extend check-first vectorization to support nested exit predicates and guarded memory operations.
High level objectives:
1. Recognize supported diamond-shaped control flow.
2. Convert diamond guards into exit conditions.
3. Build and attach guards to predicated stores.
4. Handle loads used by guarded exit conditions.
5. Add scalar-replay tests for guarded and nested exits.
Depends on [#215471](https://github.com/llvm/llvm-project/issues/215471)
Contributor guide
Research direction
Start with check-first vectorization and the dependency in issue #215471. Trace how diamond-shaped control flow, nested exit predicates, guarded stores, and loads in exit conditions are handled, then add the scalar-replay tests mentioned for guarded and nested exits. Done means all five listed objectives are supported and covered by those tests.
Written by the indexing model from the issue text.
Assessment
- Domain
- compilers
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100