LLVM  6.0.0svn
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/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 212 of file HexagonShuffler.cpp.

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

Typedef Documentation

◆ HVXInstsT

using HVXInstsT = SmallVector<struct CVIUnits, 8>

Definition at line 160 of file HexagonShuffler.cpp.

Function Documentation

◆ checkHVXPipes()

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

◆ makeAllBits()

static unsigned makeAllBits ( unsigned  startBit,
unsigned  Lanes 
)
static

Definition at line 162 of file HexagonShuffler.cpp.

Referenced by checkHVXPipes().

Variable Documentation

◆ first

unsigned first

Definition at line 209 of file HexagonShuffler.cpp.

Referenced by addAndInterleaveWithUnsupported(), llvm::PassManagerBuilder::addExtension(), llvm::ModuleSummaryIndex::addModule(), AnalyzeReturnValues(), llvm::LiveRangeCalc::calculateValues(), callsiteIsHot(), CC_Lanai32_VarArg(), llvm::ARMTargetLowering::CCAssignFnForReturn(), llvm::HexagonShuffler::check(), CleanupPointerRootUsers(), llvm::iplist_impl< simple_ilist< MachineInstr, Options... >, ilist_traits< MachineInstr > >::clearAndLeakNodesUnsafely(), CloneLoop(), CollectSubexprs(), ContainsReg(), ConvertTwoCaseSwitch(), llvm::createMergeFunctionsPass(), createPHIsForCMOVsInSinkBB(), createVirtualRegs(), CriticalPathStep(), demangle(), llvm::GVNExpression::Expression::dump(), llvm::Loop::dumpVerbose(), llvm::StringMatcher::Emit(), llvm::MachineRegisterInfo::EmitLiveInCopies(), emitSignedInt64(), EqualityPropUnSafe(), ExpandBVWithShuffles(), llvm::pdb::HashTable::find(), FindFirstNonCommonLetter(), 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(), inlineCallsImpl(), InlineHistoryIncludes(), llvm::iplist_impl< simple_ilist< MachineInstr, Options... >, ilist_traits< MachineInstr > >::insert(), isDbgValueDescribedByReg(), isDebug(), 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(), mergeConstants(), llvm::DebugLocEntry::MergeValues(), llvm::LegalizerInfo::moreToWiderTypesAndLessToWidest(), llvm::safestack::operator<<(), llvm::PPCInstrInfo::optimizeCompareInstr(), llvm::ARMBaseInstrInfo::optimizeCompareInstr(), p_bre(), p_ere(), parse_alignof_expr(), parse_alignof_type(), parse_array_type(), parse_arrow_expr(), parse_base_unresolved_name(), parse_binary_expression(), parse_block_invoke(), parse_builtin_type(), parse_call_expr(), parse_call_offset(), parse_const_cast_expr(), parse_conversion_expr(), parse_ctor_dtor_name(), parse_cv_qualifiers(), parse_decltype(), parse_destructor_name(), parse_discriminator(), parse_dot_expr(), parse_dot_star_expr(), parse_dot_suffix(), parse_dynamic_cast_expr(), parse_encoding(), parse_expr_primary(), parse_expression(), parse_floating_number(), parse_function_param(), parse_function_type(), parse_integer_literal(), parse_local_name(), parse_name(), parse_nested_name(), parse_new_expr(), parse_noexcept_expression(), parse_number(), parse_operator_name(), parse_pack_expansion(), parse_pointer_to_member_type(), parse_prefix_expression(), parse_reinterpret_cast_expr(), parse_simple_id(), parse_sizeof_expr_expr(), parse_sizeof_function_param_pack_expr(), parse_sizeof_param_pack_expr(), parse_sizeof_type_expr(), parse_source_name(), parse_special_name(), parse_static_cast_expr(), parse_substitution(), parse_template_arg(), parse_template_args(), parse_template_param(), parse_throw_expr(), parse_type(), parse_typeid_expr(), parse_unnamed_type_name(), parse_unqualified_name(), parse_unresolved_name(), parse_unresolved_type(), parse_unscoped_name(), parse_vector_type(), predictValueUseListOrderImpl(), PrepareCall(), llvm::ValueEnumerator::print(), llvm::AVROperand::print(), llvm::TargetRegistry::printRegisteredTargetsForVersion(), llvm::ModuleSymbolTable::printSymbolName(), PropagateConstantsIntoArguments(), readWideAPInt(), llvm::cl::ResetAllOptionOccurrences(), llvm::ARMFrameLowering::ResolveFrameIndexReference(), llvm::DAGTypeLegalizer::run(), llvm::GCNScheduleDAGMILive::schedule(), llvm::SelectionDAGISel::SelectCodeCommon(), llvm::FunctionLoweringInfo::set(), 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(), stripRegisterPrefix(), llvm::IntervalMapImpl::BranchNode< KeyT, ValT, RootBranchCap, Traits >::subtree(), llvm::SymbolTableListTraits< Instruction >::transferNodesFromList(), llvm::SelectionDAGBuilder::UpdateSplitBlock(), widen_1(), widen_16(), widen_1_8(), widen_1_8_16(), widen_1_8_16_32(), widen_1_8_16_narrowToLargest(), widen_1_narrow_128_ToLargest(), and widen_8_16().

