llvm / llvm/llvm-project

[LV][SLP] unable to handle conditional code in extractelement/insertelement or extractelement/store or load/insertelement pairs generated by clang vector in loops

Open
#206,367 3 comments 0 reactions 0 assignees View on GitHub
llvm:SLPVectorizer missed-optimization vectorizers
Dominant language
LLVM
Stars
40.5k
Forks
18.7k
PR merge metrics
PR metrics pending

Description

```c
typedef unsigned int v [[gnu::vector_size(64)]];
typedef unsigned int s;

void case1(s a[restrict], s b[restrict], s c[restrict]){
for(int i=0;i<16;i++){
if(a[i]

Contributor guide

Open the contributing guide

Research direction

Start with the C reproducer cases 1–7 and compare LLVM's LV and SLP output with the linked Godbolt SLP example and GCC reference assembly. Trace how conditional extractelement/insertelement and load/store pairs from these loops are handled, focusing first on the cases identified as unsupported. Done means the affected cases produce correct vectorized code without the scalar fallback shown.

Written by the indexing model from the issue text.

Assessment

Tech stack
c
Domain
compilers, performance
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.