| 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/base/adapters.h" | 5 #include "src/base/adapters.h" |
| 6 #include "src/compiler/instruction-selector-impl.h" | 6 #include "src/compiler/instruction-selector-impl.h" |
| 7 #include "src/compiler/node-matchers.h" | 7 #include "src/compiler/node-matchers.h" |
| 8 #include "src/compiler/node-properties.h" | 8 #include "src/compiler/node-properties.h" |
| 9 | 9 |
| 10 namespace v8 { | 10 namespace v8 { |
| (...skipping 856 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 867 | 867 |
| 868 #if V8_TARGET_ARCH_PPC64 | 868 #if V8_TARGET_ARCH_PPC64 |
| 869 void InstructionSelector::VisitChangeInt32ToInt64(Node* node) { | 869 void InstructionSelector::VisitChangeInt32ToInt64(Node* node) { |
| 870 // TODO(mbrandy): inspect input to see if nop is appropriate. | 870 // TODO(mbrandy): inspect input to see if nop is appropriate. |
| 871 VisitRR(this, kPPC_ExtendSignWord32, node); | 871 VisitRR(this, kPPC_ExtendSignWord32, node); |
| 872 } | 872 } |
| 873 | 873 |
| 874 | 874 |
| 875 void InstructionSelector::VisitChangeUint32ToUint64(Node* node) { | 875 void InstructionSelector::VisitChangeUint32ToUint64(Node* node) { |
| 876 // TODO(mbrandy): inspect input to see if nop is appropriate. | 876 // TODO(mbrandy): inspect input to see if nop is appropriate. |
| 877 PPCOperandGenerator g(this); | 877 VisitRR(this, kPPC_Uint32ToUint64, node); |
| 878 Emit(kPPC_Uint32ToUint64, g.DefineAsRegister(node), | |
| 879 g.UseRegister(node->InputAt(0))); | |
| 880 } | 878 } |
| 881 #endif | 879 #endif |
| 882 | 880 |
| 883 | 881 |
| 884 void InstructionSelector::VisitTruncateFloat64ToFloat32(Node* node) { | 882 void InstructionSelector::VisitTruncateFloat64ToFloat32(Node* node) { |
| 885 PPCOperandGenerator g(this); | 883 VisitRR(this, kPPC_DoubleToFloat32, node); |
| 886 Emit(kPPC_DoubleToFloat32, g.DefineAsRegister(node), | 884 } |
| 887 g.UseRegister(node->InputAt(0))); | 885 |
| 886 |
| 887 void InstructionSelector::VisitTruncateFloat64ToInt32(Node* node) { |
| 888 switch (TruncationModeOf(node->op())) { |
| 889 case TruncationMode::kJavaScript: |
| 890 return VisitRR(this, kArchTruncateDoubleToI, node); |
| 891 case TruncationMode::kRoundToZero: |
| 892 return VisitRR(this, kPPC_DoubleToInt32, node); |
| 893 } |
| 894 UNREACHABLE(); |
| 888 } | 895 } |
| 889 | 896 |
| 890 | 897 |
| 891 #if V8_TARGET_ARCH_PPC64 | 898 #if V8_TARGET_ARCH_PPC64 |
| 892 void InstructionSelector::VisitTruncateInt64ToInt32(Node* node) { | 899 void InstructionSelector::VisitTruncateInt64ToInt32(Node* node) { |
| 893 PPCOperandGenerator g(this); | |
| 894 // TODO(mbrandy): inspect input to see if nop is appropriate. | 900 // TODO(mbrandy): inspect input to see if nop is appropriate. |
| 895 Emit(kPPC_Int64ToInt32, g.DefineAsRegister(node), | 901 VisitRR(this, kPPC_Int64ToInt32, node); |
| 896 g.UseRegister(node->InputAt(0))); | |
| 897 } | 902 } |
| 898 #endif | 903 #endif |
| 899 | 904 |
| 900 | 905 |
| 901 void InstructionSelector::VisitFloat32Add(Node* node) { | 906 void InstructionSelector::VisitFloat32Add(Node* node) { |
| 902 VisitRRR(this, kPPC_AddDouble, node); | 907 VisitRRR(this, kPPC_AddDouble, node); |
| 903 } | 908 } |
| 904 | 909 |
| 905 | 910 |
| 906 void InstructionSelector::VisitFloat64Add(Node* node) { | 911 void InstructionSelector::VisitFloat64Add(Node* node) { |
| (...skipping 746 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1653 InstructionSelector::SupportedMachineOperatorFlags() { | 1658 InstructionSelector::SupportedMachineOperatorFlags() { |
| 1654 return MachineOperatorBuilder::kFloat64RoundDown | | 1659 return MachineOperatorBuilder::kFloat64RoundDown | |
| 1655 MachineOperatorBuilder::kFloat64RoundTruncate | | 1660 MachineOperatorBuilder::kFloat64RoundTruncate | |
| 1656 MachineOperatorBuilder::kFloat64RoundTiesAway; | 1661 MachineOperatorBuilder::kFloat64RoundTiesAway; |
| 1657 // We omit kWord32ShiftIsSafe as s[rl]w use 0x3f as a mask rather than 0x1f. | 1662 // We omit kWord32ShiftIsSafe as s[rl]w use 0x3f as a mask rather than 0x1f. |
| 1658 } | 1663 } |
| 1659 | 1664 |
| 1660 } // namespace compiler | 1665 } // namespace compiler |
| 1661 } // namespace internal | 1666 } // namespace internal |
| 1662 } // namespace v8 | 1667 } // namespace v8 |
| OLD | NEW |