equal
deleted
inserted
replaced
4407 * |
4407 * |
4408 * Inputs: |
4408 * Inputs: |
4409 * c_rarg0 - int crc |
4409 * c_rarg0 - int crc |
4410 * c_rarg1 - byte* buf |
4410 * c_rarg1 - byte* buf |
4411 * c_rarg2 - long length |
4411 * c_rarg2 - long length |
4412 * c_rarg3 - table_start - optional (present only when doing a library_calll, |
4412 * c_rarg3 - table_start - optional (present only when doing a library_call, |
4413 * not used by x86 algorithm) |
4413 * not used by x86 algorithm) |
4414 * |
4414 * |
4415 * Ouput: |
4415 * Ouput: |
4416 * rax - int crc result |
4416 * rax - int crc result |
4417 */ |
4417 */ |
4530 * Input: |
4530 * Input: |
4531 * c_rarg0 - obja address |
4531 * c_rarg0 - obja address |
4532 * c_rarg1 - objb address |
4532 * c_rarg1 - objb address |
4533 * c_rarg3 - length length |
4533 * c_rarg3 - length length |
4534 * c_rarg4 - scale log2_array_indxscale |
4534 * c_rarg4 - scale log2_array_indxscale |
|
4535 * |
|
4536 * Output: |
|
4537 * rax - int >= mismatched index, < 0 bitwise complement of tail |
4535 */ |
4538 */ |
4536 address generate_vectorizedMismatch() { |
4539 address generate_vectorizedMismatch() { |
4537 __ align(CodeEntryAlignment); |
4540 __ align(CodeEntryAlignment); |
4538 StubCodeMark mark(this, "StubRoutines", "vectorizedMismatch"); |
4541 StubCodeMark mark(this, "StubRoutines", "vectorizedMismatch"); |
4539 address start = __ pc(); |
4542 address start = __ pc(); |
5289 StubRoutines::_squareToLen = generate_squareToLen(); |
5292 StubRoutines::_squareToLen = generate_squareToLen(); |
5290 } |
5293 } |
5291 if (UseMulAddIntrinsic) { |
5294 if (UseMulAddIntrinsic) { |
5292 StubRoutines::_mulAdd = generate_mulAdd(); |
5295 StubRoutines::_mulAdd = generate_mulAdd(); |
5293 } |
5296 } |
5294 if (UseVectorizedMismatchIntrinsic) { |
|
5295 StubRoutines::_vectorizedMismatch = generate_vectorizedMismatch(); |
|
5296 } |
|
5297 #ifndef _WINDOWS |
5297 #ifndef _WINDOWS |
5298 if (UseMontgomeryMultiplyIntrinsic) { |
5298 if (UseMontgomeryMultiplyIntrinsic) { |
5299 StubRoutines::_montgomeryMultiply |
5299 StubRoutines::_montgomeryMultiply |
5300 = CAST_FROM_FN_PTR(address, SharedRuntime::montgomery_multiply); |
5300 = CAST_FROM_FN_PTR(address, SharedRuntime::montgomery_multiply); |
5301 } |
5301 } |
5303 StubRoutines::_montgomerySquare |
5303 StubRoutines::_montgomerySquare |
5304 = CAST_FROM_FN_PTR(address, SharedRuntime::montgomery_square); |
5304 = CAST_FROM_FN_PTR(address, SharedRuntime::montgomery_square); |
5305 } |
5305 } |
5306 #endif // WINDOWS |
5306 #endif // WINDOWS |
5307 #endif // COMPILER2 |
5307 #endif // COMPILER2 |
|
5308 |
|
5309 if (UseVectorizedMismatchIntrinsic) { |
|
5310 StubRoutines::_vectorizedMismatch = generate_vectorizedMismatch(); |
|
5311 } |
5308 } |
5312 } |
5309 |
5313 |
5310 public: |
5314 public: |
5311 StubGenerator(CodeBuffer* code, bool all) : StubCodeGenerator(code) { |
5315 StubGenerator(CodeBuffer* code, bool all) : StubCodeGenerator(code) { |
5312 if (all) { |
5316 if (all) { |