| OLD | NEW |
| 1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 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 #ifndef V8_MIPS_CONSTANTS_H_ | 5 #ifndef V8_MIPS_CONSTANTS_H_ |
| 6 #define V8_MIPS_CONSTANTS_H_ | 6 #define V8_MIPS_CONSTANTS_H_ |
| 7 | 7 |
| 8 // UNIMPLEMENTED_ macro for MIPS. | 8 // UNIMPLEMENTED_ macro for MIPS. |
| 9 #ifdef DEBUG | 9 #ifdef DEBUG |
| 10 #define UNIMPLEMENTED_MIPS() \ | 10 #define UNIMPLEMENTED_MIPS() \ |
| (...skipping 556 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 567 }; | 567 }; |
| 568 | 568 |
| 569 | 569 |
| 570 // ----- Emulated conditions. | 570 // ----- Emulated conditions. |
| 571 // On MIPS we use this enum to abstract from conditional branch instructions. | 571 // On MIPS we use this enum to abstract from conditional branch instructions. |
| 572 // The 'U' prefix is used to specify unsigned comparisons. | 572 // The 'U' prefix is used to specify unsigned comparisons. |
| 573 // Opposite conditions must be paired as odd/even numbers | 573 // Opposite conditions must be paired as odd/even numbers |
| 574 // because 'NegateCondition' function flips LSB to negate condition. | 574 // because 'NegateCondition' function flips LSB to negate condition. |
| 575 enum Condition { | 575 enum Condition { |
| 576 // Any value < 0 is considered no_condition. | 576 // Any value < 0 is considered no_condition. |
| 577 kNoCondition = -1, | 577 kNoCondition = -1, |
| 578 | 578 overflow = 0, |
| 579 overflow = 0, | 579 no_overflow = 1, |
| 580 no_overflow = 1, | 580 Uless = 2, |
| 581 Uless = 2, | 581 Ugreater_equal = 3, |
| 582 Ugreater_equal= 3, | 582 equal = 4, |
| 583 equal = 4, | 583 not_equal = 5, |
| 584 not_equal = 5, | 584 Uless_equal = 6, |
| 585 Uless_equal = 6, | 585 Ugreater = 7, |
| 586 Ugreater = 7, | 586 negative = 8, |
| 587 negative = 8, | 587 positive = 9, |
| 588 positive = 9, | 588 parity_even = 10, |
| 589 parity_even = 10, | 589 parity_odd = 11, |
| 590 parity_odd = 11, | 590 less = 12, |
| 591 less = 12, | |
| 592 greater_equal = 13, | 591 greater_equal = 13, |
| 593 less_equal = 14, | 592 less_equal = 14, |
| 594 greater = 15, | 593 greater = 15, |
| 595 ueq = 16, // Unordered or Equal. | 594 ueq = 16, // Unordered or Equal. |
| 596 nue = 17, // Not (Unordered or Equal). | 595 nue = 17, // Not (Unordered or Equal). |
| 597 | 596 cc_always = 18, |
| 598 cc_always = 18, | |
| 599 | 597 |
| 600 // Aliases. | 598 // Aliases. |
| 601 carry = Uless, | 599 carry = Uless, |
| 602 not_carry = Ugreater_equal, | 600 not_carry = Ugreater_equal, |
| 603 zero = equal, | 601 zero = equal, |
| 604 eq = equal, | 602 eq = equal, |
| 605 not_zero = not_equal, | 603 not_zero = not_equal, |
| 606 ne = not_equal, | 604 ne = not_equal, |
| 607 nz = not_equal, | 605 nz = not_equal, |
| 608 sign = negative, | 606 sign = negative, |
| 609 not_sign = positive, | 607 not_sign = positive, |
| 610 mi = negative, | 608 mi = negative, |
| 611 pl = positive, | 609 pl = positive, |
| 612 hi = Ugreater, | 610 hi = Ugreater, |
| 613 ls = Uless_equal, | 611 ls = Uless_equal, |
| 614 ge = greater_equal, | 612 ge = greater_equal, |
| 615 lt = less, | 613 lt = less, |
| 616 gt = greater, | 614 gt = greater, |
| 617 le = less_equal, | 615 le = less_equal, |
| 618 hs = Ugreater_equal, | 616 hs = Ugreater_equal, |
| 619 lo = Uless, | 617 lo = Uless, |
| 620 al = cc_always, | 618 al = cc_always, |
| 621 | 619 cc_default = kNoCondition |
| 622 cc_default = kNoCondition | |
| 623 }; | 620 }; |
| 624 | 621 |
| 625 | 622 |
| 626 // Returns the equivalent of !cc. | 623 // Returns the equivalent of !cc. |
| 627 // Negation of the default kNoCondition (-1) results in a non-default | 624 // Negation of the default kNoCondition (-1) results in a non-default |
| 628 // no_condition value (-2). As long as tests for no_condition check | 625 // no_condition value (-2). As long as tests for no_condition check |
| 629 // for condition < 0, this will work as expected. | 626 // for condition < 0, this will work as expected. |
| 630 inline Condition NegateCondition(Condition cc) { | 627 inline Condition NegateCondition(Condition cc) { |
| 631 DCHECK(cc != cc_always); | 628 DCHECK(cc != cc_always); |
| 632 return static_cast<Condition>(cc ^ 1); | 629 return static_cast<Condition>(cc ^ 1); |
| (...skipping 310 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 943 | 940 |
| 944 // TODO(plind): below should be based on kPointerSize | 941 // TODO(plind): below should be based on kPointerSize |
| 945 // TODO(plind): find all usages and remove the needless instructions for n64. | 942 // TODO(plind): find all usages and remove the needless instructions for n64. |
| 946 const int kCArgsSlotsSize = kCArgSlotCount * Instruction::kInstrSize * 2; | 943 const int kCArgsSlotsSize = kCArgSlotCount * Instruction::kInstrSize * 2; |
| 947 | 944 |
| 948 const int kBranchReturnOffset = 2 * Instruction::kInstrSize; | 945 const int kBranchReturnOffset = 2 * Instruction::kInstrSize; |
| 949 | 946 |
| 950 } } // namespace v8::internal | 947 } } // namespace v8::internal |
| 951 | 948 |
| 952 #endif // #ifndef V8_MIPS_CONSTANTS_H_ | 949 #endif // #ifndef V8_MIPS_CONSTANTS_H_ |
| OLD | NEW |