Lines Matching defs:shuffle

5258 // check if an VEXT instruction can handle the shuffle mask when the
5259 // vector sources of the shuffle are the same.
5263 // Assume that the first shuffle index is not UNDEF. Fail if it is.
5269 // If this is a VEXT shuffle, the immediate value is the index of the first
5270 // element. The other shuffle indices must be the successive elements after
5294 // Assume that the first shuffle index is not UNDEF. Fail if it is.
5300 // If this is a VEXT shuffle, the immediate value is the index of the first
5301 // element. The other shuffle indices must be the successive elements after
5325 /// isVREVMask - Check if a vector shuffle corresponds to a VREV
5338 // If the first shuffle index is UNDEF, be optimistic.
5361 // Checks whether the shuffle mask represents a vector transpose (VTRN) by
5362 // checking that pairs of elements in the shuffle mask represent the same index
5364 // e.g. For v1,v2 of type v4i32 a valid shuffle mask is: [0, 4, 2, 6]
5373 // where v1/v2 and the shuffle masks have the same number of elements
5378 // where both results are returned in one vector and the shuffle mask has twice
5380 // want to check the low half and high half of the shuffle mask as if it were
5444 // Checks whether the shuffle mask represents a vector unzip (VUZP) by checking
5447 // e.g. For v1,v2 of type v4i32 a valid shuffle mask is: [0, 2, 4, 6]
5515 // Checks whether the shuffle mask represents a vector zip (VZIP) by checking
5518 // e.g. For v1,v2 of type v4i32 a valid shuffle mask is: [0, 4, 1, 5]
5586 /// Check if \p ShuffleMask is a NEON two-result shuffle (VZIP, VUZP, VTRN),
5813 SDValue shuffle = ReconstructShuffle(Op, DAG);
5814 if (shuffle != SDValue())
5815 return shuffle;
5836 // scalar_to_vector for the elements followed by a shuffle (provided the
5837 // shuffle is valid for the target) and materialization element by element
5855 // shuffle in combination with VEXTs.
5869 // be compatible with the shuffle we intend to construct. As a result
5892 // A shuffle can only come from building a vector from various
5932 // to construct a compatible shuffle either by concatenating it with UNDEF or
5950 // shuffle...
5994 // for the shuffle.
6005 // Final sanity check before we try to actually produce a shuffle.
6011 // The stars all align, our next step is to produce the mask for the shuffle.
6030 // This source is expected to fill ResMultiplier lanes of the final shuffle,
6074 // Compute the index in the perfect shuffle table.
6099 /// GeneratePerfectShuffle - Given an entry in the perfect-shuffle table, emit
6100 /// the specified operations to build the shuffle.
6138 default: llvm_unreachable("Unknown shuffle opcode!");
6297 // shuffle(concat(v1, undef), concat(v2, undef))
6299 // shuffle(concat(v1, v2), undef)
6306 // shuffle(concat(v1, v2), undef)
6318 }) && "Unexpected shuffle index into UNDEF operand!");
6325 "In-place shuffle of concat can only have one result!");
6334 // If the shuffle is not directly supported and it has 4 elements, use
6346 // Compute the index in the perfect shuffle table.
9841 // The LLVM shufflevector instruction does not require the shuffle mask
9849 // shuffle(concat(v1, undef), concat(v2, undef)) ->
9850 // shuffle(concat(v1, v2), undef)
9872 // Translate the shuffle mask.
10241 // Optimize trunc store (of multiple scalars) to shuffle and store. First,
10265 // Create a type on which we perform the shuffle.
10278 // Can't shuffle using an illegal type.
12569 /// %v0 = shuffle %wide.vec, undef, <0, 2, 4, 6> ; Extract even elements
12570 /// %v1 = shuffle %wide.vec, undef, <1, 3, 5, 7> ; Extract odd elements
12652 /// %i.vec = shuffle <8 x i32> %v0, <8 x i32> %v1,
12657 /// %sub.v0 = shuffle <8 x i32> %v0, <8 x i32> v1, <0, 1, 2, 3>
12658 /// %sub.v1 = shuffle <8 x i32> %v0, <8 x i32> v1, <4, 5, 6, 7>
12659 /// %sub.v2 = shuffle <8 x i32> %v0, <8 x i32> v1, <8, 9, 10, 11>