| 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/generic-node-inl.h" | 5 #include "src/compiler/generic-node-inl.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 | 8 |
| 9 namespace v8 { | 9 namespace v8 { |
| 10 namespace internal { | 10 namespace internal { |
| (...skipping 666 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 677 | 677 |
| 678 void InstructionSelector::VisitTruncateInt64ToInt32(Node* node) { | 678 void InstructionSelector::VisitTruncateInt64ToInt32(Node* node) { |
| 679 X64OperandGenerator g(this); | 679 X64OperandGenerator g(this); |
| 680 Emit(kX64Movl, g.DefineAsRegister(node), g.Use(node->InputAt(0))); | 680 Emit(kX64Movl, g.DefineAsRegister(node), g.Use(node->InputAt(0))); |
| 681 } | 681 } |
| 682 | 682 |
| 683 | 683 |
| 684 void InstructionSelector::VisitFloat64Add(Node* node) { | 684 void InstructionSelector::VisitFloat64Add(Node* node) { |
| 685 X64OperandGenerator g(this); | 685 X64OperandGenerator g(this); |
| 686 Emit(kSSEFloat64Add, g.DefineSameAsFirst(node), | 686 Emit(kSSEFloat64Add, g.DefineSameAsFirst(node), |
| 687 g.UseRegister(node->InputAt(0)), g.UseRegister(node->InputAt(1))); | 687 g.UseRegister(node->InputAt(0)), g.Use(node->InputAt(1))); |
| 688 } | 688 } |
| 689 | 689 |
| 690 | 690 |
| 691 void InstructionSelector::VisitFloat64Sub(Node* node) { | 691 void InstructionSelector::VisitFloat64Sub(Node* node) { |
| 692 X64OperandGenerator g(this); | 692 X64OperandGenerator g(this); |
| 693 Emit(kSSEFloat64Sub, g.DefineSameAsFirst(node), | 693 Emit(kSSEFloat64Sub, g.DefineSameAsFirst(node), |
| 694 g.UseRegister(node->InputAt(0)), g.UseRegister(node->InputAt(1))); | 694 g.UseRegister(node->InputAt(0)), g.Use(node->InputAt(1))); |
| 695 } | 695 } |
| 696 | 696 |
| 697 | 697 |
| 698 void InstructionSelector::VisitFloat64Mul(Node* node) { | 698 void InstructionSelector::VisitFloat64Mul(Node* node) { |
| 699 X64OperandGenerator g(this); | 699 X64OperandGenerator g(this); |
| 700 Emit(kSSEFloat64Mul, g.DefineSameAsFirst(node), | 700 Emit(kSSEFloat64Mul, g.DefineSameAsFirst(node), |
| 701 g.UseRegister(node->InputAt(0)), g.UseRegister(node->InputAt(1))); | 701 g.UseRegister(node->InputAt(0)), g.Use(node->InputAt(1))); |
| 702 } | 702 } |
| 703 | 703 |
| 704 | 704 |
| 705 void InstructionSelector::VisitFloat64Div(Node* node) { | 705 void InstructionSelector::VisitFloat64Div(Node* node) { |
| 706 X64OperandGenerator g(this); | 706 X64OperandGenerator g(this); |
| 707 Emit(kSSEFloat64Div, g.DefineSameAsFirst(node), | 707 Emit(kSSEFloat64Div, g.DefineSameAsFirst(node), |
| 708 g.UseRegister(node->InputAt(0)), g.UseRegister(node->InputAt(1))); | 708 g.UseRegister(node->InputAt(0)), g.Use(node->InputAt(1))); |
| 709 } | 709 } |
| 710 | 710 |
| 711 | 711 |
| 712 void InstructionSelector::VisitFloat64Mod(Node* node) { | 712 void InstructionSelector::VisitFloat64Mod(Node* node) { |
| 713 X64OperandGenerator g(this); | 713 X64OperandGenerator g(this); |
| 714 InstructionOperand* temps[] = {g.TempRegister(rax)}; | 714 InstructionOperand* temps[] = {g.TempRegister(rax)}; |
| 715 Emit(kSSEFloat64Mod, g.DefineSameAsFirst(node), | 715 Emit(kSSEFloat64Mod, g.DefineSameAsFirst(node), |
| 716 g.UseRegister(node->InputAt(0)), g.UseRegister(node->InputAt(1)), 1, | 716 g.UseRegister(node->InputAt(0)), g.UseRegister(node->InputAt(1)), 1, |
| 717 temps); | 717 temps); |
| 718 } | 718 } |
| (...skipping 336 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1055 | 1055 |
| 1056 | 1056 |
| 1057 void InstructionSelector::VisitFloat64LessThanOrEqual(Node* node) { | 1057 void InstructionSelector::VisitFloat64LessThanOrEqual(Node* node) { |
| 1058 FlagsContinuation cont(kUnorderedLessThanOrEqual, node); | 1058 FlagsContinuation cont(kUnorderedLessThanOrEqual, node); |
| 1059 VisitFloat64Compare(this, node, &cont); | 1059 VisitFloat64Compare(this, node, &cont); |
| 1060 } | 1060 } |
| 1061 | 1061 |
| 1062 } // namespace compiler | 1062 } // namespace compiler |
| 1063 } // namespace internal | 1063 } // namespace internal |
| 1064 } // namespace v8 | 1064 } // namespace v8 |
| OLD | NEW |