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

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

Issue 615083002: Add support for uint64 compares to TurboFan. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 6 years, 2 months 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 | Annotate | Revision Log
« no previous file with comments | « no previous file | src/compiler/machine-operator.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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/compiler/instruction-selector.h" 5 #include "src/compiler/instruction-selector.h"
6 6
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-inl.h" 9 #include "src/compiler/node-properties-inl.h"
10 #include "src/compiler/pipeline.h" 10 #include "src/compiler/pipeline.h"
(...skipping 554 matching lines...) Expand 10 before | Expand all | Expand 10 after
565 case IrOpcode::kInt64UDiv: 565 case IrOpcode::kInt64UDiv:
566 return VisitInt64UDiv(node); 566 return VisitInt64UDiv(node);
567 case IrOpcode::kInt64Mod: 567 case IrOpcode::kInt64Mod:
568 return VisitInt64Mod(node); 568 return VisitInt64Mod(node);
569 case IrOpcode::kInt64UMod: 569 case IrOpcode::kInt64UMod:
570 return VisitInt64UMod(node); 570 return VisitInt64UMod(node);
571 case IrOpcode::kInt64LessThan: 571 case IrOpcode::kInt64LessThan:
572 return VisitInt64LessThan(node); 572 return VisitInt64LessThan(node);
573 case IrOpcode::kInt64LessThanOrEqual: 573 case IrOpcode::kInt64LessThanOrEqual:
574 return VisitInt64LessThanOrEqual(node); 574 return VisitInt64LessThanOrEqual(node);
575 case IrOpcode::kUint64LessThan:
576 return VisitUint64LessThan(node);
575 case IrOpcode::kChangeFloat32ToFloat64: 577 case IrOpcode::kChangeFloat32ToFloat64:
576 return MarkAsDouble(node), VisitChangeFloat32ToFloat64(node); 578 return MarkAsDouble(node), VisitChangeFloat32ToFloat64(node);
577 case IrOpcode::kChangeInt32ToFloat64: 579 case IrOpcode::kChangeInt32ToFloat64:
578 return MarkAsDouble(node), VisitChangeInt32ToFloat64(node); 580 return MarkAsDouble(node), VisitChangeInt32ToFloat64(node);
579 case IrOpcode::kChangeUint32ToFloat64: 581 case IrOpcode::kChangeUint32ToFloat64:
580 return MarkAsDouble(node), VisitChangeUint32ToFloat64(node); 582 return MarkAsDouble(node), VisitChangeUint32ToFloat64(node);
581 case IrOpcode::kChangeFloat64ToInt32: 583 case IrOpcode::kChangeFloat64ToInt32:
582 return VisitChangeFloat64ToInt32(node); 584 return VisitChangeFloat64ToInt32(node);
583 case IrOpcode::kChangeFloat64ToUint32: 585 case IrOpcode::kChangeFloat64ToUint32:
584 return VisitChangeFloat64ToUint32(node); 586 return VisitChangeFloat64ToUint32(node);
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after
688 VisitWord64Compare(node, &cont); 690 VisitWord64Compare(node, &cont);
689 } 691 }
690 692
691 693
692 void InstructionSelector::VisitInt64LessThanOrEqual(Node* node) { 694 void InstructionSelector::VisitInt64LessThanOrEqual(Node* node) {
693 FlagsContinuation cont(kSignedLessThanOrEqual, node); 695 FlagsContinuation cont(kSignedLessThanOrEqual, node);
694 VisitWord64Compare(node, &cont); 696 VisitWord64Compare(node, &cont);
695 } 697 }
696 698
697 699
700 void InstructionSelector::VisitUint64LessThan(Node* node) {
701 FlagsContinuation cont(kUnsignedLessThan, node);
702 VisitWord64Compare(node, &cont);
703 }
704
705
698 void InstructionSelector::VisitTruncateFloat64ToInt32(Node* node) { 706 void InstructionSelector::VisitTruncateFloat64ToInt32(Node* node) {
699 OperandGenerator g(this); 707 OperandGenerator g(this);
700 Emit(kArchTruncateDoubleToI, g.DefineAsRegister(node), 708 Emit(kArchTruncateDoubleToI, g.DefineAsRegister(node),
701 g.UseRegister(node->InputAt(0))); 709 g.UseRegister(node->InputAt(0)));
702 } 710 }
703 711
704 712
705 void InstructionSelector::VisitFloat64Equal(Node* node) { 713 void InstructionSelector::VisitFloat64Equal(Node* node) {
706 FlagsContinuation cont(kUnorderedEqual, node); 714 FlagsContinuation cont(kUnorderedEqual, node);
707 VisitFloat64Compare(node, &cont); 715 VisitFloat64Compare(node, &cont);
(...skipping 214 matching lines...) Expand 10 before | Expand all | Expand 10 after
922 return VisitWord32Compare(value, &cont); 930 return VisitWord32Compare(value, &cont);
923 case IrOpcode::kWord64Equal: 931 case IrOpcode::kWord64Equal:
924 cont.OverwriteAndNegateIfEqual(kEqual); 932 cont.OverwriteAndNegateIfEqual(kEqual);
925 return VisitWord64Compare(value, &cont); 933 return VisitWord64Compare(value, &cont);
926 case IrOpcode::kInt64LessThan: 934 case IrOpcode::kInt64LessThan:
927 cont.OverwriteAndNegateIfEqual(kSignedLessThan); 935 cont.OverwriteAndNegateIfEqual(kSignedLessThan);
928 return VisitWord64Compare(value, &cont); 936 return VisitWord64Compare(value, &cont);
929 case IrOpcode::kInt64LessThanOrEqual: 937 case IrOpcode::kInt64LessThanOrEqual:
930 cont.OverwriteAndNegateIfEqual(kSignedLessThanOrEqual); 938 cont.OverwriteAndNegateIfEqual(kSignedLessThanOrEqual);
931 return VisitWord64Compare(value, &cont); 939 return VisitWord64Compare(value, &cont);
940 case IrOpcode::kUint64LessThan:
941 cont.OverwriteAndNegateIfEqual(kUnsignedLessThan);
942 return VisitWord64Compare(value, &cont);
932 case IrOpcode::kFloat64Equal: 943 case IrOpcode::kFloat64Equal:
933 cont.OverwriteAndNegateIfEqual(kUnorderedEqual); 944 cont.OverwriteAndNegateIfEqual(kUnorderedEqual);
934 return VisitFloat64Compare(value, &cont); 945 return VisitFloat64Compare(value, &cont);
935 case IrOpcode::kFloat64LessThan: 946 case IrOpcode::kFloat64LessThan:
936 cont.OverwriteAndNegateIfEqual(kUnorderedLessThan); 947 cont.OverwriteAndNegateIfEqual(kUnorderedLessThan);
937 return VisitFloat64Compare(value, &cont); 948 return VisitFloat64Compare(value, &cont);
938 case IrOpcode::kFloat64LessThanOrEqual: 949 case IrOpcode::kFloat64LessThanOrEqual:
939 cont.OverwriteAndNegateIfEqual(kUnorderedLessThanOrEqual); 950 cont.OverwriteAndNegateIfEqual(kUnorderedLessThanOrEqual);
940 return VisitFloat64Compare(value, &cont); 951 return VisitFloat64Compare(value, &cont);
941 case IrOpcode::kProjection: 952 case IrOpcode::kProjection:
(...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after
1098 1109
1099 1110
1100 void InstructionSelector::VisitCall(Node* call, BasicBlock* continuation, 1111 void InstructionSelector::VisitCall(Node* call, BasicBlock* continuation,
1101 BasicBlock* deoptimization) {} 1112 BasicBlock* deoptimization) {}
1102 1113
1103 #endif // !V8_TURBOFAN_BACKEND 1114 #endif // !V8_TURBOFAN_BACKEND
1104 1115
1105 } // namespace compiler 1116 } // namespace compiler
1106 } // namespace internal 1117 } // namespace internal
1107 } // namespace v8 1118 } // namespace v8
OLDNEW
« no previous file with comments | « no previous file | src/compiler/machine-operator.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698