comparison src/cpu/x86/vm/assembler_x86.hpp @ 7482:989155e2d07a

Merge with hs25-b15.
author Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
date Wed, 16 Jan 2013 01:34:24 +0100
parents 038dd2875b94
children b30b3c2a0cf2 8b46b0196eb0
comparison
equal deleted inserted replaced
7381:6761a8f854a4 7482:989155e2d07a
830 void push(void* v); 830 void push(void* v);
831 void pop(void* v); 831 void pop(void* v);
832 832
833 // These do register sized moves/scans 833 // These do register sized moves/scans
834 void rep_mov(); 834 void rep_mov();
835 void rep_set(); 835 void rep_stos();
836 void rep_stosb();
836 void repne_scan(); 837 void repne_scan();
837 #ifdef _LP64 838 #ifdef _LP64
838 void repne_scanl(); 839 void repne_scanl();
839 #endif 840 #endif
840 841
1441 void pshuflw(XMMRegister dst, Address src, int mode); 1442 void pshuflw(XMMRegister dst, Address src, int mode);
1442 1443
1443 // Shift Right by bytes Logical DoubleQuadword Immediate 1444 // Shift Right by bytes Logical DoubleQuadword Immediate
1444 void psrldq(XMMRegister dst, int shift); 1445 void psrldq(XMMRegister dst, int shift);
1445 1446
1446 // Logical Compare Double Quadword 1447 // Logical Compare 128bit
1447 void ptest(XMMRegister dst, XMMRegister src); 1448 void ptest(XMMRegister dst, XMMRegister src);
1448 void ptest(XMMRegister dst, Address src); 1449 void ptest(XMMRegister dst, Address src);
1450 // Logical Compare 256bit
1451 void vptest(XMMRegister dst, XMMRegister src);
1452 void vptest(XMMRegister dst, Address src);
1449 1453
1450 // Interleave Low Bytes 1454 // Interleave Low Bytes
1451 void punpcklbw(XMMRegister dst, XMMRegister src); 1455 void punpcklbw(XMMRegister dst, XMMRegister src);
1452 void punpcklbw(XMMRegister dst, Address src); 1456 void punpcklbw(XMMRegister dst, Address src);
1453 1457
1751 void vinsertf128h(XMMRegister dst, Address src); 1755 void vinsertf128h(XMMRegister dst, Address src);
1752 void vinserti128h(XMMRegister dst, Address src); 1756 void vinserti128h(XMMRegister dst, Address src);
1753 void vextractf128h(Address dst, XMMRegister src); 1757 void vextractf128h(Address dst, XMMRegister src);
1754 void vextracti128h(Address dst, XMMRegister src); 1758 void vextracti128h(Address dst, XMMRegister src);
1755 1759
1760 // duplicate 4-bytes integer data from src into 8 locations in dest
1761 void vpbroadcastd(XMMRegister dst, XMMRegister src);
1762
1756 // AVX instruction which is used to clear upper 128 bits of YMM registers and 1763 // AVX instruction which is used to clear upper 128 bits of YMM registers and
1757 // to avoid transaction penalty between AVX and SSE states. There is no 1764 // to avoid transaction penalty between AVX and SSE states. There is no
1758 // penalty if legacy SSE instructions are encoded using VEX prefix because 1765 // penalty if legacy SSE instructions are encoded using VEX prefix because
1759 // they always clear upper 128 bits. It should be used before calling 1766 // they always clear upper 128 bits. It should be used before calling
1760 // runtime code and native libraries. 1767 // runtime code and native libraries.