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/instruction-selector-impl.h" | 5 #include "src/compiler/instruction-selector-impl.h" |
6 #include "src/compiler/node-matchers.h" | 6 #include "src/compiler/node-matchers.h" |
7 #include "src/compiler/node-properties-inl.h" | 7 #include "src/compiler/node-properties-inl.h" |
8 | 8 |
9 namespace v8 { | 9 namespace v8 { |
10 namespace internal { | 10 namespace internal { |
(...skipping 539 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
550 | 550 |
551 void InstructionSelector::VisitTruncateFloat64ToFloat32(Node* node) { | 551 void InstructionSelector::VisitTruncateFloat64ToFloat32(Node* node) { |
552 IA32OperandGenerator g(this); | 552 IA32OperandGenerator g(this); |
553 Emit(kSSECvtsd2ss, g.DefineAsRegister(node), g.Use(node->InputAt(0))); | 553 Emit(kSSECvtsd2ss, g.DefineAsRegister(node), g.Use(node->InputAt(0))); |
554 } | 554 } |
555 | 555 |
556 | 556 |
557 void InstructionSelector::VisitFloat64Add(Node* node) { | 557 void InstructionSelector::VisitFloat64Add(Node* node) { |
558 IA32OperandGenerator g(this); | 558 IA32OperandGenerator g(this); |
559 Emit(kSSEFloat64Add, g.DefineSameAsFirst(node), | 559 Emit(kSSEFloat64Add, g.DefineSameAsFirst(node), |
560 g.UseRegister(node->InputAt(0)), g.UseRegister(node->InputAt(1))); | 560 g.UseRegister(node->InputAt(0)), g.Use(node->InputAt(1))); |
561 } | 561 } |
562 | 562 |
563 | 563 |
564 void InstructionSelector::VisitFloat64Sub(Node* node) { | 564 void InstructionSelector::VisitFloat64Sub(Node* node) { |
565 IA32OperandGenerator g(this); | 565 IA32OperandGenerator g(this); |
566 Emit(kSSEFloat64Sub, g.DefineSameAsFirst(node), | 566 Emit(kSSEFloat64Sub, g.DefineSameAsFirst(node), |
567 g.UseRegister(node->InputAt(0)), g.UseRegister(node->InputAt(1))); | 567 g.UseRegister(node->InputAt(0)), g.Use(node->InputAt(1))); |
568 } | 568 } |
569 | 569 |
570 | 570 |
571 void InstructionSelector::VisitFloat64Mul(Node* node) { | 571 void InstructionSelector::VisitFloat64Mul(Node* node) { |
572 IA32OperandGenerator g(this); | 572 IA32OperandGenerator g(this); |
573 Emit(kSSEFloat64Mul, g.DefineSameAsFirst(node), | 573 Emit(kSSEFloat64Mul, g.DefineSameAsFirst(node), |
574 g.UseRegister(node->InputAt(0)), g.UseRegister(node->InputAt(1))); | 574 g.UseRegister(node->InputAt(0)), g.Use(node->InputAt(1))); |
575 } | 575 } |
576 | 576 |
577 | 577 |
578 void InstructionSelector::VisitFloat64Div(Node* node) { | 578 void InstructionSelector::VisitFloat64Div(Node* node) { |
579 IA32OperandGenerator g(this); | 579 IA32OperandGenerator g(this); |
580 Emit(kSSEFloat64Div, g.DefineSameAsFirst(node), | 580 Emit(kSSEFloat64Div, g.DefineSameAsFirst(node), |
581 g.UseRegister(node->InputAt(0)), g.UseRegister(node->InputAt(1))); | 581 g.UseRegister(node->InputAt(0)), g.Use(node->InputAt(1))); |
582 } | 582 } |
583 | 583 |
584 | 584 |
585 void InstructionSelector::VisitFloat64Mod(Node* node) { | 585 void InstructionSelector::VisitFloat64Mod(Node* node) { |
586 IA32OperandGenerator g(this); | 586 IA32OperandGenerator g(this); |
587 InstructionOperand* temps[] = {g.TempRegister(eax)}; | 587 InstructionOperand* temps[] = {g.TempRegister(eax)}; |
588 Emit(kSSEFloat64Mod, g.DefineSameAsFirst(node), | 588 Emit(kSSEFloat64Mod, g.DefineSameAsFirst(node), |
589 g.UseRegister(node->InputAt(0)), g.UseRegister(node->InputAt(1)), 1, | 589 g.UseRegister(node->InputAt(0)), g.UseRegister(node->InputAt(1)), 1, |
590 temps); | 590 temps); |
591 } | 591 } |
(...skipping 274 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
866 | 866 |
867 | 867 |
868 void InstructionSelector::VisitFloat64LessThanOrEqual(Node* node) { | 868 void InstructionSelector::VisitFloat64LessThanOrEqual(Node* node) { |
869 FlagsContinuation cont(kUnorderedLessThanOrEqual, node); | 869 FlagsContinuation cont(kUnorderedLessThanOrEqual, node); |
870 VisitFloat64Compare(this, node, &cont); | 870 VisitFloat64Compare(this, node, &cont); |
871 } | 871 } |
872 | 872 |
873 } // namespace compiler | 873 } // namespace compiler |
874 } // namespace internal | 874 } // namespace internal |
875 } // namespace v8 | 875 } // namespace v8 |
OLD | NEW |