LLVM  6.0.0svn
Classes | Namespaces | Enumerations | Functions
TargetLowering.h File Reference

This file describes how to lower LLVM code to machine code. More...

#include "llvm/ADT/APInt.h"
#include "llvm/ADT/ArrayRef.h"
#include "llvm/ADT/DenseMap.h"
#include "llvm/ADT/STLExtras.h"
#include "llvm/ADT/SmallVector.h"
#include "llvm/ADT/StringRef.h"
#include "llvm/CodeGen/DAGCombine.h"
#include "llvm/CodeGen/ISDOpcodes.h"
#include "llvm/CodeGen/MachineValueType.h"
#include "llvm/CodeGen/RuntimeLibcalls.h"
#include "llvm/CodeGen/SelectionDAG.h"
#include "llvm/CodeGen/SelectionDAGNodes.h"
#include "llvm/CodeGen/ValueTypes.h"
#include "llvm/IR/Attributes.h"
#include "llvm/IR/CallSite.h"
#include "llvm/IR/CallingConv.h"
#include "llvm/IR/DataLayout.h"
#include "llvm/IR/DerivedTypes.h"
#include "llvm/IR/Function.h"
#include "llvm/IR/IRBuilder.h"
#include "llvm/IR/InlineAsm.h"
#include "llvm/IR/Instruction.h"
#include "llvm/IR/Instructions.h"
#include "llvm/IR/Type.h"
#include "llvm/MC/MCRegisterInfo.h"
#include "llvm/Support/AtomicOrdering.h"
#include "llvm/Support/Casting.h"
#include "llvm/Support/ErrorHandling.h"
#include "llvm/Target/TargetCallingConv.h"
#include "llvm/Target/TargetMachine.h"
#include <algorithm>
#include <cassert>
#include <climits>
#include <cstdint>
#include <iterator>
#include <map>
#include <string>
#include <utility>
#include <vector>
Include dependency graph for TargetLowering.h:

Go to the source code of this file.

Classes

class  llvm::TargetLoweringBase
 This base class for TargetLowering contains the SelectionDAG-independent parts that can be used from the rest of CodeGen. More...
 
class  llvm::TargetLoweringBase::ArgListEntry
 
class  llvm::TargetLoweringBase::ValueTypeActionImpl
 
struct  llvm::TargetLoweringBase::IntrinsicInfo
 
struct  llvm::TargetLoweringBase::AddrMode
 This represents an addressing mode of: BaseGV + BaseOffs + BaseReg + Scale*ScaleReg If BaseGV is null, there is no BaseGV. More...
 
class  llvm::TargetLowering
 This class defines information used to lower LLVM code to legal SelectionDAG operators that the target instruction selector can accept natively. More...
 
struct  llvm::TargetLowering::TargetLoweringOpt
 A convenience struct that encapsulates a DAG, and two SDValues for returning information from TargetLowering to its clients that want to combine. More...
 
struct  llvm::TargetLowering::DAGCombinerInfo
 
struct  llvm::TargetLowering::CallLoweringInfo
 This structure contains all information that is necessary for lowering calls. More...
 
struct  llvm::TargetLowering::AsmOperandInfo
 This contains information for each constraint that we are lowering. More...
 

Namespaces

 llvm
 Compute iterated dominance frontiers using a linear time algorithm.
 
 llvm::Sched
 

Enumerations

enum  llvm::Sched::Preference {
  llvm::Sched::None, llvm::Sched::Source, llvm::Sched::RegPressure, llvm::Sched::Hybrid,
  llvm::Sched::ILP, llvm::Sched::VLIW
}
 

Functions

void llvm::GetReturnInfo (Type *ReturnType, AttributeList attr, SmallVectorImpl< ISD::OutputArg > &Outs, const TargetLowering &TLI, const DataLayout &DL)
 Given an LLVM IR type and return type attributes, compute the return value EVTs and flags, and optionally also the offsets, if the return value is being lowered to memory. More...
 

Detailed Description

This file describes how to lower LLVM code to machine code.

This has two main components:

  1. Which ValueTypes are natively supported by the target.
  2. Which operations are supported for supported ValueTypes.
  3. Cost thresholds for alternative implementations of certain operations.

In addition it has a few other components, like information about FP immediates.

Definition in file TargetLowering.h.