LLVM  6.0.0svn
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"
 

Enumerations

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

Functions

 STATISTIC (NumReduced, "Number of 32-bit instructions reduced to 16-bit ones")
 
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)
 

Detailed Description

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

TODO: Implement microMIPS64 support. TODO: Implement support for reducing into lwp/swp instruction.

Definition in file MicroMipsSizeReduction.cpp.

Macro Definition Documentation

◆ DEBUG_TYPE

#define DEBUG_TYPE   "micromips-reduce-size"

Definition at line 24 of file MicroMipsSizeReduction.cpp.

Enumeration Type Documentation

◆ OperandTransfer

Order of operands to transfer.

Definition at line 32 of file MicroMipsSizeReduction.cpp.

◆ ReduceType

enum ReduceType

Reduction type.

Definition at line 42 of file MicroMipsSizeReduction.cpp.

Function Documentation

◆ AddiuspImmValue()

static bool AddiuspImmValue ( int64_t  Value)
static

Definition at line 267 of file MicroMipsSizeReduction.cpp.

Referenced by ImmInRange().

◆ GetImm()

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

◆ ImmInRange()

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

◆ InRange()

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

Definition at line 277 of file MicroMipsSizeReduction.cpp.

Referenced by ImmInRange().

◆ isMMSourceRegister()

static bool isMMSourceRegister ( const MachineOperand MO)
static

◆ isMMThreeBitGPRegister()

static bool isMMThreeBitGPRegister ( const MachineOperand MO)
static

◆ IsSP()

static bool IsSP ( const MachineOperand MO)
static

◆ STATISTIC()

STATISTIC ( NumReduced  ,
"Number of 32-bit instructions reduced to 16-bit ones"   
)