LLVM  6.0.0svn
Enumerations | Functions
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 { sub = 0, add }
 
enum  AMSubMode {
  bad_am_submode = 0, ia, ib, da,
  db
}
 

Functions

static ShiftOpc getShiftOpcForNode (unsigned Opcode)
 
static const chargetAddrOpcStr (AddrOpc Op)
 
static const chargetShiftOpcStr (ShiftOpc Op)
 
static unsigned getShiftOpcEncoding (ShiftOpc Op)
 
static const chargetAMSubModeStr (AMSubMode Mode)
 
static unsigned rotr32 (unsigned Val, unsigned Amt)
 rotr32 - Rotate a 32-bit unsigned value right by a specified # bits. More...
 
static unsigned rotl32 (unsigned Val, unsigned Amt)
 rotl32 - Rotate a 32-bit unsigned value left by a specified # bits. More...
 
static unsigned getSORegOpc (ShiftOpc ShOp, unsigned Imm)
 
static unsigned getSORegOffset (unsigned Op)
 
static ShiftOpc getSORegShOp (unsigned Op)
 
static unsigned getSOImmValImm (unsigned Imm)
 getSOImmValImm - Given an encoded imm field for the reg/imm form, return the 8-bit imm value. More...
 
static unsigned getSOImmValRot (unsigned Imm)
 getSOImmValRot - Given an encoded imm field for the reg/imm form, return the rotate amount. More...
 
static unsigned getSOImmValRotate (unsigned Imm)
 getSOImmValRotate - Try to handle Imm with an immediate shifter operand, computing the rotate amount to use. More...
 
static int getSOImmVal (unsigned Arg)
 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. More...
 
static bool isSOImmTwoPartVal (unsigned V)
 isSOImmTwoPartVal - Return true if the specified value can be obtained by or'ing together two SOImmVal's. More...
 
static unsigned getSOImmTwoPartFirst (unsigned V)
 getSOImmTwoPartFirst - If V is a value that satisfies isSOImmTwoPartVal, return the first chunk of it. More...
 
static unsigned getSOImmTwoPartSecond (unsigned V)
 getSOImmTwoPartSecond - If V is a value that satisfies isSOImmTwoPartVal, return the second chunk of it. More...
 
static unsigned getThumbImmValShift (unsigned Imm)
 getThumbImmValShift - Try to handle Imm with a 8-bit immediate followed by a left shift. More...
 
static bool isThumbImmShiftedVal (unsigned V)
 isThumbImmShiftedVal - Return true if the specified value can be obtained by left shifting a 8-bit immediate. More...
 
static unsigned getThumbImm16ValShift (unsigned Imm)
 getThumbImm16ValShift - Try to handle Imm with a 16-bit immediate followed by a left shift. More...
 
static bool isThumbImm16ShiftedVal (unsigned V)
 isThumbImm16ShiftedVal - Return true if the specified value can be obtained by left shifting a 16-bit immediate. More...
 
static unsigned getThumbImmNonShiftedVal (unsigned V)
 getThumbImmNonShiftedVal - If V is a value that satisfies isThumbImmShiftedVal, return the non-shiftd value. More...
 
static int getT2SOImmValSplatVal (unsigned V)
 getT2SOImmValSplat - Return the 12-bit encoded representation if the specified value can be obtained by splatting the low 8 bits into every other byte or every byte of a 32-bit value. More...
 
static int getT2SOImmValRotateVal (unsigned V)
 getT2SOImmValRotateVal - Return the 12-bit encoded representation if the specified value is a rotated 8-bit value. More...
 
static int getT2SOImmVal (unsigned Arg)
 getT2SOImmVal - Given a 32-bit immediate, if it is something that can fit into a Thumb-2 shifter_operand immediate operand, return the 12-bit encoding for it. More...
 
static unsigned getT2SOImmValRotate (unsigned V)
 
static bool isT2SOImmTwoPartVal (unsigned Imm)
 
static unsigned getT2SOImmTwoPartFirst (unsigned Imm)
 
static unsigned getT2SOImmTwoPartSecond (unsigned Imm)
 
static unsigned getAM2Opc (AddrOpc Opc, unsigned Imm12, ShiftOpc SO, unsigned IdxMode=0)
 
