ΒΆvoid processShuffleMasks(
    ArrayRef<int> Mask,
    unsigned int NumOfSrcRegs,
    unsigned int NumOfDestRegs,
    unsigned int NumOfUsedRegs,
    function_ref<void()> NoInputAction,
    function_ref<void(ArrayRef<int>,
                      unsigned int,
                      unsigned int)>
        SingleInputAction,
    function_ref<void(ArrayRef<int>,
                      unsigned int,
                      unsigned int)>
        ManyInputsAction)

Description

Splits and processes shuffle mask depending on the number of input and output registers. The function does 2 main things: 1) splits the source/destination vectors into real registers; 2) do the mask analysis to identify which real registers are permuted. Then the function processes resulting registers mask using provided action items. If no input register is defined, \p NoInputAction action is used. If only 1 input register is used, \p SingleInputAction is used, otherwise \p ManyInputsAction is used to process > 2 input registers and masks.

Declared at: llvm/include/llvm/Analysis/VectorUtils.h:413

Parameters

ArrayRef<int> Mask
Original shuffle mask.
unsigned int NumOfSrcRegs
Number of source registers.
unsigned int NumOfDestRegs
Number of destination registers.
unsigned int NumOfUsedRegs
Number of actually used destination registers.
function_ref<void()> NoInputAction
function_ref<void(ArrayRef<int>, unsigned int, unsigned int)> SingleInputAction
function_ref<void(ArrayRef<int>, unsigned int, unsigned int)> ManyInputsAction