Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(293)

Side by Side Diff: src/compiler/mips/instruction-selector-mips.cc

Issue 1477043004: MIPS: [turbofan] Implement Float32Round(TiesEven|RoundUp|RoundDown|Truncate). (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 5 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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/adapters.h" 5 #include "src/base/adapters.h"
6 #include "src/base/bits.h" 6 #include "src/base/bits.h"
7 #include "src/compiler/instruction-selector-impl.h" 7 #include "src/compiler/instruction-selector-impl.h"
8 #include "src/compiler/node-matchers.h" 8 #include "src/compiler/node-matchers.h"
9 #include "src/compiler/node-properties.h" 9 #include "src/compiler/node-properties.h"
10 10
(...skipping 629 matching lines...) Expand 10 before | Expand all | Expand 10 after
640 void InstructionSelector::VisitFloat32Sqrt(Node* node) { 640 void InstructionSelector::VisitFloat32Sqrt(Node* node) {
641 VisitRR(this, kMipsSqrtS, node); 641 VisitRR(this, kMipsSqrtS, node);
642 } 642 }
643 643
644 644
645 void InstructionSelector::VisitFloat64Sqrt(Node* node) { 645 void InstructionSelector::VisitFloat64Sqrt(Node* node) {
646 VisitRR(this, kMipsSqrtD, node); 646 VisitRR(this, kMipsSqrtD, node);
647 } 647 }
648 648
649 649
650 void InstructionSelector::VisitFloat32RoundDown(Node* node) { UNREACHABLE(); } 650 void InstructionSelector::VisitFloat32RoundDown(Node* node) {
651 VisitRR(this, kMipsFloat32RoundDown, node);
652 }
651 653
652 654
653 void InstructionSelector::VisitFloat64RoundDown(Node* node) { 655 void InstructionSelector::VisitFloat64RoundDown(Node* node) {
654 VisitRR(this, kMipsFloat64RoundDown, node); 656 VisitRR(this, kMipsFloat64RoundDown, node);
655 } 657 }
656 658
657 659
658 void InstructionSelector::VisitFloat32RoundUp(Node* node) { UNREACHABLE(); } 660 void InstructionSelector::VisitFloat32RoundUp(Node* node) {
661 VisitRR(this, kMipsFloat32RoundUp, node);
662 }
659 663
660 664
661 void InstructionSelector::VisitFloat64RoundUp(Node* node) { 665 void InstructionSelector::VisitFloat64RoundUp(Node* node) {
662 VisitRR(this, kMipsFloat64RoundUp, node); 666 VisitRR(this, kMipsFloat64RoundUp, node);
663 } 667 }
664 668
665 669
666 void InstructionSelector::VisitFloat32RoundTruncate(Node* node) { 670 void InstructionSelector::VisitFloat32RoundTruncate(Node* node) {
667 UNREACHABLE(); 671 VisitRR(this, kMipsFloat32RoundTruncate, node);
668 } 672 }
669 673
670 674
671 void InstructionSelector::VisitFloat64RoundTruncate(Node* node) { 675 void InstructionSelector::VisitFloat64RoundTruncate(Node* node) {
672 VisitRR(this, kMipsFloat64RoundTruncate, node); 676 VisitRR(this, kMipsFloat64RoundTruncate, node);
673 } 677 }
674 678
675 679
676 void InstructionSelector::VisitFloat64RoundTiesAway(Node* node) { 680 void InstructionSelector::VisitFloat64RoundTiesAway(Node* node) {
677 UNREACHABLE(); 681 UNREACHABLE();
678 } 682 }
679 683
680 684
681 void InstructionSelector::VisitFloat32RoundTiesEven(Node* node) { 685 void InstructionSelector::VisitFloat32RoundTiesEven(Node* node) {
682 UNREACHABLE(); 686 VisitRR(this, kMipsFloat32RoundTiesEven, node);
683 } 687 }
684 688
685 689
686 void InstructionSelector::VisitFloat64RoundTiesEven(Node* node) { 690 void InstructionSelector::VisitFloat64RoundTiesEven(Node* node) {
687 VisitRR(this, kMipsFloat64RoundTiesEven, node); 691 VisitRR(this, kMipsFloat64RoundTiesEven, node);
688 } 692 }
689 693
690 694
691 void InstructionSelector::EmitPrepareArguments(NodeVector* arguments, 695 void InstructionSelector::EmitPrepareArguments(NodeVector* arguments,
692 const CallDescriptor* descriptor, 696 const CallDescriptor* descriptor,
(...skipping 499 matching lines...) Expand 10 before | Expand all | Expand 10 after
1192 if ((IsMipsArchVariant(kMips32r2) || IsMipsArchVariant(kMips32r6)) && 1196 if ((IsMipsArchVariant(kMips32r2) || IsMipsArchVariant(kMips32r6)) &&
1193 IsFp64Mode()) { 1197 IsFp64Mode()) {
1194 flags |= MachineOperatorBuilder::kFloat64RoundDown | 1198 flags |= MachineOperatorBuilder::kFloat64RoundDown |
1195 MachineOperatorBuilder::kFloat64RoundUp | 1199 MachineOperatorBuilder::kFloat64RoundUp |
1196 MachineOperatorBuilder::kFloat64RoundTruncate | 1200 MachineOperatorBuilder::kFloat64RoundTruncate |
1197 MachineOperatorBuilder::kFloat64RoundTiesEven; 1201 MachineOperatorBuilder::kFloat64RoundTiesEven;
1198 } 1202 }
1199 return flags | MachineOperatorBuilder::kFloat64Min | 1203 return flags | MachineOperatorBuilder::kFloat64Min |
1200 MachineOperatorBuilder::kFloat64Max | 1204 MachineOperatorBuilder::kFloat64Max |
1201 MachineOperatorBuilder::kFloat32Min | 1205 MachineOperatorBuilder::kFloat32Min |
1202 MachineOperatorBuilder::kFloat32Max; 1206 MachineOperatorBuilder::kFloat32Max |
1207 MachineOperatorBuilder::kFloat32RoundDown |
1208 MachineOperatorBuilder::kFloat32RoundUp |
1209 MachineOperatorBuilder::kFloat32RoundTruncate |
1210 MachineOperatorBuilder::kFloat32RoundTiesEven;
1203 } 1211 }
1204 1212
1205 } // namespace compiler 1213 } // namespace compiler
1206 } // namespace internal 1214 } // namespace internal
1207 } // namespace v8 1215 } // namespace v8
OLDNEW
« no previous file with comments | « src/compiler/mips/instruction-codes-mips.h ('k') | src/compiler/mips64/code-generator-mips64.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698