LLVM
13.0.0git
include
llvm
CodeGen
MachineLoopUtils.h
Go to the documentation of this file.
1
//=- MachineLoopUtils.h - Helper functions for manipulating loops -*- C++ -*-=//
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
#ifndef LLVM_CODEGEN_MACHINELOOPUTILS_H
10
#define LLVM_CODEGEN_MACHINELOOPUTILS_H
11
12
namespace
llvm
{
13
class
MachineLoop;
14
class
MachineBasicBlock;
15
class
MachineRegisterInfo;
16
class
TargetInstrInfo;
17
18
enum
LoopPeelDirection
{
19
LPD_Front
,
///< Peel the first iteration of the loop.
20
LPD_Back
///< Peel the last iteration of the loop.
21
};
22
23
/// Peels a single block loop. Loop must have two successors, one of which
24
/// must be itself. Similarly it must have two predecessors, one of which must
25
/// be itself.
26
///
27
/// The loop block is copied and inserted into the CFG such that two copies of
28
/// the loop follow on from each other. The copy is inserted either before or
29
/// after the loop based on Direction.
30
///
31
/// Phis are updated and an unconditional branch inserted at the end of the
32
/// clone so as to execute a single iteration.
33
///
34
/// The trip count of Loop is not updated.
35
MachineBasicBlock *
PeelSingleBlockLoop
(
LoopPeelDirection
Direction
,
36
MachineBasicBlock *Loop,
37
MachineRegisterInfo &
MRI
,
38
const
TargetInstrInfo *
TII
);
39
40
}
// namespace llvm
41
42
#endif // LLVM_CODEGEN_MACHINELOOPUTILS_H
llvm
This class represents lattice values for constants.
Definition:
AllocatorList.h:23
llvm::LPD_Front
@ LPD_Front
Peel the first iteration of the loop.
Definition:
MachineLoopUtils.h:19
TII
const HexagonInstrInfo * TII
Definition:
HexagonCopyToCombine.cpp:129
llvm::PeelSingleBlockLoop
MachineBasicBlock * PeelSingleBlockLoop(LoopPeelDirection Direction, MachineBasicBlock *Loop, MachineRegisterInfo &MRI, const TargetInstrInfo *TII)
Peels a single block loop.
Definition:
MachineLoopUtils.cpp:27
llvm::LoopPeelDirection
LoopPeelDirection
Definition:
MachineLoopUtils.h:18
MRI
unsigned const MachineRegisterInfo * MRI
Definition:
AArch64AdvSIMDScalarPass.cpp:105
llvm::LPD_Back
@ LPD_Back
Peel the last iteration of the loop.
Definition:
MachineLoopUtils.h:20
Direction
Loop::LoopBounds::Direction Direction
Definition:
LoopInfo.cpp:229
Generated on Thu Feb 25 2021 13:00:25 for LLVM by
1.8.17