LLVM API Documentation

llvm::ARM_AM Namespace Reference

ARM_AM - ARM Addressing Mode Stuff. More...


Enumerations

enum  ShiftOpc {
  no_shift = 0, asr, lsl, lsr,
  ror, rrx
}
enum  AddrOpc { add = '+', sub = '-' }
enum  AMSubMode {
  bad_am_submode = 0, ia, ib, da,
  db
}

Functions

static const char * getShiftOpcStr (ShiftOpc Op)
static ShiftOpc getShiftOpcForNode (SDValue N)
static const char * getAMSubModeStr (AMSubMode Mode)
static const char * getAMSubModeAltStr (AMSubMode Mode, bool isLD)
static unsigned rotr32 (unsigned Val, unsigned Amt)
static unsigned rotl32 (unsigned Val, unsigned Amt)
static unsigned getSORegOpc (ShiftOpc ShOp, unsigned Imm)
static unsigned getSORegOffset (unsigned Op)
static ShiftOpc getSORegShOp (unsigned Op)
static unsigned getSOImmValImm (unsigned Imm)
static unsigned getSOImmValRot (unsigned Imm)
static unsigned getSOImmValRotate (unsigned Imm)
static int getSOImmVal (unsigned Arg)
static bool isSOImmTwoPartVal (unsigned V)
static unsigned getSOImmTwoPartFirst (unsigned V)
static unsigned getSOImmTwoPartSecond (unsigned V)
static unsigned getThumbImmValShift (unsigned Imm)
static bool isThumbImmShiftedVal (unsigned V)
static unsigned getThumbImmNonShiftedVal (unsigned V)
static unsigned getAM2Opc (AddrOpc Opc, unsigned Imm12, ShiftOpc SO)
static unsigned getAM2Offset (unsigned AM2Opc)
static AddrOpc getAM2Op (unsigned AM2Opc)
static ShiftOpc getAM2ShiftOpc (unsigned AM2Opc)
static unsigned getAM3Opc (AddrOpc Opc, unsigned char Offset)
 getAM3Opc - This function encodes the addrmode3 opc field.
static unsigned char getAM3Offset (unsigned AM3Opc)
static AddrOpc getAM3Op (unsigned AM3Opc)
static AMSubMode getAM4SubMode (unsigned Mode)
static unsigned getAM4ModeImm (AMSubMode SubMode, bool WB=false)
static bool getAM4WBFlag (unsigned Mode)
static unsigned getAM5Opc (AddrOpc Opc, unsigned char Offset)
 getAM5Opc - This function encodes the addrmode5 opc field.
static unsigned char getAM5Offset (unsigned AM5Opc)
static AddrOpc getAM5Op (unsigned AM5Opc)
static unsigned getAM5Opc (AMSubMode SubMode, bool WB, unsigned char Offset)
static AMSubMode getAM5SubMode (unsigned AM5Opc)
static bool getAM5WBFlag (unsigned AM5Opc)


Detailed Description

ARM_AM - ARM Addressing Mode Stuff.

Enumeration Type Documentation

Enumerator:
add 
sub 

Definition at line 34 of file ARMAddressingModes.h.

Enumerator:
bad_am_submode 
ia 
ib 
da 
db 

Definition at line 63 of file ARMAddressingModes.h.

Enumerator:
no_shift 
asr 
lsl 
lsr 
ror 
rrx 

Definition at line 25 of file ARMAddressingModes.h.


Function Documentation

static unsigned llvm::ARM_AM::getAM2Offset ( unsigned  AM2Opc  )  [inline, static]

static AddrOpc llvm::ARM_AM::getAM2Op ( unsigned  AM2Opc  )  [inline, static]

static unsigned llvm::ARM_AM::getAM2Opc ( AddrOpc  Opc,
unsigned  Imm12,
ShiftOpc  SO 
) [inline, static]

Definition at line 274 of file ARMAddressingModes.h.

References sub.

Referenced by mergeBaseUpdateLoadStore().

static ShiftOpc llvm::ARM_AM::getAM2ShiftOpc ( unsigned  AM2Opc  )  [inline, static]

Definition at line 285 of file ARMAddressingModes.h.

Referenced by llvm::ARMInstrInfo::convertToThreeAddress().

static unsigned char llvm::ARM_AM::getAM3Offset ( unsigned  AM3Opc  )  [inline, static]

static AddrOpc llvm::ARM_AM::getAM3Op ( unsigned  AM3Opc  )  [inline, static]

