LLVM 20.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/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/MachineOperand.h"
#include "llvm/CodeGen/TargetRegisterInfo.h"
#include "llvm/CodeGen/TargetSubtargetInfo.h"
#include "llvm/MC/MCInstrDesc.h"
#include <cassert>
#include <cstdint>

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 169 of file SystemZElimCompare.cpp.

References assert(), and isLoadAndTestAsCmp().

◆ INITIALIZE_PASS()

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

◆ isAddWithImmediate()

static bool isAddWithImmediate ( unsigned  Opcode)
static

Definition at line 331 of file SystemZElimCompare.cpp.

◆ isCompareZero()

static bool isCompareZero ( MachineInstr Compare)
static

Definition at line 492 of file SystemZElimCompare.cpp.

References isLoadAndTestAsCmp().

◆ isLoadAndTestAsCmp()

static bool isLoadAndTestAsCmp ( MachineInstr MI)
static

Definition at line 158 of file SystemZElimCompare.cpp.

References MI.

Referenced by getCompareSourceReg(), and isCompareZero().

◆ resultTests()

static bool resultTests ( MachineInstr MI,
unsigned  Reg 
)
static

Definition at line 127 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:
if (MI.getOperand(1).getReg() == Reg)
return true;
}
return false
IRTranslator LLVM IR MI
unsigned Reg

Definition at line 110 of file SystemZElimCompare.cpp.

Referenced by resultTests().