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 |