llvm::createInterleaveMask

Create an interleave shuffle mask.

Synopsis

Declared in <llvm/Analysis/VectorUtils.h>

llvm::SmallVector<int, 16>
createInterleaveMask(
    unsigned int VF,
    unsigned int NumVecs);

Description

This function creates a shuffle mask for interleaving NumVecs vectors of vectorization factor VF into a single wide vector. The mask is of the form:

<0, VF, VF * 2, ..., VF * (NumVecs - 1), 1, VF + 1, VF * 2 + 1, ...>

For example, the mask for VF = 4 and NumVecs = 2 is:

<0, 4, 1, 5, 2, 6, 3, 7>.

Return Value

An interleave shuffle mask for NumVecs vectors of factor VF.

Parameters

NameDescription
VFVectorization factor of each input vector.
NumVecsNumber of vectors to interleave.