LLVM 22.0.0git
AArch64PerfectShuffle.h File Reference

Go to the source code of this file.

Namespaces

namespace  llvm
 This is an optimization pass for GlobalISel generic memory operations.

Functions

unsigned llvm::getPerfectShuffleCost (llvm::ArrayRef< int > M)
bool llvm::isZIPMask (ArrayRef< int > M, unsigned NumElts, unsigned &WhichResultOut)
 Return true for zip1 or zip2 masks of the form: <0, 8, 1, 9, 2, 10, 3, 11> or <4, 12, 5, 13, 6, 14, 7, 15>
bool llvm::isUZPMask (ArrayRef< int > M, unsigned NumElts, unsigned &WhichResultOut)
 Return true for uzp1 or uzp2 masks of the form: <0, 2, 4, 6, 8, 10, 12, 14> or <1, 3, 5, 7, 9, 11, 13, 15>
bool llvm::isTRNMask (ArrayRef< int > M, unsigned NumElts, unsigned &WhichResult)
 Return true for trn1 or trn2 masks of the form: <0, 8, 2, 10, 4, 12, 6, 14> or <1, 9, 3, 11, 5, 13, 7, 15>
bool llvm::isREVMask (ArrayRef< int > M, unsigned EltSize, unsigned NumElts, unsigned BlockSize)
 isREVMask - Check if a vector shuffle corresponds to a REV instruction with the specified blocksize.
std::optional< unsignedllvm::isDUPQMask (ArrayRef< int > Mask, unsigned Segments, unsigned SegmentSize)
 isDUPQMask - matches a splat of equivalent lanes within segments of a given number of elements.
bool llvm::isDUPFirstSegmentMask (ArrayRef< int > Mask, unsigned Segments, unsigned SegmentSize)
 isDUPFirstSegmentMask - matches a splat of the first 128b segment.

Variables

static const unsigned llvm::PerfectShuffleTable [6561+1]