static unsigned llvm::ARM_AM::getAM3Opc ( AddrOpc  Opc,
unsigned char  Offset 
) [inline, static]

getAM3Opc - This function encodes the addrmode3 opc field.

Definition at line 304 of file ARMAddressingModes.h.

References sub.

static unsigned llvm::ARM_AM::getAM4ModeImm ( AMSubMode  SubMode,
bool  WB = false 
) [inline, static]

Definition at line 336 of file ARMAddressingModes.h.

Referenced by mergeBaseUpdateLSMultiple(), and mergeOps().

static AMSubMode llvm::ARM_AM::getAM4SubMode ( unsigned  Mode  )  [inline, static]

Definition at line 332 of file ARMAddressingModes.h.

Referenced by mergeBaseUpdateLSMultiple().

static bool llvm::ARM_AM::getAM4WBFlag ( unsigned  Mode  )  [inline, static]

Definition at line 340 of file ARMAddressingModes.h.

Referenced by mergeBaseUpdateLSMultiple().

static unsigned char llvm::ARM_AM::getAM5Offset ( unsigned  AM5Opc  )  [inline, static]

static AddrOpc llvm::ARM_AM::getAM5Op ( unsigned  AM5Opc  )  [inline, static]

Definition at line 371 of file ARMAddressingModes.h.

References sub.

Referenced by llvm::ARMRegisterInfo::eliminateFrameIndex().

static unsigned llvm::ARM_AM::getAM5Opc ( AMSubMode  SubMode,
bool  WB,
unsigned char  Offset 
) [inline, static]

getAM5Opc - This function encodes the addrmode5 opc field for FLDM and FSTM instructions.

Definition at line 377 of file ARMAddressingModes.h.

References db, and ia.

Referenced by mergeBaseUpdateLoadStore(), and mergeBaseUpdateLSMultiple().

static unsigned llvm::ARM_AM::getAM5Opc ( AddrOpc  Opc,
unsigned char  Offset 
) [inline, static]

getAM5Opc - This function encodes the addrmode5 opc field.

Definition at line 364 of file ARMAddressingModes.h.

References sub.

Referenced by mergeOps().

static AMSubMode llvm::ARM_AM::getAM5SubMode ( unsigned  AM5Opc  )  [inline, static]

Definition at line 383 of file ARMAddressingModes.h.

Referenced by mergeBaseUpdateLSMultiple().

static bool llvm::ARM_AM::getAM5WBFlag ( unsigned  AM5Opc  )  [inline, static]

Definition at line 386 of file ARMAddressingModes.h.

Referenced by mergeBaseUpdateLSMultiple().

static const char* llvm::ARM_AM::getAMSubModeAltStr ( AMSubMode  Mode,
bool  isLD 
) [inline, static]

Definition at line 81 of file ARMAddressingModes.h.

References da, db, ia, and ib.

static const char* llvm::ARM_AM::getAMSubModeStr ( AMSubMode  Mode  )  [inline, static]

Definition at line 71 of file ARMAddressingModes.h.

References da, db, ia, and ib.

static ShiftOpc llvm::ARM_AM::getShiftOpcForNode ( SDValue  N  )  [inline, static]

static const char* llvm::ARM_AM::getShiftOpcStr ( ShiftOpc  Op  )  [inline, static]

Definition at line 38 of file ARMAddressingModes.h.

References asr, lsl, lsr, ror, and rrx.

static unsigned llvm::ARM_AM::getSOImmTwoPartFirst ( unsigned  V  )  [inline, static]

getSOImmTwoPartFirst - If V is a value that satisfies isSOImmTwoPartVal, return the first chunk of it.

Definition at line 217 of file ARMAddressingModes.h.

References getSOImmValRotate(), and rotr32().

static unsigned llvm::ARM_AM::getSOImmTwoPartSecond ( unsigned  V  )  [inline, static]

getSOImmTwoPartSecond - If V is a value that satisfies isSOImmTwoPartVal, return the second chunk of it.

Definition at line 223 of file ARMAddressingModes.h.

References getSOImmValRotate(), and rotr32().

static int llvm::ARM_AM::getSOImmVal ( unsigned  Arg  )  [inline, static]

getSOImmVal - Given a 32-bit immediate, if it is something that can fit into an shifter_operand immediate operand, return the 12-bit encoding for it. If not, return -1.

Definition at line 187 of file ARMAddressingModes.h.

