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

Side by Side Diff: src/arm/lithium-arm.h

Issue 23156006: [v8-dev] ARM: Improve Lithium register constraints. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 7 years, 4 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
OLDNEW
1 // Copyright 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 the V8 project authors. All rights reserved.
2 // Redistribution and use in source and binary forms, with or without 2 // Redistribution and use in source and binary forms, with or without
3 // modification, are permitted provided that the following conditions are 3 // modification, are permitted provided that the following conditions are
4 // met: 4 // met:
5 // 5 //
6 // * Redistributions of source code must retain the above copyright 6 // * Redistributions of source code must retain the above copyright
7 // notice, this list of conditions and the following disclaimer. 7 // notice, this list of conditions and the following disclaimer.
8 // * Redistributions in binary form must reproduce the above 8 // * Redistributions in binary form must reproduce the above
9 // copyright notice, this list of conditions and the following 9 // copyright notice, this list of conditions and the following
10 // disclaimer in the documentation and/or other materials provided 10 // disclaimer in the documentation and/or other materials provided
(...skipping 648 matching lines...) Expand 10 before | Expand all | Expand 10 after
659 659
660 LOperand* left() { return inputs_[0]; } 660 LOperand* left() { return inputs_[0]; }
661 LOperand* right() { return inputs_[1]; } 661 LOperand* right() { return inputs_[1]; }
662 LOperand* temp() { return temps_[0]; } 662 LOperand* temp() { return temps_[0]; }
663 663
664 DECLARE_CONCRETE_INSTRUCTION(MathFloorOfDiv, "math-floor-of-div") 664 DECLARE_CONCRETE_INSTRUCTION(MathFloorOfDiv, "math-floor-of-div")
665 DECLARE_HYDROGEN_ACCESSOR(MathFloorOfDiv) 665 DECLARE_HYDROGEN_ACCESSOR(MathFloorOfDiv)
666 }; 666 };
667 667
668 668
669 class LMulI: public LTemplateInstruction<1, 2, 1> { 669 class LMulI: public LTemplateInstruction<1, 2, 0> {
670 public: 670 public:
671 LMulI(LOperand* left, LOperand* right, LOperand* temp) { 671 LMulI(LOperand* left, LOperand* right) {
672 inputs_[0] = left; 672 inputs_[0] = left;
673 inputs_[1] = right; 673 inputs_[1] = right;
674 temps_[0] = temp;
675 } 674 }
676 675
677 LOperand* left() { return inputs_[0]; } 676 LOperand* left() { return inputs_[0]; }
678 LOperand* right() { return inputs_[1]; } 677 LOperand* right() { return inputs_[1]; }
679 LOperand* temp() { return temps_[0]; }
680 678
681 DECLARE_CONCRETE_INSTRUCTION(MulI, "mul-i") 679 DECLARE_CONCRETE_INSTRUCTION(MulI, "mul-i")
682 DECLARE_HYDROGEN_ACCESSOR(Mul) 680 DECLARE_HYDROGEN_ACCESSOR(Mul)
683 }; 681 };
684 682
685 683
686 // Instruction for computing multiplier * multiplicand + addend. 684 // Instruction for computing multiplier * multiplicand + addend.
687 class LMultiplyAddD: public LTemplateInstruction<1, 3, 0> { 685 class LMultiplyAddD: public LTemplateInstruction<1, 3, 0> {
688 public: 686 public:
689 LMultiplyAddD(LOperand* addend, LOperand* multiplier, 687 LMultiplyAddD(LOperand* addend, LOperand* multiplier,
(...skipping 1980 matching lines...) Expand 10 before | Expand all | Expand 10 after
2670 // Operand created by UseRegisterAtStart is guaranteed to be live only at 2668 // Operand created by UseRegisterAtStart is guaranteed to be live only at
2671 // instruction start. Register allocator is free to assign the same register 2669 // instruction start. Register allocator is free to assign the same register
2672 // to some other operand used inside instruction (i.e. temporary or 2670 // to some other operand used inside instruction (i.e. temporary or
2673 // output). 2671 // output).
2674 MUST_USE_RESULT LOperand* UseRegister(HValue* value); 2672 MUST_USE_RESULT LOperand* UseRegister(HValue* value);
2675 MUST_USE_RESULT LOperand* UseRegisterAtStart(HValue* value); 2673 MUST_USE_RESULT LOperand* UseRegisterAtStart(HValue* value);
2676 2674
2677 // An input operand in a register that may be trashed. 2675 // An input operand in a register that may be trashed.
2678 MUST_USE_RESULT LOperand* UseTempRegister(HValue* value); 2676 MUST_USE_RESULT LOperand* UseTempRegister(HValue* value);
2679 2677
2680 // An input operand in a register or stack slot. 2678 // An input operand in a register or stack slot. It can be
2679 // a stack slot iff the value use count is 1.
2681 MUST_USE_RESULT LOperand* Use(HValue* value); 2680 MUST_USE_RESULT LOperand* Use(HValue* value);
2682 MUST_USE_RESULT LOperand* UseAtStart(HValue* value); 2681 MUST_USE_RESULT LOperand* UseAtStart(HValue* value);
2683 2682
2684 // An input operand in a register, stack slot or a constant operand. 2683 // An input operand in a register, stack slot or a constant operand.
2684 // It can be a stack slot iff the value use count is 1.
2685 MUST_USE_RESULT LOperand* UseOrConstant(HValue* value); 2685 MUST_USE_RESULT LOperand* UseOrConstant(HValue* value);
2686 MUST_USE_RESULT LOperand* UseOrConstantAtStart(HValue* value); 2686 MUST_USE_RESULT LOperand* UseOrConstantAtStart(HValue* value);
2687 2687
2688 // An input operand in a register or a constant operand. 2688 // An input operand in a register or a constant operand.
2689 MUST_USE_RESULT LOperand* UseRegisterOrConstant(HValue* value); 2689 MUST_USE_RESULT LOperand* UseRegisterOrConstant(HValue* value);
2690 MUST_USE_RESULT LOperand* UseRegisterOrConstantAtStart(HValue* value); 2690 MUST_USE_RESULT LOperand* UseRegisterOrConstantAtStart(HValue* value);
2691 2691
2692 // An input operand in a constant operand. 2692 // An input operand in a constant operand.
2693 MUST_USE_RESULT LOperand* UseConstant(HValue* value); 2693 MUST_USE_RESULT LOperand* UseConstant(HValue* value);
2694 2694
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
2761 2761
2762 DISALLOW_COPY_AND_ASSIGN(LChunkBuilder); 2762 DISALLOW_COPY_AND_ASSIGN(LChunkBuilder);
2763 }; 2763 };
2764 2764
2765 #undef DECLARE_HYDROGEN_ACCESSOR 2765 #undef DECLARE_HYDROGEN_ACCESSOR
2766 #undef DECLARE_CONCRETE_INSTRUCTION 2766 #undef DECLARE_CONCRETE_INSTRUCTION
2767 2767
2768 } } // namespace v8::internal 2768 } } // namespace v8::internal
2769 2769
2770 #endif // V8_ARM_LITHIUM_ARM_H_ 2770 #endif // V8_ARM_LITHIUM_ARM_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698