Lines Matching defs:ShuffleMask
7554 /// Check if \p ShuffleMask is a NEON two-result shuffle (VZIP, VUZP, VTRN),
7556 static unsigned isNEONTwoResultShuffleMask(ArrayRef<int> ShuffleMask, EVT VT,
7560 if (isVTRNMask(ShuffleMask, VT, WhichResult))
7562 if (isVUZPMask(ShuffleMask, VT, WhichResult))
7564 if (isVZIPMask(ShuffleMask, VT, WhichResult))
7568 if (isVTRN_v_undef_Mask(ShuffleMask, VT, WhichResult))
7570 if (isVUZP_v_undef_Mask(ShuffleMask, VT, WhichResult))
7572 if (isVZIP_v_undef_Mask(ShuffleMask, VT, WhichResult))
8536 ArrayRef<int> ShuffleMask,
8544 for (int I : ShuffleMask)
8628 ArrayRef<int> ShuffleMask = SVN->getMask();
8636 if (isReverseMask(ShuffleMask, VT)) {
8661 PredAsVector2, ShuffleMask);
8677 ArrayRef<int> ShuffleMask,
8696 auto getMovIdx = [](ArrayRef<int> ShuffleMask, int Start, int Length) {
8700 if (ShuffleMask[Start + i] >= 0) {
8701 if (ShuffleMask[Start + i] % Length != i)
8703 MovIdx = ShuffleMask[Start + i] / Length;
8712 if (ShuffleMask[Start + i] >= 0 &&
8713 (ShuffleMask[Start + i] / Length != MovIdx ||
8714 ShuffleMask[Start + i] % Length != i))
8722 int Elt = getMovIdx(ShuffleMask, Part * QuarterSize, QuarterSize);
8746 Parts[Part] ? -1 : ShuffleMask[Part * QuarterSize + i]);
8763 ArrayRef<int> ShuffleMask,
8794 if (isOneOffIdentityMask(ShuffleMask, VT, 0, OffElement))
8796 else if (isOneOffIdentityMask(ShuffleMask, VT, NumElts, OffElement))
8807 ShuffleMask[OffElement] < (int)NumElts ? V1 : V2,
8808 DAG.getVectorIdxConstant(ShuffleMask[OffElement] % NumElts, dl));
8831 ArrayRef<int> ShuffleMask = SVN->getMask();
8863 if (ST->hasNEON() && isVEXTMask(ShuffleMask, VT, ReverseVEXT, Imm)) {
8870 if (isVREVMask(ShuffleMask, VT, 64))
8872 if (isVREVMask(ShuffleMask, VT, 32))
8874 if (isVREVMask(ShuffleMask, VT, 16))
8877 if (ST->hasNEON() && V2->isUndef() && isSingletonVEXTMask(ShuffleMask, VT, Imm)) {
8891 ShuffleMask, VT, WhichResult, isV_UNDEF)) {
8899 if (isVMOVNMask(ShuffleMask, VT, false, false))
8902 if (isVMOVNMask(ShuffleMask, VT, true, false))
8905 if (isVMOVNMask(ShuffleMask, VT, true, true))
8931 assert(llvm::all_of(ShuffleMask, [&](int i) {
8936 ShuffleMask, SubVT, WhichResult, isV_UNDEF)) {
8950 if (SDValue V = LowerVECTOR_SHUFFLEUsingOneOff(Op, ShuffleMask, DAG))
8955 if (isTruncMask(ShuffleMask, VT, Top, SingleSource)) {
8957 MVT FromVT = MVT::getVectorVT(FromSVT, ShuffleMask.size() / 2);
8978 if (ShuffleMask[i] < 0)
8981 PFIndexes[i] = ShuffleMask[i];
9014 if (ShuffleMask[i] < 0)
9018 ShuffleMask[i] < (int)NumElts ? V1 : V2,
9019 DAG.getConstant(ShuffleMask[i] & (NumElts-1),
9027 isReverseMask(ShuffleMask, VT))
9031 if (SDValue NewOp = LowerVECTOR_SHUFFLEv8i8(Op, ShuffleMask, DAG))
9035 if (SDValue NewOp = LowerVECTOR_SHUFFLEUsingMovs(Op, ShuffleMask, DAG))