Lines Matching refs:Mask
362 FPClassTest Mask = Attrs.getRetNoFPClass(); in getRetNoFPClass() local
365 Mask |= F->getAttributes().getRetNoFPClass(); in getRetNoFPClass()
366 return Mask; in getRetNoFPClass()
370 FPClassTest Mask = Attrs.getParamNoFPClass(i); in getParamNoFPClass() local
373 Mask |= F->getAttributes().getParamNoFPClass(i); in getParamNoFPClass()
374 return Mask; in getParamNoFPClass()
1920 ShuffleVectorInst::ShuffleVectorInst(Value *V1, Value *Mask, const Twine &Name, in ShuffleVectorInst() argument
1922 : ShuffleVectorInst(V1, createPlaceholderForShuffleVector(V1), Mask, Name, in ShuffleVectorInst()
1925 ShuffleVectorInst::ShuffleVectorInst(Value *V1, Value *Mask, const Twine &Name, in ShuffleVectorInst() argument
1927 : ShuffleVectorInst(V1, createPlaceholderForShuffleVector(V1), Mask, Name, in ShuffleVectorInst()
1930 ShuffleVectorInst::ShuffleVectorInst(Value *V1, ArrayRef<int> Mask, in ShuffleVectorInst() argument
1933 : ShuffleVectorInst(V1, createPlaceholderForShuffleVector(V1), Mask, Name, in ShuffleVectorInst()
1936 ShuffleVectorInst::ShuffleVectorInst(Value *V1, ArrayRef<int> Mask, in ShuffleVectorInst() argument
1938 : ShuffleVectorInst(V1, createPlaceholderForShuffleVector(V1), Mask, Name, in ShuffleVectorInst()
1941 ShuffleVectorInst::ShuffleVectorInst(Value *V1, Value *V2, Value *Mask, in ShuffleVectorInst() argument
1946 cast<VectorType>(Mask->getType())->getElementCount()), in ShuffleVectorInst()
1949 assert(isValidOperands(V1, V2, Mask) && in ShuffleVectorInst()
1955 getShuffleMask(cast<Constant>(Mask), MaskArr); in ShuffleVectorInst()
1960 ShuffleVectorInst::ShuffleVectorInst(Value *V1, Value *V2, Value *Mask, in ShuffleVectorInst() argument
1964 cast<VectorType>(Mask->getType())->getElementCount()), in ShuffleVectorInst()
1967 assert(isValidOperands(V1, V2, Mask) && in ShuffleVectorInst()
1973 getShuffleMask(cast<Constant>(Mask), MaskArr); in ShuffleVectorInst()
1978 ShuffleVectorInst::ShuffleVectorInst(Value *V1, Value *V2, ArrayRef<int> Mask, in ShuffleVectorInst() argument
1983 Mask.size(), isa<ScalableVectorType>(V1->getType())), in ShuffleVectorInst()
1986 assert(isValidOperands(V1, V2, Mask) && in ShuffleVectorInst()
1990 setShuffleMask(Mask); in ShuffleVectorInst()
1994 ShuffleVectorInst::ShuffleVectorInst(Value *V1, Value *V2, ArrayRef<int> Mask, in ShuffleVectorInst() argument
1998 Mask.size(), isa<ScalableVectorType>(V1->getType())), in ShuffleVectorInst()
2001 assert(isValidOperands(V1, V2, Mask) && in ShuffleVectorInst()
2006 setShuffleMask(Mask); in ShuffleVectorInst()
2029 ArrayRef<int> Mask) { in isValidOperands() argument
2037 for (int Elem : Mask) in isValidOperands()
2042 if ((Mask[0] != 0 && Mask[0] != PoisonMaskElem) || !all_equal(Mask)) in isValidOperands()
2049 const Value *Mask) { in isValidOperands() argument
2056 auto *MaskTy = dyn_cast<VectorType>(Mask->getType()); in isValidOperands()
2062 if (isa<UndefValue>(Mask) || isa<ConstantAggregateZero>(Mask)) in isValidOperands()
2065 if (const auto *MV = dyn_cast<ConstantVector>(Mask)) { in isValidOperands()
2078 if (const auto *CDS = dyn_cast<ConstantDataSequential>(Mask)) { in isValidOperands()
2090 void ShuffleVectorInst::getShuffleMask(const Constant *Mask, in getShuffleMask() argument
2092 ElementCount EC = cast<VectorType>(Mask->getType())->getElementCount(); in getShuffleMask()
2094 if (isa<ConstantAggregateZero>(Mask)) { in getShuffleMask()
2102 assert((isa<ConstantAggregateZero>(Mask) || isa<UndefValue>(Mask)) && in getShuffleMask()
2104 int MaskVal = isa<UndefValue>(Mask) ? -1 : 0; in getShuffleMask()
2112 if (auto *CDS = dyn_cast<ConstantDataSequential>(Mask)) { in getShuffleMask()
2118 Constant *C = Mask->getAggregateElement(i); in getShuffleMask()
2124 void ShuffleVectorInst::setShuffleMask(ArrayRef<int> Mask) { in setShuffleMask() argument
2125 ShuffleMask.assign(Mask.begin(), Mask.end()); in setShuffleMask()
2126 ShuffleMaskForBitcode = convertShuffleMaskForBitcode(Mask, getType()); in setShuffleMask()
2129 Constant *ShuffleVectorInst::convertShuffleMaskForBitcode(ArrayRef<int> Mask, in convertShuffleMaskForBitcode() argument
2133 assert(all_equal(Mask) && "Unexpected shuffle"); in convertShuffleMaskForBitcode()
2134 Type *VecTy = VectorType::get(Int32Ty, Mask.size(), true); in convertShuffleMaskForBitcode()
2135 if (Mask[0] == 0) in convertShuffleMaskForBitcode()
2140 for (int Elem : Mask) { in convertShuffleMaskForBitcode()
2149 static bool isSingleSourceMaskImpl(ArrayRef<int> Mask, int NumOpElts) { in isSingleSourceMaskImpl() argument
2150 assert(!Mask.empty() && "Shuffle mask must contain elements"); in isSingleSourceMaskImpl()
2153 for (int I : Mask) { in isSingleSourceMaskImpl()
2167 bool ShuffleVectorInst::isSingleSourceMask(ArrayRef<int> Mask, int NumSrcElts) { in isSingleSourceMask() argument
2170 return isSingleSourceMaskImpl(Mask, NumSrcElts); in isSingleSourceMask()
2173 static bool isIdentityMaskImpl(ArrayRef<int> Mask, int NumOpElts) { in isIdentityMaskImpl() argument
2174 if (!isSingleSourceMaskImpl(Mask, NumOpElts)) in isIdentityMaskImpl()
2176 for (int i = 0, NumMaskElts = Mask.size(); i < NumMaskElts; ++i) { in isIdentityMaskImpl()
2177 if (Mask[i] == -1) in isIdentityMaskImpl()
2179 if (Mask[i] != i && Mask[i] != (NumOpElts + i)) in isIdentityMaskImpl()
2185 bool ShuffleVectorInst::isIdentityMask(ArrayRef<int> Mask, int NumSrcElts) { in isIdentityMask() argument
2186 if (Mask.size() != static_cast<unsigned>(NumSrcElts)) in isIdentityMask()
2190 return isIdentityMaskImpl(Mask, NumSrcElts); in isIdentityMask()
2193 bool ShuffleVectorInst::isReverseMask(ArrayRef<int> Mask, int NumSrcElts) { in isReverseMask() argument
2194 if (Mask.size() != static_cast<unsigned>(NumSrcElts)) in isReverseMask()
2196 if (!isSingleSourceMask(Mask, NumSrcElts)) in isReverseMask()
2203 for (int I = 0, E = Mask.size(); I < E; ++I) { in isReverseMask()
2204 if (Mask[I] == -1) in isReverseMask()
2206 if (Mask[I] != (NumSrcElts - 1 - I) && in isReverseMask()
2207 Mask[I] != (NumSrcElts + NumSrcElts - 1 - I)) in isReverseMask()
2213 bool ShuffleVectorInst::isZeroEltSplatMask(ArrayRef<int> Mask, int NumSrcElts) { in isZeroEltSplatMask() argument
2214 if (Mask.size() != static_cast<unsigned>(NumSrcElts)) in isZeroEltSplatMask()
2216 if (!isSingleSourceMask(Mask, NumSrcElts)) in isZeroEltSplatMask()
2218 for (int I = 0, E = Mask.size(); I < E; ++I) { in isZeroEltSplatMask()
2219 if (Mask[I] == -1) in isZeroEltSplatMask()
2221 if (Mask[I] != 0 && Mask[I] != NumSrcElts) in isZeroEltSplatMask()
2227 bool ShuffleVectorInst::isSelectMask(ArrayRef<int> Mask, int NumSrcElts) { in isSelectMask() argument
2228 if (Mask.size() != static_cast<unsigned>(NumSrcElts)) in isSelectMask()
2231 if (isSingleSourceMask(Mask, NumSrcElts)) in isSelectMask()
2233 for (int I = 0, E = Mask.size(); I < E; ++I) { in isSelectMask()
2234 if (Mask[I] == -1) in isSelectMask()
2236 if (Mask[I] != I && Mask[I] != (NumSrcElts + I)) in isSelectMask()
2242 bool ShuffleVectorInst::isTransposeMask(ArrayRef<int> Mask, int NumSrcElts) { in isTransposeMask() argument
2249 if (Mask.size() != static_cast<unsigned>(NumSrcElts)) in isTransposeMask()
2252 int Sz = Mask.size(); in isTransposeMask()
2257 if (Mask[0] != 0 && Mask[0] != 1) in isTransposeMask()
2262 if ((Mask[1] - Mask[0]) != NumSrcElts) in isTransposeMask()
2268 int MaskEltVal = Mask[I]; in isTransposeMask()
2271 int MaskEltPrevVal = Mask[I - 2]; in isTransposeMask()
2278 bool ShuffleVectorInst::isSpliceMask(ArrayRef<int> Mask, int NumSrcElts, in isSpliceMask() argument
2280 if (Mask.size() != static_cast<unsigned>(NumSrcElts)) in isSpliceMask()
2284 for (int I = 0, E = Mask.size(); I != E; ++I) { in isSpliceMask()
2285 int MaskEltVal = Mask[I]; in isSpliceMask()
2312 bool ShuffleVectorInst::isExtractSubvectorMask(ArrayRef<int> Mask, in isExtractSubvectorMask() argument
2315 if (!isSingleSourceMaskImpl(Mask, NumSrcElts)) in isExtractSubvectorMask()
2319 if (NumSrcElts <= (int)Mask.size()) in isExtractSubvectorMask()
2324 for (int i = 0, e = Mask.size(); i != e; ++i) { in isExtractSubvectorMask()
2325 int M = Mask[i]; in isExtractSubvectorMask()
2334 if (0 <= SubIndex && SubIndex + (int)Mask.size() <= NumSrcElts) { in isExtractSubvectorMask()
2341 bool ShuffleVectorInst::isInsertSubvectorMask(ArrayRef<int> Mask, in isInsertSubvectorMask() argument
2344 int NumMaskElts = Mask.size(); in isInsertSubvectorMask()
2351 if (isSingleSourceMaskImpl(Mask, NumSrcElts)) in isInsertSubvectorMask()
2362 int M = Mask[i]; in isInsertSubvectorMask()
2391 ArrayRef<int> Sub1Mask = Mask.slice(Src1Lo, NumSub1Elts); in isInsertSubvectorMask()
2403 ArrayRef<int> Sub0Mask = Mask.slice(Src0Lo, NumSub0Elts); in isInsertSubvectorMask()
2426 ArrayRef<int> Mask = getShuffleMask(); in isIdentityWithPadding() local
2427 if (!isIdentityMaskImpl(Mask, NumOpElts)) in isIdentityWithPadding()
2432 if (Mask[i] != -1) in isIdentityWithPadding()
2474 static bool isReplicationMaskWithParams(ArrayRef<int> Mask, in isReplicationMaskWithParams() argument
2476 assert(Mask.size() == (unsigned)ReplicationFactor * VF && in isReplicationMaskWithParams()
2480 ArrayRef<int> CurrSubMask = Mask.take_front(ReplicationFactor); in isReplicationMaskWithParams()
2483 Mask = Mask.drop_front(ReplicationFactor); in isReplicationMaskWithParams()
2489 assert(Mask.empty() && "Did not consume the whole mask?"); in isReplicationMaskWithParams()
2494 bool ShuffleVectorInst::isReplicationMask(ArrayRef<int> Mask, in isReplicationMask() argument
2497 if (!llvm::is_contained(Mask, PoisonMaskElem)) { in isReplicationMask()
2499 Mask.take_while([](int MaskElt) { return MaskElt == 0; }).size(); in isReplicationMask()
2500 if (ReplicationFactor == 0 || Mask.size() % ReplicationFactor != 0) in isReplicationMask()
2502 VF = Mask.size() / ReplicationFactor; in isReplicationMask()
2503 return isReplicationMaskWithParams(Mask, ReplicationFactor, VF); in isReplicationMask()
2514 for (int MaskElt : Mask) { in isReplicationMask()
2525 reverse(seq_inclusive<unsigned>(1, Mask.size()))) { in isReplicationMask()
2526 if (Mask.size() % PossibleReplicationFactor != 0) in isReplicationMask()
2528 int PossibleVF = Mask.size() / PossibleReplicationFactor; in isReplicationMask()
2529 if (!isReplicationMaskWithParams(Mask, PossibleReplicationFactor, in isReplicationMask()
2555 bool ShuffleVectorInst::isOneUseSingleSourceMask(ArrayRef<int> Mask, int VF) { in isOneUseSingleSourceMask() argument
2556 if (VF <= 0 || Mask.size() < static_cast<unsigned>(VF) || in isOneUseSingleSourceMask()
2557 Mask.size() % VF != 0) in isOneUseSingleSourceMask()
2559 for (unsigned K = 0, Sz = Mask.size(); K < Sz; K += VF) { in isOneUseSingleSourceMask()
2560 ArrayRef<int> SubMask = Mask.slice(K, VF); in isOneUseSingleSourceMask()
2598 ArrayRef<int> Mask, unsigned Factor, unsigned NumInputElts, in isInterleaveMask() argument
2600 unsigned NumElts = Mask.size(); in isInterleaveMask()
2623 int LaneValue = Mask[Lane]; in isInterleaveMask()
2624 int NextLaneValue = Mask[NextLane]; in isInterleaveMask()
2654 if (Mask[I] >= 0) { in isInterleaveMask()
2656 StartMask = Mask[I]; in isInterleaveMask()
2657 } else if (Mask[(LaneLen - 1) * Factor + I] >= 0) { in isInterleaveMask()
2659 StartMask = Mask[(LaneLen - 1) * Factor + I] - J; in isInterleaveMask()
2682 static int matchShuffleAsBitRotate(ArrayRef<int> Mask, int NumSubElts) { in matchShuffleAsBitRotate() argument
2683 int NumElts = Mask.size(); in matchShuffleAsBitRotate()
2689 int M = Mask[i + j]; in matchShuffleAsBitRotate()
2704 ArrayRef<int> Mask, unsigned EltSizeInBits, unsigned MinSubElts, in isBitRotateMask() argument
2707 int EltRotateAmt = matchShuffleAsBitRotate(Mask, NumSubElts); in isBitRotateMask()