|
LLVM
3.7.0
|
#include "ARM.h"#include "ARMBaseInstrInfo.h"#include "ARMBaseRegisterInfo.h"#include "ARMISelLowering.h"#include "ARMMachineFunctionInfo.h"#include "ARMSubtarget.h"#include "MCTargetDesc/ARMAddressingModes.h"#include "ThumbRegisterInfo.h"#include "llvm/ADT/DenseMap.h"#include "llvm/ADT/STLExtras.h"#include "llvm/ADT/SmallPtrSet.h"#include "llvm/ADT/SmallSet.h"#include "llvm/ADT/SmallVector.h"#include "llvm/ADT/Statistic.h"#include "llvm/CodeGen/MachineBasicBlock.h"#include "llvm/CodeGen/MachineFunctionPass.h"#include "llvm/CodeGen/MachineInstr.h"#include "llvm/CodeGen/MachineInstrBuilder.h"#include "llvm/CodeGen/MachineRegisterInfo.h"#include "llvm/CodeGen/RegisterClassInfo.h"#include "llvm/CodeGen/SelectionDAGNodes.h"#include "llvm/CodeGen/LivePhysRegs.h"#include "llvm/IR/DataLayout.h"#include "llvm/IR/DerivedTypes.h"#include "llvm/IR/Function.h"#include "llvm/Support/Allocator.h"#include "llvm/Support/Debug.h"#include "llvm/Support/ErrorHandling.h"#include "llvm/Support/raw_ostream.h"#include "llvm/Target/TargetInstrInfo.h"#include "llvm/Target/TargetMachine.h"#include "llvm/Target/TargetRegisterInfo.h"Go to the source code of this file.
Macros | |
| #define | DEBUG_TYPE "arm-ldst-opt" |
| #define DEBUG_TYPE "arm-ldst-opt" |
Definition at line 49 of file ARMLoadStoreOptimizer.cpp.
|
static |
Copy Op0 and Op1 operands into a new array assigned to MI.
Definition at line 1914 of file ARMLoadStoreOptimizer.cpp.
References llvm::MachineFunction::allocateMemRefsArray(), llvm::MachineInstr::getParent(), llvm::MachineBasicBlock::getParent(), llvm::MachineInstr::memoperands_begin(), llvm::MachineInstr::memoperands_empty(), llvm::MachineInstr::memoperands_end(), and llvm::MachineInstr::setMemRefs().
|
static |
Definition at line 554 of file ARMLoadStoreOptimizer.cpp.
|
static |
Definition at line 149 of file ARMLoadStoreOptimizer.cpp.
References llvm::MachineInstr::operands().
Referenced by llvm::ARMTargetLowering::AdjustInstrPostInstrSelection(), isMatchingDecrement(), and isMatchingIncrement().
Definition at line 365 of file ARMLoadStoreOptimizer.cpp.
References llvm_unreachable.
|
static |
Definition at line 190 of file ARMLoadStoreOptimizer.cpp.
References llvm::MachineInstr::getOperand().
|
static |
Definition at line 198 of file ARMLoadStoreOptimizer.cpp.
References llvm::ARM_AM::da, llvm::ARM_AM::db, llvm::ARM_AM::ia, llvm::ARM_AM::ib, and llvm_unreachable.
|
static |
Definition at line 283 of file ARMLoadStoreOptimizer.cpp.
References llvm::ARM_AM::da, llvm::ARM_AM::db, llvm::ARM_AM::ia, llvm::ARM_AM::ib, and llvm_unreachable.
|
static |
Definition at line 194 of file ARMLoadStoreOptimizer.cpp.
References llvm::MachineInstr::getOperand().
|
static |
Definition at line 382 of file ARMLoadStoreOptimizer.cpp.
References llvm::MachineInstr::getDesc(), llvm::MCInstrDesc::getNumOperands(), llvm::MachineInstr::getNumOperands(), and llvm::MachineInstr::getOpcode().
|
static |
Definition at line 162 of file ARMLoadStoreOptimizer.cpp.
References llvm::ARM_AM::getAM3Offset(), llvm::ARM_AM::getAM3Op(), llvm::ARM_AM::getAM5Offset(), llvm::ARM_AM::getAM5Op(), llvm::MachineInstr::getDesc(), llvm::MachineOperand::getImm(), llvm::MCInstrDesc::getNumOperands(), llvm::MachineInstr::getOpcode(), llvm::MachineInstr::getOperand(), and llvm::ARM_AM::sub.
|
static |
Definition at line 1252 of file ARMLoadStoreOptimizer.cpp.
References llvm::ARM_AM::add, and llvm_unreachable.
|
static |
Definition at line 1227 of file ARMLoadStoreOptimizer.cpp.
References llvm::ARM_AM::add, and llvm_unreachable.
|
static |
Definition at line 1068 of file ARMLoadStoreOptimizer.cpp.
References llvm::ARM_AM::da, llvm::ARM_AM::db, llvm::ARM_AM::ia, llvm::ARM_AM::ib, and llvm_unreachable.
|
static |
Definition at line 1467 of file ARMLoadStoreOptimizer.cpp.
References llvm::MachineInstrBuilder::addImm(), llvm::MachineInstrBuilder::addReg(), llvm::BuildMI(), llvm::MCInstrInfo::get(), llvm::getDeadRegState(), llvm::getDefRegState(), llvm::getKillRegState(), and llvm::getUndefRegState().
Definition at line 345 of file ARMLoadStoreOptimizer.cpp.
References isT1i32Load(), and isT2i32Load().
Referenced by isLoadSingle().
Definition at line 357 of file ARMLoadStoreOptimizer.cpp.
References isT1i32Store(), and isT2i32Store().
Definition at line 361 of file ARMLoadStoreOptimizer.cpp.
References isi32Load().
|
static |
Definition at line 998 of file ARMLoadStoreOptimizer.cpp.
References definesCPSR(), llvm::MachineOperand::getImm(), llvm::getInstrPredicate(), llvm::MachineInstr::getOpcode(), llvm::MachineInstr::getOperand(), and llvm::MachineOperand::getReg().
|
static |
Definition at line 1033 of file ARMLoadStoreOptimizer.cpp.
References definesCPSR(), llvm::MachineOperand::getImm(), llvm::getInstrPredicate(), llvm::MachineInstr::getOpcode(), llvm::MachineInstr::getOperand(), and llvm::MachineOperand::getReg().
|
static |
Returns true if instruction is a memory operation that this pass is capable of operating on.
Definition at line 1414 of file ARMLoadStoreOptimizer.cpp.
References llvm::MachineMemOperand::getAlignment(), llvm::MachineInstr::getNumOperands(), llvm::MachineInstr::getOpcode(), llvm::MachineInstr::getOperand(), llvm::MachineInstr::hasOneMemOperand(), llvm::MachineOperand::isReg(), llvm::MachineOperand::isUndef(), llvm::MachineMemOperand::isVolatile(), and llvm::MachineInstr::memoperands_begin().
|
static |
Definition at line 1866 of file ARMLoadStoreOptimizer.cpp.
References llvm::SmallSet< T, N, C >::count(), llvm::SmallPtrSetImpl< PtrType >::count(), llvm::MachineOperand::getReg(), llvm::SmallSet< T, N, C >::insert(), llvm::MachineOperand::isDef(), llvm::MachineOperand::isReg(), llvm::TargetRegisterInfo::regsOverlap(), and llvm::SmallSet< T, N, C >::size().
Definition at line 337 of file ARMLoadStoreOptimizer.cpp.
Referenced by isi32Load().
Definition at line 349 of file ARMLoadStoreOptimizer.cpp.
Referenced by isi32Store().
Definition at line 341 of file ARMLoadStoreOptimizer.cpp.
Referenced by isi32Load().
Definition at line 353 of file ARMLoadStoreOptimizer.cpp.
Referenced by isi32Store().
Definition at line 894 of file ARMLoadStoreOptimizer.cpp.
References llvm::abs().
| STATISTIC | ( | NumLDMGened | , |
| "Number of ldm instructions generated" | |||
| ) |
| STATISTIC | ( | NumSTMGened | , |
| "Number of stm instructions generated" | |||
| ) |
| STATISTIC | ( | NumVLDMGened | , |
| "Number of vldm instructions generated" | |||
| ) |
| STATISTIC | ( | NumVSTMGened | , |
| "Number of vstm instructions generated" | |||
| ) |
| STATISTIC | ( | NumLdStMoved | , |
| "Number of load / store instructions moved" | |||
| ) |
| STATISTIC | ( | NumLDRDFormed | , |
| "Number of ldrd created before allocation" | |||
| ) |
| STATISTIC | ( | NumSTRDFormed | , |
| "Number of strd created before allocation" | |||
| ) |
| STATISTIC | ( | NumLDRD2LDM | , |
| "Number of ldrd instructions turned back into ldm" | |||
| ) |
| STATISTIC | ( | NumSTRD2STM | , |
| "Number of strd instructions turned back into stm" | |||
| ) |
| STATISTIC | ( | NumLDRD2LDR | , |
| "Number of ldrd instructions turned back into ldr's" | |||
| ) |
| STATISTIC | ( | NumSTRD2STR | , |
| "Number of strd instructions turned back into str's" | |||
| ) |
1.8.6