LLVM API Documentation
#include "X86.h"
#include "X86InstrBuilder.h"
#include "X86ISelLowering.h"
#include "X86RegisterInfo.h"
#include "X86Subtarget.h"
#include "X86TargetMachine.h"
#include "llvm/GlobalValue.h"
#include "llvm/Instructions.h"
#include "llvm/Intrinsics.h"
#include "llvm/Support/CFG.h"
#include "llvm/CodeGen/MachineConstantPool.h"
#include "llvm/CodeGen/MachineFunction.h"
#include "llvm/CodeGen/MachineFrameInfo.h"
#include "llvm/CodeGen/MachineInstrBuilder.h"
#include "llvm/CodeGen/SSARegMap.h"
#include "llvm/CodeGen/SelectionDAGISel.h"
#include "llvm/Target/TargetMachine.h"
#include "llvm/Support/Debug.h"
#include "llvm/Support/Visibility.h"
#include "llvm/ADT/Statistic.h"
#include <iostream>
#include <set>
#include "X86GenDAGISel.inc"
Include dependency graph for X86ISelDAGToDAG.cpp:
Go to the source code of this file.
Defines | |
#define | DEBUG_TYPE "isel" |
Functions | |
static bool | isRegister0 (SDOperand Op) |
static SDNode * | FindCallStartFromCall (SDNode *Node) |
FunctionPass * | llvm::createX86ISelDag (X86TargetMachine &TM) |
Variables | |
Statistic | NumFPKill ("x86-codegen","Number of FP_REG_KILL instructions added") |
#define DEBUG_TYPE "isel" |
Definition at line 15 of file X86ISelDAGToDAG.cpp.
Definition at line 557 of file X86ISelDAGToDAG.cpp.
References llvm::ISD::CALLSEQ_START, llvm::SDNode::getOpcode(), llvm::SDNode::getOperand(), llvm::SDOperand::getValueType(), Node, and llvm::MVT::Other.
static bool isRegister0 | ( | SDOperand | Op | ) | [static] |
unsigned Align |
Definition at line 64 of file X86ISelDAGToDAG.cpp.
Referenced by llvm::X86IntelAsmPrinter::doFinalization(), llvm::X86SharedAsmPrinter::doFinalization(), llvm::X86RegisterInfo::eliminateCallFramePseudoInstr(), llvm::PPCRegisterInfo::eliminateCallFramePseudoInstr(), llvm::IA64RegisterInfo::eliminateCallFramePseudoInstr(), llvm::AlphaRegisterInfo::eliminateCallFramePseudoInstr(), llvm::X86RegisterInfo::emitPrologue(), llvm::PPCRegisterInfo::emitPrologue(), llvm::IA64RegisterInfo::emitPrologue(), llvm::AlphaRegisterInfo::emitPrologue(), llvm::FunctionLoweringInfo::FunctionLoweringInfo(), GetKnownAlignment(), llvm::TargetData::getTypeAlignment(), llvm::TargetData::getTypeAlignmentShift(), llvm::TargetData::getTypeSize(), llvm::BytecodeReader::ParseInstruction(), llvm::ELFCodeEmitter::startFunction(), llvm::SelectionDAGLowering::visitAlloca(), and llvm::SelectionDAGLowering::visitMemIntrinsic().
struct { ... } Base |
enum { ... } BaseType |
Referenced by llvm::ConvertExpressionToType(), and llvm::ExpressionConvertibleToType().
std::map<SDOperand, SDOperand> CodeGenMap |
Definition at line 141 of file X86ISelDAGToDAG.cpp.
bool ContainsFPCode |
ContainsFPCode - Every instruction we select that uses or defines a FP register should set this to true.
Definition at line 84 of file X86ISelDAGToDAG.cpp.
Definition at line 63 of file X86ISelDAGToDAG.cpp.
Referenced by CastConstantPacked(), llvm::ConstantFoldCastInstruction(), llvm::ConstantFoldLoadThroughGEPConstantExpr(), llvm::SDNode::dump(), llvm::AsmPrinter::EmitConstantPool(), llvm::AsmPrinter::EmitGlobalConstant(), FindScalarElement(), getAggregateConstantElement(), getShuffleMask(), getValType(), llvm::SelectionDAGLowering::getValue(), llvm::ExecutionEngine::InitializeMemory(), isFloatingPointZero(), LowerConstantPool(), llvm::AlphaTargetLowering::LowerOperation(), llvm::MapValue(), RemapOperand(), and WriteConstantInt().
unsigned Disp |
Definition at line 61 of file X86ISelDAGToDAG.cpp.
int FrameIndex |
Definition at line 56 of file X86ISelDAGToDAG.cpp.
Referenced by llvm::X86RegisterInfo::eliminateFrameIndex(), llvm::SparcRegisterInfo::eliminateFrameIndex(), llvm::PPCRegisterInfo::eliminateFrameIndex(), llvm::IA64RegisterInfo::eliminateFrameIndex(), llvm::ARMRegisterInfo::eliminateFrameIndex(), and llvm::AlphaRegisterInfo::eliminateFrameIndex().
unsigned GlobalBaseReg |
Definition at line 94 of file X86ISelDAGToDAG.cpp.
Definition at line 62 of file X86ISelDAGToDAG.cpp.
Referenced by llvm::DSNode::addGlobal(), llvm::MachineInstrBuilder::addGlobalAddress(), llvm::MachineInstr::addGlobalAddressOperand(), llvm::ExecutionEngine::addGlobalMapping(), AddressIsTaken(), AllUsesOfLoadedValueWillTrapIfNull(), DIVerifyVisitor::Apply(), DISerializeVisitor::Apply(), DIDeserializeVisitor::Apply(), llvm::DSGraph::AssertNodeContainsGlobal(), ByteswapSCANFResults(), CallersAllIgnoreReturnValue(), llvm::CloneModule(), CommitValueTo(), ComputeLoadResult(), ConstantFold(), llvm::ConstantFoldCastInstruction(), createSlotMachine(), DarwinGVRequiresExtraLoad(), llvm::DIDeserializer::Deserialize(), llvm::ilist_traits< GlobalVariable >::destroySentinel(), llvm::DSGraph::DSGraph(), EliminateUsesOfECGlobals(), llvm::AsmPrinter::EmitAlignment(), llvm::AsmPrinter::EmitConstantValueOnly(), llvm::ExecutionEngine::EmitGlobalVariable(), llvm::AsmPrinter::EmitSpecialLLVMGlobal(), llvm::DSScalarMap::erase(), EvaluateExpression(), llvm::Interpreter::exitCalled(), llvm::DSScalarMap::find(), FindStaticTors(), ForceRenaming(), GetAddressedElementFromGlobal(), llvm::MachineDebugInfo::getAnchoredDescriptors(), getConstantStringLength(), llvm::ExecutionEngine::getConstantValue(), llvm::DbgStopPointInst::getDirectory(), getEncodedLinkage(), llvm::DbgStopPointInst::getFileName(), llvm::ProgramInfo::getFunction(), llvm::SelectionDAG::getGlobalAddress(), getGlobalVariable(), getGlobalVariableClass(), getGlobalVariablesUsing(), GetKnownAlignment(), llvm::DSScalarMap::getLeaderForGlobal(), getModuleFromVal(), getNextStopPoint(), llvm::JIT::getOrEmitGlobalVariable(), llvm::ExecutionEngine::getOrEmitGlobalVariable(), llvm::ExecutionEngine::getPointerToGlobal(), llvm::ExecutionEngine::getPointerToGlobalIfAvailable(), llvm::AsmPrinter::getPreferredAlignmentLog(), llvm::DSScalarMap::getRawEntryRef(), getStringRef(), llvm::Constant::getStringValue(), llvm::SelectionDAG::getTargetGlobalAddress(), getUIntOperand(), getUnderlyingObject(), llvm::SelectionDAGLowering::getValue(), llvm::Mangler::getValueName(), llvm::DSScalarMap::global_count(), GV_to_size_t(), llvm::GVTOP(), isBaseAlignment16(), llvm::X86TargetLowering::isLegalAddressImmediate(), isSimpleEnoughPointerToCommit(), isStringValue(), lle_i_clock(), lle_X_atexit(), lle_X_atoi(), lle_X_exp(), lle_X_fclose(), lle_X_feof(), lle_X_ferror(), lle_X_fflush(), lle_X_floor(), lle_X_fprintf(), lle_X_fputc(), lle_X_getc(), lle_X_log(), lle_X_pow(), lle_X_printf(), lle_X_puts(), lle_X_rand(), lle_X_scanf(), lle_X_sprintf(), lle_X_sqrt(), lle_X_sscanf(), lle_X_ungetc(), LowerGlobalAddress(), llvm::AlphaTargetLowering::LowerOperation(), llvm::CachedWriter::operator<<(), llvm::DSScalarMap::operator[](), OptimizeAwayTrappingUsesOfLoads(), OptimizeGlobalAddressOfMalloc(), OptimizeOnceStoredGlobal(), llvm::BytecodeReader::ParseConstantPoolValue(), ParseGlobalCtors(), ParseGlobalVariable(), llvm::BytecodeReader::ParseModule(), llvm::BytecodeReader::ParseModuleGlobalInfo(), llvm::X86ATTAsmPrinter::printOperand(), ProcessGlobalsWithSameName(), RemoveDeadConstant(), llvm::DSNode::removeGlobal(), llvm::ExecutionEngine::runStaticConstructorsDestructors(), llvm::DISerializer::Serialize(), llvm::GlobalVariableDesc::setGlobalVariable(), llvm::Value::setName(), ShrinkGlobalToBoolean(), llvm::SourceFunctionInfo::SourceFunctionInfo(), SRAGlobal(), llvm::DbgInfoIntrinsic::StripCast(), llvm::AsmPrinter::SwitchToDataSection(), llvm::AsmPrinter::SwitchToTextSection(), llvm::DebugInfoDesc::TagFromGlobal(), SCCPSolver::TrackValueOfGlobalVariable(), llvm::ExecutionEngine::updateGlobalMapping(), ValueIsOnlyUsedLocallyOrStoredToOneGlobal(), llvm::DIVerifier::Verify(), llvm::DebugInfoDesc::VersionFromGlobal(), and llvm::SelectionDAGLowering::visitMemIntrinsic().
Definition at line 144 of file X86ISelDAGToDAG.cpp.
unsigned Indent |
Definition at line 60 of file X86ISelDAGToDAG.cpp.
Referenced by llvm::X86IntelAsmPrinter::printMemReference(), and llvm::X86ATTAsmPrinter::printMemReference().
std::set<SDNode*> InFlightSet |
Definition at line 150 of file X86ISelDAGToDAG.cpp.
Definition at line 55 of file X86ISelDAGToDAG.cpp.
Referenced by llvm::FunctionLoweringInfo::CreateRegForValue(), llvm::ScheduleDAG::EmitNode(), llvm::SelectionDAG::getCopyToReg(), getFPReg(), llvm::RegisterSDNode::getReg(), llvm::SelectionDAG::getRegister(), llvm::SelectionDAGLowering::GetRegistersForValue(), llvm::X86IntelAsmPrinter::printAsmMRegister(), llvm::X86ATTAsmPrinter::printAsmMRegister(), llvm::X86IntelAsmPrinter::printOp(), llvm::X86ATTAsmPrinter::printOperand(), and llvm::SelectionDAGLowering::visitInlineAsm().
std::map<SDOperand, SDOperand> ReplaceMap |
Definition at line 147 of file X86ISelDAGToDAG.cpp.
unsigned Scale |
Definition at line 59 of file X86ISelDAGToDAG.cpp.
Referenced by EmitGEPOffset(), llvm::SCEVMulExpr::get(), and llvm::SelectionDAGLowering::visitGetElementPtr().
const X86Subtarget* Subtarget |
Subtarget - Keep a pointer to the X86Subtarget around so that we can make the right decision when generating code for different targets.
Definition at line 92 of file X86ISelDAGToDAG.cpp.
X86Lowering - This object fully describes how to lower LLVM code to an X86-specific SelectionDAG.
Definition at line 88 of file X86ISelDAGToDAG.cpp.