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