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

Side by Side Diff: src/x64/macro-assembler-x64.h

Issue 90643003: Experimental implementation: Exposing SIMD instructions into JavaScript Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 7 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/x64/lithium-x64.cc ('k') | src/x64/macro-assembler-x64.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 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
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
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
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_
OLDNEW
« no previous file with comments | « src/x64/lithium-x64.cc ('k') | src/x64/macro-assembler-x64.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698