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 945 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
956 | 956 |
957 | 957 |
958 void InstructionSelector::VisitFloat64Mod(Node* node) { | 958 void InstructionSelector::VisitFloat64Mod(Node* node) { |
959 PPCOperandGenerator g(this); | 959 PPCOperandGenerator g(this); |
960 Emit(kPPC_ModFloat64, g.DefineAsFixed(node, d1), | 960 Emit(kPPC_ModFloat64, g.DefineAsFixed(node, d1), |
961 g.UseFixed(node->InputAt(0), d1), | 961 g.UseFixed(node->InputAt(0), d1), |
962 g.UseFixed(node->InputAt(1), d2))->MarkAsCall(); | 962 g.UseFixed(node->InputAt(1), d2))->MarkAsCall(); |
963 } | 963 } |
964 | 964 |
965 | 965 |
966 void InstructionSelector::VisitFloat64Max(Node* node) { UNREACHABLE(); } | 966 void InstructionSelector::VisitFloat64Max(Node* node) { |
| 967 VisitRRRFloat64(this, node, kPPC_MaxFloat64); |
| 968 } |
967 | 969 |
968 | 970 |
969 void InstructionSelector::VisitFloat64Min(Node* node) { UNREACHABLE(); } | 971 void InstructionSelector::VisitFloat64Min(Node* node) { |
| 972 VisitRRRFloat64(this, node, kPPC_MinFloat64); |
| 973 } |
970 | 974 |
971 | 975 |
972 void InstructionSelector::VisitFloat64Sqrt(Node* node) { | 976 void InstructionSelector::VisitFloat64Sqrt(Node* node) { |
973 VisitRRFloat64(this, kPPC_SqrtFloat64, node); | 977 VisitRRFloat64(this, kPPC_SqrtFloat64, node); |
974 } | 978 } |
975 | 979 |
976 | 980 |
977 void InstructionSelector::VisitFloat64RoundDown(Node* node) { | 981 void InstructionSelector::VisitFloat64RoundDown(Node* node) { |
978 VisitRRFloat64(this, kPPC_FloorFloat64, node); | 982 VisitRRFloat64(this, kPPC_FloorFloat64, node); |
979 } | 983 } |
(...skipping 504 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1484 return; | 1488 return; |
1485 } | 1489 } |
1486 Emit(kPPC_Float64InsertHighWord32, g.DefineSameAsFirst(node), | 1490 Emit(kPPC_Float64InsertHighWord32, g.DefineSameAsFirst(node), |
1487 g.UseRegister(left), g.UseRegister(right)); | 1491 g.UseRegister(left), g.UseRegister(right)); |
1488 } | 1492 } |
1489 | 1493 |
1490 | 1494 |
1491 // static | 1495 // static |
1492 MachineOperatorBuilder::Flags | 1496 MachineOperatorBuilder::Flags |
1493 InstructionSelector::SupportedMachineOperatorFlags() { | 1497 InstructionSelector::SupportedMachineOperatorFlags() { |
1494 return MachineOperatorBuilder::kFloat64RoundDown | | 1498 return MachineOperatorBuilder::kFloat64Max | |
| 1499 MachineOperatorBuilder::kFloat64Min | |
| 1500 MachineOperatorBuilder::kFloat64RoundDown | |
1495 MachineOperatorBuilder::kFloat64RoundTruncate | | 1501 MachineOperatorBuilder::kFloat64RoundTruncate | |
1496 MachineOperatorBuilder::kFloat64RoundTiesAway; | 1502 MachineOperatorBuilder::kFloat64RoundTiesAway; |
1497 // We omit kWord32ShiftIsSafe as s[rl]w use 0x3f as a mask rather than 0x1f. | 1503 // We omit kWord32ShiftIsSafe as s[rl]w use 0x3f as a mask rather than 0x1f. |
1498 } | 1504 } |
1499 | 1505 |
1500 } // namespace compiler | 1506 } // namespace compiler |
1501 } // namespace internal | 1507 } // namespace internal |
1502 } // namespace v8 | 1508 } // namespace v8 |
OLD | NEW |