static unsigned getAM2Offset (unsigned AM2Opc)
 
static AddrOpc getAM2Op (unsigned AM2Opc)
 
static ShiftOpc getAM2ShiftOpc (unsigned AM2Opc)
 
static unsigned getAM2IdxMode (unsigned AM2Opc)
 
static unsigned getAM3Opc (AddrOpc Opc, unsigned char Offset, unsigned IdxMode=0)
 getAM3Opc - This function encodes the addrmode3 opc field. More...
 
static unsigned char getAM3Offset (unsigned AM3Opc)
 
static AddrOpc getAM3Op (unsigned AM3Opc)
 
static unsigned getAM3IdxMode (unsigned AM3Opc)
 
static AMSubMode getAM4SubMode (unsigned Mode)
 
static unsigned getAM4ModeImm (AMSubMode SubMode)
 
static unsigned getAM5Opc (AddrOpc Opc, unsigned char Offset)
 getAM5Opc - This function encodes the addrmode5 opc field. More...
 
static unsigned char getAM5Offset (unsigned AM5Opc)
 
static AddrOpc getAM5Op (unsigned AM5Opc)
 
static unsigned getAM5FP16Opc (AddrOpc Opc, unsigned char Offset)
 getAM5FP16Opc - This function encodes the addrmode5fp16 opc field. More...
 
static unsigned char getAM5FP16Offset (unsigned AM5Opc)
 
static AddrOpc getAM5FP16Op (unsigned AM5Opc)
 
static unsigned createNEONModImm (unsigned OpCmode, unsigned Val)
 
static unsigned getNEONModImmOpCmode (unsigned ModImm)
 
static unsigned getNEONModImmVal (unsigned ModImm)
 
static uint64_t decodeNEONModImm (unsigned ModImm, unsigned &EltBits)
 decodeNEONModImm - Decode a NEON modified immediate value into the element value and the element size in bits. More...
 
static bool isNEONBytesplat (unsigned Value, unsigned Size)
 
static bool isNEONi16splat (unsigned Value)
 Checks if Value is a correct immediate for instructions like VBIC/VORR. More...
 
static unsigned encodeNEONi16splat (unsigned Value)
 
static bool isNEONi32splat (unsigned Value)
 Checks if Value is a correct immediate for instructions like VBIC/VORR. More...
 
static unsigned encodeNEONi32splat (unsigned Value)
 Encode NEON 32 bits Splat immediate for instructions like VBIC/VORR. More...
 
static float getFPImmFloat (unsigned Imm)
 
static int getFP16Imm (const APInt &Imm)
 getFP16Imm - Return an 8-bit floating-point version of the 16-bit floating-point value. More...
 
static int getFP16Imm (const APFloat &FPImm)
 
static int getFP32Imm (const APInt &Imm)
 getFP32Imm - Return an 8-bit floating-point version of the 32-bit floating-point value. More...
 
static int getFP32Imm (const APFloat &FPImm)
 
static int getFP64Imm (const APInt &Imm)
 getFP64Imm - Return an 8-bit floating-point version of the 64-bit floating-point value. More...
 
static int getFP64Imm (const APFloat &FPImm)
 

Detailed Description

ARM_AM - ARM Addressing Mode Stuff.

Enumeration Type Documentation

◆ AddrOpc

Enumerator
sub 
add 

Definition at line 36 of file ARMAddressingModes.h.

◆ AMSubMode

Enumerator
bad_am_submode 
ia 
ib 
da 
db 

Definition at line 66 of file ARMAddressingModes.h.

◆ ShiftOpc

Enumerator
no_shift 
asr 
lsl 
lsr 
ror 
rrx 

Definition at line 27 of file ARMAddressingModes.h.

Function Documentation

◆ createNEONModImm()

static unsigned llvm::ARM_AM::createNEONModImm ( unsigned  OpCmode,
unsigned  Val 
)
inlinestatic

Definition at line 551 of file ARMAddressingModes.h.

Referenced by isNEONModifiedImm(), and LowerVectorINT_TO_FP().

◆ decodeNEONModImm()

static uint64_t llvm::ARM_AM::decodeNEONModImm ( unsigned  ModImm,
unsigned EltBits 
)
inlinestatic

decodeNEONModImm - Decode a NEON modified immediate value into the element value and the element size in bits.

