< prev index next >

src/share/vm/runtime/stubRoutines.hpp

Print this page
rev 8502 : 8046943: Leverage CPU Instructions for GHASH and RSA
Summary: Add montgomeryMultiply intrinsics
Reviewed-by: kvn


 182   static address _zero_aligned_words;
 183 
 184   static address _aescrypt_encryptBlock;
 185   static address _aescrypt_decryptBlock;
 186   static address _cipherBlockChaining_encryptAESCrypt;
 187   static address _cipherBlockChaining_decryptAESCrypt;
 188 
 189   static address _sha1_implCompress;
 190   static address _sha1_implCompressMB;
 191   static address _sha256_implCompress;
 192   static address _sha256_implCompressMB;
 193   static address _sha512_implCompress;
 194   static address _sha512_implCompressMB;
 195 
 196   static address _updateBytesCRC32;
 197   static address _crc_table_adr;
 198 
 199   static address _multiplyToLen;
 200   static address _squareToLen;
 201   static address _mulAdd;


 202 
 203   // These are versions of the java.lang.Math methods which perform
 204   // the same operations as the intrinsic version.  They are used for
 205   // constant folding in the compiler to ensure equivalence.  If the
 206   // intrinsic version returns the same result as the strict version
 207   // then they can be set to the appropriate function from
 208   // SharedRuntime.
 209   static double (*_intrinsic_log)(double);
 210   static double (*_intrinsic_log10)(double);
 211   static double (*_intrinsic_exp)(double);
 212   static double (*_intrinsic_pow)(double, double);
 213   static double (*_intrinsic_sin)(double);
 214   static double (*_intrinsic_cos)(double);
 215   static double (*_intrinsic_tan)(double);
 216 
 217   // Safefetch stubs.
 218   static address _safefetch32_entry;
 219   static address _safefetch32_fault_pc;
 220   static address _safefetch32_continuation_pc;
 221   static address _safefetchN_entry;


 343   static address arrayof_jint_fill()   { return _arrayof_jint_fill; }
 344 
 345   static address aescrypt_encryptBlock()                { return _aescrypt_encryptBlock; }
 346   static address aescrypt_decryptBlock()                { return _aescrypt_decryptBlock; }
 347   static address cipherBlockChaining_encryptAESCrypt()  { return _cipherBlockChaining_encryptAESCrypt; }
 348   static address cipherBlockChaining_decryptAESCrypt()  { return _cipherBlockChaining_decryptAESCrypt; }
 349 
 350   static address sha1_implCompress()     { return _sha1_implCompress; }
 351   static address sha1_implCompressMB()   { return _sha1_implCompressMB; }
 352   static address sha256_implCompress()   { return _sha256_implCompress; }
 353   static address sha256_implCompressMB() { return _sha256_implCompressMB; }
 354   static address sha512_implCompress()   { return _sha512_implCompress; }
 355   static address sha512_implCompressMB() { return _sha512_implCompressMB; }
 356 
 357   static address updateBytesCRC32()    { return _updateBytesCRC32; }
 358   static address crc_table_addr()      { return _crc_table_adr; }
 359 
 360   static address multiplyToLen()       {return _multiplyToLen; }
 361   static address squareToLen()         {return _squareToLen; }
 362   static address mulAdd()              {return _mulAdd; }


 363 
 364   static address select_fill_function(BasicType t, bool aligned, const char* &name);
 365 
 366   static address zero_aligned_words()   { return _zero_aligned_words; }
 367 
 368   static double  intrinsic_log(double d) {
 369     assert(_intrinsic_log != NULL, "must be defined");
 370     return _intrinsic_log(d);
 371   }
 372   static double  intrinsic_log10(double d) {
 373     assert(_intrinsic_log != NULL, "must be defined");
 374     return _intrinsic_log10(d);
 375   }
 376   static double  intrinsic_exp(double d) {
 377     assert(_intrinsic_exp != NULL, "must be defined");
 378     return _intrinsic_exp(d);
 379   }
 380   static double  intrinsic_pow(double d, double d2) {
 381     assert(_intrinsic_pow != NULL, "must be defined");
 382     return _intrinsic_pow(d, d2);




 182   static address _zero_aligned_words;
 183 
 184   static address _aescrypt_encryptBlock;
 185   static address _aescrypt_decryptBlock;
 186   static address _cipherBlockChaining_encryptAESCrypt;
 187   static address _cipherBlockChaining_decryptAESCrypt;
 188 
 189   static address _sha1_implCompress;
 190   static address _sha1_implCompressMB;
 191   static address _sha256_implCompress;
 192   static address _sha256_implCompressMB;
 193   static address _sha512_implCompress;
 194   static address _sha512_implCompressMB;
 195 
 196   static address _updateBytesCRC32;
 197   static address _crc_table_adr;
 198 
 199   static address _multiplyToLen;
 200   static address _squareToLen;
 201   static address _mulAdd;
 202   static address _montgomeryMultiply;
 203   static address _montgomerySquare;
 204 
 205   // These are versions of the java.lang.Math methods which perform
 206   // the same operations as the intrinsic version.  They are used for
 207   // constant folding in the compiler to ensure equivalence.  If the
 208   // intrinsic version returns the same result as the strict version
 209   // then they can be set to the appropriate function from
 210   // SharedRuntime.
 211   static double (*_intrinsic_log)(double);
 212   static double (*_intrinsic_log10)(double);
 213   static double (*_intrinsic_exp)(double);
 214   static double (*_intrinsic_pow)(double, double);
 215   static double (*_intrinsic_sin)(double);
 216   static double (*_intrinsic_cos)(double);
 217   static double (*_intrinsic_tan)(double);
 218 
 219   // Safefetch stubs.
 220   static address _safefetch32_entry;
 221   static address _safefetch32_fault_pc;
 222   static address _safefetch32_continuation_pc;
 223   static address _safefetchN_entry;


 345   static address arrayof_jint_fill()   { return _arrayof_jint_fill; }
 346 
 347   static address aescrypt_encryptBlock()                { return _aescrypt_encryptBlock; }
 348   static address aescrypt_decryptBlock()                { return _aescrypt_decryptBlock; }
 349   static address cipherBlockChaining_encryptAESCrypt()  { return _cipherBlockChaining_encryptAESCrypt; }
 350   static address cipherBlockChaining_decryptAESCrypt()  { return _cipherBlockChaining_decryptAESCrypt; }
 351 
 352   static address sha1_implCompress()     { return _sha1_implCompress; }
 353   static address sha1_implCompressMB()   { return _sha1_implCompressMB; }
 354   static address sha256_implCompress()   { return _sha256_implCompress; }
 355   static address sha256_implCompressMB() { return _sha256_implCompressMB; }
 356   static address sha512_implCompress()   { return _sha512_implCompress; }
 357   static address sha512_implCompressMB() { return _sha512_implCompressMB; }
 358 
 359   static address updateBytesCRC32()    { return _updateBytesCRC32; }
 360   static address crc_table_addr()      { return _crc_table_adr; }
 361 
 362   static address multiplyToLen()       {return _multiplyToLen; }
 363   static address squareToLen()         {return _squareToLen; }
 364   static address mulAdd()              {return _mulAdd; }
 365   static address montgomeryMultiply()  { return _montgomeryMultiply; }
 366   static address montgomerySquare()    { return _montgomerySquare; }
 367 
 368   static address select_fill_function(BasicType t, bool aligned, const char* &name);
 369 
 370   static address zero_aligned_words()   { return _zero_aligned_words; }
 371 
 372   static double  intrinsic_log(double d) {
 373     assert(_intrinsic_log != NULL, "must be defined");
 374     return _intrinsic_log(d);
 375   }
 376   static double  intrinsic_log10(double d) {
 377     assert(_intrinsic_log != NULL, "must be defined");
 378     return _intrinsic_log10(d);
 379   }
 380   static double  intrinsic_exp(double d) {
 381     assert(_intrinsic_exp != NULL, "must be defined");
 382     return _intrinsic_exp(d);
 383   }
 384   static double  intrinsic_pow(double d, double d2) {
 385     assert(_intrinsic_pow != NULL, "must be defined");
 386     return _intrinsic_pow(d, d2);


< prev index next >