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

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

Issue 6062002: Merge 6006:6095 from bleeding_edge to experimental/gc branch. (Closed) Base URL: http://v8.googlecode.com/svn/branches/experimental/gc/
Patch Set: Created 10 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 | Annotate | Revision Log
« no previous file with comments | « src/hydrogen-instructions.cc ('k') | src/ia32/assembler-ia32.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 are 5 // modification, are permitted provided that the following conditions are
6 // met: 6 // 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 553 matching lines...) Expand 10 before | Expand all | Expand 10 after
564 static const int kCallInstructionLength = 5; 564 static const int kCallInstructionLength = 5;
565 static const int kJSReturnSequenceLength = 6; 565 static const int kJSReturnSequenceLength = 6;
566 566
567 // The debug break slot must be able to contain a call instruction. 567 // The debug break slot must be able to contain a call instruction.
568 static const int kDebugBreakSlotLength = kCallInstructionLength; 568 static const int kDebugBreakSlotLength = kCallInstructionLength;
569 569
570 // One byte opcode for test eax,0xXXXXXXXX. 570 // One byte opcode for test eax,0xXXXXXXXX.
571 static const byte kTestEaxByte = 0xA9; 571 static const byte kTestEaxByte = 0xA9;
572 // One byte opcode for test al, 0xXX. 572 // One byte opcode for test al, 0xXX.
573 static const byte kTestAlByte = 0xA8; 573 static const byte kTestAlByte = 0xA8;
574 // One byte opcode for nop.
575 static const byte kNopByte = 0x90;
576
577 // One byte opcode for a short unconditional jump.
578 static const byte kJmpShortOpcode = 0xEB;
579 // One byte prefix for a short conditional jump.
580 static const byte kJccShortPrefix = 0x70;
581 static const byte kJncShortOpcode = kJccShortPrefix | not_carry;
582 static const byte kJcShortOpcode = kJccShortPrefix | carry;
574 583
575 // --------------------------------------------------------------------------- 584 // ---------------------------------------------------------------------------
576 // Code generation 585 // Code generation
577 // 586 //
578 // - function names correspond one-to-one to ia32 instruction mnemonics 587 // - function names correspond one-to-one to ia32 instruction mnemonics
579 // - unless specified otherwise, instructions operate on 32bit operands 588 // - unless specified otherwise, instructions operate on 32bit operands
580 // - instructions on 8bit (byte) operands/registers have a trailing '_b' 589 // - instructions on 8bit (byte) operands/registers have a trailing '_b'
581 // - instructions on 16bit (word) operands/registers have a trailing '_w' 590 // - instructions on 16bit (word) operands/registers have a trailing '_w'
582 // - naming conflicts with C++ keywords are resolved via a trailing '_' 591 // - naming conflicts with C++ keywords are resolved via a trailing '_'
583 592
(...skipping 314 matching lines...) Expand 10 before | Expand all | Expand 10 after
898 void movdqa(XMMRegister dst, const Operand& src); 907 void movdqa(XMMRegister dst, const Operand& src);
899 void movdqa(const Operand& dst, XMMRegister src); 908 void movdqa(const Operand& dst, XMMRegister src);
900 void movdqu(XMMRegister dst, const Operand& src); 909 void movdqu(XMMRegister dst, const Operand& src);
901 void movdqu(const Operand& dst, XMMRegister src); 910 void movdqu(const Operand& dst, XMMRegister src);
902 911
903 // Use either movsd or movlpd. 912 // Use either movsd or movlpd.
904 void movdbl(XMMRegister dst, const Operand& src); 913 void movdbl(XMMRegister dst, const Operand& src);
905 void movdbl(const Operand& dst, XMMRegister src); 914 void movdbl(const Operand& dst, XMMRegister src);
906 915
907 void movd(XMMRegister dst, const Operand& src); 916 void movd(XMMRegister dst, const Operand& src);
917 void movd(const Operand& src, XMMRegister dst);
908 void movsd(XMMRegister dst, XMMRegister src); 918 void movsd(XMMRegister dst, XMMRegister src);
909 919
910 void pand(XMMRegister dst, XMMRegister src); 920 void pand(XMMRegister dst, XMMRegister src);
911 void pxor(XMMRegister dst, XMMRegister src); 921 void pxor(XMMRegister dst, XMMRegister src);
912 void ptest(XMMRegister dst, XMMRegister src); 922 void ptest(XMMRegister dst, XMMRegister src);
913 923
914 void psllq(XMMRegister reg, int8_t imm8); 924 void psllq(XMMRegister reg, int8_t shift);
925 void pshufd(XMMRegister dst, XMMRegister src, int8_t shuffle);
926 void pextrd(const Operand& dst, XMMRegister src, int8_t offset);
915 927
916 // Parallel XMM operations. 928 // Parallel XMM operations.
917 void movntdqa(XMMRegister src, const Operand& dst); 929 void movntdqa(XMMRegister src, const Operand& dst);
918 void movntdq(const Operand& dst, XMMRegister src); 930 void movntdq(const Operand& dst, XMMRegister src);
919 // Prefetch src position into cache level. 931 // Prefetch src position into cache level.
920 // Level 1, 2 or 3 specifies CPU cache level. Level 0 specifies a 932 // Level 1, 2 or 3 specifies CPU cache level. Level 0 specifies a
921 // non-temporal 933 // non-temporal
922 void prefetch(const Operand& src, int level); 934 void prefetch(const Operand& src, int level);
923 // TODO(lrn): Need SFENCE for movnt? 935 // TODO(lrn): Need SFENCE for movnt?
924 936
(...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after
1064 private: 1076 private:
1065 Assembler* assembler_; 1077 Assembler* assembler_;
1066 #ifdef DEBUG 1078 #ifdef DEBUG
1067 int space_before_; 1079 int space_before_;
1068 #endif 1080 #endif
1069 }; 1081 };
1070 1082
1071 } } // namespace v8::internal 1083 } } // namespace v8::internal
1072 1084
1073 #endif // V8_IA32_ASSEMBLER_IA32_H_ 1085 #endif // V8_IA32_ASSEMBLER_IA32_H_
OLDNEW
« no previous file with comments | « src/hydrogen-instructions.cc ('k') | src/ia32/assembler-ia32.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698