1816cdf6bb280a85e4a0da1d456143ebe0b0db4e0Dan Gohman//===- llvm/Transforms/Utils/UnrollLoop.h - Unrolling utilities -*- C++ -*-===//
2816cdf6bb280a85e4a0da1d456143ebe0b0db4e0Dan Gohman//
3816cdf6bb280a85e4a0da1d456143ebe0b0db4e0Dan Gohman//                     The LLVM Compiler Infrastructure
4816cdf6bb280a85e4a0da1d456143ebe0b0db4e0Dan Gohman//
5816cdf6bb280a85e4a0da1d456143ebe0b0db4e0Dan Gohman// This file is distributed under the University of Illinois Open Source
6816cdf6bb280a85e4a0da1d456143ebe0b0db4e0Dan Gohman// License. See LICENSE.TXT for details.
7816cdf6bb280a85e4a0da1d456143ebe0b0db4e0Dan Gohman//
8816cdf6bb280a85e4a0da1d456143ebe0b0db4e0Dan Gohman//===----------------------------------------------------------------------===//
9816cdf6bb280a85e4a0da1d456143ebe0b0db4e0Dan Gohman//
10816cdf6bb280a85e4a0da1d456143ebe0b0db4e0Dan Gohman// This file defines some loop unrolling utilities. It does not define any
11816cdf6bb280a85e4a0da1d456143ebe0b0db4e0Dan Gohman// actual pass or policy, but provides a single function to perform loop
12816cdf6bb280a85e4a0da1d456143ebe0b0db4e0Dan Gohman// unrolling.
13816cdf6bb280a85e4a0da1d456143ebe0b0db4e0Dan Gohman//
14816cdf6bb280a85e4a0da1d456143ebe0b0db4e0Dan Gohman//===----------------------------------------------------------------------===//
15816cdf6bb280a85e4a0da1d456143ebe0b0db4e0Dan Gohman
16816cdf6bb280a85e4a0da1d456143ebe0b0db4e0Dan Gohman#ifndef LLVM_TRANSFORMS_UTILS_UNROLLLOOP_H
17816cdf6bb280a85e4a0da1d456143ebe0b0db4e0Dan Gohman#define LLVM_TRANSFORMS_UTILS_UNROLLLOOP_H
18816cdf6bb280a85e4a0da1d456143ebe0b0db4e0Dan Gohman
19816cdf6bb280a85e4a0da1d456143ebe0b0db4e0Dan Gohmannamespace llvm {
20816cdf6bb280a85e4a0da1d456143ebe0b0db4e0Dan Gohman
2103ee68a145ab5394c070298049d93f305be93ec3Dan Gohmanclass Loop;
2203ee68a145ab5394c070298049d93f305be93ec3Dan Gohmanclass LoopInfo;
23816cdf6bb280a85e4a0da1d456143ebe0b0db4e0Dan Gohmanclass LPPassManager;
2436b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hinesclass Pass;
25816cdf6bb280a85e4a0da1d456143ebe0b0db4e0Dan Gohman
265d73448bb7f3d326f310e6f35030821b103b1cdbAndrew Trickbool UnrollLoop(Loop *L, unsigned Count, unsigned TripCount, bool AllowRuntime,
2736b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines                unsigned TripMultiple, LoopInfo *LI, Pass *PP,
2836b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines                LPPassManager *LPM);
29816cdf6bb280a85e4a0da1d456143ebe0b0db4e0Dan Gohman
305d73448bb7f3d326f310e6f35030821b103b1cdbAndrew Trickbool UnrollRuntimeLoopProlog(Loop *L, unsigned Count, LoopInfo *LI,
315d73448bb7f3d326f310e6f35030821b103b1cdbAndrew Trick                             LPPassManager* LPM);
32816cdf6bb280a85e4a0da1d456143ebe0b0db4e0Dan Gohman}
33816cdf6bb280a85e4a0da1d456143ebe0b0db4e0Dan Gohman
34816cdf6bb280a85e4a0da1d456143ebe0b0db4e0Dan Gohman#endif
35