References getSOImmValRotate(), rotl32(), and rotr32().

Referenced by llvm::ARMInstrInfo::convertToThreeAddress(), llvm::ARMRegisterInfo::eliminateFrameIndex(), emitARMRegPlusImmediate(), isLegalCmpImmediate(), and mergeOps().

static unsigned llvm::ARM_AM::getSOImmValImm ( unsigned  Imm  )  [inline, static]

getSOImmValImm - Given an encoded imm field for the reg/imm form, return the 8-bit imm value.

Definition at line 131 of file ARMAddressingModes.h.

Referenced by printSOImm().

static unsigned llvm::ARM_AM::getSOImmValRot ( unsigned  Imm  )  [inline, static]

getSOImmValRotate - Given an encoded imm field for the reg/imm form, return the rotate amount.

Definition at line 136 of file ARMAddressingModes.h.

Referenced by printSOImm().

static unsigned llvm::ARM_AM::getSOImmValRotate ( unsigned  Imm  )  [inline, static]

getSOImmValRotate - Try to handle Imm with an immediate shifter operand, computing the rotate amount to use. If this immediate value cannot be handled with a single shifter-op, determine a good rotate amount that will take a maximal chunk of bits out of the immediate.

Definition at line 144 of file ARMAddressingModes.h.

References llvm::CountTrailingZeros_32(), and rotr32().

Referenced by llvm::ARMRegisterInfo::eliminateFrameIndex(), emitARMRegPlusImmediate(), getSOImmTwoPartFirst(), getSOImmTwoPartSecond(), getSOImmVal(), and isSOImmTwoPartVal().

static unsigned llvm::ARM_AM::getSORegOffset ( unsigned  Op  )  [inline, static]

Definition at line 122 of file ARMAddressingModes.h.

static unsigned llvm::ARM_AM::getSORegOpc ( ShiftOpc  ShOp,
unsigned  Imm 
) [inline, static]

Definition at line 119 of file ARMAddressingModes.h.

Referenced by llvm::ARMInstrInfo::convertToThreeAddress().

static ShiftOpc llvm::ARM_AM::getSORegShOp ( unsigned  Op  )  [inline, static]

Definition at line 125 of file ARMAddressingModes.h.

static unsigned llvm::ARM_AM::getThumbImmNonShiftedVal ( unsigned  V  )  [inline, static]

getThumbImmNonShiftedVal - If V is a value that satisfies isThumbImmShiftedVal, return the non-shiftd value.

Definition at line 253 of file ARMAddressingModes.h.

References getThumbImmValShift().

static unsigned llvm::ARM_AM::getThumbImmValShift ( unsigned  Imm  )  [inline, static]

getThumbImmValShift - Try to handle Imm with a 8-bit immediate followed by a left shift. Returns the shift amount to use.

Definition at line 234 of file ARMAddressingModes.h.

References llvm::CountTrailingZeros_32().

Referenced by getThumbImmNonShiftedVal(), and isThumbImmShiftedVal().

static bool llvm::ARM_AM::isSOImmTwoPartVal ( unsigned  V  )  [inline, static]

isSOImmTwoPartVal - Return true if the specified value can be obtained by or'ing together two SOImmVal's.

Definition at line 204 of file ARMAddressingModes.h.

References getSOImmValRotate(), and rotr32().

static bool llvm::ARM_AM::isThumbImmShiftedVal ( unsigned  V  )  [inline, static]

isThumbImmShiftedVal - Return true if the specified value can be obtained by left shifting a 8-bit immediate.

Definition at line 245 of file ARMAddressingModes.h.

References getThumbImmValShift().

static unsigned llvm::ARM_AM::rotl32 ( unsigned  Val,
unsigned  Amt 
) [inline, static]

rotl32 - Rotate a 32-bit unsigned value left by a specified # bits.

Definition at line 100 of file ARMAddressingModes.h.

Referenced by getSOImmVal().

static unsigned llvm::ARM_AM::rotr32 ( unsigned  Val,
unsigned  Amt 
) [inline, static]

rotr32 - Rotate a 32-bit unsigned value right by a specified # bits.

Definition at line 93 of file ARMAddressingModes.h.

Referenced by llvm::ARMRegisterInfo::eliminateFrameIndex(), emitARMRegPlusImmediate(), getSOImmTwoPartFirst(), getSOImmTwoPartSecond(), getSOImmVal(), getSOImmValRotate(), isSOImmTwoPartVal(), and printSOImm().