@@ -37092,16 +37092,12 @@ static void computeKnownBitsForPMADDWD(SDValue LHS, SDValue RHS,
37092
37092
DemandedSrcElts & APInt::getSplat(NumSrcElts, APInt(2, 0b01));
37093
37093
APInt DemandedHiElts =
37094
37094
DemandedSrcElts & APInt::getSplat(NumSrcElts, APInt(2, 0b10));
37095
- KnownBits LHSLo =
37096
- DAG.computeKnownBits(LHS, DemandedLoElts, Depth + 1).sext(32);
37097
- KnownBits LHSHi =
37098
- DAG.computeKnownBits(LHS, DemandedHiElts, Depth + 1).sext(32);
37099
- KnownBits RHSLo =
37100
- DAG.computeKnownBits(RHS, DemandedLoElts, Depth + 1).sext(32);
37101
- KnownBits RHSHi =
37102
- DAG.computeKnownBits(RHS, DemandedHiElts, Depth + 1).sext(32);
37103
- KnownBits Lo = KnownBits::mul(LHSLo, RHSLo);
37104
- KnownBits Hi = KnownBits::mul(LHSHi, RHSHi);
37095
+ KnownBits LHSLo = DAG.computeKnownBits(LHS, DemandedLoElts, Depth + 1);
37096
+ KnownBits LHSHi = DAG.computeKnownBits(LHS, DemandedHiElts, Depth + 1);
37097
+ KnownBits RHSLo = DAG.computeKnownBits(RHS, DemandedLoElts, Depth + 1);
37098
+ KnownBits RHSHi = DAG.computeKnownBits(RHS, DemandedHiElts, Depth + 1);
37099
+ KnownBits Lo = KnownBits::mul(LHSLo.sext(32), RHSLo.sext(32));
37100
+ KnownBits Hi = KnownBits::mul(LHSHi.sext(32), RHSHi.sext(32));
37105
37101
Known = KnownBits::computeForAddSub(/*Add=*/true, /*NSW=*/true,
37106
37102
/*NUW=*/false, Lo, Hi);
37107
37103
}
@@ -37113,23 +37109,19 @@ static void computeKnownBitsForPMADDUBSW(SDValue LHS, SDValue RHS,
37113
37109
unsigned Depth) {
37114
37110
unsigned NumSrcElts = LHS.getValueType().getVectorNumElements();
37115
37111
37116
- // Multiply signed/ unsigned i8 elements to create i16 values and add_sat Lo/Hi
37112
+ // Multiply unsigned/signed i8 elements to create i16 values and add_sat Lo/Hi
37117
37113
// pairs.
37118
37114
APInt DemandedSrcElts = APIntOps::ScaleBitMask(DemandedElts, NumSrcElts);
37119
37115
APInt DemandedLoElts =
37120
37116
DemandedSrcElts & APInt::getSplat(NumSrcElts, APInt(2, 0b01));
37121
37117
APInt DemandedHiElts =
37122
37118
DemandedSrcElts & APInt::getSplat(NumSrcElts, APInt(2, 0b10));
37123
- KnownBits LHSLo =
37124
- DAG.computeKnownBits(LHS, DemandedLoElts, Depth + 1).zext(16);
37125
- KnownBits LHSHi =
37126
- DAG.computeKnownBits(LHS, DemandedHiElts, Depth + 1).zext(16);
37127
- KnownBits RHSLo =
37128
- DAG.computeKnownBits(RHS, DemandedLoElts, Depth + 1).sext(16);
37129
- KnownBits RHSHi =
37130
- DAG.computeKnownBits(RHS, DemandedHiElts, Depth + 1).sext(16);
37131
- KnownBits Lo = KnownBits::mul(LHSLo, RHSLo);
37132
- KnownBits Hi = KnownBits::mul(LHSHi, RHSHi);
37119
+ KnownBits LHSLo = DAG.computeKnownBits(LHS, DemandedLoElts, Depth + 1);
37120
+ KnownBits LHSHi = DAG.computeKnownBits(LHS, DemandedHiElts, Depth + 1);
37121
+ KnownBits RHSLo = DAG.computeKnownBits(RHS, DemandedLoElts, Depth + 1);
37122
+ KnownBits RHSHi = DAG.computeKnownBits(RHS, DemandedHiElts, Depth + 1);
37123
+ KnownBits Lo = KnownBits::mul(LHSLo.zext(16), RHSLo.sext(16));
37124
+ KnownBits Hi = KnownBits::mul(LHSHi.zext(16), RHSHi.sext(16));
37133
37125
Known = KnownBits::sadd_sat(Lo, Hi);
37134
37126
}
37135
37127
0 commit comments