|
LLVM
3.7.0
|
#include "X86AsmPrinter.h"#include "X86RegisterInfo.h"#include "InstPrinter/X86ATTInstPrinter.h"#include "MCTargetDesc/X86BaseInfo.h"#include "Utils/X86ShuffleDecode.h"#include "llvm/ADT/Optional.h"#include "llvm/ADT/SmallString.h"#include "llvm/CodeGen/MachineFunction.h"#include "llvm/CodeGen/MachineConstantPool.h"#include "llvm/CodeGen/MachineOperand.h"#include "llvm/CodeGen/MachineModuleInfoImpls.h"#include "llvm/CodeGen/StackMaps.h"#include "llvm/IR/DataLayout.h"#include "llvm/IR/GlobalValue.h"#include "llvm/IR/Mangler.h"#include "llvm/MC/MCAsmInfo.h"#include "llvm/MC/MCCodeEmitter.h"#include "llvm/MC/MCContext.h"#include "llvm/MC/MCExpr.h"#include "llvm/MC/MCFixup.h"#include "llvm/MC/MCInst.h"#include "llvm/MC/MCInstBuilder.h"#include "llvm/MC/MCStreamer.h"#include "llvm/MC/MCSymbol.h"#include "llvm/Support/TargetRegistry.h"Go to the source code of this file.
Namespaces | |
| llvm | |
| Compute iterated dominance frontiers using a linear time algorithm. | |
Functions | |
| static void | EmitNops (MCStreamer &OS, unsigned NumBytes, bool Is64Bit, const MCSubtargetInfo &STI) |
| Emit the optimal amount of multi-byte nops on X86. More... | |
| static void | SimplifyShortImmForm (MCInst &Inst, unsigned Opcode) |
| Simplify FOO $imm, %{al,ax,eax,rax} to FOO $imm, for instruction with a short fixed-register form. More... | |
| static void | SimplifyMOVSX (MCInst &Inst) |
| If a movsx instruction has a shorter encoding for the used register simplify the instruction to use it instead. More... | |
| static void | SimplifyShortMoveForm (X86AsmPrinter &Printer, MCInst &Inst, unsigned Opcode) |
| Simplify things like MOV32rm to MOV32o32a. More... | |
| static unsigned | getRetOpcode (const X86Subtarget &Subtarget) |
| static MachineBasicBlock::const_iterator | PrevCrossBBInst (MachineBasicBlock::const_iterator MBBI) |
| static const Constant * | getConstantFromPool (const MachineInstr &MI, const MachineOperand &Op) |
| static std::string | getShuffleComment (const MachineOperand &DstOp, const MachineOperand &SrcOp, ArrayRef< int > Mask) |
|
static |
Emit the optimal amount of multi-byte nops on X86.
Definition at line 762 of file X86MCInstLower.cpp.
References llvm::MCStreamer::EmitBytes(), llvm::MCStreamer::EmitInstruction(), llvm_unreachable, and fuzzer::min().
|
static |
Definition at line 969 of file X86MCInstLower.cpp.
References llvm::MachineConstantPoolEntry::ConstVal, llvm::dyn_cast(), llvm::MachineFunction::getConstantPool(), llvm::MachineConstantPool::getConstants(), llvm::MachineOperand::getIndex(), llvm::MachineInstr::getParent(), llvm::MachineBasicBlock::getParent(), llvm::MachineConstantPoolEntry::getType(), llvm::MachineOperand::isCPI(), llvm::MachineConstantPoolEntry::isMachineConstantPoolEntry(), and llvm::MachineConstantPoolEntry::Val.
Referenced by llvm::X86AsmPrinter::EmitInstruction().
|
static |
Definition at line 400 of file X86MCInstLower.cpp.
References llvm::X86Subtarget::is64Bit().
Referenced by llvm::X86AsmPrinter::EmitInstruction().
|
static |
Definition at line 990 of file X86MCInstLower.cpp.
References llvm::CS, llvm::MachineOperand::getReg(), llvm::X86ATTInstPrinter::getRegisterName(), llvm::MachineOperand::isReg(), llvm::SM_SentinelUndef, and llvm::SM_SentinelZero.
Referenced by llvm::X86AsmPrinter::EmitInstruction().
|
static |
Definition at line 958 of file X86MCInstLower.cpp.
References llvm::MachineBasicBlock::begin(), llvm::MachineFunction::begin(), llvm::MachineBasicBlock::end(), llvm::MachineBasicBlock::getParent(), and llvm::ilist_node< NodeTy >::getPrevNode().
Referenced by llvm::X86AsmPrinter::EmitInstruction().
|
static |
If a movsx instruction has a shorter encoding for the used register simplify the instruction to use it instead.
Definition at line 322 of file X86MCInstLower.cpp.
References llvm::AArch64CC::AL, llvm::N86::EAX, llvm::MCInst::getOpcode(), llvm::MCInst::getOperand(), llvm::MCOperand::getReg(), llvm_unreachable, and llvm::MCInst::setOpcode().
Simplify FOO $imm, %{al,ax,eax,rax} to FOO $imm, for instruction with a short fixed-register form.
Definition at line 300 of file X86MCInstLower.cpp.
References llvm::MCInst::addOperand(), llvm::AArch64CC::AL, llvm::N86::EAX, llvm::MCInst::getNumOperands(), llvm::MCInst::getOperand(), llvm::MCOperand::getReg(), llvm::MCOperand::isExpr(), llvm::MCOperand::isImm(), llvm::MCOperand::isReg(), and llvm::MCInst::setOpcode().
|
static |
Simplify things like MOV32rm to MOV32o32a.
Definition at line 349 of file X86MCInstLower.cpp.
References llvm::HexagonII::Absolute, llvm::MCInst::addOperand(), llvm::X86::AddrBaseReg, llvm::X86::AddrIndexReg, llvm::X86::AddrScaleAmt, llvm::X86::AddrSegmentReg, llvm::AArch64CC::AL, llvm::N86::EAX, llvm::MCOperand::getExpr(), llvm::MCOperand::getImm(), llvm::MCInst::getNumOperands(), llvm::MCInst::getOperand(), llvm::MCOperand::getReg(), llvm::X86AsmPrinter::getSubtarget(), llvm::X86Subtarget::is64Bit(), llvm::MCOperand::isExpr(), llvm::MCOperand::isImm(), llvm::MCOperand::isReg(), and llvm::MCInst::setOpcode().
1.8.6