(If the element size is smaller than the vector, it is splatted into all the elements.)

Definition at line 564 of file ARMAddressingModes.h.

References getNEONModImmOpCmode(), getNEONModImmVal(), llvm::X86II::Imm8, and llvm_unreachable.

Referenced by PerformVDUPLANECombine(), and llvm::ARMInstPrinter::printNEONModImmOperand().

◆ encodeNEONi16splat()

static unsigned llvm::ARM_AM::encodeNEONi16splat ( unsigned  Value)
inlinestatic

Definition at line 621 of file ARMAddressingModes.h.

References assert(), and isNEONi16splat().

◆ encodeNEONi32splat()

static unsigned llvm::ARM_AM::encodeNEONi32splat ( unsigned  Value)
inlinestatic

Encode NEON 32 bits Splat immediate for instructions like VBIC/VORR.

Definition at line 637 of file ARMAddressingModes.h.

References assert(), and isNEONi32splat().

◆ getAddrOpcStr()

static const char* llvm::ARM_AM::getAddrOpcStr ( AddrOpc  Op)
inlinestatic

◆ getAM2IdxMode()

static unsigned llvm::ARM_AM::getAM2IdxMode ( unsigned  AM2Opc)
inlinestatic

Definition at line 422 of file ARMAddressingModes.h.

Referenced by llvm::ARMInstPrinter::printAddrMode2Operand().

◆ getAM2Offset()

static unsigned llvm::ARM_AM::getAM2Offset ( unsigned  AM2Opc)
inlinestatic

◆ getAM2Op()

static AddrOpc llvm::ARM_AM::getAM2Op ( unsigned  AM2Opc)
inlinestatic

◆ getAM2Opc()

static unsigned llvm::ARM_AM::getAM2Opc ( AddrOpc  Opc,
unsigned  Imm12,
ShiftOpc  SO,
unsigned  IdxMode = 0 
)
inlinestatic

◆ getAM2ShiftOpc()

static ShiftOpc llvm::ARM_AM::getAM2ShiftOpc ( unsigned  AM2Opc)
inlinestatic

◆ getAM3IdxMode()

static unsigned llvm::ARM_AM::getAM3IdxMode ( unsigned  AM3Opc)
inlinestatic

Definition at line 453 of file ARMAddressingModes.h.

Referenced by llvm::ARMInstPrinter::printAddrMode3Operand().

◆ getAM3Offset()

static unsigned char llvm::ARM_AM::getAM3Offset ( unsigned  AM3Opc)
inlinestatic

◆ getAM3Op()

static AddrOpc llvm::ARM_AM::getAM3Op ( unsigned  AM3Opc)
inlinestatic

◆ getAM3Opc()

static unsigned llvm::ARM_AM::getAM3Opc ( AddrOpc  Opc,
unsigned char  Offset,
unsigned  IdxMode = 0 
)
inlinestatic

getAM3Opc - This function encodes the addrmode3 opc field.

Definition at line 442 of file ARMAddressingModes.h.

References sub.

Referenced by IsSafeAndProfitableToMove(), and isScaledConstantInRange().

◆ getAM4ModeImm()

static unsigned llvm::ARM_AM::getAM4ModeImm ( AMSubMode  SubMode)
inlinestatic

Definition at line 476 of file ARMAddressingModes.h.

◆ getAM4SubMode()

static AMSubMode llvm::ARM_AM::getAM4SubMode ( unsigned  Mode)
inlinestatic

Definition at line 472 of file ARMAddressingModes.h.

Referenced by llvm::ARMInstPrinter::printLdStmModeOperand().

◆ getAM5FP16Offset()

static unsigned char llvm::ARM_AM::getAM5FP16Offset ( unsigned  AM5Opc)
inlinestatic

◆ getAM5FP16Op()

static AddrOpc llvm::ARM_AM::getAM5FP16Op ( unsigned  AM5Opc)
inlinestatic

Definition at line 522 of file ARMAddressingModes.h.

References add, and sub.

Referenced by llvm::ARMInstPrinter::printAddrMode5FP16Operand().

◆ getAM5FP16Opc()

static unsigned llvm::ARM_AM::getAM5FP16Opc ( AddrOpc  Opc,
unsigned char  Offset 
)
inlinestatic

