Home | History | Annotate | Download | only in AArch64

Lines Matching refs:Shuffle

4831 // shuffle in combination with VEXTs.
4845 // be compatible with the shuffle we intend to construct. As a result
4868 // A shuffle can only come from building a vector from various
4905 // to construct a compatible shuffle either by concatenating it with UNDEF or
4922 // shuffle...
4966 // for the shuffle.
4977 // Final sanity check before we try to actually produce a shuffle.
4983 // The stars all align, our next step is to produce the mask for the shuffle.
5002 // This source is expected to fill ResMultiplier lanes of the final shuffle,
5020 SDValue Shuffle = DAG.getVectorShuffle(ShuffleVT, dl, ShuffleOps[0],
5022 return DAG.getNode(ISD::BITCAST, dl, VT, Shuffle);
5025 // check if an EXT instruction can handle the shuffle mask when the
5026 // vector sources of the shuffle are the same.
5030 // Assume that the first shuffle index is not UNDEF. Fail if it is.
5036 // If this is a VEXT shuffle, the immediate value is the index of the first
5037 // element. The other shuffle indices must be the successive elements after
5056 // check if an EXT instruction can handle the shuffle mask when the
5057 // vector sources of the shuffle are different.
5068 // The following shuffle indices must be the successive elements after the
5097 /// isREVMask - Check if a vector shuffle corresponds to a REV
5110 // If the first shuffle index is UNDEF, be optimistic.
5303 /// GeneratePerfectShuffle - Given an entry in the perfect-shuffle table, emit
5304 /// the specified operations to build the shuffle.
5344 llvm_unreachable("Unknown shuffle opcode!");
5435 SDValue Shuffle;
5439 Shuffle = DAG.getNode(
5447 Shuffle = DAG.getNode(
5456 // Shuffle = DAG.getNode(AArch64ISD::TBL2, DL, IndexVT, V1Cst, V2Cst,
5459 Shuffle = DAG.getNode(
5467 return DAG.getNode(ISD::BITCAST, DL, Op.getValueType(), Shuffle);
5519 // to make a vector of the same size as this SHUFFLE. We can ignore the
5613 // If the shuffle is not directly supported and it has 4 elements, use
5625 // Compute the index in the perfect shuffle table.
6310 if (SDValue shuffle = ReconstructShuffle(Op, DAG))
6311 return shuffle;
6317 // scalar_to_vector for the elements followed by a shuffle (provided the
6318 // shuffle is valid for the target) and materialization element by element
6463 // Compute the index in the perfect shuffle table.
6999 /// %v0 = shuffle %wide.vec, undef, <0, 2, 4, 6> ; Extract even elements
7000 /// %v1 = shuffle %wide.vec, undef, <1, 3, 5, 7> ; Extract odd elements
7077 /// %i.vec = shuffle <8 x i32> %v0, <8 x i32> %v1,
7082 /// %sub.v0 = shuffle <8 x i32> %v0, <8 x i32> v1, <0, 1, 2, 3>
7083 /// %sub.v1 = shuffle <8 x i32> %v0, <8 x i32> v1, <4, 5, 6, 7>
7084 /// %sub.v2 = shuffle <8 x i32> %v0, <8 x i32> v1, <8, 9, 10, 11>
8788 /// This function handles the log2-shuffle pattern produced by the
8814 SDValue Shuffle = PreOp.getOperand(1);
8815 if (Shuffle.getOpcode() != ISD::VECTOR_SHUFFLE) {
8819 Shuffle = PreOp.getOperand(0);
8820 if (Shuffle.getOpcode() != ISD::VECTOR_SHUFFLE)
8833 // %shuffle = vector_shuffle %cur, <2, 3, u, u>
8834 // %pre = add %cur, %shuffle
8835 if (Shuffle.getOperand(0) != CurOp)
8839 ArrayRef<int> Mask = cast<ShuffleVectorSDNode>(Shuffle)->getMask();
8841 // We expect the shuffle mask in each step follows a specific pattern
8900 /// min/max reductions produced by the LoopVectorizer. It is the log2-shuffle
9007 /// add reduction produced by the LoopVectorizer. It is the log2-shuffle
9530 /// with a vector one followed by a DUP shuffle on the result.