| OLD | NEW |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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_ |
| OLD | NEW |