getAM5FP16Opc - This function encodes the addrmode5fp16 opc field.

Definition at line 515 of file ARMAddressingModes.h.

References sub.

Referenced by DecodeAddrMode5FP16Operand().

◆ getAM5Offset()

static unsigned char llvm::ARM_AM::getAM5Offset ( unsigned  AM5Opc)
inlinestatic

◆ getAM5Op()

static AddrOpc llvm::ARM_AM::getAM5Op ( unsigned  AM5Opc)
inlinestatic

◆ getAM5Opc()

static unsigned llvm::ARM_AM::getAM5Opc ( AddrOpc  Opc,
unsigned char  Offset 
)
inlinestatic

getAM5Opc - This function encodes the addrmode5 opc field.

Definition at line 492 of file ARMAddressingModes.h.

References sub.

Referenced by DecodeAddrMode5Operand(), DecodeCopMemInstruction(), and isScaledConstantInRange().

◆ getAMSubModeStr()

static const char* llvm::ARM_AM::getAMSubModeStr ( AMSubMode  Mode)
inlinestatic

Definition at line 74 of file ARMAddressingModes.h.

References da, db, ia, ib, and llvm_unreachable.

Referenced by llvm::ARMInstPrinter::printLdStmModeOperand().

◆ getFP16Imm() [1/2]

static int llvm::ARM_AM::getFP16Imm ( const APInt Imm)
inlinestatic

getFP16Imm - Return an 8-bit floating-point version of the 16-bit floating-point value.

If the value cannot be represented as an 8-bit floating-point value, then return -1.

Definition at line 679 of file ARMAddressingModes.h.

References llvm::APInt::getSExtValue(), llvm::APInt::getZExtValue(), and llvm::APInt::lshr().

Referenced by getFP16Imm().

◆ getFP16Imm() [2/2]

static int llvm::ARM_AM::getFP16Imm ( const APFloat FPImm)
inlinestatic

Definition at line 698 of file ARMAddressingModes.h.

References llvm::APFloat::bitcastToAPInt(), and getFP16Imm().

◆ getFP32Imm() [1/2]

static int llvm::ARM_AM::getFP32Imm ( const APInt Imm)
inlinestatic

getFP32Imm - Return an 8-bit floating-point version of the 32-bit floating-point value.

If the value cannot be represented as an 8-bit floating-point value, then return -1.

Definition at line 705 of file ARMAddressingModes.h.

References llvm::APInt::getSExtValue(), llvm::APInt::getZExtValue(), and llvm::APInt::lshr().

Referenced by getFP32Imm(), llvm::ARMTargetLowering::isFPImmLegal(), isNEONModifiedImm(), and IsSingleInstrConstant().

◆ getFP32Imm() [2/2]

static int llvm::ARM_AM::getFP32Imm ( const APFloat FPImm)
inlinestatic

Definition at line 726 of file ARMAddressingModes.h.

References llvm::APFloat::bitcastToAPInt(), and getFP32Imm().

◆ getFP64Imm() [1/2]

static int llvm::ARM_AM::getFP64Imm ( const APInt Imm)
inlinestatic

getFP64Imm - Return an 8-bit floating-point version of the 64-bit floating-point value.

If the value cannot be represented as an 8-bit floating-point value, then return -1.

Definition at line 733 of file ARMAddressingModes.h.

References llvm::APInt::getSExtValue(), llvm::APInt::getZExtValue(), and llvm::APInt::lshr().

Referenced by getFP64Imm(), llvm::ARMTargetLowering::isFPImmLegal(), and isNEONModifiedImm().

◆ getFP64Imm() [2/2]

static int llvm::ARM_AM::getFP64Imm ( const APFloat FPImm)
inlinestatic

Definition at line 754 of file ARMAddressingModes.h.

References llvm::APFloat::bitcastToAPInt(), and getFP64Imm().

◆ getFPImmFloat()

static float llvm::ARM_AM::getFPImmFloat ( unsigned  Imm)
inlinestatic

Definition at line 651 of file ARMAddressingModes.h.

References F(), and I.

Referenced by getNextRegister(), and llvm::ARMInstPrinter::printFPImmOperand().

◆ getNEONModImmOpCmode()

static unsigned llvm::ARM_AM::getNEONModImmOpCmode ( unsigned  ModImm)
inlinestatic

