namespace llvm {
class BasicBlock;
class BasicBlockPass;
+class Pass;
//===----------------------------------------------------------------------===//
/// @brief Vectorize configuration.
/// @brief The size of the native vector registers.
unsigned VectorBits;
+ /// @brief Vectorize boolean values.
+ bool VectorizeBools;
+
/// @brief Vectorize integer values.
bool VectorizeInts;
/// @brief Vectorize floating-point values.
bool VectorizeFloats;
+ /// @brief Vectorize pointer values.
+ bool VectorizePointers;
+
/// @brief Vectorize casting (conversion) operations.
bool VectorizeCasts;
/// @brief Vectorize select instructions.
bool VectorizeSelect;
+ /// @brief Vectorize comparison instructions.
+ bool VectorizeCmp;
+
+ /// @brief Vectorize getelementptr instructions.
+ bool VectorizeGEP;
+
/// @brief Vectorize loads and stores.
bool VectorizeMemOps;
/// @brief The maximum number of pairing iterations.
unsigned MaxIter;
+ /// @brief Don't try to form odd-length vectors.
+ bool Pow2LenOnly;
+
/// @brief Don't boost the chain-depth contribution of loads and stores.
bool NoMemOpBoost;
BasicBlockPass *
createBBVectorizePass(const VectorizeConfig &C = VectorizeConfig());
+//===----------------------------------------------------------------------===//
+//
+// LoopVectorize - Create a loop vectorization pass.
+//
+Pass *createLoopVectorizePass();
+
//===----------------------------------------------------------------------===//
/// @brief Vectorize the BasicBlock.
///