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 "src/compiler/instruction-selector-impl.h" | 5 #include "src/compiler/instruction-selector-impl.h" |
6 #include "src/compiler/node-matchers.h" | 6 #include "src/compiler/node-matchers.h" |
7 #include "src/compiler/node-properties.h" | 7 #include "src/compiler/node-properties.h" |
8 | 8 |
9 namespace v8 { | 9 namespace v8 { |
10 namespace internal { | 10 namespace internal { |
(...skipping 1086 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1097 | 1097 |
1098 | 1098 |
1099 void InstructionSelector::VisitFloat64Mod(Node* node) { | 1099 void InstructionSelector::VisitFloat64Mod(Node* node) { |
1100 Arm64OperandGenerator g(this); | 1100 Arm64OperandGenerator g(this); |
1101 Emit(kArm64Float64Mod, g.DefineAsFixed(node, d0), | 1101 Emit(kArm64Float64Mod, g.DefineAsFixed(node, d0), |
1102 g.UseFixed(node->InputAt(0), d0), | 1102 g.UseFixed(node->InputAt(0), d0), |
1103 g.UseFixed(node->InputAt(1), d1))->MarkAsCall(); | 1103 g.UseFixed(node->InputAt(1), d1))->MarkAsCall(); |
1104 } | 1104 } |
1105 | 1105 |
1106 | 1106 |
1107 void InstructionSelector::VisitFloat64Max(Node* node) { UNREACHABLE(); } | 1107 void InstructionSelector::VisitFloat64Max(Node* node) { |
| 1108 Arm64OperandGenerator g(this); |
| 1109 Node* left = node->InputAt(0); |
| 1110 Node* right = node->InputAt(1); |
| 1111 Emit(kArm64Float64Max, g.DefineAsRegister(node), g.UseRegister(left), |
| 1112 g.UseRegister(right)); |
| 1113 } |
1108 | 1114 |
1109 | 1115 |
1110 void InstructionSelector::VisitFloat64Min(Node* node) { UNREACHABLE(); } | 1116 void InstructionSelector::VisitFloat64Min(Node* node) { |
| 1117 Arm64OperandGenerator g(this); |
| 1118 Node* left = node->InputAt(0); |
| 1119 Node* right = node->InputAt(1); |
| 1120 Emit(kArm64Float64Min, g.DefineAsRegister(node), g.UseRegister(left), |
| 1121 g.UseRegister(right)); |
| 1122 } |
1111 | 1123 |
1112 | 1124 |
1113 void InstructionSelector::VisitFloat64Sqrt(Node* node) { | 1125 void InstructionSelector::VisitFloat64Sqrt(Node* node) { |
1114 VisitRRFloat64(this, kArm64Float64Sqrt, node); | 1126 VisitRRFloat64(this, kArm64Float64Sqrt, node); |
1115 } | 1127 } |
1116 | 1128 |
1117 | 1129 |
1118 void InstructionSelector::VisitFloat64RoundDown(Node* node) { | 1130 void InstructionSelector::VisitFloat64RoundDown(Node* node) { |
1119 VisitRRFloat64(this, kArm64Float64RoundDown, node); | 1131 VisitRRFloat64(this, kArm64Float64RoundDown, node); |
1120 } | 1132 } |
(...skipping 553 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1674 g.UseRegister(left), g.UseRegister(right)); | 1686 g.UseRegister(left), g.UseRegister(right)); |
1675 } | 1687 } |
1676 | 1688 |
1677 | 1689 |
1678 // static | 1690 // static |
1679 MachineOperatorBuilder::Flags | 1691 MachineOperatorBuilder::Flags |
1680 InstructionSelector::SupportedMachineOperatorFlags() { | 1692 InstructionSelector::SupportedMachineOperatorFlags() { |
1681 return MachineOperatorBuilder::kFloat64RoundDown | | 1693 return MachineOperatorBuilder::kFloat64RoundDown | |
1682 MachineOperatorBuilder::kFloat64RoundTruncate | | 1694 MachineOperatorBuilder::kFloat64RoundTruncate | |
1683 MachineOperatorBuilder::kFloat64RoundTiesAway | | 1695 MachineOperatorBuilder::kFloat64RoundTiesAway | |
| 1696 MachineOperatorBuilder::kFloat64Max | |
| 1697 MachineOperatorBuilder::kFloat64Min | |
1684 MachineOperatorBuilder::kWord32ShiftIsSafe | | 1698 MachineOperatorBuilder::kWord32ShiftIsSafe | |
1685 MachineOperatorBuilder::kInt32DivIsSafe | | 1699 MachineOperatorBuilder::kInt32DivIsSafe | |
1686 MachineOperatorBuilder::kUint32DivIsSafe; | 1700 MachineOperatorBuilder::kUint32DivIsSafe; |
1687 } | 1701 } |
1688 | 1702 |
1689 } // namespace compiler | 1703 } // namespace compiler |
1690 } // namespace internal | 1704 } // namespace internal |
1691 } // namespace v8 | 1705 } // namespace v8 |
OLD | NEW |