|
reference, declaration → definition
definition → references, declarations, derived classes, virtual overrides
reference to multiple definitions → definitions
unreferenced
|
References
lib/Target/X86/X86ISelLowering.cpp 9293 IndicesVec = extractSubVector(IndicesVec, 0, DAG, SDLoc(IndicesVec),
9295 IndicesVec = DAG.getZExtOrTrunc(IndicesVec, SDLoc(IndicesVec), IndicesVT);
9305 Subtarget, DAG, SDLoc(IndicesVec));
9307 createVariablePermute(VT, SrcVec, IndicesVec, DL, DAG, Subtarget), 0,
9308 DAG, DL, SizeInBits);
9311 SrcVec = widenSubVector(VT, SrcVec, false, Subtarget, DAG, SDLoc(SrcVec));
9316 auto ScaleIndices = [&DAG](SDValue Idx, uint64_t Scale) {
9333 Idx = DAG.getNode(ISD::MUL, SDLoc(Idx), SrcVT, Idx,
9334 DAG.getConstant(IndexScale, SDLoc(Idx), SrcVT));
9335 Idx = DAG.getNode(ISD::ADD, SDLoc(Idx), SrcVT, Idx,
9336 DAG.getConstant(IndexOffset, SDLoc(Idx), SrcVT));
9370 IndicesVec = DAG.getNode(ISD::ADD, DL, IndicesVT, IndicesVec, IndicesVec);
9375 return DAG.getSelectCC(
9377 getZeroVector(IndicesVT.getSimpleVT(), Subtarget, DAG, DL),
9378 DAG.getVectorShuffle(VT, DL, SrcVec, SrcVec, {0, 0}),
9379 DAG.getVectorShuffle(VT, DL, SrcVec, SrcVec, {1, 1}),
9387 SDValue LoSrc = extract128BitVector(SrcVec, 0, DAG, DL);
9388 SDValue HiSrc = extract128BitVector(SrcVec, 16, DAG, DL);
9389 SDValue LoIdx = extract128BitVector(IndicesVec, 0, DAG, DL);
9390 SDValue HiIdx = extract128BitVector(IndicesVec, 16, DAG, DL);
9391 return DAG.getNode(
9393 DAG.getNode(X86ISD::VPPERM, DL, MVT::v16i8, LoSrc, HiSrc, LoIdx),
9394 DAG.getNode(X86ISD::VPPERM, DL, MVT::v16i8, LoSrc, HiSrc, HiIdx));
9396 SDValue Lo = extract128BitVector(SrcVec, 0, DAG, DL);
9397 SDValue Hi = extract128BitVector(SrcVec, 16, DAG, DL);
9398 SDValue LoLo = DAG.getNode(ISD::CONCAT_VECTORS, DL, VT, Lo, Lo);
9399 SDValue HiHi = DAG.getNode(ISD::CONCAT_VECTORS, DL, VT, Hi, Hi);
9413 return SplitOpsAndApply(DAG, Subtarget, DL, MVT::v32i8, Ops,
9423 return DAG.getBitcast(
9425 MVT::v32i8, DAG.getBitcast(MVT::v32i8, SrcVec),
9426 DAG.getBitcast(MVT::v32i8, IndicesVec), DL, DAG, Subtarget));
9426 DAG.getBitcast(MVT::v32i8, IndicesVec), DL, DAG, Subtarget));
9434 SrcVec = DAG.getBitcast(MVT::v8f32, SrcVec);
9435 SDValue LoLo = DAG.getVectorShuffle(MVT::v8f32, DL, SrcVec, SrcVec,
9437 SDValue HiHi = DAG.getVectorShuffle(MVT::v8f32, DL, SrcVec, SrcVec,
9440 return DAG.getBitcast(
9441 VT, DAG.getNode(X86ISD::VPERMIL2, DL, MVT::v8f32, LoLo, HiHi,
9442 IndicesVec, DAG.getTargetConstant(0, DL, MVT::i8)));
9445 SDValue Res = DAG.getSelectCC(
9446 DL, IndicesVec, DAG.getConstant(3, DL, MVT::v8i32),
9447 DAG.getNode(X86ISD::VPERMILPV, DL, MVT::v8f32, HiHi, IndicesVec),
9448 DAG.getNode(X86ISD::VPERMILPV, DL, MVT::v8f32, LoLo, IndicesVec),
9450 return DAG.getBitcast(VT, Res);
9458 SrcVec = widenSubVector(WidenSrcVT, SrcVec, false, Subtarget, DAG,
9461 DAG, SDLoc(IndicesVec));
9463 DAG, Subtarget);
9464 return extract256BitVector(Res, 0, DAG, DL);
9468 SrcVec = DAG.getBitcast(MVT::v4f64, SrcVec);
9470 DAG.getVectorShuffle(MVT::v4f64, DL, SrcVec, SrcVec, {0, 1, 0, 1});
9472 DAG.getVectorShuffle(MVT::v4f64, DL, SrcVec, SrcVec, {2, 3, 2, 3});
9474 IndicesVec = DAG.getNode(ISD::ADD, DL, IndicesVT, IndicesVec, IndicesVec);
9476 return DAG.getBitcast(
9477 VT, DAG.getNode(X86ISD::VPERMIL2, DL, MVT::v4f64, LoLo, HiHi,
9478 IndicesVec, DAG.getTargetConstant(0, DL, MVT::i8)));
9481 SDValue Res = DAG.getSelectCC(
9482 DL, IndicesVec, DAG.getConstant(2, DL, MVT::v4i64),
9483 DAG.getNode(X86ISD::VPERMILPV, DL, MVT::v4f64, HiHi, IndicesVec),
9484 DAG.getNode(X86ISD::VPERMILPV, DL, MVT::v4f64, LoLo, IndicesVec),
9486 return DAG.getBitcast(VT, Res);
9517 IndicesVec = DAG.getBitcast(ShuffleIdxVT, IndicesVec);
9519 SrcVec = DAG.getBitcast(ShuffleVT, SrcVec);
9521 ? DAG.getNode(Opcode, DL, ShuffleVT, IndicesVec, SrcVec)
9522 : DAG.getNode(Opcode, DL, ShuffleVT, SrcVec, IndicesVec);
9523 return DAG.getBitcast(VT, Res);