LLVM 20.0.0git
Macros | Functions | Variables
AArch64FalkorHWPFFix.cpp File Reference
#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< unsignedgetTag (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
 

Macro Definition Documentation

◆ DEBUG_TYPE

#define DEBUG_TYPE   "aarch64-falkor-hwpf-fix"

Definition at line 54 of file AArch64FalkorHWPFFix.cpp.

Function Documentation

◆ DEBUG_COUNTER()

DEBUG_COUNTER ( FixCounter  ,
"falkor-hwpf"  ,
"Controls which tag collisions are avoided"   
)

◆ getLoadInfo()

static std::optional< LoadInfo > getLoadInfo ( const MachineInstr MI)
static

Definition at line 234 of file AArch64FalkorHWPFFix.cpp.

References MI.

◆ getTag()

static std::optional< unsigned > getTag ( const TargetRegisterInfo TRI,
const MachineInstr MI,
const LoadInfo &  LI 
)
static

Definition at line 656 of file AArch64FalkorHWPFFix.cpp.

References llvm::sampleprof::Base, makeTag(), and TRI.

◆ INITIALIZE_PASS_BEGIN() [1/2]

INITIALIZE_PASS_BEGIN ( FalkorHWPFFix  ,
"aarch64-falkor-hwpf-fix-late"  ,
"Falkor HW Prefetch Fix Late Phase"  ,
false  ,
false   
)

◆ INITIALIZE_PASS_BEGIN() [2/2]

INITIALIZE_PASS_BEGIN ( FalkorMarkStridedAccessesLegacy  ,
DEBUG_TYPE  ,
"Falkor HW Prefetch Fix"  ,
false  ,
false   
)

◆ makeTag()

aarch64 falkor hwpf fix Falkor HW Prefetch Fix Late static false unsigned makeTag ( unsigned  Dest,
unsigned  Base,
unsigned  Offset 
)
static

Definition at line 230 of file AArch64FalkorHWPFFix.cpp.

References llvm::sampleprof::Base, and llvm::Offset.

Referenced by getTag().

◆ STATISTIC() [1/3]

STATISTIC ( NumCollisionsAvoided  ,
"Number of HW prefetch tag collisions avoided"   
)

◆ STATISTIC() [2/3]

STATISTIC ( NumCollisionsNotAvoided  ,
"Number of HW prefetch tag collisions not avoided due to lack of registers"   
)

◆ STATISTIC() [3/3]

STATISTIC ( NumStridedLoadsMarked  ,
"Number of strided loads marked"   
)

Variable Documentation

◆ DEBUG_TYPE

DEBUG_TYPE

Definition at line 110 of file AArch64FalkorHWPFFix.cpp.

◆ false

aarch64 falkor hwpf fix Falkor HW Prefetch Fix Late false

Definition at line 111 of file AArch64FalkorHWPFFix.cpp.

◆ Fix

Falkor HW Prefetch Fix

Definition at line 111 of file AArch64FalkorHWPFFix.cpp.

◆ late

aarch64 falkor hwpf fix late

Definition at line 227 of file AArch64FalkorHWPFFix.cpp.

◆ Phase

aarch64 falkor hwpf fix Falkor HW Prefetch Fix Late Phase