1 /* |
1 /* |
2 * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. |
2 * Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved. |
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
4 * |
4 * |
5 * This code is free software; you can redistribute it and/or modify it |
5 * This code is free software; you can redistribute it and/or modify it |
6 * under the terms of the GNU General Public License version 2 only, as |
6 * under the terms of the GNU General Public License version 2 only, as |
7 * published by the Free Software Foundation. |
7 * published by the Free Software Foundation. |
1680 |
1680 |
1681 // SSE4.2 string instructions |
1681 // SSE4.2 string instructions |
1682 void pcmpestri(XMMRegister xmm1, XMMRegister xmm2, int imm8); |
1682 void pcmpestri(XMMRegister xmm1, XMMRegister xmm2, int imm8); |
1683 void pcmpestri(XMMRegister xmm1, Address src, int imm8); |
1683 void pcmpestri(XMMRegister xmm1, Address src, int imm8); |
1684 |
1684 |
|
1685 void pcmpeqw(XMMRegister dst, XMMRegister src); |
|
1686 void vpcmpeqw(XMMRegister dst, XMMRegister nds, XMMRegister src, int vector_len); |
|
1687 |
|
1688 void pmovmskb(Register dst, XMMRegister src); |
|
1689 void vpmovmskb(Register dst, XMMRegister src); |
|
1690 |
1685 // SSE 4.1 extract |
1691 // SSE 4.1 extract |
1686 void pextrd(Register dst, XMMRegister src, int imm8); |
1692 void pextrd(Register dst, XMMRegister src, int imm8); |
1687 void pextrq(Register dst, XMMRegister src, int imm8); |
1693 void pextrq(Register dst, XMMRegister src, int imm8); |
1688 // SSE 2 extract |
1694 // SSE 2 extract |
1689 void pextrw(Register dst, XMMRegister src, int imm8); |
1695 void pextrw(Register dst, XMMRegister src, int imm8); |
1695 void pinsrw(XMMRegister dst, Register src, int imm8); |
1701 void pinsrw(XMMRegister dst, Register src, int imm8); |
1696 |
1702 |
1697 // SSE4.1 packed move |
1703 // SSE4.1 packed move |
1698 void pmovzxbw(XMMRegister dst, XMMRegister src); |
1704 void pmovzxbw(XMMRegister dst, XMMRegister src); |
1699 void pmovzxbw(XMMRegister dst, Address src); |
1705 void pmovzxbw(XMMRegister dst, Address src); |
|
1706 |
|
1707 void vpmovzxbw(XMMRegister dst, Address src); |
1700 |
1708 |
1701 #ifndef _LP64 // no 32bit push/pop on amd64 |
1709 #ifndef _LP64 // no 32bit push/pop on amd64 |
1702 void popl(Address dst); |
1710 void popl(Address dst); |
1703 #endif |
1711 #endif |
1704 |
1712 |
2114 void vinsertf32x4h(XMMRegister dst, Address src, int value); |
2122 void vinsertf32x4h(XMMRegister dst, Address src, int value); |
2115 |
2123 |
2116 // duplicate 4-bytes integer data from src into 8 locations in dest |
2124 // duplicate 4-bytes integer data from src into 8 locations in dest |
2117 void vpbroadcastd(XMMRegister dst, XMMRegister src); |
2125 void vpbroadcastd(XMMRegister dst, XMMRegister src); |
2118 |
2126 |
|
2127 // duplicate 2-bytes integer data from src into 16 locations in dest |
|
2128 void vpbroadcastw(XMMRegister dst, XMMRegister src); |
|
2129 |
2119 // duplicate n-bytes integer data from src into vector_len locations in dest |
2130 // duplicate n-bytes integer data from src into vector_len locations in dest |
2120 void evpbroadcastb(XMMRegister dst, XMMRegister src, int vector_len); |
2131 void evpbroadcastb(XMMRegister dst, XMMRegister src, int vector_len); |
2121 void evpbroadcastb(XMMRegister dst, Address src, int vector_len); |
2132 void evpbroadcastb(XMMRegister dst, Address src, int vector_len); |
2122 void evpbroadcastw(XMMRegister dst, XMMRegister src, int vector_len); |
2133 void evpbroadcastw(XMMRegister dst, XMMRegister src, int vector_len); |
2123 void evpbroadcastw(XMMRegister dst, Address src, int vector_len); |
2134 void evpbroadcastw(XMMRegister dst, Address src, int vector_len); |