LLVM 20.0.0git
Macros | Functions | Variables
PPCMIPeephole.cpp File Reference
#include "MCTargetDesc/PPCMCTargetDesc.h"
#include "MCTargetDesc/PPCPredicates.h"
#include "PPC.h"
#include "PPCInstrInfo.h"
#include "PPCMachineFunctionInfo.h"
#include "PPCTargetMachine.h"
#include "llvm/ADT/Statistic.h"
#include "llvm/CodeGen/LiveVariables.h"
#include "llvm/CodeGen/MachineBlockFrequencyInfo.h"
#include "llvm/CodeGen/MachineDominators.h"
#include "llvm/CodeGen/MachineFrameInfo.h"
#include "llvm/CodeGen/MachineFunctionPass.h"
#include "llvm/CodeGen/MachineInstrBuilder.h"
#include "llvm/CodeGen/MachinePostDominators.h"
#include "llvm/CodeGen/MachineRegisterInfo.h"
#include "llvm/InitializePasses.h"
#include "llvm/Support/Debug.h"
#include "llvm/Support/DebugCounter.h"

Go to the source code of this file.

Macros

#define DEBUG_TYPE   "ppc-mi-peepholes"
 
#define addRegToUpdate(R)   addRegToUpdateWithLine(R, __LINE__)
 

