LLVM  8.0.0svn
Classes | Namespaces | Macros | Enumerations | Functions
HexagonISelDAGToDAGHVX.cpp File Reference
#include "Hexagon.h"
#include "HexagonISelDAGToDAG.h"
#include "HexagonISelLowering.h"
#include "HexagonTargetMachine.h"
#include "llvm/ADT/SetVector.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 <deque>
#include <map>
#include <set>
#include <utility>
#include <vector>
Include dependency graph for HexagonISelDAGToDAGHVX.cpp:

Go to the source code of this file.

Classes

struct  llvm::HvxSelector
 

Namespaces

 llvm
 Compute iterated dominance frontiers using a linear time algorithm.
 

Macros

#define DEBUG_TYPE   "hexagon-isel"
 

Enumerations

enum  ColorKind
 

Functions

static const HexagonTargetLoweringgetHexagonLowering (SelectionDAG &G)
 
static const HexagonSubtargetgetHexagonSubtarget (SelectionDAG &G)
 
static void splitMask (ArrayRef< int > Mask, MutableArrayRef< int > MaskL, MutableArrayRef< int > MaskR)
 
static std::pair< int, unsignedfindStrip (ArrayRef< int > A, int Inc, unsigned MaxLen)
 
static bool isUndef (ArrayRef< int > Mask)
 
static bool isIdentity (ArrayRef< int > Mask)
 
static bool isPermutation (ArrayRef< int > Mask)
 

Macro Definition Documentation

◆ DEBUG_TYPE

#define DEBUG_TYPE   "hexagon-isel"

Definition at line 27 of file HexagonISelDAGToDAGHVX.cpp.

Enumeration Type Documentation

◆ ColorKind

enum ColorKind
strong

Definition at line 98 of file HexagonISelDAGToDAGHVX.cpp.

Function Documentation

◆ findStrip()

static std::pair<int,unsigned> findStrip ( ArrayRef< int >  A,
int  Inc,
unsigned  MaxLen 
)
static

Definition at line 879 of file HexagonISelDAGToDAGHVX.cpp.

References assert(), E, F(), I, and llvm::ArrayRef< T >::size().

Referenced by isPermutation().

◆ getHexagonLowering()

static const HexagonTargetLowering& getHexagonLowering ( SelectionDAG G)
static

◆ getHexagonSubtarget()

static const HexagonSubtarget& getHexagonSubtarget ( SelectionDAG G)
static

Definition at line 795 of file HexagonISelDAGToDAGHVX.cpp.

References llvm::SelectionDAG::getSubtarget().

◆ isIdentity()

static bool isIdentity ( ArrayRef< int >  Mask)
static

Definition at line 899 of file HexagonISelDAGToDAGHVX.cpp.

References E, I, and llvm::ArrayRef< T >::size().

Referenced by isPermutation().

◆ isPermutation()

static bool isPermutation ( ArrayRef< int >  Mask)
static

Definition at line 908 of file HexagonISelDAGToDAGHVX.cpp.

References llvm::all_of(), llvm::SelectionDAG::allnodes(), Arg, assert(), llvm::HexagonISD::AT_PCREL, B, C, llvm::concat(), llvm::ISD::CONCAT_VECTORS, llvm::detail::DenseSetImpl< ValueT, DenseMap< ValueT, detail::DenseSetEmpty, ValueInfoT, detail::DenseSetPair< ValueT > >, ValueInfoT >::count(), llvm::SetVector< T, Vector, Set >::count(), llvm::countPopulation(), llvm::HexagonISD::CP, D, llvm::HvxSelector::DAG, llvm::Data, llvm::SmallVectorTemplateCommon< T >::data(), llvm::MutableArrayRef< T >::data(), llvm::dbgs(), DEBUG_WITH_TYPE, llvm::ArrayRef< T >::drop_front(), llvm::SDNode::dumpr(), E, llvm::DenseMapBase< DenseMap< KeyT, ValueT, KeyInfoT, BucketT >, KeyT, ValueT, KeyInfoT, BucketT >::end(), llvm::ISD::EXTRACT_VECTOR_ELT, F(), fail(), R600_InstFlag::FC, llvm::DenseMapBase< DenseMap< KeyT, ValueT, KeyInfoT, BucketT >, KeyT, ValueT, KeyInfoT, BucketT >::find(), findStrip(), llvm::SelectionDAG::getBuildVector(), llvm::SelectionDAG::getConstant(), llvm::SelectionDAG::getContext(), llvm::SelectionDAG::getMachineNode(), llvm::SDValue::getNode(), llvm::SelectionDAG::getNode(), llvm::SDNode::getNumOperands(), llvm::SDValue::getOpcode(), llvm::SDNode::getOpcode(), llvm::SDValue::getOperand(), llvm::SDNode::getOperand(), llvm::HvxSelector::getPairVT(), llvm::EVT::getSimpleVT(), llvm::HvxSelector::getSingleVT(), llvm::SelectionDAG::getTargetConstant(), llvm::SelectionDAG::getTargetExtractSubreg(), llvm::TargetLoweringBase::getTypeToTransformTo(), llvm::MVT::getVectorElementType(), llvm::MVT::getVectorNumElements(), llvm::MVT::getVectorVT(), H, llvm::SDNode::hasOneUse(), llvm::MipsISD::Hi, llvm::HvxSelector::HwLen, I, llvm::MVT::i1, llvm::MVT::i32, llvm::MVT::i8, llvm::SetVector< T, Vector, Set >::insert(), llvm::detail::DenseSetImpl< ValueT, DenseMap< ValueT, detail::DenseSetEmpty, ValueInfoT, detail::DenseSetPair< ValueT > >, ValueInfoT >::insert(), llvm::HvxSelector::ISel, isIdentity(), llvm::SDNode::isMachineOpcode(), llvm::isPowerOf2_32(), isUndef(), llvm::MipsISD::Lo, llvm::ISD::LOAD, llvm::Log2_32(), llvm::HvxSelector::Lower, llvm::HexagonTargetLowering::LowerOperation(), llvm::BitmaskEnumDetail::Mask(), N, llvm::SDNode::ops(), llvm::MVT::Other, P, llvm::SmallVectorTemplateBase< T, isPodLike< T >::value >::push_back(), llvm::SmallVectorTemplateBase< T, isPodLike >::push_back(), llvm::SelectionDAG::RemoveDeadNode(), llvm::SelectionDAG::RemoveDeadNodes(), llvm::SelectionDAGISel::ReplaceNode(), Results, llvm::reverse(), llvm::NVPTX::PTXCvtMode::RN, llvm::HexagonDAGToDAGISel::Select(), llvm::SignExtend32(), llvm::SetVector< T, Vector, Set >::size(), llvm::ArrayRef< T >::size(), llvm::size(), splitMask(), T, llvm::ArrayRef< T >::take_front(), llvm::SetVector< T, Vector, Set >::takeVector(), llvm::ISD::TargetConstantPool, llvm::RegState::Undef, llvm::SDNode::use_begin(), llvm::SDNode::use_empty(), llvm::SDNode::uses(), llvm::HexagonISD::VSPLATW, llvm::HexagonISD::VZERO, llvm::RISCVFenceField::W, and X.

◆ isUndef()

static bool isUndef ( ArrayRef< int >  Mask)
static

◆ splitMask()

static void splitMask ( ArrayRef< int >  Mask,
MutableArrayRef< int >  MaskL,
MutableArrayRef< int >  MaskR 
)
static

Definition at line 861 of file HexagonISelDAGToDAGHVX.cpp.

References assert(), I, and llvm::ArrayRef< T >::size().

Referenced by isPermutation().