[LLVMdev] Simple Loop Vectorize Question

Josh Klontz josh.klontz at gmail.com
Thu May 9 13:42:12 PDT 2013

Hi! I am trying to get the loop vectorizer to work on a simple example
(http://pastebin.com/tGhpc4y0) that doubles every element in a vector.

I've found that 'opt -loop-vectorize -force-vector-width=4 -S -debug
double.ll' works as expected. However, removing the -force-vector-width flag
results in no vectorization. From the debug output I can see that the issue
boils down to:

LV: The Widest type: 32 bits.
LV: The Widest register is:32bits.

I tried to work back through the source code to figure out why the widest
register is incorrect, though I get lost following the code logic for how
TargetTransformInfo gets initialized. Therefore, I have two questions:

1) Can -force-vector-width be specified from the C++ API? And if so, how?
2) What am I neglecting to do so that TargetTransformInfo is set correctly
and vectorization happens without forcing a vector width? Ultimately I would
like use vectorization in conjunction with the JIT ExecutionEngine.

Thank you to those of you who have answered my questions in the past, the
answers have helped tremendously and I am extremely grateful!


View this message in context: http://llvm.1065342.n5.nabble.com/Simple-Loop-Vectorize-Question-tp57584.html
Sent from the LLVM - Dev mailing list archive at Nabble.com.

More information about the llvm-dev mailing list