LLVM  8.0.1
Macros | Enumerations | Functions
MicroMipsSizeReduction.cpp File Reference

This pass is used to reduce the size of instructions where applicable. More...

#include "Mips.h"
#include "MipsInstrInfo.h"
#include "MipsSubtarget.h"
#include "llvm/ADT/Statistic.h"
#include "llvm/CodeGen/MachineFunctionPass.h"
#include "llvm/Support/Debug.h"
Include dependency graph for MicroMipsSizeReduction.cpp:

Go to the source code of this file.

Macros

#define DEBUG_TYPE   "micromips-reduce-size"
 
#define MICROMIPS_SIZE_REDUCE_NAME   "MicroMips instruction size reduce pass"
 

Enumerations

enum  OperandTransfer
 Order of operands to transfer. More...
 
enum  ReduceType
 Reduction type. More...
 

Functions

 STATISTIC (NumReduced, "Number of instructions reduced (32-bit to 16-bit ones, " "or two instructions into one")
 
 INITIALIZE_PASS (MicroMipsSizeReduce, DEBUG_TYPE, MICROMIPS_SIZE_REDUCE_NAME, false, false) static bool IsSP(const MachineOperand &MO)
 
static bool isMMThreeBitGPRegister (const MachineOperand &MO)
 
static bool isMMSourceRegister (const MachineOperand &MO)
 
static bool GetImm (MachineInstr *MI, unsigned Op, int64_t &Imm)
 
static bool AddiuspImmValue (int64_t Value)
 
static bool InRange (int64_t Value, unsigned short Shift, int LBound, int HBound)
 
static bool ImmInRange (MachineInstr *MI, const ReduceEntry &Entry)
 
static bool CheckXWPInstr (MachineInstr *MI, bool ReduceToLwp, const ReduceEntry &Entry)
 
static bool ConsecutiveRegisters (unsigned Reg1, unsigned Reg2)
 
static bool ConsecutiveInstr (MachineInstr *MI1, MachineInstr *MI2)
 
static bool IsMovepSrcRegister (unsigned Reg)
 
static bool IsMovepDestinationReg (unsigned Reg)
 
static bool IsMovepDestinationRegPair (unsigned R0, unsigned R1)
 

Detailed Description

This pass is used to reduce the size of instructions where applicable.

TODO: Implement microMIPS64 support.

Definition in file MicroMipsSizeReduction.cpp.

Macro Definition Documentation

◆ DEBUG_TYPE

#define DEBUG_TYPE   "micromips-reduce-size"

Definition at line 23 of file MicroMipsSizeReduction.cpp.

◆ MICROMIPS_SIZE_REDUCE_NAME

#define MICROMIPS_SIZE_REDUCE_NAME   "MicroMips instruction size reduce pass"

Definition at line 24 of file MicroMipsSizeReduction.cpp.

Enumeration Type Documentation

◆ OperandTransfer

Order of operands to transfer.

Definition at line 33 of file MicroMipsSizeReduction.cpp.

◆ ReduceType

enum ReduceType

Reduction type.

Definition at line 46 of file MicroMipsSizeReduction.cpp.

Function Documentation

◆ AddiuspImmValue()

static bool AddiuspImmValue ( int64_t  Value)
static

Definition at line 318 of file MicroMipsSizeReduction.cpp.

◆ CheckXWPInstr()

static bool CheckXWPInstr ( MachineInstr MI,
bool  ReduceToLwp,
const ReduceEntry &  Entry 
)
static

◆ ConsecutiveInstr()

static bool ConsecutiveInstr ( MachineInstr MI1,
MachineInstr MI2 
)
static

◆ ConsecutiveRegisters()

static bool ConsecutiveRegisters ( unsigned  Reg1,
unsigned  Reg2 
)
static

Definition at line 379 of file MicroMipsSizeReduction.cpp.

References RA, llvm::SmallVectorBase::size(), T1, and llvm::X86II::T8.

Referenced by ConsecutiveInstr().

◆ GetImm()

static bool GetImm ( MachineInstr MI,
unsigned  Op,
int64_t &  Imm 
)
static

◆ ImmInRange()

static bool ImmInRange ( MachineInstr MI,
const ReduceEntry &  Entry 
)
static

Definition at line 338 of file MicroMipsSizeReduction.cpp.

References GetImm(), and InRange().

Referenced by CheckXWPInstr().

◆ INITIALIZE_PASS()

INITIALIZE_PASS ( MicroMipsSizeReduce  ,
DEBUG_TYPE  ,
MICROMIPS_SIZE_REDUCE_NAME  ,
false  ,
false   
) const &

Definition at line 283 of file MicroMipsSizeReduction.cpp.

◆ InRange()

static bool InRange ( int64_t  Value,
unsigned short  Shift,
int  LBound,
int  HBound 
)
static

Definition at line 328 of file MicroMipsSizeReduction.cpp.

Referenced by llvm::ConstantFoldGetElementPtr(), and ImmInRange().

◆ isMMSourceRegister()

static bool isMMSourceRegister ( const MachineOperand MO)
static

◆ isMMThreeBitGPRegister()

static bool isMMThreeBitGPRegister ( const MachineOperand MO)
static

◆ IsMovepDestinationReg()

static bool IsMovepDestinationReg ( unsigned  Reg)
static

Definition at line 586 of file MicroMipsSizeReduction.cpp.

Referenced by IsMovepDestinationRegPair().

◆ IsMovepDestinationRegPair()

static bool IsMovepDestinationRegPair ( unsigned  R0,
unsigned  R1 
)
static

◆ IsMovepSrcRegister()

static bool IsMovepSrcRegister ( unsigned  Reg)
static

Definition at line 574 of file MicroMipsSizeReduction.cpp.

Referenced by IsMovepDestinationRegPair().

◆ STATISTIC()

STATISTIC ( NumReduced  )