• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /freebsd-12-stable/contrib/llvm-project/llvm/lib/Target/ARM/

Lines Matching refs:shuffle

6677 // check if an VEXT instruction can handle the shuffle mask when the
6678 // vector sources of the shuffle are the same.
6682 // Assume that the first shuffle index is not UNDEF. Fail if it is.
6688 // If this is a VEXT shuffle, the immediate value is the index of the first
6689 // element. The other shuffle indices must be the successive elements after
6712 // Assume that the first shuffle index is not UNDEF. Fail if it is.
6718 // If this is a VEXT shuffle, the immediate value is the index of the first
6719 // element. The other shuffle indices must be the successive elements after
6743 /// isVREVMask - Check if a vector shuffle corresponds to a VREV
6756 // If the first shuffle index is UNDEF, be optimistic.
6786 // Checks whether the shuffle mask represents a vector transpose (VTRN) by
6787 // checking that pairs of elements in the shuffle mask represent the same index
6789 // e.g. For v1,v2 of type v4i32 a valid shuffle mask is: [0, 4, 2, 6]
6798 // where v1/v2 and the shuffle masks have the same number of elements
6803 // where both results are returned in one vector and the shuffle mask has twice
6805 // want to check the low half and high half of the shuffle mask as if it were
6863 // Checks whether the shuffle mask represents a vector unzip (VUZP) by checking
6866 // e.g. For v1,v2 of type v4i32 a valid shuffle mask is: [0, 2, 4, 6]
6934 // Checks whether the shuffle mask represents a vector zip (VZIP) by checking
6937 // e.g. For v1,v2 of type v4i32 a valid shuffle mask is: [0, 4, 1, 5]
7005 /// Check if \p ShuffleMask is a NEON two-result shuffle (VZIP, VUZP, VTRN),
7326 SDValue shuffle = ReconstructShuffle(Op, DAG);
7327 if (shuffle != SDValue())
7328 return shuffle;
7367 // scalar_to_vector for the elements followed by a shuffle (provided the
7368 // shuffle is valid for the target) and materialization element by element
7386 // shuffle in combination with VEXTs.
7400 // be compatible with the shuffle we intend to construct. As a result
7422 // A shuffle can only come from building a vector from various
7462 // to construct a compatible shuffle either by concatenating it with UNDEF or
7480 // shuffle...
7524 // for the shuffle.
7535 // Final sanity check before we try to actually produce a shuffle.
7540 // The stars all align, our next step is to produce the mask for the shuffle.
7559 // This source is expected to fill ResMultiplier lanes of the final shuffle,
7632 // Compute the index in the perfect shuffle table.
7668 /// GeneratePerfectShuffle - Given an entry in the perfect-shuffle table, emit
7669 /// the specified operations to build the shuffle.
7689 default: llvm_unreachable("Unknown shuffle opcode!");
7810 // appropriate for the shuffle, i.e. v4i32 for a real v4i1 predicate.
7821 "No support for vector shuffle of boolean predicates");
7834 // shuffle in existence we have chosen the least painful strategy. This is
7837 // vector shuffle and convert the result back into a predicate vector. In
7839 // operating on bits. Just imagine trying to shuffle 8 arbitrary 2-bit
7844 // Do the shuffle!
7857 // Attempt to lower the vector shuffle using as many whole register movs as
7917 // The other parts need to be built with the old shuffle vector, cast to a
8036 // shuffle(concat(v1, undef), concat(v2, undef))
8038 // shuffle(concat(v1, v2), undef)
8045 // shuffle(concat(v1, v2), undef)
8057 }) && "Unexpected shuffle index into UNDEF operand!");
8064 "In-place shuffle of concat can only have one result!");
8073 // If the shuffle is not directly supported and it has 4 elements, use
8085 // Compute the index in the perfect shuffle table.
11093 // VUZP shuffle node.
13018 // The LLVM shufflevector instruction does not require the shuffle mask
13026 // shuffle(concat(v1, undef), concat(v2, undef)) ->
13027 // shuffle(concat(v1, v2), undef)
13049 // Translate the shuffle mask.
13450 // Optimize trunc store (of multiple scalars) to shuffle and store. First,
13478 // Create a type on which we perform the shuffle.
13490 // Can't shuffle using an illegal type.
15004 // All uses of the shuffle should be sunk to avoid duplicating it across gpr
17032 /// %v0 = shuffle %wide.vec, undef, <0, 2, 4, 6> ; Extract even elements
17033 /// %v1 = shuffle %wide.vec, undef, <1, 3, 5, 7> ; Extract odd elements
17170 /// %i.vec = shuffle <8 x i32> %v0, <8 x i32> %v1,
17175 /// %sub.v0 = shuffle <8 x i32> %v0, <8 x i32> v1, <0, 1, 2, 3>
17176 /// %sub.v1 = shuffle <8 x i32> %v0, <8 x i32> v1, <4, 5, 6, 7>
17177 /// %sub.v2 = shuffle <8 x i32> %v0, <8 x i32> v1, <8, 9, 10, 11>
17184 /// %i.vec = shuffle <32 x i32> %v0, <32 x i32> %v1,
17189 /// %sub.v0 = shuffle <32 x i32> %v0, <32 x i32> v1, <4, 5, 6, 7>
17190 /// %sub.v1 = shuffle <32 x i32> %v0, <32 x i32> v1, <32, 33, 34, 35>
17191 /// %sub.v2 = shuffle <32 x i32> %v0, <32 x i32> v1, <16, 17, 18, 19>