1741 |
1741 |
1742 // Copy low 128bit into high 128bit of YMM registers. |
1742 // Copy low 128bit into high 128bit of YMM registers. |
1743 void vinsertf128h(XMMRegister dst, XMMRegister nds, XMMRegister src); |
1743 void vinsertf128h(XMMRegister dst, XMMRegister nds, XMMRegister src); |
1744 void vinserti128h(XMMRegister dst, XMMRegister nds, XMMRegister src); |
1744 void vinserti128h(XMMRegister dst, XMMRegister nds, XMMRegister src); |
1745 |
1745 |
|
1746 // Load/store high 128bit of YMM registers which does not destroy other half. |
|
1747 void vinsertf128h(XMMRegister dst, Address src); |
|
1748 void vinserti128h(XMMRegister dst, Address src); |
|
1749 void vextractf128h(Address dst, XMMRegister src); |
|
1750 void vextracti128h(Address dst, XMMRegister src); |
|
1751 |
1746 // AVX instruction which is used to clear upper 128 bits of YMM registers and |
1752 // AVX instruction which is used to clear upper 128 bits of YMM registers and |
1747 // to avoid transaction penalty between AVX and SSE states. There is no |
1753 // to avoid transaction penalty between AVX and SSE states. There is no |
1748 // penalty if legacy SSE instructions are encoded using VEX prefix because |
1754 // penalty if legacy SSE instructions are encoded using VEX prefix because |
1749 // they always clear upper 128 bits. It should be used before calling |
1755 // they always clear upper 128 bits. It should be used before calling |
1750 // runtime code and native libraries. |
1756 // runtime code and native libraries. |