|
LLVM
8.0.1
|
#include "Hexagon.h"#include "HexagonISelDAGToDAG.h"#include "HexagonISelLowering.h"#include "HexagonMachineFunctionInfo.h"#include "HexagonTargetMachine.h"#include "llvm/CodeGen/FunctionLoweringInfo.h"#include "llvm/CodeGen/MachineInstrBuilder.h"#include "llvm/CodeGen/SelectionDAGISel.h"#include "llvm/IR/Intrinsics.h"#include "llvm/Support/CommandLine.h"#include "llvm/Support/Debug.h"#include "HexagonGenDAGISel.inc"
Go to the source code of this file.
Namespaces | |
| llvm | |
| This class represents lattice values for constants. | |
Macros | |
| #define | DEBUG_TYPE "hexagon-isel" |
| #define | GET_DAGISEL_BODY HexagonDAGToDAGISel |
Functions | |
| FunctionPass * | llvm::createHexagonISelDag (HexagonTargetMachine &TM, CodeGenOpt::Level OptLevel) |
| static bool | isMemOPCandidate (SDNode *I, SDNode *U) |
| static bool | isOpcodeHandled (const SDNode *N) |
| static unsigned | getPowerOf2Factor (SDValue Val) |
| static bool | willShiftRightEliminate (SDValue V, unsigned Amount) |
| static bool | isTargetConstant (const SDValue &V) |
Variables | |
| static cl::opt< bool > | EnableAddressRebalancing ("isel-rebalance-addr", cl::Hidden, cl::init(true), cl::desc("Rebalance address calculation trees to improve " "instruction selection")) |
| static cl::opt< bool > | RebalanceOnlyForOptimizations ("rebalance-only-opt", cl::Hidden, cl::init(false), cl::desc("Rebalance address tree only if this allows optimizations")) |
| static cl::opt< bool > | RebalanceOnlyImbalancedTrees ("rebalance-only-imbal", cl::Hidden, cl::init(false), cl::desc("Rebalance address tree only if it is imbalanced")) |
| static cl::opt< bool > | CheckSingleUse ("hexagon-isel-su", cl::Hidden, cl::init(true), cl::desc("Enable checking of SDNode's single-use status")) |
| #define DEBUG_TYPE "hexagon-isel" |
Definition at line 27 of file HexagonISelDAGToDAG.cpp.
| #define GET_DAGISEL_BODY HexagonDAGToDAGISel |
Definition at line 54 of file HexagonISelDAGToDAG.cpp.
Definition at line 1782 of file HexagonISelDAGToDAG.cpp.
References C, llvm::APInt::countTrailingZeros(), llvm::dyn_cast(), llvm::ConstantSDNode::getAPIntValue(), llvm::APInt::getBoolValue(), llvm::SDValue::getConstantOperandVal(), llvm::SDValue::getNode(), llvm::SDValue::getOpcode(), llvm::SDValue::getOperand(), llvm::ISD::MUL, and llvm::ISD::SHL.
Referenced by isTargetConstant().
Definition at line 930 of file HexagonISelDAGToDAG.cpp.
References llvm::ISD::ADD, llvm::ISD::AND, C, llvm::countLeadingZeros(), llvm::countTrailingOnes(), llvm::countTrailingZeros(), llvm::SelectionDAGISel::CurDAG, D, DC, llvm::dyn_cast(), E, llvm::ConstantSDNode::getAPIntValue(), llvm::APInt::getBitWidth(), llvm::SelectionDAG::getConstant(), llvm::SelectionDAG::getMachineNode(), llvm::SDNode::getMachineOpcode(), llvm::SDValue::getNode(), llvm::SelectionDAG::getNode(), llvm::SDNode::getNumOperands(), llvm::SDNode::getNumValues(), llvm::SDValue::getOpcode(), llvm::SDNode::getOpcode(), llvm::SDValue::getOperand(), llvm::SDNode::getOperand(), llvm::EVT::getSimpleVT(), llvm::SDValue::getValueType(), llvm::SDNode::getValueType(), llvm::ConstantSDNode::getZExtValue(), llvm::SDNode::hasOneUse(), I, llvm::MVT::i1, llvm::EVT::isInteger(), llvm::EVT::isSimple(), llvm::ISD::LOAD, llvm::BitmaskEnumDetail::Mask(), N, llvm::ISD::OR, llvm::SelectionDAG::ReplaceAllUsesWith(), llvm::SelectionDAGISel::ReplaceNode(), llvm::PPCISD::SC, llvm::ISD::SELECT, llvm::ISD::SHL, llvm::ISD::SRL, llvm::ISD::STORE, llvm::ISD::SUB, llvm::ARM_MB::SY, T1, llvm::SDNode::use_begin(), Y, and llvm::ISD::ZERO_EXTEND.
Definition at line 1596 of file HexagonISelDAGToDAG.cpp.
References llvm::ISD::ADD, assert(), B, llvm::SmallVectorTemplateCommon< T >::begin(), llvm::MCID::Compare, llvm::SmallVectorBase::empty(), llvm::empty(), llvm::SmallVectorTemplateCommon< T >::end(), llvm::SmallVectorTemplateCommon< T >::front(), llvm::SDValue::getNode(), llvm::SDNode::getOpcode(), llvm::SDNode::getOperand(), llvm::ISD::MUL, N, llvm::SmallVectorImpl< T >::pop_back_val(), llvm::SmallVectorTemplateBase< T >::push_back(), llvm::ISD::SHL, llvm::SmallVectorBase::size(), and llvm::size().
Referenced by isTargetConstant().
Definition at line 1846 of file HexagonISelDAGToDAG.cpp.
References llvm::abs(), llvm::ISD::ADD, llvm::SelectionDAG::allnodes_begin(), llvm::SelectionDAG::allnodes_end(), assert(), llvm::HexagonISD::CONST32, llvm::HexagonISD::CONST32_GP, llvm::DenseMapBase< SmallDenseMap< KeyT, ValueT, InlineBuckets, KeyInfoT, BucketT >, KeyT, ValueT, KeyInfoT, BucketT >::count(), llvm::SelectionDAGISel::CurDAG, llvm::dbgs(), llvm::SDValue::dump(), llvm::SDNode::dump(), llvm::dyn_cast(), E, llvm::SmallVectorBase::empty(), llvm::ConstantSDNode::getAPIntValue(), llvm::SelectionDAG::getConstant(), llvm::SDValue::getConstantOperandVal(), llvm::SelectionDAG::getDataLayout(), llvm::MachineFunction::getFunction(), llvm::GlobalAddressSDNode::getGlobal(), llvm::SelectionDAG::getMachineFunction(), llvm::SDValue::getNode(), llvm::SelectionDAG::getNode(), llvm::GlobalAddressSDNode::getOffset(), llvm::SDValue::getOpcode(), llvm::SDNode::getOpcode(), llvm::SDValue::getOperand(), llvm::SDNode::getOperand(), llvm::GlobalValue::getParent(), getParent(), getPowerOf2Factor(), llvm::TargetLoweringBase::getScalarShiftAmountTy(), llvm::SelectionDAG::getTargetGlobalAddress(), llvm::SelectionDAGISel::getTargetLowering(), llvm::SDValue::getValueType(), llvm::SDNode::getValueType(), llvm::SDValue::hasOneUse(), llvm::SDNode::hasOneUse(), I, llvm::TargetLowering::isOffsetFoldingLegal(), isOpcodeHandled(), llvm::APInt::isPowerOf2(), LLVM_DEBUG, llvm::ISD::LOAD, llvm::APInt::logBase2(), llvm::max(), llvm::ISD::MUL, N, llvm::SmallVectorImpl< T >::pop_back_val(), llvm::SmallVectorTemplateBase< T, bool >::push_back(), llvm::SmallVectorTemplateBase< T >::push_back(), RebalanceOnlyForOptimizations, RebalanceOnlyImbalancedTrees, llvm::SelectionDAG::RemoveDeadNodes(), llvm::SelectionDAG::ReplaceAllUsesWith(), llvm::ISD::SHL, llvm::ISD::STORE, std::swap(), llvm::SelectionDAGISel::TLI, llvm::SelectionDAG::UpdateNodeOperands(), llvm::SDNode::use_begin(), llvm::SDNode::use_size(), llvm::Value::users(), and willShiftRightEliminate().
Definition at line 1805 of file HexagonISelDAGToDAG.cpp.
References llvm::SelectionDAGISel::CurDAG, llvm::SelectionDAG::getConstant(), llvm::SDValue::getConstantOperandVal(), llvm::SelectionDAG::getNode(), llvm::SDValue::getOpcode(), llvm::SDValue::getOperand(), llvm::SDValue::getValueType(), llvm::ISD::MUL, and llvm::ISD::SHL.
Referenced by isTargetConstant().
|
static |
Referenced by llvm::HexagonDAGToDAGISel::DetectUseSxtw().
|
static |
Referenced by llvm::HexagonDAGToDAGISel::PreprocessISelDAG().
|
static |
Referenced by isTargetConstant().
1.8.13