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/bits.h" | 5 #include "src/base/bits.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 878 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
889 | 889 |
890 | 890 |
891 void InstructionSelector::VisitFloat64LessThanOrEqual(Node* node) { | 891 void InstructionSelector::VisitFloat64LessThanOrEqual(Node* node) { |
892 FlagsContinuation cont(kUnsignedLessThanOrEqual, node); | 892 FlagsContinuation cont(kUnsignedLessThanOrEqual, node); |
893 VisitFloat64Compare(this, node, &cont); | 893 VisitFloat64Compare(this, node, &cont); |
894 } | 894 } |
895 | 895 |
896 | 896 |
897 void InstructionSelector::VisitFloat64ExtractLowWord32(Node* node) { | 897 void InstructionSelector::VisitFloat64ExtractLowWord32(Node* node) { |
898 MipsOperandGenerator g(this); | 898 MipsOperandGenerator g(this); |
899 Emit(kMipsFmoveLowUwD, g.DefineAsRegister(node), | 899 Emit(kMipsFloat64ExtractLowWord32, g.DefineAsRegister(node), |
900 g.UseRegister(node->InputAt(0))); | 900 g.UseRegister(node->InputAt(0))); |
901 } | 901 } |
902 | 902 |
903 | 903 |
904 void InstructionSelector::VisitFloat64ExtractHighWord32(Node* node) { | 904 void InstructionSelector::VisitFloat64ExtractHighWord32(Node* node) { |
905 MipsOperandGenerator g(this); | 905 MipsOperandGenerator g(this); |
906 Emit(kMipsFmoveHighUwD, g.DefineAsRegister(node), | 906 Emit(kMipsFloat64ExtractHighWord32, g.DefineAsRegister(node), |
907 g.UseRegister(node->InputAt(0))); | 907 g.UseRegister(node->InputAt(0))); |
908 } | 908 } |
909 | 909 |
910 | 910 |
911 void InstructionSelector::VisitFloat64InsertLowWord32(Node* node) { | 911 void InstructionSelector::VisitFloat64InsertLowWord32(Node* node) { |
912 MipsOperandGenerator g(this); | 912 MipsOperandGenerator g(this); |
913 Node* left = node->InputAt(0); | 913 Node* left = node->InputAt(0); |
914 Node* right = node->InputAt(1); | 914 Node* right = node->InputAt(1); |
915 Emit(kMipsFmoveLowDUw, g.DefineSameAsFirst(node), g.UseRegister(left), | 915 Emit(kMipsFloat64InsertLowWord32, g.DefineSameAsFirst(node), |
916 g.UseRegister(right)); | 916 g.UseRegister(left), g.UseRegister(right)); |
917 } | 917 } |
918 | 918 |
919 | 919 |
920 void InstructionSelector::VisitFloat64InsertHighWord32(Node* node) { | 920 void InstructionSelector::VisitFloat64InsertHighWord32(Node* node) { |
921 MipsOperandGenerator g(this); | 921 MipsOperandGenerator g(this); |
922 Node* left = node->InputAt(0); | 922 Node* left = node->InputAt(0); |
923 Node* right = node->InputAt(1); | 923 Node* right = node->InputAt(1); |
924 Emit(kMipsFmoveHighDUw, g.DefineSameAsFirst(node), g.UseRegister(left), | 924 Emit(kMipsFloat64InsertHighWord32, g.DefineSameAsFirst(node), |
925 g.UseRegister(right)); | 925 g.UseRegister(left), g.UseRegister(right)); |
926 } | 926 } |
927 | 927 |
928 | 928 |
929 // static | 929 // static |
930 MachineOperatorBuilder::Flags | 930 MachineOperatorBuilder::Flags |
931 InstructionSelector::SupportedMachineOperatorFlags() { | 931 InstructionSelector::SupportedMachineOperatorFlags() { |
932 if (IsMipsArchVariant(kMips32r2) || IsMipsArchVariant(kMips32r6)) { | 932 if (IsMipsArchVariant(kMips32r2) || IsMipsArchVariant(kMips32r6)) { |
933 return MachineOperatorBuilder::kFloat64RoundDown | | 933 return MachineOperatorBuilder::kFloat64RoundDown | |
934 MachineOperatorBuilder::kFloat64RoundTruncate; | 934 MachineOperatorBuilder::kFloat64RoundTruncate; |
935 } | 935 } |
936 return MachineOperatorBuilder::kNoFlags; | 936 return MachineOperatorBuilder::kNoFlags; |
937 } | 937 } |
938 | 938 |
939 } // namespace compiler | 939 } // namespace compiler |
940 } // namespace internal | 940 } // namespace internal |
941 } // namespace v8 | 941 } // namespace v8 |
OLD | NEW |