Lines Matching defs:SplatMask
25479 SmallVector<int, 8> SplatMask(Shuf->getMask().begin(),
25481 for (int &Idx : SplatMask) {
25488 assert(SplatMask != Shuf->getMask() && "Expected mask to change!");
25490 Shuf->getOperand(1), SplatMask);
25505 ArrayRef<int> SplatMask = Splat->getMask();
25506 assert(ShufMask.size() == SplatMask.size() && "Mask length mismatch");
25512 // Examples for (shuffle (shuffle v, undef, SplatMask), undef, UserMask):
25513 // * UserMask=[0,2,u,u], SplatMask=[2,u,2,u] -> [2,2,u,u]
25517 // * UserMask=[0,u,2,u], SplatMask=[2,u,2,u] -> [2,u,2,u]
25518 // In this case the composition of masks yields SplatMask, so it's ok to
25520 // * UserMask=[3,u,2,u], SplatMask=[2,u,2,u] -> [u,u,2,u]
25521 // In this case the composed mask includes all undef elements of SplatMask
25525 ArrayRef<int> SplatMask) {
25527 if (UserMask[i] != -1 && SplatMask[i] == -1 &&
25528 SplatMask[UserMask[i]] != -1)
25532 if (CanSimplifyToExistingSplat(ShufMask, SplatMask))
25539 NewMask.push_back(Idx == -1 ? -1 : SplatMask[Idx]);