cdl-saarland / rv

RV: A Unified Region Vectorizer for LLVM
Other
105 stars 15 forks source link

[pragma annotated RV loop vectorizer] Not vectorized with obscure diag when annotated #42

Open ghost opened 5 years ago

ghost commented 5 years ago

At the README page, I am advised that

Be aware that RV will exactly do as you annotated...You'll get what you ordered

But I get diag message "Unsupported user of reduction" (M1) or a more obscure one "warning: loop not vectorized: the optimizer was unable to perform the requested transformation; the transformation might be disabled or specified as part of an unsupported transformation ordering [-Wpass-failed=transform-warning]" (M2) when I employ RV as loop vectorizer with SPECCPU2017 benchmarks.

Taking the 644.nab_s benchmark as an example, I annotate a loop in eff.c file (line 1760) and get diag message M2, a loop in eff.c file (line 2785) and get diag message M1. I annotate with #pragma clang loop vectorize(assume_safety) vectorize_width(4) . And I compile with -O3 -fno-vectorize -mavx -fplugin= libRV.so -mllvm -rv-loopvec.

I believe these loops could be vectorized by RV. I wonder what I have done wrong and how could I vectorize these loops successfully. Thanks in advance.