LLVM 22.0.0git
|
This file implements the targeting of the InstructionSelector class for X86. More...
#include "MCTargetDesc/X86BaseInfo.h"
#include "X86.h"
#include "X86InstrBuilder.h"
#include "X86InstrInfo.h"
#include "X86RegisterBankInfo.h"
#include "X86RegisterInfo.h"
#include "X86Subtarget.h"
#include "X86TargetMachine.h"
#include "llvm/CodeGen/GlobalISel/GIMatchTableExecutorImpl.h"
#include "llvm/CodeGen/GlobalISel/GenericMachineInstrs.h"
#include "llvm/CodeGen/GlobalISel/InstructionSelector.h"
#include "llvm/CodeGen/GlobalISel/Utils.h"
#include "llvm/CodeGen/MachineBasicBlock.h"
#include "llvm/CodeGen/MachineConstantPool.h"
#include "llvm/CodeGen/MachineFunction.h"
#include "llvm/CodeGen/MachineInstr.h"
#include "llvm/CodeGen/MachineInstrBuilder.h"
#include "llvm/CodeGen/MachineMemOperand.h"
#include "llvm/CodeGen/MachineOperand.h"
#include "llvm/CodeGen/MachineRegisterInfo.h"
#include "llvm/CodeGen/RegisterBank.h"
#include "llvm/CodeGen/TargetOpcodes.h"
#include "llvm/CodeGen/TargetRegisterInfo.h"
#include "llvm/CodeGenTypes/LowLevelType.h"
#include "llvm/IR/DataLayout.h"
#include "llvm/IR/InstrTypes.h"
#include "llvm/IR/IntrinsicsX86.h"
#include "llvm/Support/CodeGen.h"
#include "llvm/Support/Debug.h"
#include "llvm/Support/ErrorHandling.h"
#include "llvm/Support/MathExtras.h"
#include "llvm/Support/raw_ostream.h"
#include <cassert>
#include <cstdint>
#include <tuple>
#include "X86GenGlobalISel.inc"
Go to the source code of this file.
Macros | |
#define | DEBUG_TYPE "X86-isel" |
#define | GET_GLOBALISEL_PREDICATE_BITSET |
#define | GET_GLOBALISEL_PREDICATES_DECL |
#define | GET_GLOBALISEL_TEMPORARIES_DECL |
#define | GET_GLOBALISEL_IMPL |
#define | GET_GLOBALISEL_PREDICATES_INIT |
#define | GET_GLOBALISEL_TEMPORARIES_INIT |
Functions | |
static const TargetRegisterClass * | getRegClassFromGRPhysReg (Register Reg) |
static bool | X86SelectAddress (MachineInstr &I, const X86TargetMachine &TM, const MachineRegisterInfo &MRI, const X86Subtarget &STI, X86AddressMode &AM) |
static unsigned | getLeaOP (LLT Ty, const X86Subtarget &STI) |
static bool | canTurnIntoCOPY (const TargetRegisterClass *DstRC, const TargetRegisterClass *SrcRC) |
This file implements the targeting of the InstructionSelector class for X86.
Definition in file X86InstructionSelector.cpp.
#define DEBUG_TYPE "X86-isel" |
Definition at line 50 of file X86InstructionSelector.cpp.
#define GET_GLOBALISEL_IMPL |
Definition at line 155 of file X86InstructionSelector.cpp.
#define GET_GLOBALISEL_PREDICATE_BITSET |
Definition at line 56 of file X86InstructionSelector.cpp.
#define GET_GLOBALISEL_PREDICATES_DECL |
Definition at line 144 of file X86InstructionSelector.cpp.
#define GET_GLOBALISEL_PREDICATES_INIT |
#define GET_GLOBALISEL_TEMPORARIES_DECL |
Definition at line 148 of file X86InstructionSelector.cpp.
#define GET_GLOBALISEL_TEMPORARIES_INIT |
|
static |
Definition at line 795 of file X86InstructionSelector.cpp.
|
static |
Definition at line 685 of file X86InstructionSelector.cpp.
References llvm::X86Subtarget::isTarget64BitILP32(), llvm_unreachable, and llvm::LLT::pointer().
|
static |
Definition at line 234 of file X86InstructionSelector.cpp.
References assert(), contains(), and llvm_unreachable.
|
static |
Definition at line 557 of file X86InstructionSelector.cpp.
References assert(), llvm::X86AddressMode::Base, llvm::X86AddressMode::BaseType, llvm::X86Subtarget::classifyGlobalReference(), llvm::X86Subtarget::classifyLocalReference(), llvm::X86AddressMode::CP, llvm::X86AddressMode::Disp, llvm::X86AddressMode::BaseUnion::FrameIndex, llvm::X86AddressMode::FrameIndexBase, llvm::X86InstrInfo::getGlobalBaseReg(), llvm::getIConstantVRegSExtVal(), llvm::X86Subtarget::getInstrInfo(), llvm::X86AddressMode::GV, llvm::X86AddressMode::GVOpFlags, I, llvm::X86AddressMode::IndexReg, llvm::isGlobalRelativeToPICBase(), llvm::isGlobalStubReference(), llvm::X86Subtarget::isPICStyleRIPRel(), llvm::CodeModel::Large, llvm::X86II::MO_GOTOFF, MRI, llvm::X86AddressMode::BaseUnion::Reg, and llvm::CodeModel::Small.