< prev index next >

src/cpu/ppc/vm/assembler_ppc.hpp

Print this page
rev 13437 : Implement SHA256 and SHA512 intrinsics for PPC64

Sample run reduced 6.5s run to 2.8s for SHA256.


2157 
2158   // VSX Extended Mnemonics
2159   inline void xxspltd(  VectorSRegister d, VectorSRegister a, int x);
2160   inline void xxmrghd(  VectorSRegister d, VectorSRegister a, VectorSRegister b);
2161   inline void xxmrgld(  VectorSRegister d, VectorSRegister a, VectorSRegister b);
2162   inline void xxswapd(  VectorSRegister d, VectorSRegister a);
2163 
2164   // Vector-Scalar (VSX) instructions.
2165   inline void mtfprd(   FloatRegister   d, Register a);
2166   inline void mtfprwa(  FloatRegister   d, Register a);
2167   inline void mffprd(   Register        a, FloatRegister d);
2168 
2169   // AES (introduced with Power 8)
2170   inline void vcipher(     VectorRegister d, VectorRegister a, VectorRegister b);
2171   inline void vcipherlast( VectorRegister d, VectorRegister a, VectorRegister b);
2172   inline void vncipher(    VectorRegister d, VectorRegister a, VectorRegister b);
2173   inline void vncipherlast(VectorRegister d, VectorRegister a, VectorRegister b);
2174   inline void vsbox(       VectorRegister d, VectorRegister a);
2175 
2176   // SHA (introduced with Power 8)
2177   // Not yet implemented.

2178 
2179   // Vector Binary Polynomial Multiplication (introduced with Power 8)
2180   inline void vpmsumb(  VectorRegister d, VectorRegister a, VectorRegister b);
2181   inline void vpmsumd(  VectorRegister d, VectorRegister a, VectorRegister b);
2182   inline void vpmsumh(  VectorRegister d, VectorRegister a, VectorRegister b);
2183   inline void vpmsumw(  VectorRegister d, VectorRegister a, VectorRegister b);
2184 
2185   // Vector Permute and Xor (introduced with Power 8)
2186   inline void vpermxor( VectorRegister d, VectorRegister a, VectorRegister b, VectorRegister c);
2187 
2188   // Transactional Memory instructions (introduced with Power 8)
2189   inline void tbegin_();    // R=0
2190   inline void tbeginrot_(); // R=1 Rollback-Only Transaction
2191   inline void tend_();    // A=0
2192   inline void tendall_(); // A=1
2193   inline void tabort_();
2194   inline void tabort_(Register a);
2195   inline void tabortwc_(int t, Register a, Register b);
2196   inline void tabortwci_(int t, Register a, int si);
2197   inline void tabortdc_(int t, Register a, Register b);




2157 
2158   // VSX Extended Mnemonics
2159   inline void xxspltd(  VectorSRegister d, VectorSRegister a, int x);
2160   inline void xxmrghd(  VectorSRegister d, VectorSRegister a, VectorSRegister b);
2161   inline void xxmrgld(  VectorSRegister d, VectorSRegister a, VectorSRegister b);
2162   inline void xxswapd(  VectorSRegister d, VectorSRegister a);
2163 
2164   // Vector-Scalar (VSX) instructions.
2165   inline void mtfprd(   FloatRegister   d, Register a);
2166   inline void mtfprwa(  FloatRegister   d, Register a);
2167   inline void mffprd(   Register        a, FloatRegister d);
2168 
2169   // AES (introduced with Power 8)
2170   inline void vcipher(     VectorRegister d, VectorRegister a, VectorRegister b);
2171   inline void vcipherlast( VectorRegister d, VectorRegister a, VectorRegister b);
2172   inline void vncipher(    VectorRegister d, VectorRegister a, VectorRegister b);
2173   inline void vncipherlast(VectorRegister d, VectorRegister a, VectorRegister b);
2174   inline void vsbox(       VectorRegister d, VectorRegister a);
2175 
2176   // SHA (introduced with Power 8)
2177   inline void vshasigmad(VectorRegister d, VectorRegister a, bool st, int six);
2178   inline void vshasigmaw(VectorRegister d, VectorRegister a, bool st, int six);
2179 
2180   // Vector Binary Polynomial Multiplication (introduced with Power 8)
2181   inline void vpmsumb(  VectorRegister d, VectorRegister a, VectorRegister b);
2182   inline void vpmsumd(  VectorRegister d, VectorRegister a, VectorRegister b);
2183   inline void vpmsumh(  VectorRegister d, VectorRegister a, VectorRegister b);
2184   inline void vpmsumw(  VectorRegister d, VectorRegister a, VectorRegister b);
2185 
2186   // Vector Permute and Xor (introduced with Power 8)
2187   inline void vpermxor( VectorRegister d, VectorRegister a, VectorRegister b, VectorRegister c);
2188 
2189   // Transactional Memory instructions (introduced with Power 8)
2190   inline void tbegin_();    // R=0
2191   inline void tbeginrot_(); // R=1 Rollback-Only Transaction
2192   inline void tend_();    // A=0
2193   inline void tendall_(); // A=1
2194   inline void tabort_();
2195   inline void tabort_(Register a);
2196   inline void tabortwc_(int t, Register a, Register b);
2197   inline void tabortwci_(int t, Register a, int si);
2198   inline void tabortdc_(int t, Register a, Register b);


< prev index next >