LLVM
8.0.1
|
#include "AArch64.h"
#include "llvm/ADT/Statistic.h"
#include "llvm/CodeGen/MachineFunction.h"
#include "llvm/CodeGen/MachineFunctionPass.h"
#include "llvm/CodeGen/MachineInstr.h"
#include "llvm/CodeGen/MachineInstrBuilder.h"
#include "llvm/CodeGen/MachineRegisterInfo.h"
#include "llvm/CodeGen/TargetInstrInfo.h"
#include "llvm/Support/Debug.h"
#include "llvm/Support/raw_ostream.h"
Go to the source code of this file.
Macros | |
#define | DEBUG_TYPE "aarch64-fix-cortex-a53-835769" |
Functions | |
STATISTIC (NumNopsAdded, "Number of Nops added to work around erratum 835769") | |
static bool | isFirstInstructionInSequence (MachineInstr *MI) |
static bool | isSecondInstructionInSequence (MachineInstr *MI) |
INITIALIZE_PASS (AArch64A53Fix835769, "aarch64-fix-cortex-a53-835769-pass", "AArch64 fix for A53 erratum 835769", false, false) bool AArch64A53Fix835769 | |
static MachineBasicBlock * | getBBFallenThrough (MachineBasicBlock *MBB, const TargetInstrInfo *TII) |
static MachineInstr * | getLastNonPseudo (MachineBasicBlock &MBB, const TargetInstrInfo *TII) |
static void | insertNopBeforeInstruction (MachineBasicBlock &MBB, MachineInstr *MI, const TargetInstrInfo *TII) |
#define DEBUG_TYPE "aarch64-fix-cortex-a53-835769" |
Definition at line 31 of file AArch64A53Fix835769.cpp.
|
static |
Definition at line 131 of file AArch64A53Fix835769.cpp.
References llvm::TargetInstrInfo::analyzeBranch(), llvm::MachineFunction::begin(), llvm::MachineBasicBlock::getParent(), and llvm::MachineBasicBlock::predecessors().
Referenced by getLastNonPseudo().
|
static |
Definition at line 156 of file AArch64A53Fix835769.cpp.
References getBBFallenThrough(), I, llvm::make_range(), llvm::MachineBasicBlock::rbegin(), and llvm::MachineBasicBlock::rend().
Referenced by insertNopBeforeInstruction().
INITIALIZE_PASS | ( | AArch64A53Fix835769 | , |
"aarch64-fix-cortex-a53-835769-pass" | , | ||
"AArch64 fix for A53 erratum 835769" | , | ||
false | , | ||
false | |||
) |
Definition at line 112 of file AArch64A53Fix835769.cpp.
References llvm::dbgs(), LLVM_DEBUG, runOnBasicBlock(), and TII.
|
static |
Definition at line 172 of file AArch64A53Fix835769.cpp.
References assert(), llvm::BuildMI(), llvm::dbgs(), llvm::MachineBasicBlock::front(), llvm::MCInstrInfo::get(), llvm::MachineInstr::getDebugLoc(), getLastNonPseudo(), llvm::MachineInstr::getParent(), I, isFirstInstructionInSequence(), llvm::MachineInstr::isPseudo(), isSecondInstructionInSequence(), LLVM_DEBUG, MI, runOnBasicBlock(), and TII.
|
static |
Definition at line 40 of file AArch64A53Fix835769.cpp.
References llvm::MachineInstr::getOpcode(), and llvm::MachineInstr::mayLoadOrStore().
Referenced by insertNopBeforeInstruction().
|
static |
Definition at line 56 of file AArch64A53Fix835769.cpp.
References F(), llvm::MachineFunctionPass::getAnalysisUsage(), llvm::MachineInstr::getOpcode(), llvm::MachineInstr::getOperand(), llvm::Pass::getPassName(), llvm::PassRegistry::getPassRegistry(), llvm::MachineOperand::getReg(), llvm::MachineFunctionPass::getRequiredProperties(), llvm::initializeAArch64A53Fix835769Pass(), llvm::MachineFunctionPass::MachineFunctionPass(), llvm::MachineFunctionProperties::NoVRegs, runOnBasicBlock(), llvm::MachineFunctionPass::runOnMachineFunction(), llvm::MachineFunctionProperties::set(), llvm::AnalysisUsage::setPreservesCFG(), and TII.
Referenced by insertNopBeforeInstruction().
STATISTIC | ( | NumNopsAdded | , |
"Number of Nops added to work around erratum 835769" | |||
) |