OLD | NEW |
1 // Copyright 2014 the V8 project authors. All rights reserved. | 1 // Copyright 2014 the V8 project authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "test/cctest/cctest.h" | 5 #include "test/cctest/cctest.h" |
6 | 6 |
7 #include "src/base/utils/random-number-generator.h" | 7 #include "src/base/utils/random-number-generator.h" |
8 #include "src/compiler/graph-inl.h" | 8 #include "src/compiler/graph-inl.h" |
9 #include "src/compiler/js-graph.h" | 9 #include "src/compiler/js-graph.h" |
10 #include "src/compiler/machine-operator-reducer.h" | 10 #include "src/compiler/machine-operator-reducer.h" |
(...skipping 12 matching lines...) Expand all Loading... |
23 return common->Int32Constant(value); | 23 return common->Int32Constant(value); |
24 } | 24 } |
25 | 25 |
26 template <> | 26 template <> |
27 Operator* NewConstantOperator<double>(CommonOperatorBuilder* common, | 27 Operator* NewConstantOperator<double>(CommonOperatorBuilder* common, |
28 volatile double value) { | 28 volatile double value) { |
29 return common->Float64Constant(value); | 29 return common->Float64Constant(value); |
30 } | 30 } |
31 | 31 |
32 | 32 |
| 33 template <typename T> |
| 34 T ValueOfOperator(const Operator* op); |
| 35 |
| 36 template <> |
| 37 int32_t ValueOfOperator<int32_t>(const Operator* op) { |
| 38 CHECK_EQ(IrOpcode::kInt32Constant, op->opcode()); |
| 39 return OpParameter<int32_t>(op); |
| 40 } |
| 41 |
| 42 template <> |
| 43 double ValueOfOperator<double>(const Operator* op) { |
| 44 CHECK_EQ(IrOpcode::kFloat64Constant, op->opcode()); |
| 45 return OpParameter<double>(op); |
| 46 } |
| 47 |
| 48 |
33 class ReducerTester : public HandleAndZoneScope { | 49 class ReducerTester : public HandleAndZoneScope { |
34 public: | 50 public: |
35 explicit ReducerTester(int num_parameters = 0) | 51 explicit ReducerTester(int num_parameters = 0) |
36 : isolate(main_isolate()), | 52 : isolate(main_isolate()), |
37 binop(NULL), | 53 binop(NULL), |
38 unop(NULL), | 54 unop(NULL), |
39 machine(main_zone()), | 55 machine(main_zone()), |
40 common(main_zone()), | 56 common(main_zone()), |
41 graph(main_zone()), | 57 graph(main_zone()), |
42 typer(main_zone()), | 58 typer(main_zone()), |
(...skipping 11 matching lines...) Expand all Loading... |
54 Graph graph; | 70 Graph graph; |
55 Typer typer; | 71 Typer typer; |
56 JSGraph jsgraph; | 72 JSGraph jsgraph; |
57 Node* maxuint32; | 73 Node* maxuint32; |
58 | 74 |
59 template <typename T> | 75 template <typename T> |
60 Node* Constant(volatile T value) { | 76 Node* Constant(volatile T value) { |
61 return graph.NewNode(NewConstantOperator<T>(&common, value)); | 77 return graph.NewNode(NewConstantOperator<T>(&common, value)); |
62 } | 78 } |
63 | 79 |
| 80 template <typename T> |
| 81 const T ValueOf(const Operator* op) { |
| 82 return ValueOfOperator<T>(op); |
| 83 } |
| 84 |
64 // Check that the reduction of this binop applied to constants {a} and {b} | 85 // Check that the reduction of this binop applied to constants {a} and {b} |
65 // yields the {expect} value. | 86 // yields the {expect} value. |
66 template <typename T> | 87 template <typename T> |
67 void CheckFoldBinop(volatile T expect, volatile T a, volatile T b) { | 88 void CheckFoldBinop(volatile T expect, volatile T a, volatile T b) { |
68 CheckFoldBinop<T>(expect, Constant<T>(a), Constant<T>(b)); | 89 CheckFoldBinop<T>(expect, Constant<T>(a), Constant<T>(b)); |
69 } | 90 } |
70 | 91 |
71 // Check that the reduction of this binop applied to {a} and {b} yields | 92 // Check that the reduction of this binop applied to {a} and {b} yields |
72 // the {expect} value. | 93 // the {expect} value. |
73 template <typename T> | 94 template <typename T> |
(...skipping 702 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
776 // TODO(titzer): test MachineOperatorReducer for Int64Mul | 797 // TODO(titzer): test MachineOperatorReducer for Int64Mul |
777 // TODO(titzer): test MachineOperatorReducer for Int64UMul | 798 // TODO(titzer): test MachineOperatorReducer for Int64UMul |
778 // TODO(titzer): test MachineOperatorReducer for Int64Div | 799 // TODO(titzer): test MachineOperatorReducer for Int64Div |
779 // TODO(titzer): test MachineOperatorReducer for Int64UDiv | 800 // TODO(titzer): test MachineOperatorReducer for Int64UDiv |
780 // TODO(titzer): test MachineOperatorReducer for Int64Mod | 801 // TODO(titzer): test MachineOperatorReducer for Int64Mod |
781 // TODO(titzer): test MachineOperatorReducer for Int64UMod | 802 // TODO(titzer): test MachineOperatorReducer for Int64UMod |
782 // TODO(titzer): test MachineOperatorReducer for Int64Neg | 803 // TODO(titzer): test MachineOperatorReducer for Int64Neg |
783 // TODO(titzer): test MachineOperatorReducer for ChangeInt32ToFloat64 | 804 // TODO(titzer): test MachineOperatorReducer for ChangeInt32ToFloat64 |
784 // TODO(titzer): test MachineOperatorReducer for ChangeFloat64ToInt32 | 805 // TODO(titzer): test MachineOperatorReducer for ChangeFloat64ToInt32 |
785 // TODO(titzer): test MachineOperatorReducer for Float64Compare | 806 // TODO(titzer): test MachineOperatorReducer for Float64Compare |
OLD | NEW |