reference, declarationdefinition
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);