LLVM  8.0.1
Classes | Macros | Typedefs | Functions | Variables
HexagonShuffler.cpp File Reference
#include "MCTargetDesc/HexagonShuffler.h"
#include "Hexagon.h"
#include "MCTargetDesc/HexagonBaseInfo.h"
#include "MCTargetDesc/HexagonMCInstrInfo.h"
#include "MCTargetDesc/HexagonMCTargetDesc.h"
#include "llvm/ADT/SmallVector.h"
#include "llvm/ADT/Twine.h"
#include "llvm/MC/MCContext.h"
#include "llvm/MC/MCInst.h"
#include "llvm/MC/MCSubtargetInfo.h"
#include "llvm/Support/Compiler.h"
#include "llvm/Support/Debug.h"
#include "llvm/Support/MathExtras.h"
#include "llvm/Support/SourceMgr.h"
#include "llvm/Support/raw_ostream.h"
#include <algorithm>
#include <cassert>
#include <utility>
#include <vector>
Include dependency graph for HexagonShuffler.cpp:

Go to the source code of this file.

Classes

struct  CVIUnits
 

Macros

#define DEBUG_TYPE   "hexagon-shuffle"
 
#define MAX_JUMP_SLOTS   (sizeof(jumpSlots) / sizeof(jumpSlots[0]))
 

Typedefs

using HVXInstsT = SmallVector< struct CVIUnits, 8 >
 

Functions

static unsigned makeAllBits (unsigned startBit, unsigned Lanes)
 
static bool checkHVXPipes (const HVXInstsT &hvxInsts, unsigned startIdx, unsigned usedUnits)
 

Variables

struct {
   unsigned   first
 