◆ jumpSlots

struct { ... } jumpSlots[]

◆ second

unsigned second

Definition at line 210 of file HexagonShuffler.cpp.

Referenced by llvm::ModuleSummaryIndex::addGlobalValueSummary(), analyzeLoopUnrollCost(), AnalyzeReturnValues(), AntiDepEdges(), llvm::msf::MSFBuilder::build(), buildClonedLoops(), llvm::LazyCallGraph::buildRefSCCs(), callsiteIsHot(), CC_Lanai32_VarArg(), llvm::ARMTargetLowering::CCAssignFnForReturn(), llvm::HexagonShuffler::check(), llvm::MachineRegisterInfo::clearVirtRegs(), llvm::FunctionComparator::compare(), computeDomSubtreeCost(), llvm::rdf::Liveness::computePhiInfo(), ContainsReg(), ConvertTwoCaseSwitch(), createPHIsForCMOVsInSinkBB(), llvm::MDBuilder::createTBAAStructTypeNode(), createVirtualRegs(), llvm::LegalizerInfo::decreaseToSmallerTypesAndIncreaseToSmallest(), demangle(), llvm::MachineRegisterInfo::EmitLiveInCopies(), emitRemovedIntrinsicError(), llvm::HexagonBlockRanges::IndexRange::end(), ExpandBVWithShuffles(), llvm::CodeExtractor::extractCodeRegion(), findBaseOffset(), llvm::FunctionComparator::functionHash(), generateEquivalentSub(), GetConstantInt(), getInputChainForNode(), getMOVL(), llvm::AArch64InstrInfo::getOutlininingCandidateInfo(), llvm::X86InstrInfo::getOutlininingCandidateInfo(), getReassignedChan(), llvm::detail::DenseMapPair< unsigned, unsigned >::getSecond(), getSuccPad(), llvm::ModuleSymbolTable::getSymbolFlags(), llvm::ARCTargetLowering::getTargetNodeName(), llvm::StringMapEntry< llvm::Comdat >::getValue(), llvm::HexagonCVIResource::HexagonCVIResource(), llvm::GISelWorkList< N >::insert(), llvm::AnalysisManager< IRUnitT, ExtraArgTs >::invalidate(), isDbgValueDescribedByReg(), isDebug(), isOnlyReachableViaThisEdge(), llvm::HexagonMCInstrInfo::isOrderedDuplexPair(), llvm::LazyCallGraph::LazyCallGraph(), LookForIdenticalPHI(), llvm::HexagonTargetLowering::LowerCall(), llvm::SystemZTargetLowering::LowerCall(), llvm::SparcTargetLowering::LowerCall_32(), llvm::SparcTargetLowering::LowerCall_64(), LowerCallResult(), maybePrintComdat(), mergeConstants(), llvm::LegalizerInfo::moreToWiderTypesAndLessToWidest(), PrepareCall(), printFPOReg(), llvm::cl::PrintOptionValues(), llvm::TargetRegistry::printRegisteredTargetsForVersion(), PropagateConstantsIntoArguments(), propagateSwiftErrorVRegs(), regOverlapsSet(), llvm::DemandedBitsWrapperPass::releaseMemory(), llvm::CallGraphNode::removeAnyCallEdgeTo(), RemoveUnusedGlue(), llvm::cl::ResetAllOptionOccurrences(), llvm::ARMFrameLowering::ResolveFrameIndexReference(), llvm::TypeFinder::run(), llvm::GCNScheduleDAGMILive::schedule(), llvm::SelectionDAGISel::SelectCodeCommon(), selectI64Imm(), sortSubCommands(), llvm::IntervalMapImpl::BranchNode< KeyT, ValT, RootBranchCap, Traits >::stop(), llvm::DWARFUnit::updateAddressDieMap(), llvm::IntervalMapImpl::LeafNode< KeyT, ValT, N, Traits >::value(), llvm::ValueEnumerator::ValueEnumerator(), llvm::slpvectorizer::BoUpSLP::vectorizeTree(), llvm::MemorySSA::CachingWalker::verify(), llvm::sroa::AllocaSliceRewriter::visit(), and llvm::LazyCallGraph::visitReferences().