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 |