2650 |
2650 |
2651 __ blr(); |
2651 __ blr(); |
2652 return start; |
2652 return start; |
2653 } |
2653 } |
2654 |
2654 |
|
2655 address generate_sha256_implCompress(bool multi_block, const char *name) { |
|
2656 assert(UseSHA, "need SHA instructions"); |
|
2657 StubCodeMark mark(this, "StubRoutines", name); |
|
2658 address start = __ function_entry(); |
|
2659 |
|
2660 __ sha256 (multi_block); |
|
2661 |
|
2662 __ blr(); |
|
2663 return start; |
|
2664 } |
|
2665 |
|
2666 address generate_sha512_implCompress(bool multi_block, const char *name) { |
|
2667 assert(UseSHA, "need SHA instructions"); |
|
2668 StubCodeMark mark(this, "StubRoutines", name); |
|
2669 address start = __ function_entry(); |
|
2670 |
|
2671 __ sha512 (multi_block); |
|
2672 |
|
2673 __ blr(); |
|
2674 return start; |
|
2675 } |
|
2676 |
2655 void generate_arraycopy_stubs() { |
2677 void generate_arraycopy_stubs() { |
2656 // Note: the disjoint stubs must be generated first, some of |
2678 // Note: the disjoint stubs must be generated first, some of |
2657 // the conjoint stubs use them. |
2679 // the conjoint stubs use them. |
2658 |
2680 |
2659 // non-aligned disjoint versions |
2681 // non-aligned disjoint versions |
2879 } |
2901 } |
2880 if (UseMontgomerySquareIntrinsic) { |
2902 if (UseMontgomerySquareIntrinsic) { |
2881 StubRoutines::_montgomerySquare |
2903 StubRoutines::_montgomerySquare |
2882 = CAST_FROM_FN_PTR(address, SharedRuntime::montgomery_square); |
2904 = CAST_FROM_FN_PTR(address, SharedRuntime::montgomery_square); |
2883 } |
2905 } |
|
2906 |
|
2907 if (UseSHA256Intrinsics) { |
|
2908 StubRoutines::_sha256_implCompress = generate_sha256_implCompress(false, "sha256_implCompress"); |
|
2909 StubRoutines::_sha256_implCompressMB = generate_sha256_implCompress(true, "sha256_implCompressMB"); |
|
2910 } |
|
2911 if (UseSHA512Intrinsics) { |
|
2912 StubRoutines::_sha512_implCompress = generate_sha512_implCompress(false, "sha512_implCompress"); |
|
2913 StubRoutines::_sha512_implCompressMB = generate_sha512_implCompress(true, "sha512_implCompressMB"); |
|
2914 } |
2884 } |
2915 } |
2885 |
2916 |
2886 public: |
2917 public: |
2887 StubGenerator(CodeBuffer* code, bool all) : StubCodeGenerator(code) { |
2918 StubGenerator(CodeBuffer* code, bool all) : StubCodeGenerator(code) { |
2888 // replace the standard masm with a special one: |
2919 // replace the standard masm with a special one: |