[llvm-dev] SLP vectorizer on simple function not working

Frank Winter via llvm-dev llvm-dev at lists.llvm.org
Wed Aug 19 12:22:57 PDT 2015


Okay, it was the missing 'noalias' attribute on the arguments. Damn, I 
thought I had that down.

Sorry for the noise.

Thanks,
Frank


On 08/19/2015 02:43 PM, Frank Winter via llvm-dev wrote:
> The attached function should be vectorizable with a SIMD width of 4.
> However, the SLP vectorizer tells me it cannot schedule the bundle.
>
> llvm-3.6/bin/opt -datalayout -basicaa -slp-vectorizer -debug-only SLP -S
> < func_simple_scalar.ll -o tmp.ll &> out
>
> SLP: Analyzing blocks in main.
> SLP: Found 4 stores to vectorize.
> SLP: Analyzing a store chain of length 4.
> SLP: Analyzing a store chain of length 4
> SLP: Analyzing 4 stores at offset 0
> SLP:  bundle:   store float %4, float* %5
> SLP:  initialize schedule region to   store float %4, float* %5
> SLP:  extend schedule region end to   store float %10, float* %11
> SLP:  extend schedule region end to   store float %16, float* %17
> SLP:  extend schedule region end to   store float %22, float* %23
> SLP: try schedule bundle [  store float %4, float* %5;  store float %10,
> float* %11;  store float %16, float* %17;  store float %22, float* %23]
> in block entrypoint
> SLP:       update deps of [  store float %4, float* %5;  store float
> %10, float* %11;  store float %16, float* %17;  store float %22, float*
> %23]
> SLP:       update deps of /   store float %10, float* %11
> SLP:       update deps of /   store float %16, float* %17
> SLP:       update deps of /   store float %22, float* %23
> SLP:       update deps of   %21 = load float* %20
> SLP:       update deps of   %22 = fmul float %21, %19
> SLP:       update deps of   %19 = load float* %18
> SLP:       update deps of   %15 = load float* %14
> SLP:       update deps of   %16 = fmul float %15, %13
> SLP:       update deps of   %13 = load float* %12
> SLP:       update deps of   %9 = load float* %8
> SLP:       update deps of   %10 = fmul float %9, %7
> SLP:       update deps of   %7 = load float* %6
> SLP: We are not able to schedule this bundle!
> SLP:  cancel scheduling of [  store float %4, float* %5;  store float
> %10, float* %11;  store float %16, float* %17;  store float %22, float*
> %23]
> SLP: Calculating cost for tree of size 1.
> SLP: Check whether the tree with height 1 is fully vectorizable .
> SLP: Found cost=2147483647 for VF=4
>
> What am I missing?
>
> Thanks,
> Frank
>
>
> _______________________________________________
> LLVM Developers mailing list
> llvm-dev at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
>


More information about the llvm-dev mailing list