Definition at line 554 of file ARMAddressingModes.h.

Referenced by decodeNEONModImm().

◆ getNEONModImmVal()

static unsigned llvm::ARM_AM::getNEONModImmVal ( unsigned  ModImm)
inlinestatic

Definition at line 557 of file ARMAddressingModes.h.

Referenced by decodeNEONModImm().

◆ getShiftOpcEncoding()

static unsigned llvm::ARM_AM::getShiftOpcEncoding ( ShiftOpc  Op)
inlinestatic

Definition at line 56 of file ARMAddressingModes.h.

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

◆ getShiftOpcForNode()

static ShiftOpc llvm::ARM_AM::getShiftOpcForNode ( unsigned  Opcode)
inlinestatic

◆ getShiftOpcStr()

static const char* llvm::ARM_AM::getShiftOpcStr ( ShiftOpc  Op)
inlinestatic

◆ getSOImmTwoPartFirst()

static unsigned llvm::ARM_AM::getSOImmTwoPartFirst ( unsigned  V)
inlinestatic

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

Definition at line 201 of file ARMAddressingModes.h.

References getSOImmValRotate(), and rotr32().

Referenced by llvm::ARMBaseInstrInfo::FoldImmediate(), and makeImplicit().

◆ getSOImmTwoPartSecond()

static unsigned llvm::ARM_AM::getSOImmTwoPartSecond ( unsigned  V)
inlinestatic

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

Definition at line 207 of file ARMAddressingModes.h.

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

Referenced by llvm::ARMBaseInstrInfo::FoldImmediate(), and makeImplicit().

◆ getSOImmVal()

static int llvm::ARM_AM::getSOImmVal ( unsigned  Arg)
inlinestatic

◆ getSOImmValImm()

static unsigned llvm::ARM_AM::getSOImmValImm ( unsigned  Imm)
inlinestatic

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

Definition at line 124 of file ARMAddressingModes.h.

◆ getSOImmValRot()

static unsigned llvm::ARM_AM::getSOImmValRot ( unsigned  Imm)
inlinestatic

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

Definition at line 129 of file ARMAddressingModes.h.

◆ getSOImmValRotate()

static unsigned llvm::ARM_AM::getSOImmValRotate ( unsigned  Imm)
inlinestatic

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 137 of file ARMAddressingModes.h.

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

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

◆ getSORegOffset()

static unsigned llvm::ARM_AM::getSORegOffset ( unsigned  Op)
inlinestatic

◆ getSORegOpc()

static unsigned llvm::ARM_AM::getSORegOpc ( ShiftOpc  ShOp,
unsigned  Imm 
)
inlinestatic

◆ getSORegShOp()

static ShiftOpc llvm::ARM_AM::getSORegShOp ( unsigned  Op)
inlinestatic

◆ getT2SOImmTwoPartFirst()

static unsigned llvm::ARM_AM::getT2SOImmTwoPartFirst ( unsigned  Imm)
inlinestatic

◆ getT2SOImmTwoPartSecond()

static unsigned llvm::ARM_AM::getT2SOImmTwoPartSecond ( unsigned  Imm)
inlinestatic

◆ getT2SOImmVal()

static int llvm::ARM_AM::getT2SOImmVal ( unsigned  Arg)
inlinestatic

◆ getT2SOImmValRotate()

static unsigned llvm::ARM_AM::getT2SOImmValRotate ( unsigned  V)
inlinestatic

Definition at line 328 of file ARMAddressingModes.h.

References llvm::countTrailingZeros().

Referenced by getT2SOImmTwoPartFirst(), and isT2SOImmTwoPartVal().

◆ getT2SOImmValRotateVal()

static int llvm::ARM_AM::getT2SOImmValRotateVal ( unsigned  V)
inlinestatic

getT2SOImmValRotateVal - Return the 12-bit encoded representation if the specified value is a rotated 8-bit value.

Return -1 if no rotation encoding is possible. See ARM Reference Manual A6.3.2.

Definition at line 298 of file ARMAddressingModes.h.

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

Referenced by getT2SOImmVal().

◆ getT2SOImmValSplatVal()

static int llvm::ARM_AM::getT2SOImmValSplatVal ( unsigned  V)
inlinestatic

