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

References

lib/Target/X86/X86ISelLowering.cpp
25791       SDValue Zero = DAG.getConstant(0, dl, VT);
25792       Amt = DAG.getNode(ISD::SUB, dl, VT, Zero, Amt);
25795       return DAG.getNode(X86ISD::VPSHL, dl, VT, R, Amt);
25797       return DAG.getNode(X86ISD::VPSHA, dl, VT, R, Amt);
25804     SDValue Amt0 = DAG.getVectorShuffle(VT, dl, Amt, Amt, {0, 0});
25805     SDValue Amt1 = DAG.getVectorShuffle(VT, dl, Amt, Amt, {1, 1});
25806     SDValue R0 = DAG.getNode(Opc, dl, VT, R, Amt0);
25807     SDValue R1 = DAG.getNode(Opc, dl, VT, R, Amt1);
25808     return DAG.getVectorShuffle(VT, dl, R0, R1, {0, 3});
25816     SDValue S = DAG.getConstant(APInt::getSignMask(64), dl, VT);
25817     SDValue M = DAG.getNode(ISD::SRL, dl, VT, S, Amt);
25818     R = DAG.getNode(ISD::SRL, dl, VT, R, Amt);
25819     R = DAG.getNode(ISD::XOR, dl, VT, R, M);
25820     R = DAG.getNode(ISD::SUB, dl, VT, R, M);
25868         SDValue Shift1 = getTargetVShiftByConstNode(X86OpcI, dl, VT, R,
25870         SDValue Shift2 = getTargetVShiftByConstNode(X86OpcI, dl, VT, R,
25872         return DAG.getVectorShuffle(VT, dl, Shift1, Shift2, ShuffleMask);
25880     if (SDValue Scale = convertShiftLeftToScale(Amt, dl, Subtarget, DAG))
25881       return DAG.getNode(ISD::MUL, dl, VT, R, Scale);
25887     SDValue EltBits = DAG.getConstant(EltSizeInBits, dl, VT);
25888     SDValue RAmt = DAG.getNode(ISD::SUB, dl, VT, EltBits, Amt);
25889     if (SDValue Scale = convertShiftLeftToScale(RAmt, dl, Subtarget, DAG)) {
25890       SDValue Zero = DAG.getConstant(0, dl, VT);
25891       SDValue ZAmt = DAG.getSetCC(dl, VT, Amt, Zero, ISD::SETEQ);
25892       SDValue Res = DAG.getNode(ISD::MULHU, dl, VT, R, Scale);
25893       return DAG.getSelect(dl, VT, ZAmt, R, Res);
25906     SDValue EltBits = DAG.getConstant(EltSizeInBits, dl, VT);
25907     SDValue RAmt = DAG.getNode(ISD::SUB, dl, VT, EltBits, Amt);
25908     if (SDValue Scale = convertShiftLeftToScale(RAmt, dl, Subtarget, DAG)) {
25910           DAG.getSetCC(dl, VT, Amt, DAG.getConstant(0, dl, VT), ISD::SETEQ);
25910           DAG.getSetCC(dl, VT, Amt, DAG.getConstant(0, dl, VT), ISD::SETEQ);
25912           DAG.getSetCC(dl, VT, Amt, DAG.getConstant(1, dl, VT), ISD::SETEQ);
25912           DAG.getSetCC(dl, VT, Amt, DAG.getConstant(1, dl, VT), ISD::SETEQ);
25914           getTargetVShiftByConstNode(X86ISD::VSRAI, dl, VT, R, 1, DAG);
25915       SDValue Res = DAG.getNode(ISD::MULHS, dl, VT, R, Scale);
25916       Res = DAG.getSelect(dl, VT, Amt0, R, Res);
25917       return DAG.getSelect(dl, VT, Amt1, Sra1, Res);
25929       Amt0 = DAG.getVectorShuffle(VT, dl, Amt, DAG.getUNDEF(VT), {0, 0, 0, 0});
25930       Amt1 = DAG.getVectorShuffle(VT, dl, Amt, DAG.getUNDEF(VT), {1, 1, 1, 1});
25931       Amt2 = DAG.getVectorShuffle(VT, dl, Amt, DAG.getUNDEF(VT), {2, 2, 2, 2});
25932       Amt3 = DAG.getVectorShuffle(VT, dl, Amt, DAG.getUNDEF(VT), {3, 3, 3, 3});
25939         SDValue Z = DAG.getConstant(0, dl, VT);
25940         Amt0 = DAG.getVectorShuffle(VT, dl, Amt, Z, {0, 4, -1, -1});
25941         Amt1 = DAG.getVectorShuffle(VT, dl, Amt, Z, {1, 5, -1, -1});
25942         Amt2 = DAG.getVectorShuffle(VT, dl, Amt, Z, {2, 6, -1, -1});
25943         Amt3 = DAG.getVectorShuffle(VT, dl, Amt, Z, {3, 7, -1, -1});
25946         SDValue Amt23 = DAG.getVectorShuffle(MVT::v8i16, dl, Amt01, Amt01,
25948         Amt0 = DAG.getVectorShuffle(MVT::v8i16, dl, Amt01, Amt01,
25950         Amt1 = DAG.getVectorShuffle(MVT::v8i16, dl, Amt01, Amt01,
25952         Amt2 = DAG.getVectorShuffle(MVT::v8i16, dl, Amt23, Amt23,
25954         Amt3 = DAG.getVectorShuffle(MVT::v8i16, dl, Amt23, Amt23,
25960     SDValue R0 = DAG.getNode(ShOpc, dl, VT, R, DAG.getBitcast(VT, Amt0));
25961     SDValue R1 = DAG.getNode(ShOpc, dl, VT, R, DAG.getBitcast(VT, Amt1));
25962     SDValue R2 = DAG.getNode(ShOpc, dl, VT, R, DAG.getBitcast(VT, Amt2));
25963     SDValue R3 = DAG.getNode(ShOpc, dl, VT, R, DAG.getBitcast(VT, Amt3));
25968       SDValue R02 = DAG.getVectorShuffle(VT, dl, R0, R2, {0, -1, 6, -1});
25969       SDValue R13 = DAG.getVectorShuffle(VT, dl, R1, R3, {-1, 1, -1, 7});
25970       return DAG.getVectorShuffle(VT, dl, R02, R13, {0, 5, 2, 7});
25972     SDValue R01 = DAG.getVectorShuffle(VT, dl, R0, R1, {0, -1, -1, 5});
25973     SDValue R23 = DAG.getVectorShuffle(VT, dl, R2, R3, {2, -1, -1, 7});
25974     return DAG.getVectorShuffle(VT, dl, R01, R23, {0, 3, 4, 7});
25991     R = DAG.getNode(ExtOpc, dl, ExtVT, R);
25992     Amt = DAG.getNode(ISD::ZERO_EXTEND, dl, ExtVT, Amt);
25993     return DAG.getNode(ISD::TRUNCATE, dl, VT,
25994                        DAG.getNode(Opc, dl, ExtVT, R, Amt));
26004     SDValue Cst8 = DAG.getTargetConstant(8, dl, MVT::i8);
26009     Amt = DAG.getZExtOrTrunc(Amt, dl, ExVT);
26010     Amt = DAG.getNode(ISD::SUB, dl, ExVT, DAG.getConstant(8, dl, ExVT), Amt);
26010     Amt = DAG.getNode(ISD::SUB, dl, ExVT, DAG.getConstant(8, dl, ExVT), Amt);
26011     Amt = DAG.getNode(ISD::SHL, dl, ExVT, DAG.getConstant(1, dl, ExVT), Amt);
26011     Amt = DAG.getNode(ISD::SHL, dl, ExVT, DAG.getConstant(1, dl, ExVT), Amt);
26016       R = Opc == ISD::SRA ? DAG.getSExtOrTrunc(R, dl, ExVT)
26017                           : DAG.getZExtOrTrunc(R, dl, ExVT);
26018       R = DAG.getNode(ISD::MUL, dl, ExVT, R, Amt);
26019       R = DAG.getNode(X86ISD::VSRLI, dl, ExVT, R, Cst8);
26020       return DAG.getZExtOrTrunc(R, dl, VT);
26032     SDValue LoA = DAG.getBuildVector(VT16, dl, LoAmt);
26033     SDValue HiA = DAG.getBuildVector(VT16, dl, HiAmt);
26035     SDValue LoR = DAG.getBitcast(VT16, getUnpackl(DAG, dl, VT, R, R));
26036     SDValue HiR = DAG.getBitcast(VT16, getUnpackh(DAG, dl, VT, R, R));
26037     LoR = DAG.getNode(X86OpcI, dl, VT16, LoR, Cst8);
26038     HiR = DAG.getNode(X86OpcI, dl, VT16, HiR, Cst8);
26039     LoR = DAG.getNode(ISD::MUL, dl, VT16, LoR, LoA);
26040     HiR = DAG.getNode(ISD::MUL, dl, VT16, HiR, HiA);
26041     LoR = DAG.getNode(X86ISD::VSRLI, dl, VT16, LoR, Cst8);
26042     HiR = DAG.getNode(X86ISD::VSRLI, dl, VT16, HiR, Cst8);
26043     return DAG.getNode(X86ISD::PACKUS, dl, VT, LoR, HiR);
26060         Sel = DAG.getSetCC(dl, MaskVT, DAG.getConstant(0, dl, VT), Sel,
26060         Sel = DAG.getSetCC(dl, MaskVT, DAG.getConstant(0, dl, VT), Sel,
26062         return DAG.getBitcast(SelVT, DAG.getSelect(dl, VT, Sel, V0, V1));
26069         return DAG.getBitcast(SelVT, DAG.getSelect(dl, VT, Sel, V0, V1));
26074       SDValue Z = DAG.getConstant(0, dl, SelVT);
26075       SDValue C = DAG.getNode(X86ISD::PCMPGT, dl, SelVT, Z, Sel);
26076       return DAG.getSelect(dl, SelVT, C, V0, V1);
26083     Amt = getTargetVShiftByConstNode(X86ISD::VSHLI, dl, ExtVT, Amt, 5, DAG);
26088       SDValue M = DAG.getNode(Opc, dl, VT, R, DAG.getConstant(4, dl, VT));
26088       SDValue M = DAG.getNode(Opc, dl, VT, R, DAG.getConstant(4, dl, VT));
26092       Amt = DAG.getNode(ISD::ADD, dl, VT, Amt, Amt);
26095       M = DAG.getNode(Opc, dl, VT, R, DAG.getConstant(2, dl, VT));
26095       M = DAG.getNode(Opc, dl, VT, R, DAG.getConstant(2, dl, VT));
26099       Amt = DAG.getNode(ISD::ADD, dl, VT, Amt, Amt);
26102       M = DAG.getNode(Opc, dl, VT, R, DAG.getConstant(1, dl, VT));
26102       M = DAG.getNode(Opc, dl, VT, R, DAG.getConstant(1, dl, VT));
26111       SDValue ALo = getUnpackl(DAG, dl, VT, DAG.getUNDEF(VT), Amt);
26112       SDValue AHi = getUnpackh(DAG, dl, VT, DAG.getUNDEF(VT), Amt);
26113       SDValue RLo = getUnpackl(DAG, dl, VT, DAG.getUNDEF(VT), R);
26114       SDValue RHi = getUnpackh(DAG, dl, VT, DAG.getUNDEF(VT), R);
26121       SDValue MLo = getTargetVShiftByConstNode(X86OpcI, dl, ExtVT, RLo, 4, DAG);
26122       SDValue MHi = getTargetVShiftByConstNode(X86OpcI, dl, ExtVT, RHi, 4, DAG);
26127       ALo = DAG.getNode(ISD::ADD, dl, ExtVT, ALo, ALo);
26128       AHi = DAG.getNode(ISD::ADD, dl, ExtVT, AHi, AHi);
26131       MLo = getTargetVShiftByConstNode(X86OpcI, dl, ExtVT, RLo, 2, DAG);
26132       MHi = getTargetVShiftByConstNode(X86OpcI, dl, ExtVT, RHi, 2, DAG);
26137       ALo = DAG.getNode(ISD::ADD, dl, ExtVT, ALo, ALo);
26138       AHi = DAG.getNode(ISD::ADD, dl, ExtVT, AHi, AHi);
26141       MLo = getTargetVShiftByConstNode(X86OpcI, dl, ExtVT, RLo, 1, DAG);
26142       MHi = getTargetVShiftByConstNode(X86OpcI, dl, ExtVT, RHi, 1, DAG);
26148       RLo = getTargetVShiftByConstNode(X86ISD::VSRLI, dl, ExtVT, RLo, 8, DAG);
26149       RHi = getTargetVShiftByConstNode(X86ISD::VSRLI, dl, ExtVT, RHi, 8, DAG);
26150       return DAG.getNode(X86ISD::PACKUS, dl, VT, RLo, RHi);
26156     SDValue Z = DAG.getConstant(0, dl, VT);
26157     SDValue ALo = getUnpackl(DAG, dl, VT, Amt, Z);
26158     SDValue AHi = getUnpackh(DAG, dl, VT, Amt, Z);
26159     SDValue RLo = getUnpackl(DAG, dl, VT, Z, R);
26160     SDValue RHi = getUnpackh(DAG, dl, VT, Z, R);
26165     SDValue Lo = DAG.getNode(Opc, dl, ExtVT, RLo, ALo);
26166     SDValue Hi = DAG.getNode(Opc, dl, ExtVT, RHi, AHi);
26167     Lo = getTargetVShiftByConstNode(X86ISD::VSRLI, dl, ExtVT, Lo, 16, DAG);
26168     Hi = getTargetVShiftByConstNode(X86ISD::VSRLI, dl, ExtVT, Hi, 16, DAG);
26169     return DAG.getNode(X86ISD::PACKUS, dl, VT, Lo, Hi);
26186         return DAG.getBitcast(VT, DAG.getSelect(dl, ExtVT, Sel, V0, V1));
26192           getTargetVShiftByConstNode(X86ISD::VSRAI, dl, VT, Sel, 15, DAG);
26193       return DAG.getSelect(dl, VT, C, V0, V1);
26201           ISD::OR, dl, VT,
26202           getTargetVShiftByConstNode(X86ISD::VSHLI, dl, VT, Amt, 4, DAG),
26203           getTargetVShiftByConstNode(X86ISD::VSHLI, dl, VT, Amt, 12, DAG));
26205       Amt = getTargetVShiftByConstNode(X86ISD::VSHLI, dl, VT, Amt, 12, DAG);
26209     SDValue M = getTargetVShiftByConstNode(X86OpcI, dl, VT, R, 8, DAG);
26213     Amt = DAG.getNode(ISD::ADD, dl, VT, Amt, Amt);
26216     M = getTargetVShiftByConstNode(X86OpcI, dl, VT, R, 4, DAG);
26220     Amt = DAG.getNode(ISD::ADD, dl, VT, Amt, Amt);
26223     M = getTargetVShiftByConstNode(X86OpcI, dl, VT, R, 2, DAG);
26227     Amt = DAG.getNode(ISD::ADD, dl, VT, Amt, Amt);
26230     M = getTargetVShiftByConstNode(X86OpcI, dl, VT, R, 1, DAG);