hotspot/src/cpu/x86/vm/assembler_x86.hpp
changeset 33628 09241459a8b8
parent 33469 30f4811eded0
child 34162 16b54851eaf6
equal deleted inserted replaced
33627:c5b7455f846e 33628:09241459a8b8
     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);