LLVM  10.0.0svn
Macros | Functions
ARMLowOverheadLoops.cpp File Reference

Finalize v8.1-m low-overhead loops by converting the associated pseudo instructions into machine operations. More...

#include "ARM.h"
#include "ARMBaseInstrInfo.h"
#include "ARMBaseRegisterInfo.h"
#include "ARMBasicBlockInfo.h"
#include "ARMSubtarget.h"
#include "llvm/CodeGen/MachineFunctionPass.h"
#include "llvm/CodeGen/MachineLoopInfo.h"
#include "llvm/CodeGen/MachineRegisterInfo.h"
Include dependency graph for ARMLowOverheadLoops.cpp:

Go to the source code of this file.

Macros

#define DEBUG_TYPE   "arm-low-overhead-loops"
 
#define ARM_LOW_OVERHEAD_LOOPS_NAME   "ARM Low Overhead Loops pass"
 

Functions

 INITIALIZE_PASS (ARMLowOverheadLoops, DEBUG_TYPE, ARM_LOW_OVERHEAD_LOOPS_NAME, false, false) bool ARMLowOverheadLoops
 
static bool IsLoopStart (MachineInstr &MI)
 
template<typename T >
static MachineInstrSearchForDef (MachineInstr *Begin, T End, unsigned Reg)
 
static MachineInstrSearchForUse (MachineInstr *Begin, MachineBasicBlock::iterator End, unsigned Reg)
 

Detailed Description

Finalize v8.1-m low-overhead loops by converting the associated pseudo instructions into machine operations.

The expectation is that the loop contains three pseudo instructions:

Definition in file ARMLowOverheadLoops.cpp.

Macro Definition Documentation

◆ ARM_LOW_OVERHEAD_LOOPS_NAME

#define ARM_LOW_OVERHEAD_LOOPS_NAME   "ARM Low Overhead Loops pass"

Definition at line 32 of file ARMLowOverheadLoops.cpp.

◆ DEBUG_TYPE

#define DEBUG_TYPE   "arm-low-overhead-loops"

Definition at line 31 of file ARMLowOverheadLoops.cpp.

Function Documentation

◆ INITIALIZE_PASS()

INITIALIZE_PASS ( ARMLowOverheadLoops  ,
DEBUG_TYPE  ,
ARM_LOW_OVERHEAD_LOOPS_NAME  ,
false  ,
false   
)

◆ IsLoopStart()

static bool IsLoopStart ( MachineInstr MI)
static

Definition at line 114 of file ARMLowOverheadLoops.cpp.

References llvm::MachineInstr::getOpcode().

◆ SearchForDef()

template<typename T >
static MachineInstr* SearchForDef ( MachineInstr Begin,
T  End,
unsigned  Reg 
)
static

Definition at line 120 of file ARMLowOverheadLoops.cpp.

◆ SearchForUse()

static MachineInstr* SearchForUse ( MachineInstr Begin,
MachineBasicBlock::iterator  End,
unsigned  Reg 
)
static

Definition at line 131 of file ARMLowOverheadLoops.cpp.