@@ -1205,13 +1205,13 @@ SDValue DAGCombiner::reassociateOpsCommutative(unsigned Opc, const SDLoc &DL,
12051205 SDValue N00 = N0.getOperand(0);
12061206 SDValue N01 = N0.getOperand(1);
12071207
1208- if (DAG.isConstantIntBuildVectorOrConstantInt(N01)) {
1208+ if (DAG.isConstantIntBuildVectorOrConstantInt(peekThroughBitcasts( N01) )) {
12091209 SDNodeFlags NewFlags;
12101210 if (N0.getOpcode() == ISD::ADD && N0->getFlags().hasNoUnsignedWrap() &&
12111211 Flags.hasNoUnsignedWrap())
12121212 NewFlags.setNoUnsignedWrap(true);
12131213
1214- if (DAG.isConstantIntBuildVectorOrConstantInt(N1 )) {
1214+ if (DAG.isConstantIntBuildVectorOrConstantInt(peekThroughBitcasts(N1) )) {
12151215 // Reassociate: (op (op x, c1), c2) -> (op x, (op c1, c2))
12161216 if (SDValue OpNode = DAG.FoldConstantArithmetic(Opc, DL, VT, {N01, N1}))
12171217 return DAG.getNode(Opc, DL, VT, N00, OpNode, NewFlags);
@@ -9931,10 +9931,10 @@ SDValue DAGCombiner::visitRotate(SDNode *N) {
99319931 // fold (rot* (rot* x, c2), c1)
99329932 // -> (rot* x, ((c1 % bitsize) +- (c2 % bitsize) + bitsize) % bitsize)
99339933 if (NextOp == ISD::ROTL || NextOp == ISD::ROTR) {
9934- bool C1 = DAG.isConstantIntBuildVectorOrConstantInt(N1);
9935- bool C2 = DAG.isConstantIntBuildVectorOrConstantInt(N0.getOperand(1));
9936- if (C1 && C2 && N1. getValueType() == N0.getOperand(1). getValueType()) {
9937- EVT ShiftVT = N1. getValueType();
9934+ SDNode * C1 = DAG.isConstantIntBuildVectorOrConstantInt(N1);
9935+ SDNode * C2 = DAG.isConstantIntBuildVectorOrConstantInt(N0.getOperand(1));
9936+ if (C1 && C2 && C1-> getValueType(0 ) == C2-> getValueType(0 )) {
9937+ EVT ShiftVT = C1-> getValueType(0 );
99389938 bool SameSide = (N->getOpcode() == NextOp);
99399939 unsigned CombineOp = SameSide ? ISD::ADD : ISD::SUB;
99409940 SDValue BitsizeC = DAG.getConstant(Bitsize, dl, ShiftVT);
@@ -16806,8 +16806,8 @@ SDValue DAGCombiner::visitVP_FADD(SDNode *N) {
1680616806SDValue DAGCombiner::visitFADD(SDNode *N) {
1680716807 SDValue N0 = N->getOperand(0);
1680816808 SDValue N1 = N->getOperand(1);
16809- bool N0CFP = DAG.isConstantFPBuildVectorOrConstantFP(N0);
16810- bool N1CFP = DAG.isConstantFPBuildVectorOrConstantFP(N1);
16809+ SDNode * N0CFP = DAG.isConstantFPBuildVectorOrConstantFP(N0);
16810+ SDNode * N1CFP = DAG.isConstantFPBuildVectorOrConstantFP(N1);
1681116811 EVT VT = N->getValueType(0);
1681216812 SDLoc DL(N);
1681316813 const TargetOptions &Options = DAG.getTarget().Options;
@@ -16904,8 +16904,10 @@ SDValue DAGCombiner::visitFADD(SDNode *N) {
1690416904 // of rounding steps.
1690516905 if (TLI.isOperationLegalOrCustom(ISD::FMUL, VT) && !N0CFP && !N1CFP) {
1690616906 if (N0.getOpcode() == ISD::FMUL) {
16907- bool CFP00 = DAG.isConstantFPBuildVectorOrConstantFP(N0.getOperand(0));
16908- bool CFP01 = DAG.isConstantFPBuildVectorOrConstantFP(N0.getOperand(1));
16907+ SDNode *CFP00 =
16908+ DAG.isConstantFPBuildVectorOrConstantFP(N0.getOperand(0));
16909+ SDNode *CFP01 =
16910+ DAG.isConstantFPBuildVectorOrConstantFP(N0.getOperand(1));
1690916911
1691016912 // (fadd (fmul x, c), x) -> (fmul x, c+1)
1691116913 if (CFP01 && !CFP00 && N0.getOperand(0) == N1) {
@@ -16925,8 +16927,10 @@ SDValue DAGCombiner::visitFADD(SDNode *N) {
1692516927 }
1692616928
1692716929 if (N1.getOpcode() == ISD::FMUL) {
16928- bool CFP10 = DAG.isConstantFPBuildVectorOrConstantFP(N1.getOperand(0));
16929- bool CFP11 = DAG.isConstantFPBuildVectorOrConstantFP(N1.getOperand(1));
16930+ SDNode *CFP10 =
16931+ DAG.isConstantFPBuildVectorOrConstantFP(N1.getOperand(0));
16932+ SDNode *CFP11 =
16933+ DAG.isConstantFPBuildVectorOrConstantFP(N1.getOperand(1));
1693016934
1693116935 // (fadd x, (fmul x, c)) -> (fmul x, c+1)
1693216936 if (CFP11 && !CFP10 && N1.getOperand(0) == N0) {
@@ -16946,7 +16950,8 @@ SDValue DAGCombiner::visitFADD(SDNode *N) {
1694616950 }
1694716951
1694816952 if (N0.getOpcode() == ISD::FADD) {
16949- bool CFP00 = DAG.isConstantFPBuildVectorOrConstantFP(N0.getOperand(0));
16953+ SDNode *CFP00 =
16954+ DAG.isConstantFPBuildVectorOrConstantFP(N0.getOperand(0));
1695016955 // (fadd (fadd x, x), x) -> (fmul x, 3.0)
1695116956 if (!CFP00 && N0.getOperand(0) == N0.getOperand(1) &&
1695216957 (N0.getOperand(0) == N1)) {
@@ -16956,7 +16961,8 @@ SDValue DAGCombiner::visitFADD(SDNode *N) {
1695616961 }
1695716962
1695816963 if (N1.getOpcode() == ISD::FADD) {
16959- bool CFP10 = DAG.isConstantFPBuildVectorOrConstantFP(N1.getOperand(0));
16964+ SDNode *CFP10 =
16965+ DAG.isConstantFPBuildVectorOrConstantFP(N1.getOperand(0));
1696016966 // (fadd x, (fadd x, x)) -> (fmul x, 3.0)
1696116967 if (!CFP10 && N1.getOperand(0) == N1.getOperand(1) &&
1696216968 N1.getOperand(0) == N0) {
0 commit comments