LLVM API Documentation
#include <LegalizeTypes.h>
Public Types | |
enum | NodeIdFlags { ReadyToProcess = 0, NewNode = -1, Unanalyzed = -2, Processed = -3 } |
Public Member Functions | |
DAGTypeLegalizer (SelectionDAG &dag) | |
bool | run () |
void | NoteDeletion (SDNode *Old, SDNode *New) |
SelectionDAG & | getDAG () const |
DAGTypeLegalizer - This takes an arbitrary SelectionDAG as input and hacks on it until only value types the target machine can handle are left. This involves promoting small sizes to large sizes or splitting up large values into small values.
Definition at line 34 of file LegalizeTypes.h.
Definition at line 40 of file LegalizeTypes.h.
llvm::DAGTypeLegalizer::DAGTypeLegalizer | ( | SelectionDAG & | dag | ) | [inline, explicit] |
Definition at line 122 of file LegalizeTypes.h.
References llvm::MVT::LAST_VALUETYPE, and llvm::MVT::MAX_ALLOWED_VALUETYPE.
SelectionDAG& llvm::DAGTypeLegalizer::getDAG | ( | ) | const [inline] |
Definition at line 141 of file LegalizeTypes.h.
void llvm::DAGTypeLegalizer::NoteDeletion | ( | SDNode * | Old, |
SDNode * | New | ||
) | [inline] |
Definition at line 134 of file LegalizeTypes.h.
References llvm::SDNode::getNumValues().
run - This is the main entry point for the type legalizer. This does a top-down traversal of the dag, legalizing types as it goes. Returns "true" if it made any changes.
Definition at line 181 of file LegalizeTypes.cpp.
References llvm::SelectionDAG::allnodes_begin(), llvm::SelectionDAG::allnodes_end(), llvm::SmallVectorTemplateCommon< T, typename >::back(), llvm::dbgs(), DEBUG, llvm::NVPTXISD::Dummy, llvm::SDNode::dump(), llvm::SmallVectorBase::empty(), EnableExpensiveChecks, llvm::SDValue::getNode(), llvm::SDNode::getNodeId(), llvm::SDNode::getNumOperands(), llvm::SDNode::getNumValues(), llvm::SDNode::getOperand(), llvm::SelectionDAG::getRoot(), llvm::SDValue::getValueType(), llvm::SDNode::getValueType(), I, llvm_unreachable, NewNode, llvm::SmallVectorTemplateBase< T, isPodLike >::pop_back(), Processed, llvm::SmallVectorTemplateBase< T, isPodLike >::push_back(), ReadyToProcess, llvm::SelectionDAG::RemoveDeadNodes(), llvm::SDNode::setNodeId(), llvm::SelectionDAG::setRoot(), llvm::TargetLoweringBase::TypeExpandFloat, llvm::TargetLoweringBase::TypeExpandInteger, llvm::TargetLoweringBase::TypeLegal, llvm::TargetLoweringBase::TypePromoteInteger, llvm::TargetLoweringBase::TypeScalarizeVector, llvm::TargetLoweringBase::TypeSoftenFloat, llvm::TargetLoweringBase::TypeSplitVector, llvm::TargetLoweringBase::TypeWidenVector, Unanalyzed, llvm::SDNode::use_begin(), and llvm::SDNode::use_end().
Referenced by llvm::SelectionDAG::LegalizeTypes().