@@ -20084,16 +20084,9 @@ SDValue DAGCombiner::BuildReciprocalEstimate(SDValue Op, SDNodeFlags Flags) {
20084
20084
// Newton iterations: Est = Est + Est (1 - Arg * Est)
20085
20085
for (int i = 0; i < Iterations; ++i) {
20086
20086
SDValue NewEst = DAG.getNode(ISD::FMUL, DL, VT, Op, Est, Flags);
20087
- AddToWorklist(NewEst.getNode());
20088
-
20089
20087
NewEst = DAG.getNode(ISD::FSUB, DL, VT, FPOne, NewEst, Flags);
20090
- AddToWorklist(NewEst.getNode());
20091
-
20092
20088
NewEst = DAG.getNode(ISD::FMUL, DL, VT, Est, NewEst, Flags);
20093
- AddToWorklist(NewEst.getNode());
20094
-
20095
20089
Est = DAG.getNode(ISD::FADD, DL, VT, Est, NewEst, Flags);
20096
- AddToWorklist(Est.getNode());
20097
20090
}
20098
20091
}
20099
20092
return Est;
@@ -20118,31 +20111,19 @@ SDValue DAGCombiner::buildSqrtNROneConst(SDValue Arg, SDValue Est,
20118
20111
// We now need 0.5 * Arg which we can write as (1.5 * Arg - Arg) so that
20119
20112
// this entire sequence requires only one FP constant.
20120
20113
SDValue HalfArg = DAG.getNode(ISD::FMUL, DL, VT, ThreeHalves, Arg, Flags);
20121
- AddToWorklist(HalfArg.getNode());
20122
-
20123
20114
HalfArg = DAG.getNode(ISD::FSUB, DL, VT, HalfArg, Arg, Flags);
20124
- AddToWorklist(HalfArg.getNode());
20125
20115
20126
20116
// Newton iterations: Est = Est * (1.5 - HalfArg * Est * Est)
20127
20117
for (unsigned i = 0; i < Iterations; ++i) {
20128
20118
SDValue NewEst = DAG.getNode(ISD::FMUL, DL, VT, Est, Est, Flags);
20129
- AddToWorklist(NewEst.getNode());
20130
-
20131
20119
NewEst = DAG.getNode(ISD::FMUL, DL, VT, HalfArg, NewEst, Flags);
20132
- AddToWorklist(NewEst.getNode());
20133
-
20134
20120
NewEst = DAG.getNode(ISD::FSUB, DL, VT, ThreeHalves, NewEst, Flags);
20135
- AddToWorklist(NewEst.getNode());
20136
-
20137
20121
Est = DAG.getNode(ISD::FMUL, DL, VT, Est, NewEst, Flags);
20138
- AddToWorklist(Est.getNode());
20139
20122
}
20140
20123
20141
20124
// If non-reciprocal square root is requested, multiply the result by Arg.
20142
- if (!Reciprocal) {
20125
+ if (!Reciprocal)
20143
20126
Est = DAG.getNode(ISD::FMUL, DL, VT, Est, Arg, Flags);
20144
- AddToWorklist(Est.getNode());
20145
- }
20146
20127
20147
20128
return Est;
20148
20129
}
@@ -20168,13 +20149,8 @@ SDValue DAGCombiner::buildSqrtNRTwoConst(SDValue Arg, SDValue Est,
20168
20149
// E = (E * -0.5) * ((A * E) * E + -3.0)
20169
20150
for (unsigned i = 0; i < Iterations; ++i) {
20170
20151
SDValue AE = DAG.getNode(ISD::FMUL, DL, VT, Arg, Est, Flags);
20171
- AddToWorklist(AE.getNode());
20172
-
20173
20152
SDValue AEE = DAG.getNode(ISD::FMUL, DL, VT, AE, Est, Flags);
20174
- AddToWorklist(AEE.getNode());
20175
-
20176
20153
SDValue RHS = DAG.getNode(ISD::FADD, DL, VT, AEE, MinusThree, Flags);
20177
- AddToWorklist(RHS.getNode());
20178
20154
20179
20155
// When calculating a square root at the last iteration build:
20180
20156
// S = ((A * E) * -0.5) * ((A * E) * E + -3.0)
@@ -20187,10 +20163,8 @@ SDValue DAGCombiner::buildSqrtNRTwoConst(SDValue Arg, SDValue Est,
20187
20163
// SQRT: LHS = (A * E) * -0.5
20188
20164
LHS = DAG.getNode(ISD::FMUL, DL, VT, AE, MinusHalf, Flags);
20189
20165
}
20190
- AddToWorklist(LHS.getNode());
20191
20166
20192
20167
Est = DAG.getNode(ISD::FMUL, DL, VT, LHS, RHS, Flags);
20193
- AddToWorklist(Est.getNode());
20194
20168
}
20195
20169
20196
20170
return Est;
@@ -20247,16 +20221,11 @@ SDValue DAGCombiner::buildSqrtEstimateImpl(SDValue Op, SDNodeFlags Flags,
20247
20221
SDValue Fabs = DAG.getNode(ISD::FABS, DL, VT, Op);
20248
20222
SDValue IsDenorm = DAG.getSetCC(DL, CCVT, Fabs, NormC, ISD::SETLT);
20249
20223
Est = DAG.getNode(SelOpcode, DL, VT, IsDenorm, FPZero, Est);
20250
- AddToWorklist(Fabs.getNode());
20251
- AddToWorklist(IsDenorm.getNode());
20252
- AddToWorklist(Est.getNode());
20253
20224
} else {
20254
20225
// X == 0.0 ? 0.0 : Est
20255
20226
SDValue FPZero = DAG.getConstantFP(0.0, DL, VT);
20256
20227
SDValue IsZero = DAG.getSetCC(DL, CCVT, Op, FPZero, ISD::SETEQ);
20257
20228
Est = DAG.getNode(SelOpcode, DL, VT, IsZero, FPZero, Est);
20258
- AddToWorklist(IsZero.getNode());
20259
- AddToWorklist(Est.getNode());
20260
20229
}
20261
20230
}
20262
20231
}
0 commit comments