LLVM 20.0.0git
Macros | Functions | Variables
AArch64ConditionalCompares.cpp File Reference
#include "AArch64.h"
#include "llvm/ADT/DepthFirstIterator.h"
#include "llvm/ADT/Statistic.h"
#include "llvm/CodeGen/MachineBranchProbabilityInfo.h"
#include "llvm/CodeGen/MachineDominators.h"
#include "llvm/CodeGen/MachineFunction.h"
#include "llvm/CodeGen/MachineFunctionPass.h"
#include "llvm/CodeGen/MachineInstrBuilder.h"
#include "llvm/CodeGen/MachineLoopInfo.h"
#include "llvm/CodeGen/MachineRegisterInfo.h"
#include "llvm/CodeGen/MachineTraceMetrics.h"
#include "llvm/CodeGen/Passes.h"
#include "llvm/CodeGen/TargetInstrInfo.h"
#include "llvm/CodeGen/TargetRegisterInfo.h"
#include "llvm/CodeGen/TargetSubtargetInfo.h"
#include "llvm/InitializePasses.h"
#include "llvm/Support/CommandLine.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-ccmp"
 

Functions

 STATISTIC (NumConsidered, "Number of ccmps considered")
 
 STATISTIC (NumPhiRejs, "Number of ccmps rejected (PHI)")
 
 STATISTIC (NumPhysRejs, "Number of ccmps rejected (Physregs)")
 
 STATISTIC (NumPhi2Rejs, "Number of ccmps rejected (PHI2)")
 
 STATISTIC (NumHeadBranchRejs, "Number of ccmps rejected (Head branch)")
 
 STATISTIC (NumCmpBranchRejs, "Number of ccmps rejected (CmpBB branch)")
 
 STATISTIC (NumCmpTermRejs, "Number of ccmps rejected (CmpBB is cbz...)")
 
 STATISTIC (NumImmRangeRejs, "Number of ccmps rejected (Imm out of range)")
 
 STATISTIC (NumLiveDstRejs, "Number of ccmps rejected (Cmp dest live)")
 
 STATISTIC (NumMultNZCVUses, "Number of ccmps rejected (NZCV used)")
 
 STATISTIC (NumUnknNZCVDefs, "Number of ccmps rejected (NZCV def unknown)")
 
 STATISTIC (NumSpeculateRejs, "Number of ccmps rejected (Can't speculate)")
 
 STATISTIC (NumConverted, "Number of ccmp instructions created")
 
 STATISTIC (NumCompBranches, "Number of cbz/cbnz branches converted")
 
static bool parseCond (ArrayRef< MachineOperand > Cond, AArch64CC::CondCode &CC)
 
 INITIALIZE_PASS_BEGIN (AArch64ConditionalCompares, "aarch64-ccmp", "AArch64 CCMP Pass", false, false) INITIALIZE_PASS_END(AArch64ConditionalCompares
 

Variables

static cl::opt< unsignedBlockInstrLimit ("aarch64-ccmp-limit", cl::init(30), cl::Hidden, cl::desc("Maximum number of instructions per speculated block."))
 
static cl::opt< boolStress ("aarch64-stress-ccmp", cl::Hidden, cl::desc("Turn all knobs to 11"))
 
aarch64 ccmp
 
aarch64 AArch64 CCMP Pass
 
aarch64 AArch64 CCMP false
 

Macro Definition Documentation

◆ DEBUG_TYPE

#define DEBUG_TYPE   "aarch64-ccmp"

Definition at line 41 of file AArch64ConditionalCompares.cpp.

Function Documentation

◆ INITIALIZE_PASS_BEGIN()

INITIALIZE_PASS_BEGIN ( AArch64ConditionalCompares  ,
"aarch64-ccmp"  ,
"AArch64 CCMP Pass"  ,
false  ,
false   
)

◆ parseCond()

static bool parseCond ( ArrayRef< MachineOperand Cond,
AArch64CC::CondCode CC 
)
static

◆ STATISTIC() [1/14]

STATISTIC ( NumCmpBranchRejs  ,
"Number of ccmps rejected (CmpBB branch)"   
)

◆ STATISTIC() [2/14]

STATISTIC ( NumCmpTermRejs  ,
"Number of ccmps rejected (CmpBB is cbz...)"   
)

◆ STATISTIC() [3/14]

STATISTIC ( NumCompBranches  ,
"Number of cbz/cbnz branches converted"   
)

References MRI, llvm::CallingConv::Tail, TII, and TRI.

◆ STATISTIC() [4/14]

STATISTIC ( NumConsidered  ,
"Number of ccmps considered"   
)

◆ STATISTIC() [5/14]

STATISTIC ( NumConverted  ,
"Number of ccmp instructions created"   
)

◆ STATISTIC() [6/14]

STATISTIC ( NumHeadBranchRejs  ,
"Number of ccmps rejected (Head branch)"   
)

◆ STATISTIC() [7/14]

STATISTIC ( NumImmRangeRejs  ,
"Number of ccmps rejected (Imm out of range)"   
)

◆ STATISTIC() [8/14]

STATISTIC ( NumLiveDstRejs  ,
"Number of ccmps rejected (Cmp dest live)"   
)

◆ STATISTIC() [9/14]

STATISTIC ( NumMultNZCVUses  ,
"Number of ccmps rejected (NZCV used)"   
)

◆ STATISTIC() [10/14]

STATISTIC ( NumPhi2Rejs  ,
"Number of ccmps rejected (PHI2)"   
)

◆ STATISTIC() [11/14]

STATISTIC ( NumPhiRejs  ,
"Number of ccmps rejected (PHI)"   
)

◆ STATISTIC() [12/14]

STATISTIC ( NumPhysRejs  ,
"Number of ccmps rejected (Physregs)"   
)

◆ STATISTIC() [13/14]

STATISTIC ( NumSpeculateRejs  ,
"Number of ccmps rejected (Can't speculate)"   
)

◆ STATISTIC() [14/14]

STATISTIC ( NumUnknNZCVDefs  ,
"Number of ccmps rejected (NZCV def unknown)"   
)

Variable Documentation

◆ BlockInstrLimit

cl::opt< unsigned > BlockInstrLimit("aarch64-ccmp-limit", cl::init(30), cl::Hidden, cl::desc("Maximum number of instructions per speculated block.")) ( "aarch64-ccmp-limit"  ,
cl::init(30)  ,
cl::Hidden  ,
cl::desc("Maximum number of instructions per speculated block.")   
)
static

◆ ccmp

aarch64 ccmp

Definition at line 799 of file AArch64ConditionalCompares.cpp.

◆ false

aarch64 AArch64 CCMP false

Definition at line 800 of file AArch64ConditionalCompares.cpp.

◆ Pass

aarch64 AArch64 CCMP Pass

◆ Stress

cl::opt< bool > Stress("aarch64-stress-ccmp", cl::Hidden, cl::desc("Turn all knobs to 11")) ( "aarch64-stress-ccmp"  ,
cl::Hidden  ,
cl::desc("Turn all knobs to 11")   
)
static