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.
At the README page, I am advised that
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.