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 867 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
878 VisitFloat64Compare(this, node, &cont); | 878 VisitFloat64Compare(this, node, &cont); |
879 } | 879 } |
880 | 880 |
881 | 881 |
882 void InstructionSelector::VisitFloat64LessThanOrEqual(Node* node) { | 882 void InstructionSelector::VisitFloat64LessThanOrEqual(Node* node) { |
883 FlagsContinuation cont(kUnsignedLessThanOrEqual, node); | 883 FlagsContinuation cont(kUnsignedLessThanOrEqual, node); |
884 VisitFloat64Compare(this, node, &cont); | 884 VisitFloat64Compare(this, node, &cont); |
885 } | 885 } |
886 | 886 |
887 | 887 |
| 888 void InstructionSelector::VisitFloat64ExtractLowWord32(Node* node) { |
| 889 MipsOperandGenerator g(this); |
| 890 Emit(kMipsFmoveLowUwD, g.DefineAsRegister(node), |
| 891 g.UseRegister(node->InputAt(0))); |
| 892 } |
| 893 |
| 894 |
| 895 void InstructionSelector::VisitFloat64ExtractHighWord32(Node* node) { |
| 896 MipsOperandGenerator g(this); |
| 897 Emit(kMipsFmoveHighUwD, g.DefineAsRegister(node), |
| 898 g.UseRegister(node->InputAt(0))); |
| 899 } |
| 900 |
| 901 |
| 902 void InstructionSelector::VisitFloat64InsertLowWord32(Node* node) { |
| 903 MipsOperandGenerator g(this); |
| 904 Node* left = node->InputAt(0); |
| 905 Node* right = node->InputAt(1); |
| 906 Emit(kMipsFmoveLowDUw, g.DefineSameAsFirst(node), g.UseRegister(left), |
| 907 g.UseRegister(right)); |
| 908 } |
| 909 |
| 910 |
| 911 void InstructionSelector::VisitFloat64InsertHighWord32(Node* node) { |
| 912 MipsOperandGenerator g(this); |
| 913 Node* left = node->InputAt(0); |
| 914 Node* right = node->InputAt(1); |
| 915 Emit(kMipsFmoveHighDUw, g.DefineSameAsFirst(node), g.UseRegister(left), |
| 916 g.UseRegister(right)); |
| 917 } |
| 918 |
| 919 |
888 // static | 920 // static |
889 MachineOperatorBuilder::Flags | 921 MachineOperatorBuilder::Flags |
890 InstructionSelector::SupportedMachineOperatorFlags() { | 922 InstructionSelector::SupportedMachineOperatorFlags() { |
891 if (IsMipsArchVariant(kMips32r2) || IsMipsArchVariant(kMips32r6)) { | 923 if (IsMipsArchVariant(kMips32r2) || IsMipsArchVariant(kMips32r6)) { |
892 return MachineOperatorBuilder::kFloat64Floor | | 924 return MachineOperatorBuilder::kFloat64Floor | |
893 MachineOperatorBuilder::kFloat64Ceil | | 925 MachineOperatorBuilder::kFloat64Ceil | |
894 MachineOperatorBuilder::kFloat64RoundTruncate; | 926 MachineOperatorBuilder::kFloat64RoundTruncate; |
895 } | 927 } |
896 return MachineOperatorBuilder::kNoFlags; | 928 return MachineOperatorBuilder::kNoFlags; |
897 } | 929 } |
898 | 930 |
899 } // namespace compiler | 931 } // namespace compiler |
900 } // namespace internal | 932 } // namespace internal |
901 } // namespace v8 | 933 } // namespace v8 |
OLD | NEW |