Mercurial > hg > truffle
comparison src/cpu/x86/vm/assembler_x86.hpp @ 11080:b800986664f4
7088419: Use x86 Hardware CRC32 Instruction with java.util.zip.CRC32
Summary: add intrinsics using new instruction to interpreter, C1, C2, for suitable x86; add test
Reviewed-by: kvn, twisti
author | drchase |
---|---|
date | Tue, 02 Jul 2013 20:42:12 -0400 |
parents | cf8470eaf7e5 |
children | 59e8ad757e19 |
comparison
equal
deleted
inserted
replaced
11079:738e04fb1232 | 11080:b800986664f4 |
---|---|
1264 void movdq(XMMRegister dst, Register src); | 1264 void movdq(XMMRegister dst, Register src); |
1265 void movdq(Register dst, XMMRegister src); | 1265 void movdq(Register dst, XMMRegister src); |
1266 | 1266 |
1267 // Move Aligned Double Quadword | 1267 // Move Aligned Double Quadword |
1268 void movdqa(XMMRegister dst, XMMRegister src); | 1268 void movdqa(XMMRegister dst, XMMRegister src); |
1269 void movdqa(XMMRegister dst, Address src); | |
1269 | 1270 |
1270 // Move Unaligned Double Quadword | 1271 // Move Unaligned Double Quadword |
1271 void movdqu(Address dst, XMMRegister src); | 1272 void movdqu(Address dst, XMMRegister src); |
1272 void movdqu(XMMRegister dst, Address src); | 1273 void movdqu(XMMRegister dst, Address src); |
1273 void movdqu(XMMRegister dst, XMMRegister src); | 1274 void movdqu(XMMRegister dst, XMMRegister src); |
1401 void vpermq(XMMRegister dst, XMMRegister src, int imm8, bool vector256); | 1402 void vpermq(XMMRegister dst, XMMRegister src, int imm8, bool vector256); |
1402 | 1403 |
1403 // SSE4.2 string instructions | 1404 // SSE4.2 string instructions |
1404 void pcmpestri(XMMRegister xmm1, XMMRegister xmm2, int imm8); | 1405 void pcmpestri(XMMRegister xmm1, XMMRegister xmm2, int imm8); |
1405 void pcmpestri(XMMRegister xmm1, Address src, int imm8); | 1406 void pcmpestri(XMMRegister xmm1, Address src, int imm8); |
1407 | |
1408 // SSE 4.1 extract | |
1409 void pextrd(Register dst, XMMRegister src, int imm8); | |
1410 void pextrq(Register dst, XMMRegister src, int imm8); | |
1411 | |
1412 // SSE 4.1 insert | |
1413 void pinsrd(XMMRegister dst, Register src, int imm8); | |
1414 void pinsrq(XMMRegister dst, Register src, int imm8); | |
1406 | 1415 |
1407 // SSE4.1 packed move | 1416 // SSE4.1 packed move |
1408 void pmovzxbw(XMMRegister dst, XMMRegister src); | 1417 void pmovzxbw(XMMRegister dst, XMMRegister src); |
1409 void pmovzxbw(XMMRegister dst, Address src); | 1418 void pmovzxbw(XMMRegister dst, Address src); |
1410 | 1419 |
1762 void vextracti128h(Address dst, XMMRegister src); | 1771 void vextracti128h(Address dst, XMMRegister src); |
1763 | 1772 |
1764 // duplicate 4-bytes integer data from src into 8 locations in dest | 1773 // duplicate 4-bytes integer data from src into 8 locations in dest |
1765 void vpbroadcastd(XMMRegister dst, XMMRegister src); | 1774 void vpbroadcastd(XMMRegister dst, XMMRegister src); |
1766 | 1775 |
1776 // Carry-Less Multiplication Quadword | |
1777 void vpclmulqdq(XMMRegister dst, XMMRegister nds, XMMRegister src, int mask); | |
1778 | |
1767 // AVX instruction which is used to clear upper 128 bits of YMM registers and | 1779 // AVX instruction which is used to clear upper 128 bits of YMM registers and |
1768 // to avoid transaction penalty between AVX and SSE states. There is no | 1780 // to avoid transaction penalty between AVX and SSE states. There is no |
1769 // penalty if legacy SSE instructions are encoded using VEX prefix because | 1781 // penalty if legacy SSE instructions are encoded using VEX prefix because |
1770 // they always clear upper 128 bits. It should be used before calling | 1782 // they always clear upper 128 bits. It should be used before calling |
1771 // runtime code and native libraries. | 1783 // runtime code and native libraries. |