ΒΆ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)
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