LLVM 24.0.0git
SVEShuffleOpts.cpp File Reference

Go to the source code of this file.

Macros

#define DEBUG_TYPE   "aarch64-sve-shuffle-opts"

Typedefs

using DeinterleaveMap = SmallDenseMap<CallInst *, std::array<CastInst *, 4>>
 A mapping between a vector_deinterleaveN intrinsic and extending cast instructions used on the resulting subvectors.

Functions

static void evaluateDeinterleave (IntrinsicInst *I, DeinterleaveMap &Candidates, Loop &L, const AArch64TargetLowering &TL, const DataLayout DL)
 Evaluate a deinterleave and see what the uses are.
static void optimizeSVEDeinterleavedExtends (DeinterleaveMap Deinterleaves)
 Given a map of deinterleaves to zext or uitofp casts, remove the operations and replace them with tbl shuffles.
static bool processLoop (Loop &L, const AArch64Subtarget &ST, DataLayout DL)

Variables

static const charname = "SVE Shuffle Optimizations"

Macro Definition Documentation

◆ DEBUG_TYPE

#define DEBUG_TYPE   "aarch64-sve-shuffle-opts"

Definition at line 92 of file SVEShuffleOpts.cpp.

Typedef Documentation

◆ DeinterleaveMap

using DeinterleaveMap = SmallDenseMap<CallInst *, std::array<CastInst *, 4>>

A mapping between a vector_deinterleaveN intrinsic and extending cast instructions used on the resulting subvectors.

Definition at line 96 of file SVEShuffleOpts.cpp.

Function Documentation

◆ evaluateDeinterleave()

void evaluateDeinterleave ( IntrinsicInst * I,
DeinterleaveMap & Candidates,
Loop & L,
const AArch64TargetLowering & TL,
const DataLayout DL )
static

◆ optimizeSVEDeinterleavedExtends()

void optimizeSVEDeinterleavedExtends ( DeinterleaveMap Deinterleaves)
static

Given a map of deinterleaves to zext or uitofp casts, remove the operations and replace them with tbl shuffles.

Definition at line 160 of file SVEShuffleOpts.cpp.

References llvm::cast(), llvm::dbgs(), llvm::Deinterleave, llvm::enumerate(), llvm::APInt::getAllOnes(), llvm::VectorType::getInteger(), llvm::Invalid, llvm::isa(), LLVM_DEBUG, llvm::make_early_inc_range(), and Widen().

Referenced by processLoop().

◆ processLoop()

Variable Documentation

◆ name

const char* name = "SVE Shuffle Optimizations"
static

Definition at line 269 of file SVEShuffleOpts.cpp.

Referenced by _rpmalloc_set_name(), llvm::object::applyNameType(), llvm::LTOCodeGenerator::compileOptimized(), llvm::pdb::DIARawSymbol::dump(), llvm::OutputCategoryAggregator::EnumerateDetailedResultsFor(), llvm::gsym::OutputAggregator::EnumerateResults(), llvm::OutputCategoryAggregator::EnumerateResults(), llvm::Mips16HardFloatInfo::findFuncSignature(), llvm::object::Archive::findSym(), llvm::cl::generic_parser_base::GenericOptionInfo::GenericOptionInfo(), get_amd_kernel_code_t_FieldIndex(), llvm::sys::Process::GetEnv(), llvm::object::COFFImportFile::getExportName(), llvm::orc::GetGnuHashSection(), is64Bit(), llvm::MCAsmBackend::isDarwinCanonicalPersonality(), llvm::XtensaTargetLowering::LowerCall(), lto_codegen_compile_to_file(), llvm::LTOModule::makeBuffer(), llvm::sys::fs::mapped_file_region::mapped_file_region(), llvm::MCGenDwarfLabelEntry::MCGenDwarfLabelEntry(), llvm::gsym::OutputAggregator::Merge(), llvm::cl::parser< DataType >::OptionInfo::OptionInfo(), llvm::Sparc::parseDataSpecifier(), llvm::orc::parseMachODeps(), llvm::AArch64::parsePercentSpecifierName(), llvm::LoongArch::parseSpecifier(), llvm::Sparc::parseSpecifier(), llvm::Xtensa::parseSpecifier(), llvm::RISCV::parseSpecifierName(), llvm::ELFCompactAttrParser::parseStringAttribute(), llvm::PassInfo::PassInfo(), llvm::LiveDebugValuesPass::printPipeline(), llvm::MachineBlockPlacementPass::printPipeline(), llvm::MachineSinkingPass::printPipeline(), llvm::ReadyQueue::ReadyQueue(), llvm::SectionEntry::SectionEntry(), thinlto_codegen_add_cross_referenced_symbol(), thinlto_codegen_add_must_preserve_symbol(), llvm::dwarf::toDW_LANG(), and llvm::LTOModule::~LTOModule().