Subversion Repositories QNX 8.QNX8 LLVM/Clang compiler suite

Rev

Blame | Last modification | View Log | Download | RSS feed

  1. //===-------- VectorCombine.h - Optimize partial vector operations --------===//
  2. //
  3. // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
  4. // See https://llvm.org/LICENSE.txt for license information.
  5. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
  6. //
  7. //===----------------------------------------------------------------------===//
  8. //
  9. // This pass optimizes scalar/vector interactions using target cost models. The
  10. // transforms implemented here may not fit in traditional loop-based or SLP
  11. // vectorization passes.
  12. //
  13. //===----------------------------------------------------------------------===//
  14.  
  15. #ifndef LLVM_TRANSFORMS_VECTORIZE_VECTORCOMBINE_H
  16. #define LLVM_TRANSFORMS_VECTORIZE_VECTORCOMBINE_H
  17.  
  18. #include "llvm/IR/PassManager.h"
  19.  
  20. namespace llvm {
  21.  
  22. /// Optimize scalar/vector interactions in IR using target cost models.
  23. class VectorCombinePass : public PassInfoMixin<VectorCombinePass> {
  24.   /// If true, only perform beneficial early IR transforms. Do not introduce new
  25.   /// vector operations.
  26.   bool TryEarlyFoldsOnly;
  27.  
  28. public:
  29.   VectorCombinePass(bool TryEarlyFoldsOnly = false)
  30.       : TryEarlyFoldsOnly(TryEarlyFoldsOnly) {}
  31.  
  32.   PreservedAnalyses run(Function &F, FunctionAnalysisManager &);
  33. };
  34. }
  35. #endif // LLVM_TRANSFORMS_VECTORIZE_VECTORCOMBINE_H
  36.