|
LLVM 24.0.0git
|
#include "Sparc.h"#include "SparcSubtarget.h"#include "llvm/ADT/SmallSet.h"#include "llvm/ADT/Statistic.h"#include "llvm/CodeGen/MachineFunctionAnalysisManager.h"#include "llvm/CodeGen/MachineFunctionPass.h"#include "llvm/CodeGen/MachineInstrBuilder.h"#include "llvm/CodeGen/MachinePassManager.h"#include "llvm/CodeGen/MachineRegisterInfo.h"#include "llvm/CodeGen/TargetInstrInfo.h"#include "llvm/CodeGen/TargetRegisterInfo.h"#include "llvm/IR/Analysis.h"#include "llvm/Pass.h"#include "llvm/Target/TargetMachine.h"Go to the source code of this file.
Macros | |
| #define | DEBUG_TYPE "delay-slot-filler" |
| #define DEBUG_TYPE "delay-slot-filler" |
Definition at line 31 of file DelaySlotFiller.cpp.
|
static |
Definition at line 63 of file DelaySlotFiller.cpp.
Referenced by tryCombineRestoreWithPrevInst().
|
static |
Definition at line 103 of file DelaySlotFiller.cpp.
Referenced by tryCombineRestoreWithPrevInst().
|
static |
Definition at line 149 of file DelaySlotFiller.cpp.
References assert(), llvm::isInt(), and TII.
Referenced by tryCombineRestoreWithPrevInst().
|
static |
Definition at line 318 of file DelaySlotFiller.cpp.
References IsRegInSet(), and Reg.
Referenced by findDelayInstr().
|
static |
Definition at line 392 of file DelaySlotFiller.cpp.
References delayHasHazard(), llvm::SparcSubtarget::getInstrInfo(), I, insertCallDefsUses(), insertDefsUses(), MBB, and Opc.
Referenced by runOnMachineBasicBlock().
|
static |
The restore before a tail call must run in its delay slot: jmp reg reads a register of the current window, and call writes o7.
For the same reason a leaf call needs the copy of o7 back from g1 that SparcFrameLowering emits.
Definition at line 230 of file DelaySlotFiller.cpp.
Referenced by runOnMachineBasicBlock().
|
static |
Definition at line 249 of file DelaySlotFiller.cpp.
References assert(), llvm::MachineOperand::getReg(), llvm::SmallSet< T, N, C >::insert(), llvm::MachineOperand::isGlobal(), llvm::MachineOperand::isImm(), llvm::MachineOperand::isReg(), llvm::MachineOperand::isUse(), llvm_unreachable, MI, and Reg.
Referenced by findDelayInstr().
|
static |
Definition at line 284 of file DelaySlotFiller.cpp.
References llvm::SparcSubtarget::getRegisterInfo(), llvm::SmallSet< T, N, C >::insert(), MI, and Reg.
Referenced by findDelayInstr().
|
static |
Definition at line 308 of file DelaySlotFiller.cpp.
References llvm::SmallSet< T, N, C >::count(), llvm::SparcSubtarget::getRegisterInfo(), llvm::MCRegAliasIterator::isValid(), and Reg.
Referenced by delayHasHazard().
|
static |
Definition at line 519 of file DelaySlotFiller.cpp.
References Changed, llvm::MachineFunction::getRegInfo(), llvm::MachineRegisterInfo::invalidateLiveness(), MBB, and runOnMachineBasicBlock().
Referenced by llvm::SparcDelaySlotFillerPass::run().
|
static |
runOnMachineBasicBlock - Fill in delay slots for the given basic block.
We assume there is only one delay slot per delayed instruction.
Definition at line 456 of file DelaySlotFiller.cpp.
References llvm::MachineInstrBuilder::addImm(), assert(), llvm::BuildMI(), Changed, D(), findDelayInstr(), findRequiredDelayInstr(), llvm::SparcSubtarget::getCLOpts(), llvm::SparcSubtarget::getInstrInfo(), I, MBB, MI, llvm::None, TII, and tryCombineRestoreWithPrevInst().
Referenced by runDelaySlotFillerOnMachineFunction().
| STATISTIC | ( | FilledSlots | , |
| "Number of delay slots filled" | ) |
|
static |
Definition at line 187 of file DelaySlotFiller.cpp.
References assert(), combineRestoreADD(), combineRestoreOR(), combineRestoreSETHIi(), llvm::SparcSubtarget::getInstrInfo(), MBB, MBBI, and TII.
Referenced by runOnMachineBasicBlock().