| Index: test/cctest/compiler/test-machine-operator-reducer.cc
|
| diff --git a/test/cctest/compiler/test-machine-operator-reducer.cc b/test/cctest/compiler/test-machine-operator-reducer.cc
|
| index c46045635d2354eb88cabdbded9e3ce7c1c9be9e..7ee5751875476846abc5cee5fba4c11b394a5087 100644
|
| --- a/test/cctest/compiler/test-machine-operator-reducer.cc
|
| +++ b/test/cctest/compiler/test-machine-operator-reducer.cc
|
| @@ -100,7 +100,7 @@ class ReducerTester : public HandleAndZoneScope {
|
| // the {expect} value.
|
| template <typename T>
|
| void CheckFoldBinop(volatile T expect, Node* a, Node* b) {
|
| - CHECK_NE(NULL, binop);
|
| + CHECK(binop);
|
| Node* n = CreateBinopNode(a, b);
|
| MachineOperatorReducer reducer(&jsgraph);
|
| Reduction reduction = reducer.Reduce(n);
|
| @@ -112,7 +112,7 @@ class ReducerTester : public HandleAndZoneScope {
|
| // Check that the reduction of this binop applied to {a} and {b} yields
|
| // the {expect} node.
|
| void CheckBinop(Node* expect, Node* a, Node* b) {
|
| - CHECK_NE(NULL, binop);
|
| + CHECK(binop);
|
| Node* n = CreateBinopNode(a, b);
|
| MachineOperatorReducer reducer(&jsgraph);
|
| Reduction reduction = reducer.Reduce(n);
|
| @@ -124,7 +124,7 @@ class ReducerTester : public HandleAndZoneScope {
|
| // this binop applied to {left_expect} and {right_expect}.
|
| void CheckFoldBinop(Node* left_expect, Node* right_expect, Node* left,
|
| Node* right) {
|
| - CHECK_NE(NULL, binop);
|
| + CHECK(binop);
|
| Node* n = CreateBinopNode(left, right);
|
| MachineOperatorReducer reducer(&jsgraph);
|
| Reduction reduction = reducer.Reduce(n);
|
| @@ -139,7 +139,7 @@ class ReducerTester : public HandleAndZoneScope {
|
| template <typename T>
|
| void CheckFoldBinop(volatile T left_expect, const Operator* op_expect,
|
| Node* right_expect, Node* left, Node* right) {
|
| - CHECK_NE(NULL, binop);
|
| + CHECK(binop);
|
| Node* n = CreateBinopNode(left, right);
|
| MachineOperatorReducer reducer(&jsgraph);
|
| Reduction r = reducer.Reduce(n);
|
| @@ -154,7 +154,7 @@ class ReducerTester : public HandleAndZoneScope {
|
| template <typename T>
|
| void CheckFoldBinop(Node* left_expect, const Operator* op_expect,
|
| volatile T right_expect, Node* left, Node* right) {
|
| - CHECK_NE(NULL, binop);
|
| + CHECK(binop);
|
| Node* n = CreateBinopNode(left, right);
|
| MachineOperatorReducer reducer(&jsgraph);
|
| Reduction r = reducer.Reduce(n);
|
| @@ -723,133 +723,6 @@ TEST(ReduceLoadStore) {
|
| }
|
|
|
|
|
| -static void CheckNans(ReducerTester* R) {
|
| - Node* x = R->Parameter();
|
| - std::vector<double> nans = ValueHelper::nan_vector();
|
| - for (std::vector<double>::const_iterator pl = nans.begin(); pl != nans.end();
|
| - ++pl) {
|
| - for (std::vector<double>::const_iterator pr = nans.begin();
|
| - pr != nans.end(); ++pr) {
|
| - Node* nan1 = R->Constant<double>(*pl);
|
| - Node* nan2 = R->Constant<double>(*pr);
|
| - R->CheckBinop(nan1, x, nan1); // x op NaN => NaN
|
| - R->CheckBinop(nan1, nan1, x); // NaN op x => NaN
|
| - R->CheckBinop(nan1, nan2, nan1); // NaN op NaN => NaN
|
| - }
|
| - }
|
| -}
|
| -
|
| -
|
| -TEST(ReduceFloat64Add) {
|
| - ReducerTester R;
|
| - R.binop = R.machine.Float64Add();
|
| -
|
| - FOR_FLOAT64_INPUTS(pl) {
|
| - FOR_FLOAT64_INPUTS(pr) {
|
| - double x = *pl, y = *pr;
|
| - R.CheckFoldBinop<double>(x + y, x, y);
|
| - }
|
| - }
|
| -
|
| - FOR_FLOAT64_INPUTS(i) {
|
| - Double tmp(*i);
|
| - if (!tmp.IsSpecial() || tmp.IsInfinite()) {
|
| - // Don't check NaNs as they are reduced more.
|
| - R.CheckPutConstantOnRight(*i);
|
| - }
|
| - }
|
| -
|
| - CheckNans(&R);
|
| -}
|
| -
|
| -
|
| -TEST(ReduceFloat64Sub) {
|
| - ReducerTester R;
|
| - R.binop = R.machine.Float64Sub();
|
| -
|
| - FOR_FLOAT64_INPUTS(pl) {
|
| - FOR_FLOAT64_INPUTS(pr) {
|
| - double x = *pl, y = *pr;
|
| - R.CheckFoldBinop<double>(x - y, x, y);
|
| - }
|
| - }
|
| -
|
| - Node* zero = R.Constant<double>(0.0);
|
| - Node* x = R.Parameter();
|
| -
|
| - R.CheckBinop(x, x, zero); // x - 0.0 => x
|
| -
|
| - CheckNans(&R);
|
| -}
|
| -
|
| -
|
| -TEST(ReduceFloat64Mul) {
|
| - ReducerTester R;
|
| - R.binop = R.machine.Float64Mul();
|
| -
|
| - FOR_FLOAT64_INPUTS(pl) {
|
| - FOR_FLOAT64_INPUTS(pr) {
|
| - double x = *pl, y = *pr;
|
| - R.CheckFoldBinop<double>(x * y, x, y);
|
| - }
|
| - }
|
| -
|
| - double inf = V8_INFINITY;
|
| - R.CheckPutConstantOnRight(-inf);
|
| - R.CheckPutConstantOnRight(-0.1);
|
| - R.CheckPutConstantOnRight(0.1);
|
| - R.CheckPutConstantOnRight(inf);
|
| -
|
| - Node* x = R.Parameter();
|
| - Node* one = R.Constant<double>(1.0);
|
| -
|
| - R.CheckBinop(x, x, one); // x * 1.0 => x
|
| - R.CheckBinop(x, one, x); // 1.0 * x => x
|
| -
|
| - CheckNans(&R);
|
| -}
|
| -
|
| -
|
| -TEST(ReduceFloat64Div) {
|
| - ReducerTester R;
|
| - R.binop = R.machine.Float64Div();
|
| -
|
| - FOR_FLOAT64_INPUTS(pl) {
|
| - FOR_FLOAT64_INPUTS(pr) {
|
| - double x = *pl, y = *pr;
|
| - R.CheckFoldBinop<double>(x / y, x, y);
|
| - }
|
| - }
|
| -
|
| - Node* x = R.Parameter();
|
| - Node* one = R.Constant<double>(1.0);
|
| -
|
| - R.CheckBinop(x, x, one); // x / 1.0 => x
|
| -
|
| - CheckNans(&R);
|
| -}
|
| -
|
| -
|
| -TEST(ReduceFloat64Mod) {
|
| - ReducerTester R;
|
| - R.binop = R.machine.Float64Mod();
|
| -
|
| - FOR_FLOAT64_INPUTS(pl) {
|
| - FOR_FLOAT64_INPUTS(pr) {
|
| - double x = *pl, y = *pr;
|
| - R.CheckFoldBinop<double>(modulo(x, y), x, y);
|
| - }
|
| - }
|
| -
|
| - Node* x = R.Parameter();
|
| - Node* zero = R.Constant<double>(0.0);
|
| -
|
| - R.CheckFoldBinop<double>(std::numeric_limits<double>::quiet_NaN(), x, zero);
|
| -
|
| - CheckNans(&R);
|
| -}
|
| -
|
| -
|
| // TODO(titzer): test MachineOperatorReducer for Word64And
|
| // TODO(titzer): test MachineOperatorReducer for Word64Or
|
| // TODO(titzer): test MachineOperatorReducer for Word64Xor
|
| @@ -870,3 +743,8 @@ TEST(ReduceFloat64Mod) {
|
| // TODO(titzer): test MachineOperatorReducer for ChangeInt32ToFloat64
|
| // TODO(titzer): test MachineOperatorReducer for ChangeFloat64ToInt32
|
| // TODO(titzer): test MachineOperatorReducer for Float64Compare
|
| +// TODO(titzer): test MachineOperatorReducer for Float64Add
|
| +// TODO(titzer): test MachineOperatorReducer for Float64Sub
|
| +// TODO(titzer): test MachineOperatorReducer for Float64Mul
|
| +// TODO(titzer): test MachineOperatorReducer for Float64Div
|
| +// TODO(titzer): test MachineOperatorReducer for Float64Mod
|
|
|