LLVM  6.0.0svn
Namespaces | Enumerations | Functions
ARMAddressingModes.h File Reference
#include "llvm/ADT/APFloat.h"
#include "llvm/ADT/APInt.h"
#include "llvm/Support/ErrorHandling.h"
#include "llvm/Support/MathExtras.h"
#include <cassert>
Include dependency graph for ARMAddressingModes.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Namespaces

 llvm
 Compute iterated dominance frontiers using a linear time algorithm.
 
 llvm::ARM_AM
 ARM_AM - ARM Addressing Mode Stuff.
 

Enumerations

enum  llvm::ARM_AM::ShiftOpc {
  llvm::ARM_AM::no_shift = 0, llvm::ARM_AM::asr, llvm::ARM_AM::lsl, llvm::ARM_AM::lsr,
  llvm::ARM_AM::ror, llvm::ARM_AM::rrx
}
 
enum  llvm::ARM_AM::AddrOpc { llvm::ARM_AM::sub = 0, llvm::ARM_AM::add }
 
enum  llvm::ARM_AM::AMSubMode {
  llvm::ARM_AM::bad_am_submode = 0, llvm::ARM_AM::ia, llvm::ARM_AM::ib, llvm::ARM_AM::da,
  llvm::ARM_AM::db
}
 

Functions

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