reference, declarationdefinition
definition → references, declarations, derived classes, virtual overrides
reference to multiple definitions → definitions
unreferenced

References

lib/Target/X86/X86ISelLowering.cpp
32395   MaskVT = MVT::getVectorVT(MaskVT, NumMaskElts);
32395   MaskVT = MVT::getVectorVT(MaskVT, NumMaskElts);
32398   if (!DAG.getTargetLoweringInfo().isTypeLegal(MaskVT))
32410                         (!MaskVT.is256BitVector() || Subtarget.hasAVX2());
32441         if (V1.getValueType() == MaskVT &&
32447           Res = DAG.getNode(X86ISD::VBROADCAST, DL, MaskVT, Res);
32453           Res = DAG.getBitcast(MaskVT, V1);
32454           Res = DAG.getNode(X86ISD::VBROADCAST, DL, MaskVT, Res);
32461     if (matchUnaryShuffle(MaskVT, Mask, AllowFloatDomain, AllowIntDomain, NewV1,
32472     if (matchUnaryPermuteShuffle(MaskVT, Mask, Zeroable, AllowFloatDomain,
32487   if (matchBinaryShuffle(MaskVT, Mask, AllowFloatDomain, AllowIntDomain, NewV1,
32502           MaskVT, Mask, Zeroable, AllowFloatDomain, AllowIntDomain, NewV1,
32556   if (is128BitLaneCrossingShuffleMask(MaskVT, Mask)) {
32560           (MaskVT == MVT::v8f32 || MaskVT == MVT::v8i32)) ||
32560           (MaskVT == MVT::v8f32 || MaskVT == MVT::v8i32)) ||
32562           (MaskVT == MVT::v8f64 || MaskVT == MVT::v8i64 ||
32562           (MaskVT == MVT::v8f64 || MaskVT == MVT::v8i64 ||
32563            MaskVT == MVT::v16f32 || MaskVT == MVT::v16i32)) ||
32563            MaskVT == MVT::v16f32 || MaskVT == MVT::v16i32)) ||
32564          (Subtarget.hasBWI() && MaskVT == MVT::v32i16) ||
32565          (Subtarget.hasBWI() && Subtarget.hasVLX() && MaskVT == MVT::v16i16) ||
32566          (Subtarget.hasVBMI() && MaskVT == MVT::v64i8) ||
32567          (Subtarget.hasVBMI() && Subtarget.hasVLX() && MaskVT == MVT::v32i8))) {
32569       Res = DAG.getBitcast(MaskVT, V1);
32570       Res = DAG.getNode(X86ISD::VPERMV, DL, MaskVT, VPermMask, Res);
32578           (MaskVT == MVT::v8f64 || MaskVT == MVT::v8i64 ||
32578           (MaskVT == MVT::v8f64 || MaskVT == MVT::v8i64 ||
32579            MaskVT == MVT::v16f32 || MaskVT == MVT::v16i32)) ||
32579            MaskVT == MVT::v16f32 || MaskVT == MVT::v16i32)) ||
32581           (MaskVT == MVT::v4f64 || MaskVT == MVT::v4i64 ||
32581           (MaskVT == MVT::v4f64 || MaskVT == MVT::v4i64 ||
32582            MaskVT == MVT::v8f32 || MaskVT == MVT::v8i32)) ||
32582            MaskVT == MVT::v8f32 || MaskVT == MVT::v8i32)) ||
32583          (Subtarget.hasBWI() && MaskVT == MVT::v32i16) ||
32584          (Subtarget.hasBWI() && Subtarget.hasVLX() && MaskVT == MVT::v16i16) ||
32585          (Subtarget.hasVBMI() && MaskVT == MVT::v64i8) ||
32586          (Subtarget.hasVBMI() && Subtarget.hasVLX() && MaskVT == MVT::v32i8))) {
32593       Res = DAG.getBitcast(MaskVT, V1);
32594       SDValue Zero = getZeroVector(MaskVT, Subtarget, DAG, DL);
32595       Res = DAG.getNode(X86ISD::VPERMV3, DL, MaskVT, Res, VPermMask, Zero);
32609           (MaskVT == MVT::v8f64 || MaskVT == MVT::v8i64 ||
32609           (MaskVT == MVT::v8f64 || MaskVT == MVT::v8i64 ||
32610            MaskVT == MVT::v16f32 || MaskVT == MVT::v16i32)) ||
32610            MaskVT == MVT::v16f32 || MaskVT == MVT::v16i32)) ||
32612           (MaskVT == MVT::v4f64 || MaskVT == MVT::v4i64 ||
32612           (MaskVT == MVT::v4f64 || MaskVT == MVT::v4i64 ||
32613            MaskVT == MVT::v8f32 || MaskVT == MVT::v8i32)) ||
32613            MaskVT == MVT::v8f32 || MaskVT == MVT::v8i32)) ||
32614          (Subtarget.hasBWI() && MaskVT == MVT::v32i16) ||
32615          (Subtarget.hasBWI() && Subtarget.hasVLX() && MaskVT == MVT::v16i16) ||
32616          (Subtarget.hasVBMI() && MaskVT == MVT::v64i8) ||
32617          (Subtarget.hasVBMI() && Subtarget.hasVLX() && MaskVT == MVT::v32i8))) {
32619       V1 = DAG.getBitcast(MaskVT, V1);
32620       V2 = DAG.getBitcast(MaskVT, V2);
32621       Res = DAG.getNode(X86ISD::VPERMV3, DL, MaskVT, V1, VPermMask, V2);
32631       DAG.getTargetLoweringInfo().isTypeLegal(MaskVT)) {
32646     SDValue BitMask = getConstVector(EltBits, UndefElts, MaskVT, DAG, DL);
32647     Res = DAG.getBitcast(MaskVT, V1);
32650     Res = DAG.getNode(AndOpcode, DL, MaskVT, Res, BitMask);
32658       ((MaskVT == MVT::v8f32 && Subtarget.hasAVX()) ||
32659        (MaskVT == MVT::v16f32 && Subtarget.hasAVX512()))) {
32667     Res = DAG.getBitcast(MaskVT, V1);
32668     Res = DAG.getNode(X86ISD::VPERMILPV, DL, MaskVT, Res, VPermMask);
32675       (MaskVT == MVT::v2f64 || MaskVT == MVT::v4f64 || MaskVT == MVT::v4f32 ||
32675       (MaskVT == MVT::v2f64 || MaskVT == MVT::v4f64 || MaskVT == MVT::v4f32 ||
32675       (MaskVT == MVT::v2f64 || MaskVT == MVT::v4f64 || MaskVT == MVT::v4f32 ||
32676        MaskVT == MVT::v8f32)) {
32681     unsigned NumLanes = MaskVT.getSizeInBits() / 128;
32696       Index = (MaskVT.getScalarSizeInBits() == 64 ? Index << 1 : Index);
32699     V1 = DAG.getBitcast(MaskVT, V1);
32700     V2 = DAG.getBitcast(MaskVT, V2);
32702     Res = DAG.getNode(X86ISD::VPERMIL2, DL, MaskVT, V1, V2, VPerm2MaskOp,
32781         (MaskVT == MVT::v8f64 || MaskVT == MVT::v8i64 ||
32781         (MaskVT == MVT::v8f64 || MaskVT == MVT::v8i64 ||
32782          MaskVT == MVT::v16f32 || MaskVT == MVT::v16i32)) ||
32782          MaskVT == MVT::v16f32 || MaskVT == MVT::v16i32)) ||
32784         (MaskVT == MVT::v2f64 || MaskVT == MVT::v2i64 || MaskVT == MVT::v4f64 ||
32784         (MaskVT == MVT::v2f64 || MaskVT == MVT::v2i64 || MaskVT == MVT::v4f64 ||
32784         (MaskVT == MVT::v2f64 || MaskVT == MVT::v2i64 || MaskVT == MVT::v4f64 ||
32785          MaskVT == MVT::v4i64 || MaskVT == MVT::v4f32 || MaskVT == MVT::v4i32 ||
32785          MaskVT == MVT::v4i64 || MaskVT == MVT::v4f32 || MaskVT == MVT::v4i32 ||
32785          MaskVT == MVT::v4i64 || MaskVT == MVT::v4f32 || MaskVT == MVT::v4i32 ||
32786          MaskVT == MVT::v8f32 || MaskVT == MVT::v8i32)) ||
32786          MaskVT == MVT::v8f32 || MaskVT == MVT::v8i32)) ||
32787        (Subtarget.hasBWI() && MaskVT == MVT::v32i16) ||
32789         (MaskVT == MVT::v8i16 || MaskVT == MVT::v16i16)) ||
32789         (MaskVT == MVT::v8i16 || MaskVT == MVT::v16i16)) ||
32790        (Subtarget.hasVBMI() && MaskVT == MVT::v64i8) ||
32792         (MaskVT == MVT::v16i8 || MaskVT == MVT::v32i8)))) {
32792         (MaskVT == MVT::v16i8 || MaskVT == MVT::v32i8)))) {
32794     V1 = DAG.getBitcast(MaskVT, V1);
32795     V2 = DAG.getBitcast(MaskVT, V2);
32796     Res = DAG.getNode(X86ISD::VPERMV3, DL, MaskVT, V1, VPermMask, V2);