| 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 #ifndef V8_COMPILER_NODE_MATCHERS_H_ | 5 #ifndef V8_COMPILER_NODE_MATCHERS_H_ |
| 6 #define V8_COMPILER_NODE_MATCHERS_H_ | 6 #define V8_COMPILER_NODE_MATCHERS_H_ |
| 7 | 7 |
| 8 #include <cmath> | 8 #include <cmath> |
| 9 | 9 |
| 10 #include "src/compiler/node.h" | 10 #include "src/compiler/node.h" |
| (...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 95 has_value_ = true; | 95 has_value_ = true; |
| 96 } | 96 } |
| 97 } | 97 } |
| 98 | 98 |
| 99 | 99 |
| 100 // A pattern matcher for integer constants. | 100 // A pattern matcher for integer constants. |
| 101 template <typename T, IrOpcode::Value kOpcode> | 101 template <typename T, IrOpcode::Value kOpcode> |
| 102 struct IntMatcher FINAL : public ValueMatcher<T, kOpcode> { | 102 struct IntMatcher FINAL : public ValueMatcher<T, kOpcode> { |
| 103 explicit IntMatcher(Node* node) : ValueMatcher<T, kOpcode>(node) {} | 103 explicit IntMatcher(Node* node) : ValueMatcher<T, kOpcode>(node) {} |
| 104 | 104 |
| 105 bool IsMultipleOf(T n) const { |
| 106 return this->HasValue() && (this->Value() % n) == 0; |
| 107 } |
| 105 bool IsPowerOf2() const { | 108 bool IsPowerOf2() const { |
| 106 return this->HasValue() && this->Value() > 0 && | 109 return this->HasValue() && this->Value() > 0 && |
| 107 (this->Value() & (this->Value() - 1)) == 0; | 110 (this->Value() & (this->Value() - 1)) == 0; |
| 108 } | 111 } |
| 109 bool IsNegativePowerOf2() const { | 112 bool IsNegativePowerOf2() const { |
| 110 return this->HasValue() && this->Value() < 0 && | 113 return this->HasValue() && this->Value() < 0 && |
| 111 (-this->Value() & (-this->Value() - 1)) == 0; | 114 (-this->Value() & (-this->Value() - 1)) == 0; |
| 112 } | 115 } |
| 113 }; | 116 }; |
| 114 | 117 |
| (...skipping 391 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 506 typedef BaseWithIndexAndDisplacementMatcher<Int32AddMatcher> | 509 typedef BaseWithIndexAndDisplacementMatcher<Int32AddMatcher> |
| 507 BaseWithIndexAndDisplacement32Matcher; | 510 BaseWithIndexAndDisplacement32Matcher; |
| 508 typedef BaseWithIndexAndDisplacementMatcher<Int64AddMatcher> | 511 typedef BaseWithIndexAndDisplacementMatcher<Int64AddMatcher> |
| 509 BaseWithIndexAndDisplacement64Matcher; | 512 BaseWithIndexAndDisplacement64Matcher; |
| 510 | 513 |
| 511 } // namespace compiler | 514 } // namespace compiler |
| 512 } // namespace internal | 515 } // namespace internal |
| 513 } // namespace v8 | 516 } // namespace v8 |
| 514 | 517 |
| 515 #endif // V8_COMPILER_NODE_MATCHERS_H_ | 518 #endif // V8_COMPILER_NODE_MATCHERS_H_ |
| OLD | NEW |