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 <algorithm> | 5 #include <algorithm> |
6 | 6 |
7 #include "src/base/adapters.h" | 7 #include "src/base/adapters.h" |
8 #include "src/compiler/instruction-selector-impl.h" | 8 #include "src/compiler/instruction-selector-impl.h" |
9 #include "src/compiler/node-matchers.h" | 9 #include "src/compiler/node-matchers.h" |
10 #include "src/compiler/node-properties.h" | 10 #include "src/compiler/node-properties.h" |
(...skipping 1342 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1353 } | 1353 } |
1354 case IrOpcode::kInt64LessThan: | 1354 case IrOpcode::kInt64LessThan: |
1355 cont.OverwriteAndNegateIfEqual(kSignedLessThan); | 1355 cont.OverwriteAndNegateIfEqual(kSignedLessThan); |
1356 return VisitWord64Compare(this, value, &cont); | 1356 return VisitWord64Compare(this, value, &cont); |
1357 case IrOpcode::kInt64LessThanOrEqual: | 1357 case IrOpcode::kInt64LessThanOrEqual: |
1358 cont.OverwriteAndNegateIfEqual(kSignedLessThanOrEqual); | 1358 cont.OverwriteAndNegateIfEqual(kSignedLessThanOrEqual); |
1359 return VisitWord64Compare(this, value, &cont); | 1359 return VisitWord64Compare(this, value, &cont); |
1360 case IrOpcode::kUint64LessThan: | 1360 case IrOpcode::kUint64LessThan: |
1361 cont.OverwriteAndNegateIfEqual(kUnsignedLessThan); | 1361 cont.OverwriteAndNegateIfEqual(kUnsignedLessThan); |
1362 return VisitWord64Compare(this, value, &cont); | 1362 return VisitWord64Compare(this, value, &cont); |
| 1363 case IrOpcode::kUint64LessThanOrEqual: |
| 1364 cont.OverwriteAndNegateIfEqual(kUnsignedLessThanOrEqual); |
| 1365 return VisitWord64Compare(this, value, &cont); |
1363 case IrOpcode::kFloat32Equal: | 1366 case IrOpcode::kFloat32Equal: |
1364 cont.OverwriteAndNegateIfEqual(kUnorderedEqual); | 1367 cont.OverwriteAndNegateIfEqual(kUnorderedEqual); |
1365 return VisitFloat32Compare(this, value, &cont); | 1368 return VisitFloat32Compare(this, value, &cont); |
1366 case IrOpcode::kFloat32LessThan: | 1369 case IrOpcode::kFloat32LessThan: |
1367 cont.OverwriteAndNegateIfEqual(kUnsignedGreaterThan); | 1370 cont.OverwriteAndNegateIfEqual(kUnsignedGreaterThan); |
1368 return VisitFloat32Compare(this, value, &cont); | 1371 return VisitFloat32Compare(this, value, &cont); |
1369 case IrOpcode::kFloat32LessThanOrEqual: | 1372 case IrOpcode::kFloat32LessThanOrEqual: |
1370 cont.OverwriteAndNegateIfEqual(kUnsignedGreaterThanOrEqual); | 1373 cont.OverwriteAndNegateIfEqual(kUnsignedGreaterThanOrEqual); |
1371 return VisitFloat32Compare(this, value, &cont); | 1374 return VisitFloat32Compare(this, value, &cont); |
1372 case IrOpcode::kFloat64Equal: | 1375 case IrOpcode::kFloat64Equal: |
(...skipping 192 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1565 VisitWord64Compare(this, node, &cont); | 1568 VisitWord64Compare(this, node, &cont); |
1566 } | 1569 } |
1567 | 1570 |
1568 | 1571 |
1569 void InstructionSelector::VisitUint64LessThan(Node* node) { | 1572 void InstructionSelector::VisitUint64LessThan(Node* node) { |
1570 FlagsContinuation cont(kUnsignedLessThan, node); | 1573 FlagsContinuation cont(kUnsignedLessThan, node); |
1571 VisitWord64Compare(this, node, &cont); | 1574 VisitWord64Compare(this, node, &cont); |
1572 } | 1575 } |
1573 | 1576 |
1574 | 1577 |
| 1578 void InstructionSelector::VisitUint64LessThanOrEqual(Node* node) { |
| 1579 FlagsContinuation cont(kUnsignedLessThanOrEqual, node); |
| 1580 VisitWord64Compare(this, node, &cont); |
| 1581 } |
| 1582 |
| 1583 |
1575 void InstructionSelector::VisitFloat32Equal(Node* node) { | 1584 void InstructionSelector::VisitFloat32Equal(Node* node) { |
1576 FlagsContinuation cont(kUnorderedEqual, node); | 1585 FlagsContinuation cont(kUnorderedEqual, node); |
1577 VisitFloat32Compare(this, node, &cont); | 1586 VisitFloat32Compare(this, node, &cont); |
1578 } | 1587 } |
1579 | 1588 |
1580 | 1589 |
1581 void InstructionSelector::VisitFloat32LessThan(Node* node) { | 1590 void InstructionSelector::VisitFloat32LessThan(Node* node) { |
1582 FlagsContinuation cont(kUnsignedGreaterThan, node); | 1591 FlagsContinuation cont(kUnsignedGreaterThan, node); |
1583 VisitFloat32Compare(this, node, &cont); | 1592 VisitFloat32Compare(this, node, &cont); |
1584 } | 1593 } |
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1657 if (CpuFeatures::IsSupported(SSE4_1)) { | 1666 if (CpuFeatures::IsSupported(SSE4_1)) { |
1658 flags |= MachineOperatorBuilder::kFloat64RoundDown | | 1667 flags |= MachineOperatorBuilder::kFloat64RoundDown | |
1659 MachineOperatorBuilder::kFloat64RoundTruncate; | 1668 MachineOperatorBuilder::kFloat64RoundTruncate; |
1660 } | 1669 } |
1661 return flags; | 1670 return flags; |
1662 } | 1671 } |
1663 | 1672 |
1664 } // namespace compiler | 1673 } // namespace compiler |
1665 } // namespace internal | 1674 } // namespace internal |
1666 } // namespace v8 | 1675 } // namespace v8 |
OLD | NEW |