Functions

 STATISTIC (RemoveTOCSave, "Number of TOC saves removed")
 
 STATISTIC (MultiTOCSaves, "Number of functions with multiple TOC saves that must be kept")
 
 STATISTIC (NumTOCSavesInPrologue, "Number of TOC saves placed in the prologue")
 
 STATISTIC (NumEliminatedSExt, "Number of eliminated sign-extensions")
 
 STATISTIC (NumEliminatedZExt, "Number of eliminated zero-extensions")
 
 STATISTIC (NumOptADDLIs, "Number of optimized ADD instruction fed by LI")
 
 STATISTIC (NumConvertedToImmediateForm, "Number of instructions converted to their immediate form")
 
 STATISTIC (NumFunctionsEnteredInMIPeephole, "Number of functions entered in PPC MI Peepholes")
 
 STATISTIC (NumFixedPointIterations, "Number of fixed-point iterations converting reg-reg instructions " "to reg-imm ones")
 
 STATISTIC (NumRotatesCollapsed, "Number of pairs of rotate left, clear left/right collapsed")
 
 STATISTIC (NumEXTSWAndSLDICombined, "Number of pairs of EXTSW and SLDI combined as EXTSWSLI")
 
 STATISTIC (NumLoadImmZeroFoldedAndRemoved, "Number of LI(8) reg, 0 that are folded to r0 and removed")
 
 DEBUG_COUNTER (PeepholeXToICounter, "ppc-xtoi-peephole", "Controls whether PPC reg+reg to reg+imm peephole is performed on a MI")
 
 DEBUG_COUNTER (PeepholePerOpCounter, "ppc-per-op-peephole", "Controls whether PPC per opcode peephole is performed on a MI")
 
 INITIALIZE_PASS_BEGIN (PPCMIPeephole, DEBUG_TYPE, "PowerPC MI Peephole Optimization", false, false) INITIALIZE_PASS_END(PPCMIPeephole
 

Variables

static cl::opt< boolFixedPointRegToImm ("ppc-reg-to-imm-fixed-point", cl::Hidden, cl::init(true), cl::desc("Iterate to a fixed point when attempting to " "convert reg-reg instructions to reg-imm"))
 
static cl::opt< boolConvertRegReg ("ppc-convert-rr-to-ri", cl::Hidden, cl::init(true), cl::desc("Convert eligible reg+reg instructions to reg+imm"))
 
static cl::opt< boolEnableSExtElimination ("ppc-eliminate-signext", cl::desc("enable elimination of sign-extensions"), cl::init(true), cl::Hidden)
 
static cl::opt< boolEnableZExtElimination ("ppc-eliminate-zeroext", cl::desc("enable elimination of zero-extensions"), cl::init(true), cl::Hidden)
 
static cl::opt< boolEnableTrapOptimization ("ppc-opt-conditional-trap", cl::desc("enable optimization of conditional traps"), cl::init(false), cl::Hidden)
 
 DEBUG_TYPE
 
PowerPC MI Peephole Optimization
 
PowerPC MI Peephole false
 

Macro Definition Documentation

◆ addRegToUpdate

#define addRegToUpdate (   R)    addRegToUpdateWithLine(R, __LINE__)

Definition at line 188 of file PPCMIPeephole.cpp.

◆ DEBUG_TYPE

#define DEBUG_TYPE   "ppc-mi-peepholes"

Definition at line 51 of file PPCMIPeephole.cpp.

Function Documentation

◆ DEBUG_COUNTER() [1/2]

DEBUG_COUNTER ( PeepholePerOpCounter  ,
"ppc-per-op-peephole"  ,
"Controls whether PPC per opcode peephole is performed on a MI"   
)

◆ DEBUG_COUNTER() [2/2]

DEBUG_COUNTER ( PeepholeXToICounter  ,
"ppc-xtoi-peephole"  ,
"Controls whether PPC reg+reg to reg+imm peephole is performed on a MI"   
)

◆ INITIALIZE_PASS_BEGIN()

INITIALIZE_PASS_BEGIN ( PPCMIPeephole  ,
DEBUG_TYPE  ,
"PowerPC MI Peephole Optimization"  ,
false  ,
false   
)

◆ STATISTIC() [1/12]

STATISTIC ( MultiTOCSaves  ,
"Number of functions with multiple TOC saves that must be kept"   
)

◆ STATISTIC() [2/12]

STATISTIC ( NumConvertedToImmediateForm  ,
"Number of instructions converted to their immediate form"   
)

◆ STATISTIC() [3/12]

STATISTIC ( NumEliminatedSExt  ,
"Number of eliminated sign-extensions"   
)

◆ STATISTIC() [4/12]

STATISTIC ( NumEliminatedZExt  ,
"Number of eliminated zero-extensions"   
)

◆ STATISTIC() [5/12]

STATISTIC ( NumEXTSWAndSLDICombined  ,
"Number of pairs of EXTSW and SLDI combined as EXTSWSLI"   
)

◆ STATISTIC() [6/12]

STATISTIC ( NumFixedPointIterations  ,
"Number of fixed-point iterations converting reg-reg instructions " "to reg-imm ones"   
)

◆ STATISTIC() [7/12]

STATISTIC ( NumFunctionsEnteredInMIPeephole  ,
"Number of functions entered in PPC MI Peepholes"   
)

◆ STATISTIC() [8/12]

STATISTIC ( NumLoadImmZeroFoldedAndRemoved  ,
"Number of LI(8)  reg,
0 that are folded to r0 and removed"   
)

◆ STATISTIC() [9/12]

STATISTIC ( NumOptADDLIs  ,
"Number of optimized ADD instruction fed by LI"   
)

◆ STATISTIC() [10/12]

STATISTIC ( NumRotatesCollapsed  ,
"Number of pairs of rotate  left,
clear left/right collapsed"   
)

◆ STATISTIC() [11/12]

STATISTIC ( NumTOCSavesInPrologue  ,
"Number of TOC saves placed in the prologue"   
)

◆ STATISTIC() [12/12]

STATISTIC ( RemoveTOCSave  ,
"Number of TOC saves removed"   
)

Variable Documentation

◆ ConvertRegReg

cl::opt< bool > ConvertRegReg("ppc-convert-rr-to-ri", cl::Hidden, cl::init(true), cl::desc("Convert eligible reg+reg instructions to reg+imm")) ( "ppc-convert-rr-to-ri"  ,
cl::Hidden  ,
cl::init(true ,
cl::desc("Convert eligible reg+reg instructions to reg+imm")   
)
static

◆ DEBUG_TYPE

DEBUG_TYPE

Definition at line 2049 of file PPCMIPeephole.cpp.

◆ EnableSExtElimination

cl::opt< bool > EnableSExtElimination("ppc-eliminate-signext", cl::desc("enable elimination of sign-extensions"), cl::init(true), cl::Hidden) ( "ppc-eliminate-signext"  ,
cl::desc("enable elimination of sign-extensions")  ,
cl::init(true ,
cl::Hidden   
)
static

◆ EnableTrapOptimization

cl::opt< bool > EnableTrapOptimization("ppc-opt-conditional-trap", cl::desc("enable optimization of conditional traps"), cl::init(false), cl::Hidden) ( "ppc-opt-conditional-trap"  ,
cl::desc("enable optimization of conditional traps")  ,
cl::init(false)  ,
cl::Hidden   
)
static

◆ EnableZExtElimination

cl::opt< bool > EnableZExtElimination("ppc-eliminate-zeroext", cl::desc("enable elimination of zero-extensions"), cl::init(true), cl::Hidden) ( "ppc-eliminate-zeroext"  ,
cl::desc("enable elimination of zero-extensions")  ,
cl::init(true ,
cl::Hidden   
)
static

◆ false

PowerPC MI Peephole false

Definition at line 2050 of file PPCMIPeephole.cpp.

◆ FixedPointRegToImm

cl::opt< bool > FixedPointRegToImm("ppc-reg-to-imm-fixed-point", cl::Hidden, cl::init(true), cl::desc("Iterate to a fixed point when attempting to " "convert reg-reg instructions to reg-imm")) ( "ppc-reg-to-imm-fixed-point"  ,
cl::Hidden  ,
cl::init(true ,
cl::desc("Iterate to a fixed point when attempting to " "convert reg-reg instructions to reg-imm")   
)
static

◆ Optimization

PowerPC MI Peephole Optimization

Definition at line 2050 of file PPCMIPeephole.cpp.