|
LLVM
4.0.0
|
#include "ARM.h"#include "ARMBaseInstrInfo.h"#include "ARMBaseRegisterInfo.h"#include "ARMConstantPoolValue.h"#include "ARMMachineFunctionInfo.h"#include "MCTargetDesc/ARMAddressingModes.h"#include "llvm/CodeGen/LivePhysRegs.h"#include "llvm/CodeGen/MachineFrameInfo.h"#include "llvm/CodeGen/MachineFunctionPass.h"#include "llvm/CodeGen/MachineInstrBuilder.h"#include "llvm/CodeGen/MachineInstrBundle.h"#include "llvm/IR/GlobalValue.h"#include "llvm/Support/CommandLine.h"#include "llvm/Support/raw_ostream.h"#include "llvm/Target/TargetFrameLowering.h"#include "llvm/Target/TargetRegisterInfo.h"Go to the source code of this file.
Macros | |
| #define | DEBUG_TYPE "arm-pseudo" |
Enumerations | |
| enum | NEONRegSpacing |
Functions | |
| static const NEONLdStTableEntry * | LookupNEONLdSt (unsigned Opcode) |
| LookupNEONLdSt - Search the NEONLdStTable for information about a NEON load or store pseudo instruction. More... | |
| static void | GetDSubRegs (unsigned Reg, NEONRegSpacing RegSpc, const TargetRegisterInfo *TRI, unsigned &D0, unsigned &D1, unsigned &D2, unsigned &D3) |
| GetDSubRegs - Get 4 D subregisters of a Q, QQ, or QQQQ register, corresponding to the specified register spacing. More... | |
| static bool | IsAnAddressOperand (const MachineOperand &MO) |
| static void | addPostLoopLiveIns (MachineBasicBlock *MBB, LivePhysRegs &LiveRegs) |
| static void | addExclusiveRegPair (MachineInstrBuilder &MIB, MachineOperand &Reg, unsigned Flags, bool IsThumb, const TargetRegisterInfo *TRI) |
| ARM's ldrexd/strexd take a consecutive register pair (represented as a single GPRPair register), Thumb's take two separate registers so we need to extract the subregs from the pair. More... | |
Variables | |
| static cl::opt< bool > | VerifyARMPseudo ("verify-arm-pseudo-expand", cl::Hidden, cl::desc("Verify machine code after expanding ARM pseudos")) |
| static const NEONLdStTableEntry | NEONLdStTable [] |
| #define DEBUG_TYPE "arm-pseudo" |
Definition at line 35 of file ARMExpandPseudoInsts.cpp.
| enum NEONRegSpacing |
Definition at line 111 of file ARMExpandPseudoInsts.cpp.
|
static |
ARM's ldrexd/strexd take a consecutive register pair (represented as a single GPRPair register), Thumb's take two separate registers so we need to extract the subregs from the pair.
Definition at line 872 of file ARMExpandPseudoInsts.cpp.
References llvm::MachineInstrBuilder::addReg(), llvm::getKillRegState(), llvm::MachineOperand::getReg(), llvm::MCRegisterInfo::getSubReg(), and llvm::MachineOperand::isDead().
|
static |
Definition at line 758 of file ARMExpandPseudoInsts.cpp.
References llvm::MachineBasicBlock::addLiveIn(), llvm::LivePhysRegs::begin(), llvm::LivePhysRegs::end(), and I.
|
static |
GetDSubRegs - Get 4 D subregisters of a Q, QQ, or QQQQ register, corresponding to the specified register spacing.
Not all of the results are necessarily valid, e.g., a Q register only has 2 D subregisters.
Definition at line 368 of file ARMExpandPseudoInsts.cpp.
References assert(), and llvm::MCRegisterInfo::getSubReg().
|
static |
Definition at line 631 of file ARMExpandPseudoInsts.cpp.
References llvm::MachineOperand::getType(), llvm_unreachable, llvm::MachineOperand::MO_BlockAddress, llvm::MachineOperand::MO_CFIIndex, llvm::MachineOperand::MO_CImmediate, llvm::MachineOperand::MO_ConstantPoolIndex, llvm::MachineOperand::MO_ExternalSymbol, llvm::MachineOperand::MO_FPImmediate, llvm::MachineOperand::MO_FrameIndex, llvm::MachineOperand::MO_GlobalAddress, llvm::MachineOperand::MO_Immediate, llvm::MachineOperand::MO_IntrinsicID, llvm::MachineOperand::MO_JumpTableIndex, llvm::MachineOperand::MO_MachineBasicBlock, llvm::MachineOperand::MO_MCSymbol, llvm::MachineOperand::MO_Metadata, llvm::MachineOperand::MO_Predicate, llvm::MachineOperand::MO_Register, llvm::MachineOperand::MO_RegisterLiveOut, llvm::MachineOperand::MO_RegisterMask, and llvm::MachineOperand::MO_TargetIndex.
LookupNEONLdSt - Search the NEONLdStTable for information about a NEON load or store pseudo instruction.
Definition at line 347 of file ARMExpandPseudoInsts.cpp.
References assert(), llvm::sys::path::begin(), llvm::sys::path::end(), I, and NEONLdStTable.
|
static |
Definition at line 149 of file ARMExpandPseudoInsts.cpp.
Referenced by LookupNEONLdSt().
1.8.6