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

Side by Side Diff: src/compiler/representation-change.cc

Issue 2074903002: [turbofan] Numeric type feedback for mul, div and mod. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Rebase Created 4 years, 6 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
« no previous file with comments | « src/compiler/operation-typer.cc ('k') | src/compiler/simplified-lowering.cc » ('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 2015 the V8 project authors. All rights reserved. 1 // Copyright 2015 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/representation-change.h" 5 #include "src/compiler/representation-change.h"
6 6
7 #include <sstream> 7 #include <sstream>
8 8
9 #include "src/base/bits.h" 9 #include "src/base/bits.h"
10 #include "src/code-factory.h" 10 #include "src/code-factory.h"
(...skipping 552 matching lines...) Expand 10 before | Expand all | Expand 10 after
563 563
564 const Operator* RepresentationChanger::Int32OperatorFor( 564 const Operator* RepresentationChanger::Int32OperatorFor(
565 IrOpcode::Value opcode) { 565 IrOpcode::Value opcode) {
566 switch (opcode) { 566 switch (opcode) {
567 case IrOpcode::kSpeculativeNumberAdd: // Fall through. 567 case IrOpcode::kSpeculativeNumberAdd: // Fall through.
568 case IrOpcode::kNumberAdd: 568 case IrOpcode::kNumberAdd:
569 return machine()->Int32Add(); 569 return machine()->Int32Add();
570 case IrOpcode::kSpeculativeNumberSubtract: // Fall through. 570 case IrOpcode::kSpeculativeNumberSubtract: // Fall through.
571 case IrOpcode::kNumberSubtract: 571 case IrOpcode::kNumberSubtract:
572 return machine()->Int32Sub(); 572 return machine()->Int32Sub();
573 case IrOpcode::kSpeculativeNumberMultiply:
573 case IrOpcode::kNumberMultiply: 574 case IrOpcode::kNumberMultiply:
574 return machine()->Int32Mul(); 575 return machine()->Int32Mul();
576 case IrOpcode::kSpeculativeNumberDivide:
575 case IrOpcode::kNumberDivide: 577 case IrOpcode::kNumberDivide:
576 return machine()->Int32Div(); 578 return machine()->Int32Div();
579 case IrOpcode::kSpeculativeNumberModulus:
577 case IrOpcode::kNumberModulus: 580 case IrOpcode::kNumberModulus:
578 return machine()->Int32Mod(); 581 return machine()->Int32Mod();
579 case IrOpcode::kNumberBitwiseOr: 582 case IrOpcode::kNumberBitwiseOr:
580 return machine()->Word32Or(); 583 return machine()->Word32Or();
581 case IrOpcode::kNumberBitwiseXor: 584 case IrOpcode::kNumberBitwiseXor:
582 return machine()->Word32Xor(); 585 return machine()->Word32Xor();
583 case IrOpcode::kNumberBitwiseAnd: 586 case IrOpcode::kNumberBitwiseAnd:
584 return machine()->Word32And(); 587 return machine()->Word32And();
585 case IrOpcode::kNumberEqual: 588 case IrOpcode::kNumberEqual:
586 case IrOpcode::kSpeculativeNumberEqual: 589 case IrOpcode::kSpeculativeNumberEqual:
(...skipping 23 matching lines...) Expand all
610 } 613 }
611 } 614 }
612 615
613 const Operator* RepresentationChanger::Uint32OperatorFor( 616 const Operator* RepresentationChanger::Uint32OperatorFor(
614 IrOpcode::Value opcode) { 617 IrOpcode::Value opcode) {
615 switch (opcode) { 618 switch (opcode) {
616 case IrOpcode::kNumberAdd: 619 case IrOpcode::kNumberAdd:
617 return machine()->Int32Add(); 620 return machine()->Int32Add();
618 case IrOpcode::kNumberSubtract: 621 case IrOpcode::kNumberSubtract:
619 return machine()->Int32Sub(); 622 return machine()->Int32Sub();
623 case IrOpcode::kSpeculativeNumberMultiply:
620 case IrOpcode::kNumberMultiply: 624 case IrOpcode::kNumberMultiply:
621 return machine()->Int32Mul(); 625 return machine()->Int32Mul();
626 case IrOpcode::kSpeculativeNumberDivide:
622 case IrOpcode::kNumberDivide: 627 case IrOpcode::kNumberDivide:
623 return machine()->Uint32Div(); 628 return machine()->Uint32Div();
629 case IrOpcode::kSpeculativeNumberModulus:
624 case IrOpcode::kNumberModulus: 630 case IrOpcode::kNumberModulus:
625 return machine()->Uint32Mod(); 631 return machine()->Uint32Mod();
626 case IrOpcode::kNumberEqual: 632 case IrOpcode::kNumberEqual:
627 case IrOpcode::kSpeculativeNumberEqual: 633 case IrOpcode::kSpeculativeNumberEqual:
628 return machine()->Word32Equal(); 634 return machine()->Word32Equal();
629 case IrOpcode::kNumberLessThan: 635 case IrOpcode::kNumberLessThan:
630 case IrOpcode::kSpeculativeNumberLessThan: 636 case IrOpcode::kSpeculativeNumberLessThan:
631 return machine()->Uint32LessThan(); 637 return machine()->Uint32LessThan();
632 case IrOpcode::kNumberLessThanOrEqual: 638 case IrOpcode::kNumberLessThanOrEqual:
633 case IrOpcode::kSpeculativeNumberLessThanOrEqual: 639 case IrOpcode::kSpeculativeNumberLessThanOrEqual:
(...skipping 11 matching lines...) Expand all
645 651
646 const Operator* RepresentationChanger::Float64OperatorFor( 652 const Operator* RepresentationChanger::Float64OperatorFor(
647 IrOpcode::Value opcode) { 653 IrOpcode::Value opcode) {
648 switch (opcode) { 654 switch (opcode) {
649 case IrOpcode::kSpeculativeNumberAdd: 655 case IrOpcode::kSpeculativeNumberAdd:
650 case IrOpcode::kNumberAdd: 656 case IrOpcode::kNumberAdd:
651 return machine()->Float64Add(); 657 return machine()->Float64Add();
652 case IrOpcode::kSpeculativeNumberSubtract: 658 case IrOpcode::kSpeculativeNumberSubtract:
653 case IrOpcode::kNumberSubtract: 659 case IrOpcode::kNumberSubtract:
654 return machine()->Float64Sub(); 660 return machine()->Float64Sub();
661 case IrOpcode::kSpeculativeNumberMultiply:
655 case IrOpcode::kNumberMultiply: 662 case IrOpcode::kNumberMultiply:
656 return machine()->Float64Mul(); 663 return machine()->Float64Mul();
664 case IrOpcode::kSpeculativeNumberDivide:
657 case IrOpcode::kNumberDivide: 665 case IrOpcode::kNumberDivide:
658 return machine()->Float64Div(); 666 return machine()->Float64Div();
667 case IrOpcode::kSpeculativeNumberModulus:
659 case IrOpcode::kNumberModulus: 668 case IrOpcode::kNumberModulus:
660 return machine()->Float64Mod(); 669 return machine()->Float64Mod();
661 case IrOpcode::kNumberEqual: 670 case IrOpcode::kNumberEqual:
662 case IrOpcode::kSpeculativeNumberEqual: 671 case IrOpcode::kSpeculativeNumberEqual:
663 return machine()->Float64Equal(); 672 return machine()->Float64Equal();
664 case IrOpcode::kNumberLessThan: 673 case IrOpcode::kNumberLessThan:
665 case IrOpcode::kSpeculativeNumberLessThan: 674 case IrOpcode::kSpeculativeNumberLessThan:
666 return machine()->Float64LessThan(); 675 return machine()->Float64LessThan();
667 case IrOpcode::kNumberLessThanOrEqual: 676 case IrOpcode::kNumberLessThanOrEqual:
668 case IrOpcode::kSpeculativeNumberLessThanOrEqual: 677 case IrOpcode::kSpeculativeNumberLessThanOrEqual:
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
742 } 751 }
743 752
744 Node* RepresentationChanger::InsertChangeTaggedToFloat64(Node* node) { 753 Node* RepresentationChanger::InsertChangeTaggedToFloat64(Node* node) {
745 return jsgraph()->graph()->NewNode(simplified()->ChangeTaggedToFloat64(), 754 return jsgraph()->graph()->NewNode(simplified()->ChangeTaggedToFloat64(),
746 node); 755 node);
747 } 756 }
748 757
749 } // namespace compiler 758 } // namespace compiler
750 } // namespace internal 759 } // namespace internal
751 } // namespace v8 760 } // namespace v8
OLDNEW
« no previous file with comments | « src/compiler/operation-typer.cc ('k') | src/compiler/simplified-lowering.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698