LLVM 23.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.