|
LLVM 22.0.0git
|
#include "AArch64.h"#include "AArch64InstrInfo.h"#include "AArch64Subtarget.h"#include "AArch64TargetMachine.h"#include "llvm/ADT/DenseMap.h"#include "llvm/ADT/DepthFirstIterator.h"#include "llvm/ADT/SmallVector.h"#include "llvm/ADT/Statistic.h"#include "llvm/Analysis/LoopInfo.h"#include "llvm/Analysis/ScalarEvolution.h"#include "llvm/Analysis/ScalarEvolutionExpressions.h"#include "llvm/CodeGen/LiveRegUnits.h"#include "llvm/CodeGen/MachineBasicBlock.h"#include "llvm/CodeGen/MachineFunction.h"#include "llvm/CodeGen/MachineFunctionPass.h"#include "llvm/CodeGen/MachineInstr.h"#include "llvm/CodeGen/MachineInstrBuilder.h"#include "llvm/CodeGen/MachineLoopInfo.h"#include "llvm/CodeGen/MachineOperand.h"#include "llvm/CodeGen/MachineRegisterInfo.h"#include "llvm/CodeGen/TargetPassConfig.h"#include "llvm/CodeGen/TargetRegisterInfo.h"#include "llvm/IR/DebugLoc.h"#include "llvm/IR/Dominators.h"#include "llvm/IR/Function.h"#include "llvm/IR/Instruction.h"#include "llvm/IR/Instructions.h"#include "llvm/IR/Metadata.h"#include "llvm/InitializePasses.h"#include "llvm/Pass.h"#include "llvm/Support/Casting.h"#include "llvm/Support/Debug.h"#include "llvm/Support/DebugCounter.h"#include "llvm/Support/raw_ostream.h"#include <iterator>#include <utility>Go to the source code of this file.
Macros | |
| #define | DEBUG_TYPE "aarch64-falkor-hwpf-fix" |
Functions | |
| STATISTIC (NumStridedLoadsMarked, "Number of strided loads marked") | |
| STATISTIC (NumCollisionsAvoided, "Number of HW prefetch tag collisions avoided") | |
| STATISTIC (NumCollisionsNotAvoided, "Number of HW prefetch tag collisions not avoided due to lack of registers") | |
| DEBUG_COUNTER (FixCounter, "falkor-hwpf", "Controls which tag collisions are avoided") | |
| INITIALIZE_PASS_BEGIN (FalkorMarkStridedAccessesLegacy, DEBUG_TYPE, "Falkor HW Prefetch Fix", false, false) INITIALIZE_PASS_END(FalkorMarkStridedAccessesLegacy | |
| INITIALIZE_PASS_BEGIN (FalkorHWPFFix, "aarch64-falkor-hwpf-fix-late", "Falkor HW Prefetch Fix Late Phase", false, false) INITIALIZE_PASS_END(FalkorHWPFFix | |
| aarch64 falkor hwpf fix Falkor HW Prefetch Fix Late static false unsigned | makeTag (unsigned Dest, unsigned Base, unsigned Offset) |
| static std::optional< LoadInfo > | getLoadInfo (const MachineInstr &MI) |
| static std::optional< unsigned > | getTag (const TargetRegisterInfo *TRI, const MachineInstr &MI, const LoadInfo &LI) |
Variables | |
| DEBUG_TYPE | |
| Falkor HW Prefetch | Fix |
| Falkor HW Prefetch | false |
| aarch64 falkor hwpf fix | late |
| aarch64 falkor hwpf fix Falkor HW Prefetch Fix Late | Phase |
| #define DEBUG_TYPE "aarch64-falkor-hwpf-fix" |
Definition at line 54 of file AArch64FalkorHWPFFix.cpp.
| DEBUG_COUNTER | ( | FixCounter | , |
| "falkor-hwpf" | , | ||
| "Controls which tag collisions are avoided" | ) |
|
static |
Definition at line 228 of file AArch64FalkorHWPFFix.cpp.
|
static |
Definition at line 650 of file AArch64FalkorHWPFFix.cpp.
References llvm::sampleprof::Base, llvm::MachineOperand::getImm(), llvm::MachineOperand::getReg(), llvm::MachineOperand::isCPI(), llvm::MachineOperand::isGlobal(), llvm::MachineOperand::isReg(), llvm::MachineOperand::isSymbol(), makeTag(), MI, and TRI.
Referenced by llvm::DWARF5AccelTableData::DWARF5AccelTableData(), llvm::MDNodeKeyImpl< DIBasicType >::MDNodeKeyImpl(), llvm::MDNodeKeyImpl< DICompositeType >::MDNodeKeyImpl(), llvm::MDNodeKeyImpl< DIFixedPointType >::MDNodeKeyImpl(), llvm::MDNodeKeyImpl< DIImportedEntity >::MDNodeKeyImpl(), llvm::MDNodeKeyImpl< DIStringType >::MDNodeKeyImpl(), llvm::MDNodeKeyImpl< DITemplateValueParameter >::MDNodeKeyImpl(), and llvm::MDNodeKeyImpl< GenericDINode >::MDNodeKeyImpl().
| INITIALIZE_PASS_BEGIN | ( | FalkorHWPFFix | , |
| "aarch64-falkor-hwpf-fix-late" | , | ||
| "Falkor HW Prefetch Fix Late Phase" | , | ||
| false | , | ||
| false | ) |
References INITIALIZE_PASS_DEPENDENCY.
| INITIALIZE_PASS_BEGIN | ( | FalkorMarkStridedAccessesLegacy | , |
| DEBUG_TYPE | , | ||
| "Falkor HW Prefetch Fix" | , | ||
| false | , | ||
| false | ) |
References DEBUG_TYPE, and INITIALIZE_PASS_DEPENDENCY.
|
static |
Definition at line 224 of file AArch64FalkorHWPFFix.cpp.
References llvm::sampleprof::Base, makeTag(), and llvm::Offset.
| STATISTIC | ( | NumCollisionsAvoided | , |
| "Number of HW prefetch tag collisions avoided" | ) |
| STATISTIC | ( | NumCollisionsNotAvoided | , |
| "Number of HW prefetch tag collisions not avoided due to lack of registers" | ) |
| STATISTIC | ( | NumStridedLoadsMarked | , |
| "Number of strided loads marked" | ) |
| DEBUG_TYPE |
Definition at line 107 of file AArch64FalkorHWPFFix.cpp.
Definition at line 108 of file AArch64FalkorHWPFFix.cpp.
| Falkor HW Prefetch Fix |
Definition at line 108 of file AArch64FalkorHWPFFix.cpp.
| aarch64 falkor hwpf fix late |
Definition at line 221 of file AArch64FalkorHWPFFix.cpp.
Definition at line 222 of file AArch64FalkorHWPFFix.cpp.
Referenced by buildCoroWrapper(), llvm::PassBuilder::buildFunctionSimplificationPipeline(), llvm::PassBuilder::buildInlinerPipeline(), llvm::PassBuilder::buildModuleInlinerPipeline(), llvm::PassBuilder::buildModuleSimplificationPipeline(), llvm::PassBuilder::buildO0DefaultPipeline(), llvm::PassBuilder::buildPerModuleDefaultPipeline(), llvm::createIGroupLPDAGMutation(), ExpandBVWithShuffles(), llvm::PassBuilder::invokeOptimizerEarlyEPCallbacks(), llvm::PassBuilder::invokeOptimizerLastEPCallbacks(), llvm::PassBuilder::invokePipelineEarlySimplificationEPCallbacks(), isLTOPostLink(), isLTOPreLink(), llvm::PassBuilder::registerOptimizerEarlyEPCallback(), and llvm::AMDGPUTargetMachine::registerPassBuilderCallbacks().