LLVM  14.0.0git
Macros | Functions | Variables
SystemZElimCompare.cpp File Reference
#include "SystemZ.h"
#include "SystemZInstrInfo.h"
#include "SystemZTargetMachine.h"
#include "llvm/ADT/SmallVector.h"
#include "llvm/ADT/Statistic.h"
#include "llvm/ADT/StringRef.h"
#include "llvm/CodeGen/LivePhysRegs.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/MachineOperand.h"
#include "llvm/CodeGen/TargetRegisterInfo.h"
#include "llvm/CodeGen/TargetSubtargetInfo.h"
#include "llvm/MC/MCInstrDesc.h"
#include <cassert>
#include <cstdint>
Include dependency graph for SystemZElimCompare.cpp:

Go to the source code of this file.

Macros

#define DEBUG_TYPE   "systemz-elim-compare"
 

Functions

 STATISTIC (BranchOnCounts, "Number of branch-on-count instructions")
 
 STATISTIC (LoadAndTraps, "Number of load-and-trap instructions")
 
 STATISTIC (EliminatedComparisons, "Number of eliminated comparisons")
 
 STATISTIC (FusedComparisons, "Number of fused compare-and-branch instructions")
 
 INITIALIZE_PASS (SystemZElimCompare, DEBUG_TYPE, "SystemZ Comparison Elimination", false, false) static bool preservesValueOf(MachineInstr &MI
 
static bool resultTests (MachineInstr &MI, unsigned Reg)
 
static bool isLoadAndTestAsCmp (MachineInstr &MI)
 
static unsigned getCompareSourceReg (MachineInstr &Compare)
 
static bool isAddWithImmediate (unsigned Opcode)
 
static bool isCompareZero (MachineInstr &Compare)
 

Variables

unsigned Reg
 

Macro Definition Documentation

◆ DEBUG_TYPE

#define DEBUG_TYPE   "systemz-elim-compare"

Definition at line 36 of file SystemZElimCompare.cpp.

Function Documentation

◆ getCompareSourceReg()

static unsigned getCompareSourceReg ( MachineInstr Compare)
static

Definition at line 175 of file SystemZElimCompare.cpp.

References assert(), Compare, and isLoadAndTestAsCmp().

◆ INITIALIZE_PASS()

INITIALIZE_PASS ( SystemZElimCompare  ,
DEBUG_TYPE  ,
"SystemZ Comparison Elimination ,
false  ,
false   
) &

◆ isAddWithImmediate()

static bool isAddWithImmediate ( unsigned  Opcode)
static

Definition at line 337 of file SystemZElimCompare.cpp.

◆ isCompareZero()

static bool isCompareZero ( MachineInstr Compare)
static

Definition at line 500 of file SystemZElimCompare.cpp.

References Compare, and isLoadAndTestAsCmp().

◆ isLoadAndTestAsCmp()

static bool isLoadAndTestAsCmp ( MachineInstr MI)
static

Definition at line 164 of file SystemZElimCompare.cpp.

References MI.

Referenced by getCompareSourceReg(), and isCompareZero().

◆ resultTests()

static bool resultTests ( MachineInstr MI,
unsigned  Reg 
)
static

Definition at line 133 of file SystemZElimCompare.cpp.

References MI, and Reg.

◆ STATISTIC() [1/4]

STATISTIC ( BranchOnCounts  ,
"Number of branch-on-count instructions  
)

◆ STATISTIC() [2/4]

STATISTIC ( EliminatedComparisons  ,
"Number of eliminated comparisons  
)

◆ STATISTIC() [3/4]

STATISTIC ( FusedComparisons  ,
"Number of fused compare-and-branch instructions  
)

◆ STATISTIC() [4/4]

STATISTIC ( LoadAndTraps  ,
"Number of load-and-trap instructions  
)

Variable Documentation

◆ Reg

unsigned Reg
Initial value:
{
switch (MI.getOpcode()) {
case SystemZ::LR:
case SystemZ::LGR:
case SystemZ::LGFR:
case SystemZ::LTR:
case SystemZ::LTGR:
case SystemZ::LTGFR:
case SystemZ::LER:
case SystemZ::LXR:
case SystemZ::LTEBR:
case SystemZ::LTDBR:
case SystemZ::LTXBR:
if (MI.getOperand(1).getReg() == Reg)
return true;
}
return false

Definition at line 110 of file SystemZElimCompare.cpp.

Referenced by resultTests().

MI
IRTranslator LLVM IR MI
Definition: IRTranslator.cpp:105
Reg
unsigned Reg
Definition: SystemZElimCompare.cpp:110
llvm::MipsISD::LDR
@ LDR
Definition: MipsISelLowering.h:250