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

Side by Side Diff: src/s390/assembler-s390.h

Issue 2582683002: s390x: implement vector support on s390 (Closed)
Patch Set: fix comments and dchecks Created 4 years 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
« no previous file with comments | « src/globals.h ('k') | src/s390/assembler-s390.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
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_
OLDNEW
« no previous file with comments | « src/globals.h ('k') | src/s390/assembler-s390.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698