@@ -1205,13 +1205,13 @@ SDValue DAGCombiner::reassociateOpsCommutative(unsigned Opc, const SDLoc &DL,
1205
1205
SDValue N00 = N0.getOperand(0);
1206
1206
SDValue N01 = N0.getOperand(1);
1207
1207
1208
- if (DAG.isConstantIntBuildVectorOrConstantInt(N01)) {
1208
+ if (DAG.isConstantIntBuildVectorOrConstantInt(peekThroughBitcasts( N01) )) {
1209
1209
SDNodeFlags NewFlags;
1210
1210
if (N0.getOpcode() == ISD::ADD && N0->getFlags().hasNoUnsignedWrap() &&
1211
1211
Flags.hasNoUnsignedWrap())
1212
1212
NewFlags.setNoUnsignedWrap(true);
1213
1213
1214
- if (DAG.isConstantIntBuildVectorOrConstantInt(N1 )) {
1214
+ if (DAG.isConstantIntBuildVectorOrConstantInt(peekThroughBitcasts(N1) )) {
1215
1215
// Reassociate: (op (op x, c1), c2) -> (op x, (op c1, c2))
1216
1216
if (SDValue OpNode = DAG.FoldConstantArithmetic(Opc, DL, VT, {N01, N1}))
1217
1217
return DAG.getNode(Opc, DL, VT, N00, OpNode, NewFlags);
@@ -9931,10 +9931,10 @@ SDValue DAGCombiner::visitRotate(SDNode *N) {
9931
9931
// fold (rot* (rot* x, c2), c1)
9932
9932
// -> (rot* x, ((c1 % bitsize) +- (c2 % bitsize) + bitsize) % bitsize)
9933
9933
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 );
9938
9938
bool SameSide = (N->getOpcode() == NextOp);
9939
9939
unsigned CombineOp = SameSide ? ISD::ADD : ISD::SUB;
9940
9940
SDValue BitsizeC = DAG.getConstant(Bitsize, dl, ShiftVT);
@@ -16806,8 +16806,8 @@ SDValue DAGCombiner::visitVP_FADD(SDNode *N) {
16806
16806
SDValue DAGCombiner::visitFADD(SDNode *N) {
16807
16807
SDValue N0 = N->getOperand(0);
16808
16808
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);
16811
16811
EVT VT = N->getValueType(0);
16812
16812
SDLoc DL(N);
16813
16813
const TargetOptions &Options = DAG.getTarget().Options;
@@ -16904,8 +16904,10 @@ SDValue DAGCombiner::visitFADD(SDNode *N) {
16904
16904
// of rounding steps.
16905
16905
if (TLI.isOperationLegalOrCustom(ISD::FMUL, VT) && !N0CFP && !N1CFP) {
16906
16906
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));
16909
16911
16910
16912
// (fadd (fmul x, c), x) -> (fmul x, c+1)
16911
16913
if (CFP01 && !CFP00 && N0.getOperand(0) == N1) {
@@ -16925,8 +16927,10 @@ SDValue DAGCombiner::visitFADD(SDNode *N) {
16925
16927
}
16926
16928
16927
16929
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));
16930
16934
16931
16935
// (fadd x, (fmul x, c)) -> (fmul x, c+1)
16932
16936
if (CFP11 && !CFP10 && N1.getOperand(0) == N0) {
@@ -16946,7 +16950,8 @@ SDValue DAGCombiner::visitFADD(SDNode *N) {
16946
16950
}
16947
16951
16948
16952
if (N0.getOpcode() == ISD::FADD) {
16949
- bool CFP00 = DAG.isConstantFPBuildVectorOrConstantFP(N0.getOperand(0));
16953
+ SDNode *CFP00 =
16954
+ DAG.isConstantFPBuildVectorOrConstantFP(N0.getOperand(0));
16950
16955
// (fadd (fadd x, x), x) -> (fmul x, 3.0)
16951
16956
if (!CFP00 && N0.getOperand(0) == N0.getOperand(1) &&
16952
16957
(N0.getOperand(0) == N1)) {
@@ -16956,7 +16961,8 @@ SDValue DAGCombiner::visitFADD(SDNode *N) {
16956
16961
}
16957
16962
16958
16963
if (N1.getOpcode() == ISD::FADD) {
16959
- bool CFP10 = DAG.isConstantFPBuildVectorOrConstantFP(N1.getOperand(0));
16964
+ SDNode *CFP10 =
16965
+ DAG.isConstantFPBuildVectorOrConstantFP(N1.getOperand(0));
16960
16966
// (fadd x, (fadd x, x)) -> (fmul x, 3.0)
16961
16967
if (!CFP10 && N1.getOperand(0) == N1.getOperand(1) &&
16962
16968
N1.getOperand(0) == N0) {
0 commit comments