Change TargetLowering::getLoadExtAction to take an MVT, instead of EVT.
[oota-llvm.git] / include / llvm / Transforms / Vectorize.h
index 776c005da6b0fd19f267912dfc2540008a7161ea..1ba4d22d5f5a5bb6fb776c2be648dad053b8ecc4 100644 (file)
@@ -18,6 +18,7 @@
 namespace llvm {
 class BasicBlock;
 class BasicBlockPass;
+class Pass;
 
 //===----------------------------------------------------------------------===//
 /// @brief Vectorize configuration.
@@ -28,12 +29,18 @@ struct VectorizeConfig {
   /// @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;
 
@@ -46,6 +53,12 @@ struct VectorizeConfig {
   /// @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;
 
@@ -74,6 +87,9 @@ struct VectorizeConfig {
   /// @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;
 
@@ -91,6 +107,12 @@ struct VectorizeConfig {
 BasicBlockPass *
 createBBVectorizePass(const VectorizeConfig &C = VectorizeConfig());
 
+//===----------------------------------------------------------------------===//
+//
+// LoopVectorize - Create a loop vectorization pass.
+//
+Pass *createLoopVectorizePass();
+
 //===----------------------------------------------------------------------===//
 /// @brief Vectorize the BasicBlock.
 ///