getT2SOImmValSplat - Return the 12-bit encoded representation if the specified value can be obtained by splatting the low 8 bits into every other byte or every byte of a 32-bit value.

i.e., 00000000 00000000 00000000 abcdefgh control = 0 00000000 abcdefgh 00000000 abcdefgh control = 1 abcdefgh 00000000 abcdefgh 00000000 control = 2 abcdefgh abcdefgh abcdefgh abcdefgh control = 3 Return -1 if none of the above apply. See ARM Reference Manual A6.3.2.

Definition at line 270 of file ARMAddressingModes.h.

Referenced by getT2SOImmTwoPartFirst(), getT2SOImmVal(), isScaledConstantInRange(), and isT2SOImmTwoPartVal().

◆ getThumbImm16ValShift()

static unsigned llvm::ARM_AM::getThumbImm16ValShift ( unsigned  Imm)
inlinestatic

getThumbImm16ValShift - Try to handle Imm with a 16-bit immediate followed by a left shift.

Returns the shift amount to use.

Definition at line 237 of file ARMAddressingModes.h.

References llvm::countTrailingZeros().

Referenced by isThumbImm16ShiftedVal().

◆ getThumbImmNonShiftedVal()

static unsigned llvm::ARM_AM::getThumbImmNonShiftedVal ( unsigned  V)
inlinestatic

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

Definition at line 256 of file ARMAddressingModes.h.

References getThumbImmValShift().

◆ getThumbImmValShift()

static unsigned llvm::ARM_AM::getThumbImmValShift ( unsigned  Imm)
inlinestatic

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

Returns the shift amount to use.

Definition at line 218 of file ARMAddressingModes.h.

References llvm::countTrailingZeros().

Referenced by getThumbImmNonShiftedVal(), and isThumbImmShiftedVal().

◆ isNEONBytesplat()

static bool llvm::ARM_AM::isNEONBytesplat ( unsigned  Value,
unsigned  Size 
)
inlinestatic

◆ isNEONi16splat()

static bool llvm::ARM_AM::isNEONi16splat ( unsigned  Value)
inlinestatic

Checks if Value is a correct immediate for instructions like VBIC/VORR.

Definition at line 613 of file ARMAddressingModes.h.

References isNEONBytesplat().

Referenced by encodeNEONi16splat().

◆ isNEONi32splat()

static bool llvm::ARM_AM::isNEONi32splat ( unsigned  Value)
inlinestatic

Checks if Value is a correct immediate for instructions like VBIC/VORR.

Definition at line 631 of file ARMAddressingModes.h.

References isNEONBytesplat().

Referenced by encodeNEONi32splat().

◆ isSOImmTwoPartVal()

static bool llvm::ARM_AM::isSOImmTwoPartVal ( unsigned  V)
inlinestatic

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

Definition at line 188 of file ARMAddressingModes.h.

References getSOImmValRotate(), and rotr32().

Referenced by llvm::ARMBaseInstrInfo::FoldImmediate(), and isScaledConstantInRange().

◆ isT2SOImmTwoPartVal()

static bool llvm::ARM_AM::isT2SOImmTwoPartVal ( unsigned  Imm)
inlinestatic

◆ isThumbImm16ShiftedVal()

static bool llvm::ARM_AM::isThumbImm16ShiftedVal ( unsigned  V)
inlinestatic

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

Definition at line 248 of file ARMAddressingModes.h.

References getThumbImm16ValShift().

◆ isThumbImmShiftedVal()

static bool llvm::ARM_AM::isThumbImmShiftedVal ( unsigned  V)
inlinestatic

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

Definition at line 229 of file ARMAddressingModes.h.

References getThumbImmValShift().

Referenced by llvm::ARMTTIImpl::getIntImmCost(), isScaledConstantInRange(), and llvm::ARMTargetLowering::LowerAsmOperandForConstraint().

◆ rotl32()

static unsigned llvm::ARM_AM::rotl32 ( unsigned  Val,
unsigned  Amt 
)
inlinestatic

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

Definition at line 93 of file ARMAddressingModes.h.

References assert().

Referenced by getSOImmVal().

◆ rotr32()

static unsigned llvm::ARM_AM::rotr32 ( unsigned  Val,
unsigned  Amt 
)
inlinestatic