OLD | NEW |
1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
4 // met: | 4 // met: |
5 // | 5 // |
6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
(...skipping 729 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
740 // masquerading as smis so that the garbage collector skips visiting them. | 740 // masquerading as smis so that the garbage collector skips visiting them. |
741 void PushInt64AsTwoSmis(Register src, Register scratch = kScratchRegister); | 741 void PushInt64AsTwoSmis(Register src, Register scratch = kScratchRegister); |
742 // Reconstruct a 64-bit integer from two 32-bit integers masquerading as | 742 // Reconstruct a 64-bit integer from two 32-bit integers masquerading as |
743 // smis on the top of stack. | 743 // smis on the top of stack. |
744 void PopInt64AsTwoSmis(Register dst, Register scratch = kScratchRegister); | 744 void PopInt64AsTwoSmis(Register dst, Register scratch = kScratchRegister); |
745 | 745 |
746 void Test(const Operand& dst, Smi* source); | 746 void Test(const Operand& dst, Smi* source); |
747 | 747 |
748 | 748 |
749 // --------------------------------------------------------------------------- | 749 // --------------------------------------------------------------------------- |
| 750 // SIMD macros. |
| 751 void absps(XMMRegister dst); |
| 752 void negateps(XMMRegister dst); |
| 753 void notps(XMMRegister dst); |
| 754 void pnegd(XMMRegister dst); |
| 755 |
| 756 |
| 757 // --------------------------------------------------------------------------- |
750 // String macros. | 758 // String macros. |
751 | 759 |
752 // Generate code to do a lookup in the number string cache. If the number in | 760 // Generate code to do a lookup in the number string cache. If the number in |
753 // the register object is found in the cache the generated code falls through | 761 // the register object is found in the cache the generated code falls through |
754 // with the result in the result register. The object and the result register | 762 // with the result in the result register. The object and the result register |
755 // can be the same. If the number is not found in the cache the code jumps to | 763 // can be the same. If the number is not found in the cache the code jumps to |
756 // the label not_found with only the content of register object unchanged. | 764 // the label not_found with only the content of register object unchanged. |
757 void LookupNumberStringCache(Register object, | 765 void LookupNumberStringCache(Register object, |
758 Register result, | 766 Register result, |
759 Register scratch1, | 767 Register scratch1, |
(...skipping 373 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1133 // un-done. | 1141 // un-done. |
1134 void UndoAllocationInNewSpace(Register object); | 1142 void UndoAllocationInNewSpace(Register object); |
1135 | 1143 |
1136 // Allocate a heap number in new space with undefined value. Returns | 1144 // Allocate a heap number in new space with undefined value. Returns |
1137 // tagged pointer in result register, or jumps to gc_required if new | 1145 // tagged pointer in result register, or jumps to gc_required if new |
1138 // space is full. | 1146 // space is full. |
1139 void AllocateHeapNumber(Register result, | 1147 void AllocateHeapNumber(Register result, |
1140 Register scratch, | 1148 Register scratch, |
1141 Label* gc_required); | 1149 Label* gc_required); |
1142 | 1150 |
| 1151 // Allocate a float32x4 object in new space with undefined value. Returns |
| 1152 // tagged pointer in result register, or jumps to gc_required if new |
| 1153 // space is full. |
| 1154 void AllocateFloat32x4(Register result, |
| 1155 Register scratch, |
| 1156 Label* gc_required); |
| 1157 |
| 1158 // Allocate a int32x4 object in new space with undefined value. Returns |
| 1159 // tagged pointer in result register, or jumps to gc_required if new |
| 1160 // space is full. |
| 1161 void AllocateInt32x4(Register result, |
| 1162 Register scratch, |
| 1163 Label* gc_required); |
| 1164 |
1143 // Allocate a sequential string. All the header fields of the string object | 1165 // Allocate a sequential string. All the header fields of the string object |
1144 // are initialized. | 1166 // are initialized. |
1145 void AllocateTwoByteString(Register result, | 1167 void AllocateTwoByteString(Register result, |
1146 Register length, | 1168 Register length, |
1147 Register scratch1, | 1169 Register scratch1, |
1148 Register scratch2, | 1170 Register scratch2, |
1149 Register scratch3, | 1171 Register scratch3, |
1150 Label* gc_required); | 1172 Label* gc_required); |
1151 void AllocateAsciiString(Register result, | 1173 void AllocateAsciiString(Register result, |
1152 Register length, | 1174 Register length, |
(...skipping 459 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1612 masm->popfq(); \ | 1634 masm->popfq(); \ |
1613 } \ | 1635 } \ |
1614 masm-> | 1636 masm-> |
1615 #else | 1637 #else |
1616 #define ACCESS_MASM(masm) masm-> | 1638 #define ACCESS_MASM(masm) masm-> |
1617 #endif | 1639 #endif |
1618 | 1640 |
1619 } } // namespace v8::internal | 1641 } } // namespace v8::internal |
1620 | 1642 |
1621 #endif // V8_X64_MACRO_ASSEMBLER_X64_H_ | 1643 #endif // V8_X64_MACRO_ASSEMBLER_X64_H_ |
OLD | NEW |