LLVM 20.0.0git
Macros | Functions | Variables
MipsConstantIslandPass.cpp File Reference
#include "Mips.h"
#include "Mips16InstrInfo.h"
#include "MipsMachineFunction.h"
#include "MipsSubtarget.h"
#include "llvm/ADT/STLExtras.h"
#include "llvm/ADT/SmallSet.h"
#include "llvm/ADT/SmallVector.h"
#include "llvm/ADT/Statistic.h"
#include "llvm/ADT/StringRef.h"
#include "llvm/CodeGen/MachineBasicBlock.h"
#include "llvm/CodeGen/MachineConstantPool.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/MachineRegisterInfo.h"
#include "llvm/Config/llvm-config.h"
#include "llvm/IR/Constants.h"
#include "llvm/IR/DataLayout.h"
#include "llvm/IR/DebugLoc.h"
#include "llvm/IR/Function.h"
#include "llvm/IR/Type.h"
#include "llvm/Support/CommandLine.h"
#include "llvm/Support/Compiler.h"
#include "llvm/Support/Debug.h"
#include "llvm/Support/ErrorHandling.h"
#include "llvm/Support/Format.h"
#include "llvm/Support/raw_ostream.h"
#include <cassert>
#include <cstdint>
#include <iterator>
#include <vector>

Go to the source code of this file.

Macros

#define DEBUG_TYPE   "mips-constant-islands"
 

Functions

 STATISTIC (NumCPEs, "Number of constpool entries")
 
 STATISTIC (NumSplit, "Number of uncond branches inserted")
 
 STATISTIC (NumCBrFixed, "Number of cond branches fixed")
 
 STATISTIC (NumUBrFixed, "Number of uncond branches fixed")
 
static unsigned int branchTargetOperand (MachineInstr *MI)
 
static unsigned int longformBranchOpcode (unsigned int Opcode)
 
static unsigned int branchMaxOffsets (unsigned int Opcode)
 
static bool BBHasFallthrough (MachineBasicBlock *MBB)
 BBHasFallthrough - Return true if the specified basic block can fallthrough into the block immediately after it.
 
static bool CompareMBBNumbers (const MachineBasicBlock *LHS, const MachineBasicBlock *RHS)
 CompareMBBNumbers - Little predicate function to sort the WaterList by MBB ID.
 
static bool BBIsJumpedOver (MachineBasicBlock *MBB)
 BBIsJumpedOver - Return true of the specified basic block's only predecessor unconditionally branches to its only successor.
 
static unsigned getUnconditionalBrDisp (int Opc)
 getUnconditionalBrDisp - Returns the maximum displacement that can fit in the specific unconditional branch instruction.
 

Variables

static cl::opt< boolAlignConstantIslands ("mips-align-constant-islands", cl::Hidden, cl::init(true), cl::desc("Align constant islands in code"))
 
static cl::opt< int > ConstantIslandsSmallOffset ("mips-constant-islands-small-offset", cl::init(0), cl::desc("Make small offsets be this amount for testing purposes"), cl::Hidden)
 
static cl::opt< boolNoLoadRelaxation ("mips-constant-islands-no-load-relaxation", cl::init(false), cl::desc("Don't relax loads to long loads - for testing purposes"), cl::Hidden)
 

Macro Definition Documentation

◆ DEBUG_TYPE

#define DEBUG_TYPE   "mips-constant-islands"

Definition at line 58 of file MipsConstantIslandPass.cpp.

Function Documentation

◆ BBHasFallthrough()

bool ARMConstantIslands::BBHasFallthrough ( MachineBasicBlock MBB)
static

BBHasFallthrough - Return true if the specified basic block can fallthrough into the block immediately after it.

Definition at line 586 of file MipsConstantIslandPass.cpp.

References llvm::MachineFunction::end(), llvm::ilist_node_impl< OptionsT >::getIterator(), llvm::MachineBasicBlock::getParent(), llvm::is_contained(), MBB, MBBI, and llvm::MachineBasicBlock::successors().

◆ BBIsJumpedOver()

static bool BBIsJumpedOver ( MachineBasicBlock MBB)
static

◆ branchMaxOffsets()

static unsigned int branchMaxOffsets ( unsigned int  Opcode)
static

Definition at line 132 of file MipsConstantIslandPass.cpp.

References llvm_unreachable.

◆ branchTargetOperand()

static unsigned int branchTargetOperand ( MachineInstr MI)
static

Definition at line 86 of file MipsConstantIslandPass.cpp.

References llvm_unreachable, and MI.

◆ CompareMBBNumbers()

static bool CompareMBBNumbers ( const MachineBasicBlock LHS,
const MachineBasicBlock RHS 
)
static

CompareMBBNumbers - Little predicate function to sort the WaterList by MBB ID.

Definition at line 811 of file MipsConstantIslandPass.cpp.

References LHS, and RHS.

◆ getUnconditionalBrDisp()

static unsigned getUnconditionalBrDisp ( int  Opc)
inlinestatic

getUnconditionalBrDisp - Returns the maximum displacement that can fit in the specific unconditional branch instruction.

Definition at line 1140 of file MipsConstantIslandPass.cpp.

◆ longformBranchOpcode()

static unsigned int longformBranchOpcode ( unsigned int  Opcode)
static

Definition at line 105 of file MipsConstantIslandPass.cpp.

References llvm_unreachable.

◆ STATISTIC() [1/4]

STATISTIC ( NumCBrFixed  ,
"Number of cond branches fixed"   
)

◆ STATISTIC() [2/4]

STATISTIC ( NumCPEs  ,
"Number of constpool entries"   
)

◆ STATISTIC() [3/4]

STATISTIC ( NumSplit  ,
"Number of uncond branches inserted"   
)

◆ STATISTIC() [4/4]

STATISTIC ( NumUBrFixed  ,
"Number of uncond branches fixed"   
)

Variable Documentation

◆ AlignConstantIslands

cl::opt< bool > AlignConstantIslands("mips-align-constant-islands", cl::Hidden, cl::init(true), cl::desc("Align constant islands in code")) ( "mips-align-constant-islands"  ,
cl::Hidden  ,
cl::init(true ,
cl::desc("Align constant islands in code")   
)
static

◆ ConstantIslandsSmallOffset

cl::opt< int > ConstantIslandsSmallOffset("mips-constant-islands-small-offset", cl::init(0), cl::desc("Make small offsets be this amount for testing purposes"), cl::Hidden) ( "mips-constant-islands-small-offset"  ,
cl::init(0)  ,
cl::desc("Make small offsets be this amount for testing purposes")  ,
cl::Hidden   
)
static

◆ NoLoadRelaxation

cl::opt< bool > NoLoadRelaxation("mips-constant-islands-no-load-relaxation", cl::init(false), cl::desc("Don't relax loads to long loads - for testing purposes"), cl::Hidden) ( "mips-constant-islands-no-load-relaxation"  ,
cl::init(false)  ,
cl::desc("Don't relax loads to long loads - for testing purposes")  ,
cl::Hidden   
)
static