Lines Matching defs:IndicesVec
8459 static SDValue createVariablePermute(MVT VT, SDValue SrcVec, SDValue IndicesVec,
8467 // Adjust IndicesVec to match VT size.
8468 assert(IndicesVec.getValueType().getVectorNumElements() >= NumElts &&
8470 if (IndicesVec.getValueType().getVectorNumElements() > NumElts) {
8472 if (IndicesVec.getValueSizeInBits() > SizeInBits)
8473 IndicesVec = extractSubVector(IndicesVec, 0, DAG, SDLoc(IndicesVec),
8475 else if (IndicesVec.getValueSizeInBits() < SizeInBits)
8476 IndicesVec = widenSubVector(IndicesVec, false, Subtarget, DAG,
8477 SDLoc(IndicesVec), SizeInBits);
8479 if (IndicesVec.getValueType().getVectorNumElements() > NumElts)
8480 IndicesVec = DAG.getNode(ISD::ZERO_EXTEND_VECTOR_INREG, SDLoc(IndicesVec),
8481 IndicesVT, IndicesVec);
8483 IndicesVec = DAG.getZExtOrTrunc(IndicesVec, SDLoc(IndicesVec), IndicesVT);
8492 IndicesVec = widenSubVector(IndicesVT.getSimpleVT(), IndicesVec, false,
8493 Subtarget, DAG, SDLoc(IndicesVec));
8495 createVariablePermute(VT, SrcVec, IndicesVec, DL, DAG, Subtarget);
8559 // VPERMILPD selects using bit#1 of the index vector, so scale IndicesVec.
8560 IndicesVec = DAG.getNode(ISD::ADD, DL, IndicesVT, IndicesVec, IndicesVec);
8566 DL, IndicesVec,
8579 SDValue LoIdx = extract128BitVector(IndicesVec, 0, DAG, DL);
8580 SDValue HiIdx = extract128BitVector(IndicesVec, 16, DAG, DL);
8602 SDValue Ops[] = {LoLo, HiHi, IndicesVec};
8612 IndicesVec = ScaleIndices(IndicesVec, 2);
8616 DAG.getBitcast(MVT::v32i8, IndicesVec), DL, DAG, Subtarget));
8632 IndicesVec, DAG.getTargetConstant(0, DL, MVT::i8)));
8636 DL, IndicesVec, DAG.getConstant(3, DL, MVT::v8i32),
8637 DAG.getNode(X86ISD::VPERMILPV, DL, MVT::v8f32, HiHi, IndicesVec),
8638 DAG.getNode(X86ISD::VPERMILPV, DL, MVT::v8f32, LoLo, IndicesVec),
8650 IndicesVec = widenSubVector(MVT::v8i64, IndicesVec, false, Subtarget,
8651 DAG, SDLoc(IndicesVec));
8652 SDValue Res = createVariablePermute(WidenSrcVT, SrcVec, IndicesVec, DL,
8663 // VPERMIL2PD selects with bit#1 of the index vector, so scale IndicesVec.
8664 IndicesVec = DAG.getNode(ISD::ADD, DL, IndicesVT, IndicesVec, IndicesVec);
8668 IndicesVec, DAG.getTargetConstant(0, DL, MVT::i8)));
8672 DL, IndicesVec, DAG.getConstant(2, DL, MVT::v4i64),
8673 DAG.getNode(X86ISD::VPERMILPV, DL, MVT::v4f64, HiHi, IndicesVec),
8674 DAG.getNode(X86ISD::VPERMILPV, DL, MVT::v4f64, LoLo, IndicesVec),
8704 IndicesVec = ScaleIndices(IndicesVec, Scale);
8707 IndicesVec = DAG.getBitcast(ShuffleIdxVT, IndicesVec);
8711 ? DAG.getNode(Opcode, DL, ShuffleVT, IndicesVec, SrcVec)
8712 : DAG.getNode(Opcode, DL, ShuffleVT, SrcVec, IndicesVec);
8731 SDValue SrcVec, IndicesVec;
8734 // (extract_elt SrcVec, (extract_elt IndicesVec, i)).
8758 if (!IndicesVec)
8759 IndicesVec = ExtractedIndex.getOperand(0);
8760 else if (IndicesVec != ExtractedIndex.getOperand(0))
8769 return createVariablePermute(VT, SrcVec, IndicesVec, DL, DAG, Subtarget);