//===------- LoopBoundSplit.h - Split Loop Bound ----------------*- C++ -*-===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef LLVM_TRANSFORMS_SCALAR_LOOPBOUNDSPLIT_H
#define LLVM_TRANSFORMS_SCALAR_LOOPBOUNDSPLIT_H

#include "llvm/Analysis/LoopAnalysisManager.h"
#include "llvm/Analysis/LoopInfo.h"
#include "llvm/IR/PassManager.h"
#include "llvm/Transforms/Scalar/LoopPassManager.h"

namespace llvm {

/// This pass transforms loops that contain a conditional branch with induction
/// variable. For example, it transforms left code to right code:
///
///                              newbound = min(n, c)
///  while (iv < n) {            while(iv < newbound) {
///    A                           A
///    if (iv < c)                 B
///      B                         C
///    C                         }
///                              if (iv != n) {
///                                while (iv < n) {
///                                  A
///                                  C
///                                }
///                              }
class LoopBoundSplitPass : public PassInfoMixin<LoopBoundSplitPass> {
public:
  PreservedAnalyses run(Loop &L, LoopAnalysisManager &AM,
                        LoopStandardAnalysisResults &AR, LPMUpdater &U);
};

} // end namespace llvm

#endif // LLVM_TRANSFORMS_SCALAR_LOOPBOUNDSPLIT_H