   unsigned   second
 
jumpSlots [] = {{8, 4}, {8, 2}, {8, 1}, {4, 2}, {4, 1}, {2, 1}}
 

Macro Definition Documentation

◆ DEBUG_TYPE

#define DEBUG_TYPE   "hexagon-shuffle"

Definition at line 15 of file HexagonShuffler.cpp.

◆ MAX_JUMP_SLOTS

#define MAX_JUMP_SLOTS   (sizeof(jumpSlots) / sizeof(jumpSlots[0]))

Definition at line 224 of file HexagonShuffler.cpp.

Referenced by llvm::HexagonShuffler::check().

Typedef Documentation

◆ HVXInstsT

using HVXInstsT = SmallVector<struct CVIUnits, 8>

Definition at line 172 of file HexagonShuffler.cpp.

Function Documentation

◆ checkHVXPipes()

static bool checkHVXPipes ( const HVXInstsT hvxInsts,
unsigned  startIdx,
unsigned  usedUnits 
)
static

Definition at line 181 of file HexagonShuffler.cpp.

References makeAllBits(), and llvm::SmallVectorBase::size().

Referenced by llvm::HexagonShuffler::check().

◆ makeAllBits()

static unsigned makeAllBits ( unsigned  startBit,
unsigned  Lanes 
)
static

Definition at line 174 of file HexagonShuffler.cpp.

Referenced by checkHVXPipes().

Variable Documentation

◆ first

unsigned first

Definition at line 221 of file HexagonShuffler.cpp.

Referenced by addAndInterleaveWithUnsupported(), llvm::PassManagerBuilder::addExtension(), llvm::ModuleSummaryIndex::addModule(), llvm::AccelTable< llvm::DWARF5AccelTableData >::addName(), AnalyzeReturnValues(), CC_Lanai32_VarArg(), llvm::ARMTargetLowering::CCAssignFnForReturn(), llvm::HexagonShuffler::check(), CleanupPointerRootUsers(), llvm::iplist_impl< simple_ilist< MachineInstr, Options... >, ilist_traits< MachineInstr > >::clearAndLeakNodesUnsafely(), llvm::MachineRegisterInfo::clearSimpleHint(), CloneLoop(), ContainsReg(), ConvertTwoCaseSwitch(), llvm::createMergeFunctionsPass(), createPHIsForCMOVsInSinkBB(), createPHIsForSelects(), CriticalPathStep(), llvm::GVNExpression::Expression::dump(), llvm::MCAsmMacroParameter::dump(), llvm::Loop::dumpVerbose(), llvm::StringMatcher::Emit(), llvm::MachineRegisterInfo::EmitLiveInCopies(), emitSignedInt64(), EqualityPropUnSafe(), ExpandBVWithShuffles(), FindFirstNonCommonLetter(), llvm::sampleprof::FunctionSamples::findFunctionSamples(), findMatchingInlineAsmOperand(), findProfitablePHIs(), getDivRemArgList(), llvm::detail::DenseMapPair< unsigned, unsigned >::getFirst(), GetFPLibCall(), llvm::InsertPointAnalysis::getLastInsertPoint(), getMOVL(), llvm::getNumBytesForUTF8(), getOpenCLAlignment(), llvm::NVPTXTargetLowering::getPrototype(), getReassignedChan(), llvm::MachineRegisterInfo::getRegClass(), getSuccPad(), llvm::ARCTargetLowering::getTargetNodeName(), llvm::MachineSSAUpdater::GetValueInMiddleOfBlock(), llvm::hashing::detail::hash_combine_range_impl(), llvm::HexagonCVIResource::HexagonCVIResource(), INITIALIZE_PASS(), InitializeUniqueCases(), InlineHistoryIncludes(), llvm::iplist_impl< simple_ilist< MachineInstr, Options... >, ilist_traits< MachineInstr > >::insert(), isDbgValueDescribedByReg(), isDebug(), isMustExecuteIn(), isOnlyReachableViaThisEdge(), isStrideMul(), LookForIdenticalPHI(), llvm::HexagonTargetLowering::LowerCall(), llvm::SystemZTargetLowering::LowerCall(), llvm::SparcTargetLowering::LowerCall_32(), llvm::SparcTargetLowering::LowerCall_64(), LowerCallResult(), llvm::SelectionDAGBuilder::LowerCallTo(), LowerPREFETCH(), LowerVectorFP_TO_INT(), LowerVectorINT_TO_FP(), mayUsePostIncMode(), llvm::LegalizerInfo::moreToWiderTypesAndLessToWidest(), nodeListToNodeArray(), llvm::safestack::operator<<(), llvm::ARMBaseInstrInfo::optimizeCompareInstr(), llvm::PPCInstrInfo::optimizeCompareInstr(), p_bre(), p_ere(), llvm::itanium_demangle::parse_discriminator(), predictValueUseListOrderImpl(), PrepareCall(), llvm::ValueEnumerator::print(), llvm::itanium_demangle::FloatLiteralImpl< Float >::printLeft(), llvm::TargetRegistry::printRegisteredTargetsForVersion(), llvm::ModuleSymbolTable::printSymbolName(), PropagateConstantsIntoArguments(), llvm::cl::ResetAllOptionOccurrences(), llvm::itanium_demangle::AbstractManglingParser< ManglingParser< Alloc >, Alloc >::resolveForwardTemplateRefs(), llvm::ARMFrameLowering::ResolveFrameIndexReference(), llvm::InlinerPass::run(), llvm::GCNScheduleDAGMILive::schedule(), llvm::SelectionDAGISel::SelectCodeCommon(), llvm::FunctionLoweringInfo::set(), setImmutableRefs(), sortSubCommands(), llvm::iplist_impl< simple_ilist< MachineInstr, Options... >, ilist_traits< MachineInstr > >::splice(), llvm::HexagonBlockRanges::IndexRange::start(), llvm::IntervalMapImpl::LeafNode< KeyT, ValT, N, Traits >::start(), llvm::IntervalMapImpl::LeafNode< KeyT, ValT, N, Traits >::stop(), llvm::IntervalMapImpl::BranchNode< KeyT, ValT, RootBranchCap, Traits >::subtree(), llvm::SymbolTableListTraits< Instruction >::transferNodesFromList(), TypeSizeToSizeIndex(), llvm::SelectionDAGBuilder::UpdateSplitBlock(), widen_1(), and widen_8_16().

◆ jumpSlots

struct { ... } jumpSlots[]

◆ second

unsigned second

Definition at line 222 of file HexagonShuffler.cpp.

Referenced by llvm::ModuleSummaryIndex::addGlobalValueSummary(), llvm::mca::RegisterFile::addRegisterWrite(), analyzeLoopUnrollCost(), AnalyzeReturnValues(), AntiDepEdges(), buildClonedLoops(), llvm::LazyCallGraph::buildRefSCCs(), canonicalizePHIOperands(), CC_Lanai32_VarArg(), llvm::ARMTargetLowering::CCAssignFnForReturn(), llvm::HexagonShuffler::check(), llvm::MachineRegisterInfo::clearVirtRegs(), llvm::FunctionComparator::compare(), computeDomSubtreeCost(), llvm::rdf::Liveness::computePhiInfo(), ContainsReg(), ConvertTwoCaseSwitch(), createCallInst(), createPHIsForCMOVsInSinkBB(), createPHIsForSelects(), llvm::MDBuilder::createTBAAStructTypeNode(), llvm::LegalizerInfo::decreaseToSmallerTypesAndIncreaseToSmallest(), llvm::MachineRegisterInfo::EmitLiveInCopies(), llvm::HexagonBlockRanges::IndexRange::end(), ExpandBVWithShuffles(), llvm::sampleprof::FunctionSamples::findFunctionSamples(), findMatchingInlineAsmOperand(), findProfitablePHIs(), llvm::FunctionComparator::functionHash(), generateEquivalentSub(), llvm::msf::MSFBuilder::generateLayout(), llvm::WebAssemblyExceptionInfo::getAnalysisUsage(), GetConstantInt(), getInputChainForNode(), getLAScore(), getMOVL(), getReassignedChan(), llvm::detail::DenseMapPair< unsigned, unsigned >::getSecond(), getSuccPad(), llvm::DwarfStringPoolEntryRef::getSymbol(), llvm::ModuleSymbolTable::getSymbolFlags(), llvm::ARCTargetLowering::getTargetNodeName(), llvm::StringMapEntry< llvm::Comdat >::getValue(), HandleMergeInputChains(), llvm::HexagonCVIResource::HexagonCVIResource(), llvm::GISelWorkList< 8 >::insert(), llvm::AnalysisManager< IRUnitT, ExtraArgTs >::invalidate(), isDbgValueDescribedByReg(), isDebug(), isOnlyReachableViaThisEdge(), llvm::HexagonMCInstrInfo::isOrderedDuplexPair(), isSafeAndProfitableToSpeculateAroundPHI(), llvm::LazyCallGraph::LazyCallGraph(), LookForIdenticalPHI(), llvm::HexagonTargetLowering::LowerCall(), llvm::SystemZTargetLowering::LowerCall(), llvm::SparcTargetLowering::LowerCall_32(), llvm::SparcTargetLowering::LowerCall_64(), LowerCallResult(), maybePrintCallAddrSpace(), llvm::LegalizerInfo::moreToWiderTypesAndLessToWidest(), llvm::MemorySSA::moveTo(), PrepareCall(), printFPOReg(), llvm::cl::PrintOptionValues(), llvm::TargetRegistry::printRegisteredTargetsForVersion(), PropagateConstantsIntoArguments(), propagateSwiftErrorVRegs(), llvm::DemandedBitsWrapperPass::releaseMemory(), llvm::CallGraphNode::removeAnyCallEdgeTo(), llvm::mca::RegisterFile::removeRegisterWrite(), replaceShuffleOfInsert(), llvm::cl::ResetAllOptionOccurrences(), llvm::ARMFrameLowering::ResolveFrameIndexReference(), llvm::GCNScheduleDAGMILive::schedule(), llvm::SelectionDAGISel::SelectCodeCommon(), selectI64Imm(), sortSubCommands(), splitCallSite(), llvm::IntervalMapImpl::BranchNode< KeyT, ValT, RootBranchCap, Traits >::stop(), llvm::mca::RegisterFile::tryEliminateMove(), unswitchNontrivialInvariants(), llvm::DWARFUnit::updateAddressDieMap(), llvm::IntervalMapImpl::LeafNode< KeyT, ValT, N, Traits >::value(), llvm::ValueEnumerator::ValueEnumerator(), llvm::slpvectorizer::BoUpSLP::vectorizeTree(), llvm::MemorySSA::SkipSelfWalker::verify(), llvm::sroa::AllocaSliceRewriter::visit(), and llvm::LazyCallGraph::visitReferences().