LLVM 20.0.0git
|
#include "llvm/ADT/APFloat.h"
#include "llvm/ADT/APInt.h"
#include "llvm/ADT/bit.h"
#include "llvm/Support/ErrorHandling.h"
#include "llvm/Support/MathExtras.h"
#include <cassert>
Go to the source code of this file.
Namespaces | |
namespace | llvm |
This is an optimization pass for GlobalISel generic memory operations. | |
namespace | 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 , llvm::ARM_AM::uxtw } |
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 | |
const char * | llvm::ARM_AM::getAddrOpcStr (AddrOpc Op) |
const StringRef | llvm::ARM_AM::getShiftOpcStr (ShiftOpc Op) |
unsigned | llvm::ARM_AM::getShiftOpcEncoding (ShiftOpc Op) |
const char * | llvm::ARM_AM::getAMSubModeStr (AMSubMode Mode) |
unsigned | llvm::ARM_AM::getSORegOpc (ShiftOpc ShOp, unsigned Imm) |
unsigned | llvm::ARM_AM::getSORegOffset (unsigned Op) |
ShiftOpc | llvm::ARM_AM::getSORegShOp (unsigned Op) |
unsigned | llvm::ARM_AM::getSOImmValImm (unsigned Imm) |
getSOImmValImm - Given an encoded imm field for the reg/imm form, return the 8-bit imm value. | |
unsigned | llvm::ARM_AM::getSOImmValRot (unsigned Imm) |
getSOImmValRot - Given an encoded imm field for the reg/imm form, return the rotate amount. | |
unsigned | llvm::ARM_AM::getSOImmValRotate (unsigned Imm) |
getSOImmValRotate - Try to handle Imm with an immediate shifter operand, computing the rotate amount to use. | |
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. | |
bool | llvm::ARM_AM::isSOImmTwoPartVal (unsigned V) |
isSOImmTwoPartVal - Return true if the specified value can be obtained by or'ing together two SOImmVal's. | |
unsigned | llvm::ARM_AM::getSOImmTwoPartFirst (unsigned V) |
getSOImmTwoPartFirst - If V is a value that satisfies isSOImmTwoPartVal, return the first chunk of it. | |
unsigned | llvm::ARM_AM::getSOImmTwoPartSecond (unsigned V) |
getSOImmTwoPartSecond - If V is a value that satisfies isSOImmTwoPartVal, return the second chunk of it. | |
bool | llvm::ARM_AM::isSOImmTwoPartValNeg (unsigned V) |
isSOImmTwoPartValNeg - Return true if the specified value can be obtained by two SOImmVal, that -V = First + Second. | |
unsigned | llvm::ARM_AM::getThumbImmValShift (unsigned Imm) |
getThumbImmValShift - Try to handle Imm with a 8-bit immediate followed by a left shift. | |
bool | llvm::ARM_AM::isThumbImmShiftedVal (unsigned V) |
isThumbImmShiftedVal - Return true if the specified value can be obtained by left shifting a 8-bit immediate. | |
unsigned | llvm::ARM_AM::getThumbImm16ValShift (unsigned Imm) |
getThumbImm16ValShift - Try to handle Imm with a 16-bit immediate followed by a left shift. | |
bool | llvm::ARM_AM::isThumbImm16ShiftedVal (unsigned V) |
isThumbImm16ShiftedVal - Return true if the specified value can be obtained by left shifting a 16-bit immediate. | |
unsigned | llvm::ARM_AM::getThumbImmNonShiftedVal (unsigned V) |
getThumbImmNonShiftedVal - If V is a value that satisfies isThumbImmShiftedVal, return the non-shiftd value. | |
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. | |
int | llvm::ARM_AM::getT2SOImmValRotateVal (unsigned V) |
getT2SOImmValRotateVal - Return the 12-bit encoded representation if the specified value is a rotated 8-bit value. | |
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. | |
unsigned | llvm::ARM_AM::getT2SOImmValRotate (unsigned V) |
bool | llvm::ARM_AM::isT2SOImmTwoPartVal (unsigned Imm) |
unsigned | llvm::ARM_AM::getT2SOImmTwoPartFirst (unsigned Imm) |
unsigned | llvm::ARM_AM::getT2SOImmTwoPartSecond (unsigned Imm) |
unsigned | llvm::ARM_AM::getAM2Opc (AddrOpc Opc, unsigned Imm12, ShiftOpc SO, unsigned IdxMode=0) |
unsigned | llvm::ARM_AM::getAM2Offset (unsigned AM2Opc) |
AddrOpc | llvm::ARM_AM::getAM2Op (unsigned AM2Opc) |
ShiftOpc | llvm::ARM_AM::getAM2ShiftOpc (unsigned AM2Opc) |
unsigned | llvm::ARM_AM::getAM2IdxMode (unsigned AM2Opc) |
unsigned | llvm::ARM_AM::getAM3Opc (AddrOpc Opc, unsigned char Offset, unsigned IdxMode=0) |
getAM3Opc - This function encodes the addrmode3 opc field. | |
unsigned char | llvm::ARM_AM::getAM3Offset (unsigned AM3Opc) |
AddrOpc | llvm::ARM_AM::getAM3Op (unsigned AM3Opc) |
unsigned | llvm::ARM_AM::getAM3IdxMode (unsigned AM3Opc) |
AMSubMode | llvm::ARM_AM::getAM4SubMode (unsigned Mode) |
unsigned | llvm::ARM_AM::getAM4ModeImm (AMSubMode SubMode) |
unsigned | llvm::ARM_AM::getAM5Opc (AddrOpc Opc, unsigned char Offset) |
getAM5Opc - This function encodes the addrmode5 opc field. | |
unsigned char | llvm::ARM_AM::getAM5Offset (unsigned AM5Opc) |
AddrOpc | llvm::ARM_AM::getAM5Op (unsigned AM5Opc) |
unsigned | llvm::ARM_AM::getAM5FP16Opc (AddrOpc Opc, unsigned char Offset) |
getAM5FP16Opc - This function encodes the addrmode5fp16 opc field. | |
unsigned char | llvm::ARM_AM::getAM5FP16Offset (unsigned AM5Opc) |
AddrOpc | llvm::ARM_AM::getAM5FP16Op (unsigned AM5Opc) |
unsigned | llvm::ARM_AM::createVMOVModImm (unsigned OpCmode, unsigned Val) |
unsigned | llvm::ARM_AM::getVMOVModImmOpCmode (unsigned ModImm) |
unsigned | llvm::ARM_AM::getVMOVModImmVal (unsigned ModImm) |
uint64_t | llvm::ARM_AM::decodeVMOVModImm (unsigned ModImm, unsigned &EltBits) |
decodeVMOVModImm - Decode a NEON/MVE modified immediate value into the element value and the element size in bits. | |
bool | llvm::ARM_AM::isNEONBytesplat (unsigned Value, unsigned Size) |
bool | llvm::ARM_AM::isNEONi16splat (unsigned Value) |
Checks if Value is a correct immediate for instructions like VBIC/VORR. | |
unsigned | llvm::ARM_AM::encodeNEONi16splat (unsigned Value) |
bool | llvm::ARM_AM::isNEONi32splat (unsigned Value) |
Checks if Value is a correct immediate for instructions like VBIC/VORR. | |
unsigned | llvm::ARM_AM::encodeNEONi32splat (unsigned Value) |
Encode NEON 32 bits Splat immediate for instructions like VBIC/VORR. | |
float | llvm::ARM_AM::getFPImmFloat (unsigned Imm) |
int | llvm::ARM_AM::getFP16Imm (const APInt &Imm) |
getFP16Imm - Return an 8-bit floating-point version of the 16-bit floating-point value. | |
int | llvm::ARM_AM::getFP16Imm (const APFloat &FPImm) |
int | llvm::ARM_AM::getFP32FP16Imm (const APInt &Imm) |
If this is a FP16Imm encoded as a fp32 value, return the 8-bit encoding for it. | |
int | llvm::ARM_AM::getFP32FP16Imm (const APFloat &FPImm) |
int | llvm::ARM_AM::getFP32Imm (const APInt &Imm) |
getFP32Imm - Return an 8-bit floating-point version of the 32-bit floating-point value. | |
int | llvm::ARM_AM::getFP32Imm (const APFloat &FPImm) |
int | llvm::ARM_AM::getFP64Imm (const APInt &Imm) |
getFP64Imm - Return an 8-bit floating-point version of the 64-bit floating-point value. | |
int | llvm::ARM_AM::getFP64Imm (const APFloat &FPImm) |