Lines Matching defs:In
51 static bool isExtractHiElt(SDValue In, SDValue &Out) {
52 In = stripBitcast(In);
54 if (In.getOpcode() == ISD::EXTRACT_VECTOR_ELT) {
55 if (ConstantSDNode *Idx = dyn_cast<ConstantSDNode>(In.getOperand(1))) {
58 Out = In.getOperand(0);
63 if (In.getOpcode() != ISD::TRUNCATE)
66 SDValue Srl = In.getOperand(0);
81 static SDValue stripExtractLoElt(SDValue In) {
82 if (In.getOpcode() == ISD::EXTRACT_VECTOR_ELT) {
83 SDValue Idx = In.getOperand(1);
84 if (isNullConstant(Idx) && In.getValueSizeInBits() <= 32)
85 return In.getOperand(0);
88 if (In.getOpcode() == ISD::TRUNCATE) {
89 SDValue Src = In.getOperand(0);
94 return In;
2364 // the format expected by the S_BFE_I32 / S_BFE_U32. In the second
2802 ToM0.getValue(1) // In glue
2975 bool AMDGPUDAGToDAGISel::SelectVOP3ModsImpl(SDValue In, SDValue &Src,
2980 Src = In;
3003 bool AMDGPUDAGToDAGISel::SelectVOP3Mods(SDValue In, SDValue &Src,
3006 if (SelectVOP3ModsImpl(In, Src, Mods, /*IsCanonicalizing=*/true,
3008 SrcMods = CurDAG->getTargetConstant(Mods, SDLoc(In), MVT::i32);
3016 SDValue In, SDValue &Src, SDValue &SrcMods) const {
3018 if (SelectVOP3ModsImpl(In, Src, Mods, /*IsCanonicalizing=*/false,
3020 SrcMods = CurDAG->getTargetConstant(Mods, SDLoc(In), MVT::i32);
3027 bool AMDGPUDAGToDAGISel::SelectVOP3BMods(SDValue In, SDValue &Src,
3030 if (SelectVOP3ModsImpl(In, Src, Mods,
3033 SrcMods = CurDAG->getTargetConstant(Mods, SDLoc(In), MVT::i32);
3040 bool AMDGPUDAGToDAGISel::SelectVOP3NoMods(SDValue In, SDValue &Src) const {
3041 if (In.getOpcode() == ISD::FABS || In.getOpcode() == ISD::FNEG)
3044 Src = In;
3048 bool AMDGPUDAGToDAGISel::SelectVINTERPModsImpl(SDValue In, SDValue &Src,
3052 if (SelectVOP3ModsImpl(In, Src, Mods,
3057 SrcMods = CurDAG->getTargetConstant(Mods, SDLoc(In), MVT::i32);
3064 bool AMDGPUDAGToDAGISel::SelectVINTERPMods(SDValue In, SDValue &Src,
3066 return SelectVINTERPModsImpl(In, Src, SrcMods, /* OpSel */ false);
3069 bool AMDGPUDAGToDAGISel::SelectVINTERPModsHi(SDValue In, SDValue &Src,
3071 return SelectVINTERPModsImpl(In, Src, SrcMods, /* OpSel */ true);
3074 bool AMDGPUDAGToDAGISel::SelectVOP3Mods0(SDValue In, SDValue &Src,
3077 SDLoc DL(In);
3081 return SelectVOP3Mods(In, Src, SrcMods);
3084 bool AMDGPUDAGToDAGISel::SelectVOP3BMods0(SDValue In, SDValue &Src,
3087 SDLoc DL(In);
3091 return SelectVOP3BMods(In, Src, SrcMods);
3094 bool AMDGPUDAGToDAGISel::SelectVOP3OMods(SDValue In, SDValue &Src,
3096 Src = In;
3098 SDLoc DL(In);
3105 bool AMDGPUDAGToDAGISel::SelectVOP3PMods(SDValue In, SDValue &Src,
3108 Src = In;
3145 (VecSize > 32) ? AMDGPU::sub0_sub1 : AMDGPU::sub0, SDLoc(In),
3151 (VecSize > 32) ? AMDGPU::sub0_sub1 : AMDGPU::sub0, SDLoc(In),
3167 SDLoc SL(In);
3181 SrcMods = CurDAG->getTargetConstant(Mods, SDLoc(In), MVT::i32);
3189 Src = CurDAG->getTargetConstant(Lit, SDLoc(In), MVT::i64);
3190 SrcMods = CurDAG->getTargetConstant(Mods, SDLoc(In), MVT::i32);
3220 SrcMods = CurDAG->getTargetConstant(Mods, SDLoc(In), MVT::i32);
3228 SrcMods = CurDAG->getTargetConstant(Mods, SDLoc(In), MVT::i32);
3232 bool AMDGPUDAGToDAGISel::SelectVOP3PModsDOT(SDValue In, SDValue &Src,
3234 return SelectVOP3PMods(In, Src, SrcMods, true);
3237 bool AMDGPUDAGToDAGISel::SelectVOP3PModsNeg(SDValue In, SDValue &Src) const {
3238 const ConstantSDNode *C = cast<ConstantSDNode>(In);
3248 Src = CurDAG->getTargetConstant(Mods, SDLoc(In), MVT::i32);
3252 bool AMDGPUDAGToDAGISel::SelectWMMAOpSelVOP3PMods(SDValue In,
3254 const ConstantSDNode *C = cast<ConstantSDNode>(In);
3262 Src = CurDAG->getTargetConstant(Mods, SDLoc(In), MVT::i32);
3380 bool AMDGPUDAGToDAGISel::SelectWMMAModsF16Neg(SDValue In, SDValue &Src,
3382 Src = In;
3386 if (auto *BV = dyn_cast<BuildVectorSDNode>(stripBitcast(In))) {
3398 Src = SDValue(buildRegSequence16(EltsF16, CurDAG, SDLoc(In)), 0);
3405 if (auto *BV = dyn_cast<BuildVectorSDNode>(stripBitcast(In))) {
3417 Src = SDValue(buildRegSequence32(EltsV2F16, CurDAG, SDLoc(In)), 0);
3423 SrcMods = CurDAG->getTargetConstant(Mods, SDLoc(In), MVT::i32);
3427 bool AMDGPUDAGToDAGISel::SelectWMMAModsF16NegAbs(SDValue In, SDValue &Src,
3429 Src = In;
3434 if (auto *BV = dyn_cast<BuildVectorSDNode>(stripBitcast(In))) {
3448 selectWMMAModsNegAbs(ModOpcode, Mods, EltsF16, Src, CurDAG, SDLoc(In),
3453 if (auto *BV = dyn_cast<BuildVectorSDNode>(stripBitcast(In))) {
3468 selectWMMAModsNegAbs(ModOpcode, Mods, EltsV2F16, Src, CurDAG, SDLoc(In),
3472 SrcMods = CurDAG->getTargetConstant(Mods, SDLoc(In), MVT::i32);
3476 bool AMDGPUDAGToDAGISel::SelectWMMAModsF32NegAbs(SDValue In, SDValue &Src,
3478 Src = In;
3482 if (auto *BV = dyn_cast<BuildVectorSDNode>(stripBitcast(In))) {
3497 selectWMMAModsNegAbs(ModOpcode, Mods, EltsF32, Src, CurDAG, SDLoc(In),
3501 SrcMods = CurDAG->getTargetConstant(Mods, SDLoc(In), MVT::i32);
3505 bool AMDGPUDAGToDAGISel::SelectWMMAVISrc(SDValue In, SDValue &Src) const {
3506 if (auto *BV = dyn_cast<BuildVectorSDNode>(In)) {
3512 Src = CurDAG->getTargetConstant(Imm, SDLoc(In), MVT::i32);
3517 Src = CurDAG->getTargetConstant(Imm, SDLoc(In), MVT::i32);
3525 SDValue SplatSrc32 = stripBitcast(In);
3539 EVT VT = In.getValueType().getScalarType();
3546 Src = CurDAG->getTargetConstant(RawValue.value(), SDLoc(In),
3552 Src = CurDAG->getTargetConstant(RawValue.value(), SDLoc(In),
3565 bool AMDGPUDAGToDAGISel::SelectSWMMACIndex8(SDValue In, SDValue &Src,
3568 Src = In;
3570 if (In.getOpcode() == ISD::SRL) {
3571 const llvm::SDValue &ShiftSrc = In.getOperand(0);
3572 ConstantSDNode *ShiftAmt = dyn_cast<ConstantSDNode>(In.getOperand(1));
3580 IndexKey = CurDAG->getTargetConstant(Key, SDLoc(In), MVT::i32);
3584 bool AMDGPUDAGToDAGISel::SelectSWMMACIndex16(SDValue In, SDValue &Src,
3587 Src = In;
3589 if (In.getOpcode() == ISD::SRL) {
3590 const llvm::SDValue &ShiftSrc = In.getOperand(0);
3591 ConstantSDNode *ShiftAmt = dyn_cast<ConstantSDNode>(In.getOperand(1));
3599 IndexKey = CurDAG->getTargetConstant(Key, SDLoc(In), MVT::i32);
3603 bool AMDGPUDAGToDAGISel::SelectVOP3OpSel(SDValue In, SDValue &Src,
3605 Src = In;
3607 SrcMods = CurDAG->getTargetConstant(0, SDLoc(In), MVT::i32);
3611 bool AMDGPUDAGToDAGISel::SelectVOP3OpSelMods(SDValue In, SDValue &Src,
3614 return SelectVOP3Mods(In, Src, SrcMods);
3619 bool AMDGPUDAGToDAGISel::SelectVOP3PMadMixModsImpl(SDValue In, SDValue &Src,
3622 SelectVOP3ModsImpl(In, Src, Mods);
3660 bool AMDGPUDAGToDAGISel::SelectVOP3PMadMixModsExt(SDValue In, SDValue &Src,
3663 if (!SelectVOP3PMadMixModsImpl(In, Src, Mods))
3665 SrcMods = CurDAG->getTargetConstant(Mods, SDLoc(In), MVT::i32);
3669 bool AMDGPUDAGToDAGISel::SelectVOP3PMadMixMods(SDValue In, SDValue &Src,
3672 SelectVOP3PMadMixModsImpl(In, Src, Mods);
3673 SrcMods = CurDAG->getTargetConstant(Mods, SDLoc(In), MVT::i32);
3679 static std::pair<unsigned, uint8_t> BitOp3_Op(SDValue In,
3684 auto getOperandBits = [&Src, In](SDValue Op, uint8_t &Bits) -> bool {
3714 if (Src[I] == In) {
3723 // one of our source operands. In this case we can compute the bits
3747 switch (In.getOpcode()) {
3751 SDValue LHS = In.getOperand(0);
3752 SDValue RHS = In.getOperand(1);
3780 switch (In.getOpcode()) {
3797 bool AMDGPUDAGToDAGISel::SelectBITOP3(SDValue In, SDValue &Src0, SDValue &Src1,
3803 std::tie(NumOpcodes, TTbl) = BitOp3_Op(In, Src);
3813 if (NumOpcodes < 4 && !In->isDivergent())
3816 if (NumOpcodes == 2 && In.getValueType() == MVT::i32) {
3820 if ((In.getOpcode() == ISD::XOR || In.getOpcode() == ISD::OR) &&
3821 (In.getOperand(0).getOpcode() == In.getOpcode() ||
3822 In.getOperand(1).getOpcode() == In.getOpcode()))
3825 if (In.getOpcode() == ISD::OR &&
3826 (In.getOperand(0).getOpcode() == ISD::AND ||
3827 In.getOperand(1).getOpcode() == ISD::AND))
3833 // 'c' with 'a' here without changing the answer. In some pathological
3843 Tbl = CurDAG->getTargetConstant(TTbl, SDLoc(In), MVT::i32);
3847 SDValue AMDGPUDAGToDAGISel::getHi16Elt(SDValue In) const {
3848 if (In.isUndef())
3851 if (ConstantSDNode *C = dyn_cast<ConstantSDNode>(In)) {
3852 SDLoc SL(In);
3856 if (ConstantFPSDNode *C = dyn_cast<ConstantFPSDNode>(In)) {
3857 SDLoc SL(In);
3863 if (isExtractHiElt(In, Src))