LLVM API Documentation
#include "ARM.h"
#include "ARMMachineFunctionInfo.h"
#include "Thumb2InstrInfo.h"
#include "llvm/ADT/SmallSet.h"
#include "llvm/ADT/Statistic.h"
#include "llvm/CodeGen/MachineFunctionPass.h"
#include "llvm/CodeGen/MachineInstr.h"
#include "llvm/CodeGen/MachineInstrBuilder.h"
#include "llvm/CodeGen/MachineInstrBundle.h"
Go to the source code of this file.
Defines | |
#define | DEBUG_TYPE "thumb2-it" |
Functions | |
STATISTIC (NumITs,"Number of IT blocks inserted") | |
STATISTIC (NumMovedInsts,"Number of predicated instructions moved") | |
static void | TrackDefUses (MachineInstr *MI, SmallSet< unsigned, 4 > &Defs, SmallSet< unsigned, 4 > &Uses, const TargetRegisterInfo *TRI) |
static bool | isCopy (MachineInstr *MI) |
#define DEBUG_TYPE "thumb2-it" |
Definition at line 21 of file Thumb2ITBlockPass.cpp.
static bool isCopy | ( | MachineInstr * | MI | ) | [static] |
Definition at line 93 of file Thumb2ITBlockPass.cpp.
References llvm::MachineInstr::getOpcode().
STATISTIC | ( | NumMovedInsts | , |
"Number of predicated instructions moved" | |||
) |
static void TrackDefUses | ( | MachineInstr * | MI, |
SmallSet< unsigned, 4 > & | Defs, | ||
SmallSet< unsigned, 4 > & | Uses, | ||
const TargetRegisterInfo * | TRI | ||
) | [static] |
TrackDefUses - Tracking what registers are being defined and used by instructions in the IT block. This also tracks "dependencies", i.e. uses in the IT block that are defined before the IT instruction.
Definition at line 56 of file Thumb2ITBlockPass.cpp.
References llvm::MachineInstr::getNumOperands(), llvm::MachineInstr::getOperand(), llvm::MachineOperand::getReg(), llvm::SmallSet< T, N, C >::insert(), llvm::MachineOperand::isReg(), llvm::MachineOperand::isUse(), llvm::MCRegisterInfo::DiffListIterator::isValid(), llvm::SmallVectorTemplateBase< T, isPodLike >::push_back(), and llvm::SmallVectorTemplateCommon< T, typename >::size().