OLD | NEW |
1 // Copyright (c) 1994-2006 Sun Microsystems Inc. | 1 // Copyright (c) 1994-2006 Sun Microsystems Inc. |
2 // All Rights Reserved. | 2 // All Rights Reserved. |
3 // | 3 // |
4 // Redistribution and use in source and binary forms, with or without | 4 // Redistribution and use in source and binary forms, with or without |
5 // modification, are permitted provided that the following conditions | 5 // modification, are permitted provided that the following conditions |
6 // are met: | 6 // are met: |
7 // | 7 // |
8 // - Redistributions of source code must retain the above copyright notice, | 8 // - Redistributions of source code must retain the above copyright notice, |
9 // this list of conditions and the following disclaimer. | 9 // this list of conditions and the following disclaimer. |
10 // | 10 // |
(...skipping 740 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
751 Disp d4) | 751 Disp d4) |
752 | 752 |
753 #define SSE_FORM(name) \ | 753 #define SSE_FORM(name) \ |
754 void name(Register b1, Disp d1, Register b2, Disp d2); \ | 754 void name(Register b1, Disp d1, Register b2, Disp d2); \ |
755 void name(const MemOperand& opnd1, const MemOperand& opnd2) | 755 void name(const MemOperand& opnd1, const MemOperand& opnd2) |
756 | 756 |
757 #define SSF_FORM(name) \ | 757 #define SSF_FORM(name) \ |
758 void name(Register r3, Register b1, Disp d1, Register b2, Disp d2); \ | 758 void name(Register r3, Register b1, Disp d1, Register b2, Disp d2); \ |
759 void name(Register r3, const MemOperand& opnd1, const MemOperand& opnd2) | 759 void name(Register r3, const MemOperand& opnd1, const MemOperand& opnd2) |
760 | 760 |
| 761 #define DECLARE_VRR_A_INSTRUCTIONS(name, opcode_name, opcode_value) \ |
| 762 void name(DoubleRegister v1, DoubleRegister v2, Condition m5, Condition m4, \ |
| 763 Condition m3) { \ |
| 764 uint64_t code = (static_cast<uint64_t>(opcode_value & 0xFF00)) * B32 | \ |
| 765 (static_cast<uint64_t>(v1.code())) * B36 | \ |
| 766 (static_cast<uint64_t>(v2.code())) * B32 | \ |
| 767 (static_cast<uint64_t>(m5 & 0xF)) * B20 | \ |
| 768 (static_cast<uint64_t>(m4 & 0xF)) * B16 | \ |
| 769 (static_cast<uint64_t>(m3 & 0xF)) * B12 | \ |
| 770 (static_cast<uint64_t>(opcode_value & 0x00FF)); \ |
| 771 emit6bytes(code); \ |
| 772 } |
| 773 VRR_A_OPCODE_LIST(DECLARE_VRR_A_INSTRUCTIONS) |
| 774 #undef DECLARE_VRR_A_INSTRUCTIONS |
| 775 |
| 776 #define DECLARE_VRR_C_INSTRUCTIONS(name, opcode_name, opcode_value) \ |
| 777 void name(DoubleRegister v1, DoubleRegister v2, DoubleRegister v3, \ |
| 778 Condition m6, Condition m5, Condition m4) { \ |
| 779 uint64_t code = (static_cast<uint64_t>(opcode_value & 0xFF00)) * B32 | \ |
| 780 (static_cast<uint64_t>(v1.code())) * B36 | \ |
| 781 (static_cast<uint64_t>(v2.code())) * B32 | \ |
| 782 (static_cast<uint64_t>(v3.code())) * B28 | \ |
| 783 (static_cast<uint64_t>(m6 & 0xF)) * B20 | \ |
| 784 (static_cast<uint64_t>(m5 & 0xF)) * B16 | \ |
| 785 (static_cast<uint64_t>(m4 & 0xF)) * B12 | \ |
| 786 (static_cast<uint64_t>(opcode_value & 0x00FF)); \ |
| 787 emit6bytes(code); \ |
| 788 } |
| 789 VRR_C_OPCODE_LIST(DECLARE_VRR_C_INSTRUCTIONS) |
| 790 #undef DECLARE_VRR_C_INSTRUCTIONS |
| 791 |
| 792 // Single Element format |
| 793 void vfa(DoubleRegister v1, DoubleRegister v2, DoubleRegister v3) { |
| 794 vfa(v1, v2, v3, static_cast<Condition>(0), static_cast<Condition>(8), |
| 795 static_cast<Condition>(3)); |
| 796 } |
| 797 void vfs(DoubleRegister v1, DoubleRegister v2, DoubleRegister v3) { |
| 798 vfs(v1, v2, v3, static_cast<Condition>(0), static_cast<Condition>(8), |
| 799 static_cast<Condition>(3)); |
| 800 } |
| 801 void vfm(DoubleRegister v1, DoubleRegister v2, DoubleRegister v3) { |
| 802 vfm(v1, v2, v3, static_cast<Condition>(0), static_cast<Condition>(8), |
| 803 static_cast<Condition>(3)); |
| 804 } |
| 805 void vfd(DoubleRegister v1, DoubleRegister v2, DoubleRegister v3) { |
| 806 vfd(v1, v2, v3, static_cast<Condition>(0), static_cast<Condition>(8), |
| 807 static_cast<Condition>(3)); |
| 808 } |
| 809 |
761 // S390 instruction sets | 810 // S390 instruction sets |
762 RX_FORM(bc); | 811 RX_FORM(bc); |
763 RR_FORM(bctr); | 812 RR_FORM(bctr); |
764 RX_FORM(cd); | 813 RX_FORM(cd); |
765 RRE_FORM(cdr); | 814 RRE_FORM(cdr); |
766 RXE_FORM(cdb); | 815 RXE_FORM(cdb); |
767 RXE_FORM(ceb); | 816 RXE_FORM(ceb); |
768 RXE_FORM(ddb); | 817 RXE_FORM(ddb); |
769 RRE_FORM(ddbr); | 818 RRE_FORM(ddbr); |
770 SS1_FORM(ed); | 819 SS1_FORM(ed); |
(...skipping 694 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1465 | 1514 |
1466 class EnsureSpace BASE_EMBEDDED { | 1515 class EnsureSpace BASE_EMBEDDED { |
1467 public: | 1516 public: |
1468 explicit EnsureSpace(Assembler* assembler) { assembler->CheckBuffer(); } | 1517 explicit EnsureSpace(Assembler* assembler) { assembler->CheckBuffer(); } |
1469 }; | 1518 }; |
1470 | 1519 |
1471 } // namespace internal | 1520 } // namespace internal |
1472 } // namespace v8 | 1521 } // namespace v8 |
1473 | 1522 |
1474 #endif // V8_S390_ASSEMBLER_S390_H_ | 1523 #endif // V8_S390_ASSEMBLER_S390_H_ |
OLD | NEW |