There is a small discussion going on in the GCC mailing list wrt the vectorlength clause (http://gcc.gnu.org/ml/gcc-patches/2013-04/msg01333.html). This is in regards to the vectorlength attribute as it relates to the Cilk Plus #pragma simd construct.
The question is, whether vectorlength is just a hint to the compiler, basically "if you vectorize, prefer this vector length, but the compiler is still responsible for doing any (dependency/etc) analysis, and punting if it can't prove there is no aliasing (or go for runtime checks)".
All I see in the spec is "If the vectorlength clause is used, the VL is selected from among the values of its arguments". Is this merely a hint? What if the compiler can't use the vectorlength specified, is this a hard error? Should we fail? Is the vectorlength clause an assertion that no further dependence analysis will be done by the compiler, and the following loop is guaranteed to be vectorizable?
Any tips would be greatly appreciated. Thanks.