8337666: AArch64: SHA3 GPR intrinsic

Reviewed-by: aph
This commit is contained in:
Dmitry Chuyko 2025-06-05 14:28:27 +00:00
parent 33ed7c1842
commit 23f1d4f9a9
6 changed files with 749 additions and 6 deletions

View File

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 2000, 2024, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2000, 2025, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2015, 2019, Red Hat Inc. All rights reserved. * Copyright (c) 2015, 2019, Red Hat Inc. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
@ -95,6 +95,8 @@ define_pd_global(intx, InlineSmallCode, 1000);
"Use simplest and shortest implementation for array equals") \ "Use simplest and shortest implementation for array equals") \
product(bool, UseSIMDForBigIntegerShiftIntrinsics, true, \ product(bool, UseSIMDForBigIntegerShiftIntrinsics, true, \
"Use SIMD instructions for left/right shift of BigInteger") \ "Use SIMD instructions for left/right shift of BigInteger") \
product(bool, UseSIMDForSHA3Intrinsic, true, \
"Use SIMD SHA3 instructions for SHA3 intrinsic") \
product(bool, AvoidUnalignedAccesses, false, \ product(bool, AvoidUnalignedAccesses, false, \
"Avoid generating unaligned memory accesses") \ "Avoid generating unaligned memory accesses") \
product(bool, UseLSE, false, \ product(bool, UseLSE, false, \

View File

@ -323,6 +323,27 @@ class MacroAssembler: public Assembler {
extr(Rd, Rn, Rn, imm); extr(Rd, Rn, Rn, imm);
} }
inline void rolw(Register Rd, Register Rn, unsigned imm) {
extrw(Rd, Rn, Rn, (32 - imm));
}
inline void rol(Register Rd, Register Rn, unsigned imm) {
extr(Rd, Rn, Rn, (64 - imm));
}
using Assembler::rax1;
using Assembler::eor3;
inline void rax1(Register Rd, Register Rn, Register Rm) {
eor(Rd, Rn, Rm, ROR, 63); // Rd = Rn ^ rol(Rm, 1)
}
inline void eor3(Register Rd, Register Rn, Register Rm, Register Rk) {
assert(Rd != Rn, "Use tmp register");
eor(Rd, Rm, Rk);
eor(Rd, Rd, Rn);
}
inline void sxtbw(Register Rd, Register Rn) { inline void sxtbw(Register Rd, Register Rn) {
sbfmw(Rd, Rn, 0, 7); sbfmw(Rd, Rn, 0, 7);
} }

View File

@ -7081,6 +7081,366 @@ class StubGenerator: public StubCodeGenerator {
return start; return start;
} }
void bcax5(Register a0, Register a1, Register a2, Register a3, Register a4,
Register tmp0, Register tmp1, Register tmp2) {
__ bic(tmp0, a2, a1); // for a0
__ bic(tmp1, a3, a2); // for a1
__ bic(tmp2, a4, a3); // for a2
__ eor(a2, a2, tmp2);
__ bic(tmp2, a0, a4); // for a3
__ eor(a3, a3, tmp2);
__ bic(tmp2, a1, a0); // for a4
__ eor(a0, a0, tmp0);
__ eor(a1, a1, tmp1);
__ eor(a4, a4, tmp2);
}
void keccak_round_gpr(bool can_use_fp, bool can_use_r18, Register rc,
Register a0, Register a1, Register a2, Register a3, Register a4,
Register a5, Register a6, Register a7, Register a8, Register a9,
Register a10, Register a11, Register a12, Register a13, Register a14,
Register a15, Register a16, Register a17, Register a18, Register a19,
Register a20, Register a21, Register a22, Register a23, Register a24,
Register tmp0, Register tmp1, Register tmp2) {
__ eor3(tmp1, a4, a9, a14);
__ eor3(tmp0, tmp1, a19, a24); // tmp0 = a4^a9^a14^a19^a24 = c4
__ eor3(tmp2, a1, a6, a11);
__ eor3(tmp1, tmp2, a16, a21); // tmp1 = a1^a6^a11^a16^a21 = c1
__ rax1(tmp2, tmp0, tmp1); // d0
{
Register tmp3, tmp4;
if (can_use_fp && can_use_r18) {
tmp3 = rfp;
tmp4 = r18_tls;
} else {
tmp3 = a4;
tmp4 = a9;
__ stp(tmp3, tmp4, __ pre(sp, -16));
}
__ eor3(tmp3, a0, a5, a10);
__ eor3(tmp4, tmp3, a15, a20); // tmp4 = a0^a5^a10^a15^a20 = c0
__ eor(a0, a0, tmp2);
__ eor(a5, a5, tmp2);
__ eor(a10, a10, tmp2);
__ eor(a15, a15, tmp2);
__ eor(a20, a20, tmp2); // d0(tmp2)
__ eor3(tmp3, a2, a7, a12);
__ eor3(tmp2, tmp3, a17, a22); // tmp2 = a2^a7^a12^a17^a22 = c2
__ rax1(tmp3, tmp4, tmp2); // d1
__ eor(a1, a1, tmp3);
__ eor(a6, a6, tmp3);
__ eor(a11, a11, tmp3);
__ eor(a16, a16, tmp3);
__ eor(a21, a21, tmp3); // d1(tmp3)
__ rax1(tmp3, tmp2, tmp0); // d3
__ eor3(tmp2, a3, a8, a13);
__ eor3(tmp0, tmp2, a18, a23); // tmp0 = a3^a8^a13^a18^a23 = c3
__ eor(a3, a3, tmp3);
__ eor(a8, a8, tmp3);
__ eor(a13, a13, tmp3);
__ eor(a18, a18, tmp3);
__ eor(a23, a23, tmp3);
__ rax1(tmp2, tmp1, tmp0); // d2
__ eor(a2, a2, tmp2);
__ eor(a7, a7, tmp2);
__ eor(a12, a12, tmp2);
__ rax1(tmp0, tmp0, tmp4); // d4
if (!can_use_fp || !can_use_r18) {
__ ldp(tmp3, tmp4, __ post(sp, 16));
}
__ eor(a17, a17, tmp2);
__ eor(a22, a22, tmp2);
__ eor(a4, a4, tmp0);
__ eor(a9, a9, tmp0);
__ eor(a14, a14, tmp0);
__ eor(a19, a19, tmp0);
__ eor(a24, a24, tmp0);
}
__ rol(tmp0, a10, 3);
__ rol(a10, a1, 1);
__ rol(a1, a6, 44);
__ rol(a6, a9, 20);
__ rol(a9, a22, 61);
__ rol(a22, a14, 39);
__ rol(a14, a20, 18);
__ rol(a20, a2, 62);
__ rol(a2, a12, 43);
__ rol(a12, a13, 25);
__ rol(a13, a19, 8) ;
__ rol(a19, a23, 56);
__ rol(a23, a15, 41);
__ rol(a15, a4, 27);
__ rol(a4, a24, 14);
__ rol(a24, a21, 2);
__ rol(a21, a8, 55);
__ rol(a8, a16, 45);
__ rol(a16, a5, 36);
__ rol(a5, a3, 28);
__ rol(a3, a18, 21);
__ rol(a18, a17, 15);
__ rol(a17, a11, 10);
__ rol(a11, a7, 6);
__ mov(a7, tmp0);
bcax5(a0, a1, a2, a3, a4, tmp0, tmp1, tmp2);
bcax5(a5, a6, a7, a8, a9, tmp0, tmp1, tmp2);
bcax5(a10, a11, a12, a13, a14, tmp0, tmp1, tmp2);
bcax5(a15, a16, a17, a18, a19, tmp0, tmp1, tmp2);
bcax5(a20, a21, a22, a23, a24, tmp0, tmp1, tmp2);
__ ldr(tmp1, __ post(rc, 8));
__ eor(a0, a0, tmp1);
}
// Arguments:
//
// Inputs:
// c_rarg0 - byte[] source+offset
// c_rarg1 - byte[] SHA.state
// c_rarg2 - int block_size
// c_rarg3 - int offset
// c_rarg4 - int limit
//
address generate_sha3_implCompress_gpr(StubGenStubId stub_id) {
bool multi_block;
switch (stub_id) {
case sha3_implCompress_id:
multi_block = false;
break;
case sha3_implCompressMB_id:
multi_block = true;
break;
default:
ShouldNotReachHere();
}
static const uint64_t round_consts[24] = {
0x0000000000000001L, 0x0000000000008082L, 0x800000000000808AL,
0x8000000080008000L, 0x000000000000808BL, 0x0000000080000001L,
0x8000000080008081L, 0x8000000000008009L, 0x000000000000008AL,
0x0000000000000088L, 0x0000000080008009L, 0x000000008000000AL,
0x000000008000808BL, 0x800000000000008BL, 0x8000000000008089L,
0x8000000000008003L, 0x8000000000008002L, 0x8000000000000080L,
0x000000000000800AL, 0x800000008000000AL, 0x8000000080008081L,
0x8000000000008080L, 0x0000000080000001L, 0x8000000080008008L
};
__ align(CodeEntryAlignment);
StubCodeMark mark(this, stub_id);
address start = __ pc();
Register buf = c_rarg0;
Register state = c_rarg1;
Register block_size = c_rarg2;
Register ofs = c_rarg3;
Register limit = c_rarg4;
// use r3.r17,r19..r28 to keep a0..a24.
// a0..a24 are respective locals from SHA3.java
Register a0 = r25,
a1 = r26,
a2 = r27,
a3 = r3,
a4 = r4,
a5 = r5,
a6 = r6,
a7 = r7,
a8 = rscratch1, // r8
a9 = rscratch2, // r9
a10 = r10,
a11 = r11,
a12 = r12,
a13 = r13,
a14 = r14,
a15 = r15,
a16 = r16,
a17 = r17,
a18 = r28,
a19 = r19,
a20 = r20,
a21 = r21,
a22 = r22,
a23 = r23,
a24 = r24;
Register tmp0 = block_size, tmp1 = buf, tmp2 = state, tmp3 = r30;
Label sha3_loop, rounds24_preloop, loop_body;
Label sha3_512_or_sha3_384, shake128;
bool can_use_r18 = false;
#ifndef R18_RESERVED
can_use_r18 = true;
#endif
bool can_use_fp = !PreserveFramePointer;
__ enter();
// save almost all yet unsaved gpr registers on stack
__ str(block_size, __ pre(sp, -128));
if (multi_block) {
__ stpw(ofs, limit, Address(sp, 8));
}
// 8 bytes at sp+16 will be used to keep buf
__ stp(r19, r20, Address(sp, 32));
__ stp(r21, r22, Address(sp, 48));
__ stp(r23, r24, Address(sp, 64));
__ stp(r25, r26, Address(sp, 80));
__ stp(r27, r28, Address(sp, 96));
if (can_use_r18 && can_use_fp) {
__ stp(r18_tls, state, Address(sp, 112));
} else {
__ str(state, Address(sp, 112));
}
// begin sha3 calculations: loading a0..a24 from state arrary
__ ldp(a0, a1, state);
__ ldp(a2, a3, Address(state, 16));
__ ldp(a4, a5, Address(state, 32));
__ ldp(a6, a7, Address(state, 48));
__ ldp(a8, a9, Address(state, 64));
__ ldp(a10, a11, Address(state, 80));
__ ldp(a12, a13, Address(state, 96));
__ ldp(a14, a15, Address(state, 112));
__ ldp(a16, a17, Address(state, 128));
__ ldp(a18, a19, Address(state, 144));
__ ldp(a20, a21, Address(state, 160));
__ ldp(a22, a23, Address(state, 176));
__ ldr(a24, Address(state, 192));
__ BIND(sha3_loop);
// load input
__ ldp(tmp3, tmp2, __ post(buf, 16));
__ eor(a0, a0, tmp3);
__ eor(a1, a1, tmp2);
__ ldp(tmp3, tmp2, __ post(buf, 16));
__ eor(a2, a2, tmp3);
__ eor(a3, a3, tmp2);
__ ldp(tmp3, tmp2, __ post(buf, 16));
__ eor(a4, a4, tmp3);
__ eor(a5, a5, tmp2);
__ ldr(tmp3, __ post(buf, 8));
__ eor(a6, a6, tmp3);
// block_size == 72, SHA3-512; block_size == 104, SHA3-384
__ tbz(block_size, 7, sha3_512_or_sha3_384);
__ ldp(tmp3, tmp2, __ post(buf, 16));
__ eor(a7, a7, tmp3);
__ eor(a8, a8, tmp2);
__ ldp(tmp3, tmp2, __ post(buf, 16));
__ eor(a9, a9, tmp3);
__ eor(a10, a10, tmp2);
__ ldp(tmp3, tmp2, __ post(buf, 16));
__ eor(a11, a11, tmp3);
__ eor(a12, a12, tmp2);
__ ldp(tmp3, tmp2, __ post(buf, 16));
__ eor(a13, a13, tmp3);
__ eor(a14, a14, tmp2);
__ ldp(tmp3, tmp2, __ post(buf, 16));
__ eor(a15, a15, tmp3);
__ eor(a16, a16, tmp2);
// block_size == 136, bit4 == 0 and bit5 == 0, SHA3-256 or SHAKE256
__ andw(tmp2, block_size, 48);
__ cbzw(tmp2, rounds24_preloop);
__ tbnz(block_size, 5, shake128);
// block_size == 144, bit5 == 0, SHA3-244
__ ldr(tmp3, __ post(buf, 8));
__ eor(a17, a17, tmp3);
__ b(rounds24_preloop);
__ BIND(shake128);
__ ldp(tmp3, tmp2, __ post(buf, 16));
__ eor(a17, a17, tmp3);
__ eor(a18, a18, tmp2);
__ ldp(tmp3, tmp2, __ post(buf, 16));
__ eor(a19, a19, tmp3);
__ eor(a20, a20, tmp2);
__ b(rounds24_preloop); // block_size == 168, SHAKE128
__ BIND(sha3_512_or_sha3_384);
__ ldp(tmp3, tmp2, __ post(buf, 16));
__ eor(a7, a7, tmp3);
__ eor(a8, a8, tmp2);
__ tbz(block_size, 5, rounds24_preloop); // SHA3-512
// SHA3-384
__ ldp(tmp3, tmp2, __ post(buf, 16));
__ eor(a9, a9, tmp3);
__ eor(a10, a10, tmp2);
__ ldp(tmp3, tmp2, __ post(buf, 16));
__ eor(a11, a11, tmp3);
__ eor(a12, a12, tmp2);
__ BIND(rounds24_preloop);
__ fmovs(v0, 24.0); // float loop counter,
__ fmovs(v1, 1.0); // exact representation
__ str(buf, Address(sp, 16));
__ lea(tmp3, ExternalAddress((address) round_consts));
__ BIND(loop_body);
keccak_round_gpr(can_use_fp, can_use_r18, tmp3,
a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12,
a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24,
tmp0, tmp1, tmp2);
__ fsubs(v0, v0, v1);
__ fcmps(v0, 0.0);
__ br(__ NE, loop_body);
if (multi_block) {
__ ldrw(block_size, sp); // block_size
__ ldpw(tmp2, tmp1, Address(sp, 8)); // offset, limit
__ addw(tmp2, tmp2, block_size);
__ cmpw(tmp2, tmp1);
__ strw(tmp2, Address(sp, 8)); // store offset in case we're jumping
__ ldr(buf, Address(sp, 16)); // restore buf in case we're jumping
__ br(Assembler::LE, sha3_loop);
__ movw(c_rarg0, tmp2); // return offset
}
if (can_use_fp && can_use_r18) {
__ ldp(r18_tls, state, Address(sp, 112));
} else {
__ ldr(state, Address(sp, 112));
}
// save calculated sha3 state
__ stp(a0, a1, Address(state));
__ stp(a2, a3, Address(state, 16));
__ stp(a4, a5, Address(state, 32));
__ stp(a6, a7, Address(state, 48));
__ stp(a8, a9, Address(state, 64));
__ stp(a10, a11, Address(state, 80));
__ stp(a12, a13, Address(state, 96));
__ stp(a14, a15, Address(state, 112));
__ stp(a16, a17, Address(state, 128));
__ stp(a18, a19, Address(state, 144));
__ stp(a20, a21, Address(state, 160));
__ stp(a22, a23, Address(state, 176));
__ str(a24, Address(state, 192));
// restore required registers from stack
__ ldp(r19, r20, Address(sp, 32));
__ ldp(r21, r22, Address(sp, 48));
__ ldp(r23, r24, Address(sp, 64));
__ ldp(r25, r26, Address(sp, 80));
__ ldp(r27, r28, Address(sp, 96));
if (can_use_fp && can_use_r18) {
__ add(rfp, sp, 128); // leave() will copy rfp to sp below
} // else no need to recalculate rfp, since it wasn't changed
__ leave();
__ ret(lr);
return start;
}
/** /**
* Arguments: * Arguments:
* *
@ -11512,9 +11872,15 @@ class StubGenerator: public StubCodeGenerator {
StubRoutines::_sha512_implCompressMB = generate_sha512_implCompress(StubGenStubId::sha512_implCompressMB_id); StubRoutines::_sha512_implCompressMB = generate_sha512_implCompress(StubGenStubId::sha512_implCompressMB_id);
} }
if (UseSHA3Intrinsics) { if (UseSHA3Intrinsics) {
StubRoutines::_sha3_implCompress = generate_sha3_implCompress(StubGenStubId::sha3_implCompress_id);
StubRoutines::_double_keccak = generate_double_keccak(); StubRoutines::_double_keccak = generate_double_keccak();
StubRoutines::_sha3_implCompressMB = generate_sha3_implCompress(StubGenStubId::sha3_implCompressMB_id); if (UseSIMDForSHA3Intrinsic) {
StubRoutines::_sha3_implCompress = generate_sha3_implCompress(StubGenStubId::sha3_implCompress_id);
StubRoutines::_sha3_implCompressMB = generate_sha3_implCompress(StubGenStubId::sha3_implCompressMB_id);
} else {
StubRoutines::_sha3_implCompress = generate_sha3_implCompress_gpr(StubGenStubId::sha3_implCompress_id);
StubRoutines::_sha3_implCompressMB = generate_sha3_implCompress_gpr(StubGenStubId::sha3_implCompressMB_id);
}
} }
if (UsePoly1305Intrinsics) { if (UsePoly1305Intrinsics) {

View File

@ -379,7 +379,7 @@ void VM_Version::initialize() {
FLAG_SET_DEFAULT(UseSHA3Intrinsics, true); FLAG_SET_DEFAULT(UseSHA3Intrinsics, true);
} }
} }
} else if (UseSHA3Intrinsics) { } else if (UseSHA3Intrinsics && UseSIMDForSHA3Intrinsic) {
warning("Intrinsics for SHA3-224, SHA3-256, SHA3-384 and SHA3-512 crypto hash functions not available on this CPU."); warning("Intrinsics for SHA3-224, SHA3-256, SHA3-384 and SHA3-512 crypto hash functions not available on this CPU.");
FLAG_SET_DEFAULT(UseSHA3Intrinsics, false); FLAG_SET_DEFAULT(UseSHA3Intrinsics, false);
} }

View File

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 2021, 2023, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2021, 2025, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2020, Huawei Technologies Co., Ltd. All rights reserved. * Copyright (c) 2020, Huawei Technologies Co., Ltd. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
@ -40,6 +40,7 @@
* -XX:CompileOnly=sun.security.provider.DigestBase::* * -XX:CompileOnly=sun.security.provider.DigestBase::*
* -XX:CompileOnly=sun.security.provider.SHA3::* * -XX:CompileOnly=sun.security.provider.SHA3::*
* -XX:+UseSHA3Intrinsics * -XX:+UseSHA3Intrinsics
* -XX:+IgnoreUnrecognizedVMOptions -XX:+UseSIMDForSHA3Intrinsic
* -Dalgorithm=SHA3-224 * -Dalgorithm=SHA3-224
* compiler.intrinsics.sha.sanity.TestSHA3Intrinsics * compiler.intrinsics.sha.sanity.TestSHA3Intrinsics
* @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions * @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions
@ -58,6 +59,7 @@
* -XX:CompileOnly=sun.security.provider.DigestBase::* * -XX:CompileOnly=sun.security.provider.DigestBase::*
* -XX:CompileOnly=sun.security.provider.SHA3::* * -XX:CompileOnly=sun.security.provider.SHA3::*
* -XX:+UseSHA3Intrinsics * -XX:+UseSHA3Intrinsics
* -XX:+IgnoreUnrecognizedVMOptions -XX:+UseSIMDForSHA3Intrinsic
* -Dalgorithm=SHA3-256 * -Dalgorithm=SHA3-256
* compiler.intrinsics.sha.sanity.TestSHA3Intrinsics * compiler.intrinsics.sha.sanity.TestSHA3Intrinsics
* @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions * @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions
@ -76,6 +78,7 @@
* -XX:CompileOnly=sun.security.provider.DigestBase::* * -XX:CompileOnly=sun.security.provider.DigestBase::*
* -XX:CompileOnly=sun.security.provider.SHA3::* * -XX:CompileOnly=sun.security.provider.SHA3::*
* -XX:+UseSHA3Intrinsics * -XX:+UseSHA3Intrinsics
* -XX:+IgnoreUnrecognizedVMOptions -XX:+UseSIMDForSHA3Intrinsic
* -Dalgorithm=SHA3-384 * -Dalgorithm=SHA3-384
* compiler.intrinsics.sha.sanity.TestSHA3Intrinsics * compiler.intrinsics.sha.sanity.TestSHA3Intrinsics
* @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions * @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions
@ -94,6 +97,7 @@
* -XX:CompileOnly=sun.security.provider.DigestBase::* * -XX:CompileOnly=sun.security.provider.DigestBase::*
* -XX:CompileOnly=sun.security.provider.SHA3::* * -XX:CompileOnly=sun.security.provider.SHA3::*
* -XX:+UseSHA3Intrinsics * -XX:+UseSHA3Intrinsics
* -XX:+IgnoreUnrecognizedVMOptions -XX:+UseSIMDForSHA3Intrinsic
* -Dalgorithm=SHA3-512 * -Dalgorithm=SHA3-512
* compiler.intrinsics.sha.sanity.TestSHA3Intrinsics * compiler.intrinsics.sha.sanity.TestSHA3Intrinsics
* @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions * @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions
@ -110,6 +114,128 @@
* negative_224.log negative_256.log negative_384.log negative_512.log * negative_224.log negative_256.log negative_384.log negative_512.log
*/ */
/**
* @test
* @bug 8337666
* @requires os.arch == "aarch64"
* @summary Verify that SHA3-224, SHA3-256, SHA3-384, SHA3-512 intrinsic is actually used.
* -XX:-UseSIMDForSHA3Intrinsic -XX:-PreserveFramePointer
*
* @library /test/lib /
* @modules java.base/jdk.internal.misc
* java.management
*
* @build jdk.test.whitebox.WhiteBox
* @run driver jdk.test.lib.helpers.ClassFileInstaller jdk.test.whitebox.WhiteBox
* @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions
* -XX:+WhiteBoxAPI -Xbatch -XX:CompileThreshold=500
* -XX:Tier4InvocationThreshold=500
* -XX:+LogCompilation -XX:LogFile=positive_224.log
* -XX:CompileOnly=sun.security.provider.DigestBase::*
* -XX:CompileOnly=sun.security.provider.SHA3::*
* -XX:+UseSHA3Intrinsics
* -XX:+IgnoreUnrecognizedVMOptions
* -XX:-UseSIMDForSHA3Intrinsic -XX:-PreserveFramePointer
* -Dalgorithm=SHA3-224
* compiler.intrinsics.sha.sanity.TestSHA3Intrinsics
* @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions
* -XX:+WhiteBoxAPI -Xbatch -XX:CompileThreshold=500
* -XX:Tier4InvocationThreshold=500
* -XX:+LogCompilation -XX:LogFile=positive_256.log
* -XX:CompileOnly=sun.security.provider.DigestBase::*
* -XX:CompileOnly=sun.security.provider.SHA3::*
* -XX:+UseSHA3Intrinsics
* -XX:+IgnoreUnrecognizedVMOptions
* -XX:-UseSIMDForSHA3Intrinsic -XX:-PreserveFramePointer
* -Dalgorithm=SHA3-256
* compiler.intrinsics.sha.sanity.TestSHA3Intrinsics
* @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions
* -XX:+WhiteBoxAPI -Xbatch -XX:CompileThreshold=500
* -XX:Tier4InvocationThreshold=500
* -XX:+LogCompilation -XX:LogFile=positive_384.log
* -XX:CompileOnly=sun.security.provider.DigestBase::*
* -XX:CompileOnly=sun.security.provider.SHA3::*
* -XX:+UseSHA3Intrinsics
* -XX:+IgnoreUnrecognizedVMOptions
* -XX:-UseSIMDForSHA3Intrinsic -XX:-PreserveFramePointer
* -Dalgorithm=SHA3-384
* compiler.intrinsics.sha.sanity.TestSHA3Intrinsics
* @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions
* -XX:+WhiteBoxAPI -Xbatch -XX:CompileThreshold=500
* -XX:Tier4InvocationThreshold=500
* -XX:+LogCompilation -XX:LogFile=positive_512.log
* -XX:CompileOnly=sun.security.provider.DigestBase::*
* -XX:CompileOnly=sun.security.provider.SHA3::*
* -XX:+UseSHA3Intrinsics
* -XX:+IgnoreUnrecognizedVMOptions
* -XX:-UseSIMDForSHA3Intrinsic -XX:-PreserveFramePointer
* -Dalgorithm=SHA3-512
* compiler.intrinsics.sha.sanity.TestSHA3Intrinsics
* @run main/othervm -DverificationStrategy=VERIFY_INTRINSIC_USAGE
* compiler.testlibrary.intrinsics.Verifier positive_224.log positive_256.log positive_384.log positive_512.log
*/
/**
* @test
* @bug 8337666
* @requires os.arch == "aarch64"
* @summary Verify that SHA3-224, SHA3-256, SHA3-384, SHA3-512 intrinsic is actually used.
* -XX:-UseSIMDForSHA3Intrinsic -XX:+PreserveFramePointer
*
* @library /test/lib /
* @modules java.base/jdk.internal.misc
* java.management
*
* @build jdk.test.whitebox.WhiteBox
* @run driver jdk.test.lib.helpers.ClassFileInstaller jdk.test.whitebox.WhiteBox
* @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions
* -XX:+WhiteBoxAPI -Xbatch -XX:CompileThreshold=500
* -XX:Tier4InvocationThreshold=500
* -XX:+LogCompilation -XX:LogFile=positive_224.log
* -XX:CompileOnly=sun.security.provider.DigestBase::*
* -XX:CompileOnly=sun.security.provider.SHA3::*
* -XX:+UseSHA3Intrinsics
* -XX:+IgnoreUnrecognizedVMOptions
* -XX:-UseSIMDForSHA3Intrinsic -XX:+PreserveFramePointer
* -Dalgorithm=SHA3-224
* compiler.intrinsics.sha.sanity.TestSHA3Intrinsics
* @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions
* -XX:+WhiteBoxAPI -Xbatch -XX:CompileThreshold=500
* -XX:Tier4InvocationThreshold=500
* -XX:+LogCompilation -XX:LogFile=positive_256.log
* -XX:CompileOnly=sun.security.provider.DigestBase::*
* -XX:CompileOnly=sun.security.provider.SHA3::*
* -XX:+UseSHA3Intrinsics
* -XX:+IgnoreUnrecognizedVMOptions
* -XX:-UseSIMDForSHA3Intrinsic -XX:+PreserveFramePointer
* -Dalgorithm=SHA3-256
* compiler.intrinsics.sha.sanity.TestSHA3Intrinsics
* @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions
* -XX:+WhiteBoxAPI -Xbatch -XX:CompileThreshold=500
* -XX:Tier4InvocationThreshold=500
* -XX:+LogCompilation -XX:LogFile=positive_384.log
* -XX:CompileOnly=sun.security.provider.DigestBase::*
* -XX:CompileOnly=sun.security.provider.SHA3::*
* -XX:+UseSHA3Intrinsics
* -XX:+IgnoreUnrecognizedVMOptions
* -XX:-UseSIMDForSHA3Intrinsic -XX:+PreserveFramePointer
* -Dalgorithm=SHA3-384
* compiler.intrinsics.sha.sanity.TestSHA3Intrinsics
* @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions
* -XX:+WhiteBoxAPI -Xbatch -XX:CompileThreshold=500
* -XX:Tier4InvocationThreshold=500
* -XX:+LogCompilation -XX:LogFile=positive_512.log
* -XX:CompileOnly=sun.security.provider.DigestBase::*
* -XX:CompileOnly=sun.security.provider.SHA3::*
* -XX:+UseSHA3Intrinsics
* -XX:+IgnoreUnrecognizedVMOptions
* -XX:-UseSIMDForSHA3Intrinsic -XX:+PreserveFramePointer
* -Dalgorithm=SHA3-512
* compiler.intrinsics.sha.sanity.TestSHA3Intrinsics
* @run main/othervm -DverificationStrategy=VERIFY_INTRINSIC_USAGE
* compiler.testlibrary.intrinsics.Verifier positive_224.log positive_256.log positive_384.log positive_512.log
*/
package compiler.intrinsics.sha.sanity; package compiler.intrinsics.sha.sanity;
import compiler.testlibrary.sha.predicate.IntrinsicPredicates; import compiler.testlibrary.sha.predicate.IntrinsicPredicates;

View File

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 2021, 2023, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2021, 2025, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2020, Huawei Technologies Co., Ltd. All rights reserved. * Copyright (c) 2020, Huawei Technologies Co., Ltd. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
@ -40,6 +40,7 @@
* -XX:CompileOnly=sun.security.provider.DigestBase::* * -XX:CompileOnly=sun.security.provider.DigestBase::*
* -XX:CompileOnly=sun.security.provider.SHA3::* * -XX:CompileOnly=sun.security.provider.SHA3::*
* -XX:+UseSHA3Intrinsics -XX:-UseMD5Intrinsics * -XX:+UseSHA3Intrinsics -XX:-UseMD5Intrinsics
* -XX:+IgnoreUnrecognizedVMOptions -XX:+UseSIMDForSHA3Intrinsic
* -XX:-UseSHA1Intrinsics -XX:-UseSHA256Intrinsics * -XX:-UseSHA1Intrinsics -XX:-UseSHA256Intrinsics
* -XX:-UseSHA512Intrinsics -Dalgorithm=SHA3-224 * -XX:-UseSHA512Intrinsics -Dalgorithm=SHA3-224
* compiler.intrinsics.sha.sanity.TestSHA3MultiBlockIntrinsics * compiler.intrinsics.sha.sanity.TestSHA3MultiBlockIntrinsics
@ -50,6 +51,7 @@
* -XX:CompileOnly=sun.security.provider.DigestBase::* * -XX:CompileOnly=sun.security.provider.DigestBase::*
* -XX:CompileOnly=sun.security.provider.SHA3::* * -XX:CompileOnly=sun.security.provider.SHA3::*
* -XX:+UseSHA3Intrinsics -Dalgorithm=SHA3-224 * -XX:+UseSHA3Intrinsics -Dalgorithm=SHA3-224
* -XX:+IgnoreUnrecognizedVMOptions -XX:+UseSIMDForSHA3Intrinsic
* compiler.intrinsics.sha.sanity.TestSHA3MultiBlockIntrinsics * compiler.intrinsics.sha.sanity.TestSHA3MultiBlockIntrinsics
* @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions * @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions
* -XX:+WhiteBoxAPI -Xbatch -XX:CompileThreshold=500 * -XX:+WhiteBoxAPI -Xbatch -XX:CompileThreshold=500
@ -67,6 +69,7 @@
* -XX:CompileOnly=sun.security.provider.DigestBase::* * -XX:CompileOnly=sun.security.provider.DigestBase::*
* -XX:CompileOnly=sun.security.provider.SHA3::* * -XX:CompileOnly=sun.security.provider.SHA3::*
* -XX:+UseSHA3Intrinsics -XX:-UseMD5Intrinsics * -XX:+UseSHA3Intrinsics -XX:-UseMD5Intrinsics
* -XX:+IgnoreUnrecognizedVMOptions -XX:+UseSIMDForSHA3Intrinsic
* -XX:-UseSHA1Intrinsics -XX:-UseSHA256Intrinsics * -XX:-UseSHA1Intrinsics -XX:-UseSHA256Intrinsics
* -XX:-UseSHA512Intrinsics -Dalgorithm=SHA3-256 * -XX:-UseSHA512Intrinsics -Dalgorithm=SHA3-256
* compiler.intrinsics.sha.sanity.TestSHA3MultiBlockIntrinsics * compiler.intrinsics.sha.sanity.TestSHA3MultiBlockIntrinsics
@ -77,6 +80,7 @@
* -XX:CompileOnly=sun.security.provider.DigestBase::* * -XX:CompileOnly=sun.security.provider.DigestBase::*
* -XX:CompileOnly=sun.security.provider.SHA3::* * -XX:CompileOnly=sun.security.provider.SHA3::*
* -XX:+UseSHA3Intrinsics -Dalgorithm=SHA3-256 * -XX:+UseSHA3Intrinsics -Dalgorithm=SHA3-256
* -XX:+IgnoreUnrecognizedVMOptions -XX:+UseSIMDForSHA3Intrinsic
* compiler.intrinsics.sha.sanity.TestSHA3MultiBlockIntrinsics * compiler.intrinsics.sha.sanity.TestSHA3MultiBlockIntrinsics
* @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions * @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions
* -XX:+WhiteBoxAPI -Xbatch -XX:CompileThreshold=500 * -XX:+WhiteBoxAPI -Xbatch -XX:CompileThreshold=500
@ -94,6 +98,7 @@
* -XX:CompileOnly=sun.security.provider.DigestBase::* * -XX:CompileOnly=sun.security.provider.DigestBase::*
* -XX:CompileOnly=sun.security.provider.SHA3::* * -XX:CompileOnly=sun.security.provider.SHA3::*
* -XX:+UseSHA3Intrinsics -XX:-UseMD5Intrinsics * -XX:+UseSHA3Intrinsics -XX:-UseMD5Intrinsics
* -XX:+IgnoreUnrecognizedVMOptions -XX:+UseSIMDForSHA3Intrinsic
* -XX:-UseSHA1Intrinsics -XX:-UseSHA256Intrinsics * -XX:-UseSHA1Intrinsics -XX:-UseSHA256Intrinsics
* -XX:-UseSHA512Intrinsics -Dalgorithm=SHA3-384 * -XX:-UseSHA512Intrinsics -Dalgorithm=SHA3-384
* compiler.intrinsics.sha.sanity.TestSHA3MultiBlockIntrinsics * compiler.intrinsics.sha.sanity.TestSHA3MultiBlockIntrinsics
@ -104,6 +109,7 @@
* -XX:CompileOnly=sun.security.provider.DigestBase::* * -XX:CompileOnly=sun.security.provider.DigestBase::*
* -XX:CompileOnly=sun.security.provider.SHA3::* * -XX:CompileOnly=sun.security.provider.SHA3::*
* -XX:+UseSHA3Intrinsics -Dalgorithm=SHA3-384 * -XX:+UseSHA3Intrinsics -Dalgorithm=SHA3-384
* -XX:+IgnoreUnrecognizedVMOptions -XX:+UseSIMDForSHA3Intrinsic
* compiler.intrinsics.sha.sanity.TestSHA3MultiBlockIntrinsics * compiler.intrinsics.sha.sanity.TestSHA3MultiBlockIntrinsics
* @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions * @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions
* -XX:+WhiteBoxAPI -Xbatch -XX:CompileThreshold=500 * -XX:+WhiteBoxAPI -Xbatch -XX:CompileThreshold=500
@ -121,6 +127,7 @@
* -XX:CompileOnly=sun.security.provider.DigestBase::* * -XX:CompileOnly=sun.security.provider.DigestBase::*
* -XX:CompileOnly=sun.security.provider.SHA3::* * -XX:CompileOnly=sun.security.provider.SHA3::*
* -XX:+UseSHA3Intrinsics -XX:-UseMD5Intrinsics * -XX:+UseSHA3Intrinsics -XX:-UseMD5Intrinsics
* -XX:+IgnoreUnrecognizedVMOptions -XX:+UseSIMDForSHA3Intrinsic
* -XX:-UseSHA1Intrinsics -XX:-UseSHA256Intrinsics * -XX:-UseSHA1Intrinsics -XX:-UseSHA256Intrinsics
* -XX:-UseSHA512Intrinsics -Dalgorithm=SHA3-512 * -XX:-UseSHA512Intrinsics -Dalgorithm=SHA3-512
* compiler.intrinsics.sha.sanity.TestSHA3MultiBlockIntrinsics * compiler.intrinsics.sha.sanity.TestSHA3MultiBlockIntrinsics
@ -131,6 +138,7 @@
* -XX:CompileOnly=sun.security.provider.DigestBase::* * -XX:CompileOnly=sun.security.provider.DigestBase::*
* -XX:CompileOnly=sun.security.provider.SHA3::* * -XX:CompileOnly=sun.security.provider.SHA3::*
* -XX:+UseSHA3Intrinsics -Dalgorithm=SHA3-512 * -XX:+UseSHA3Intrinsics -Dalgorithm=SHA3-512
* -XX:+IgnoreUnrecognizedVMOptions -XX:+UseSIMDForSHA3Intrinsic
* compiler.intrinsics.sha.sanity.TestSHA3MultiBlockIntrinsics * compiler.intrinsics.sha.sanity.TestSHA3MultiBlockIntrinsics
* @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions * @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions
* -XX:+WhiteBoxAPI -Xbatch -XX:CompileThreshold=500 * -XX:+WhiteBoxAPI -Xbatch -XX:CompileThreshold=500
@ -147,6 +155,226 @@
* negative_384.log negative_512.log * negative_384.log negative_512.log
*/ */
/**
* @test
* @bug 8337666
* @requires os.arch == "aarch64"
* @summary Verify that SHA3-224, SHA3-256, SHA3-384, SHA3-512 multi block intrinsic is actually used.
* -XX:-UseSIMDForSHA3Intrinsic -XX:-PreserveFramePointer
*
* @library /test/lib /
* @modules java.base/jdk.internal.misc
* java.management
*
* @build jdk.test.whitebox.WhiteBox
* @run driver jdk.test.lib.helpers.ClassFileInstaller jdk.test.whitebox.WhiteBox
* @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions
* -XX:+WhiteBoxAPI -Xbatch -XX:CompileThreshold=500
* -XX:Tier4InvocationThreshold=500
* -XX:+LogCompilation -XX:LogFile=positive_224.log
* -XX:CompileOnly=sun.security.provider.DigestBase::*
* -XX:CompileOnly=sun.security.provider.SHA3::*
* -XX:+UseSHA3Intrinsics -XX:-UseMD5Intrinsics
* -XX:+IgnoreUnrecognizedVMOptions
* -XX:-UseSIMDForSHA3Intrinsic -XX:-PreserveFramePointer
* -XX:-UseSHA1Intrinsics -XX:-UseSHA256Intrinsics
* -XX:-UseSHA512Intrinsics -Dalgorithm=SHA3-224
* compiler.intrinsics.sha.sanity.TestSHA3MultiBlockIntrinsics
* @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions
* -XX:+WhiteBoxAPI -Xbatch -XX:CompileThreshold=500
* -XX:Tier4InvocationThreshold=500
* -XX:+LogCompilation -XX:LogFile=positive_224_def.log
* -XX:CompileOnly=sun.security.provider.DigestBase::*
* -XX:CompileOnly=sun.security.provider.SHA3::*
* -XX:+UseSHA3Intrinsics -Dalgorithm=SHA3-224
* -XX:+IgnoreUnrecognizedVMOptions
* -XX:-UseSIMDForSHA3Intrinsic -XX:-PreserveFramePointer
* compiler.intrinsics.sha.sanity.TestSHA3MultiBlockIntrinsics
*
* @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions
* -XX:+WhiteBoxAPI -Xbatch -XX:CompileThreshold=500
* -XX:Tier4InvocationThreshold=500
* -XX:+LogCompilation -XX:LogFile=positive_256.log
* -XX:CompileOnly=sun.security.provider.DigestBase::*
* -XX:CompileOnly=sun.security.provider.SHA3::*
* -XX:+UseSHA3Intrinsics -XX:-UseMD5Intrinsics
* -XX:+IgnoreUnrecognizedVMOptions
* -XX:-UseSIMDForSHA3Intrinsic -XX:-PreserveFramePointer
* -XX:-UseSHA1Intrinsics -XX:-UseSHA256Intrinsics
* -XX:-UseSHA512Intrinsics -Dalgorithm=SHA3-256
* compiler.intrinsics.sha.sanity.TestSHA3MultiBlockIntrinsics
* @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions
* -XX:+WhiteBoxAPI -Xbatch -XX:CompileThreshold=500
* -XX:Tier4InvocationThreshold=500
* -XX:+LogCompilation -XX:LogFile=positive_256_def.log
* -XX:CompileOnly=sun.security.provider.DigestBase::*
* -XX:CompileOnly=sun.security.provider.SHA3::*
* -XX:+UseSHA3Intrinsics -Dalgorithm=SHA3-256
* -XX:+IgnoreUnrecognizedVMOptions
* -XX:-UseSIMDForSHA3Intrinsic -XX:-PreserveFramePointer
* compiler.intrinsics.sha.sanity.TestSHA3MultiBlockIntrinsics
*
* @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions
* -XX:+WhiteBoxAPI -Xbatch -XX:CompileThreshold=500
* -XX:Tier4InvocationThreshold=500
* -XX:+LogCompilation -XX:LogFile=positive_384.log
* -XX:CompileOnly=sun.security.provider.DigestBase::*
* -XX:CompileOnly=sun.security.provider.SHA3::*
* -XX:+UseSHA3Intrinsics -XX:-UseMD5Intrinsics
* -XX:+IgnoreUnrecognizedVMOptions
* -XX:-UseSIMDForSHA3Intrinsic -XX:-PreserveFramePointer
* -XX:-UseSHA1Intrinsics -XX:-UseSHA256Intrinsics
* -XX:-UseSHA512Intrinsics -Dalgorithm=SHA3-384
* compiler.intrinsics.sha.sanity.TestSHA3MultiBlockIntrinsics
* @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions
* -XX:+WhiteBoxAPI -Xbatch -XX:CompileThreshold=500
* -XX:Tier4InvocationThreshold=500
* -XX:+LogCompilation -XX:LogFile=positive_384_def.log
* -XX:CompileOnly=sun.security.provider.DigestBase::*
* -XX:CompileOnly=sun.security.provider.SHA3::*
* -XX:+UseSHA3Intrinsics -Dalgorithm=SHA3-384
* -XX:+IgnoreUnrecognizedVMOptions
* -XX:-UseSIMDForSHA3Intrinsic -XX:-PreserveFramePointer
* compiler.intrinsics.sha.sanity.TestSHA3MultiBlockIntrinsics
*
* @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions
* -XX:+WhiteBoxAPI -Xbatch -XX:CompileThreshold=500
* -XX:Tier4InvocationThreshold=500
* -XX:+LogCompilation -XX:LogFile=positive_512.log
* -XX:CompileOnly=sun.security.provider.DigestBase::*
* -XX:CompileOnly=sun.security.provider.SHA3::*
* -XX:+UseSHA3Intrinsics -XX:-UseMD5Intrinsics
* -XX:+IgnoreUnrecognizedVMOptions
* -XX:-UseSIMDForSHA3Intrinsic -XX:-PreserveFramePointer
* -XX:-UseSHA1Intrinsics -XX:-UseSHA256Intrinsics
* -XX:-UseSHA512Intrinsics -Dalgorithm=SHA3-512
* compiler.intrinsics.sha.sanity.TestSHA3MultiBlockIntrinsics
* @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions
* -XX:+WhiteBoxAPI -Xbatch -XX:CompileThreshold=500
* -XX:Tier4InvocationThreshold=500
* -XX:+LogCompilation -XX:LogFile=positive_512_def.log
* -XX:CompileOnly=sun.security.provider.DigestBase::*
* -XX:CompileOnly=sun.security.provider.SHA3::*
* -XX:+UseSHA3Intrinsics -Dalgorithm=SHA3-512
* -XX:+IgnoreUnrecognizedVMOptions
* -XX:-UseSIMDForSHA3Intrinsic -XX:-PreserveFramePointer
* compiler.intrinsics.sha.sanity.TestSHA3MultiBlockIntrinsics
* @run main/othervm -DverificationStrategy=VERIFY_INTRINSIC_USAGE
* compiler.testlibrary.intrinsics.Verifier positive_224.log positive_256.log
* positive_384.log positive_512.log positive_224_def.log positive_256_def.log
* positive_384_def.log positive_512_def.log
*/
/**
* @test
* @bug 8337666
* @requires os.arch == "aarch64"
* @summary Verify that SHA3-224, SHA3-256, SHA3-384, SHA3-512 multi block intrinsic is actually used.
* -XX:-UseSIMDForSHA3Intrinsic -XX:+PreserveFramePointer
*
* @library /test/lib /
* @modules java.base/jdk.internal.misc
* java.management
*
* @build jdk.test.whitebox.WhiteBox
* @run driver jdk.test.lib.helpers.ClassFileInstaller jdk.test.whitebox.WhiteBox
* @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions
* -XX:+WhiteBoxAPI -Xbatch -XX:CompileThreshold=500
* -XX:Tier4InvocationThreshold=500
* -XX:+LogCompilation -XX:LogFile=positive_224.log
* -XX:CompileOnly=sun.security.provider.DigestBase::*
* -XX:CompileOnly=sun.security.provider.SHA3::*
* -XX:+UseSHA3Intrinsics -XX:-UseMD5Intrinsics
* -XX:+IgnoreUnrecognizedVMOptions
* -XX:-UseSIMDForSHA3Intrinsic -XX:+PreserveFramePointer
* -XX:-UseSHA1Intrinsics -XX:-UseSHA256Intrinsics
* -XX:-UseSHA512Intrinsics -Dalgorithm=SHA3-224
* compiler.intrinsics.sha.sanity.TestSHA3MultiBlockIntrinsics
* @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions
* -XX:+WhiteBoxAPI -Xbatch -XX:CompileThreshold=500
* -XX:Tier4InvocationThreshold=500
* -XX:+LogCompilation -XX:LogFile=positive_224_def.log
* -XX:CompileOnly=sun.security.provider.DigestBase::*
* -XX:CompileOnly=sun.security.provider.SHA3::*
* -XX:+UseSHA3Intrinsics -Dalgorithm=SHA3-224
* -XX:+IgnoreUnrecognizedVMOptions
* -XX:-UseSIMDForSHA3Intrinsic -XX:+PreserveFramePointer
* compiler.intrinsics.sha.sanity.TestSHA3MultiBlockIntrinsics
*
* @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions
* -XX:+WhiteBoxAPI -Xbatch -XX:CompileThreshold=500
* -XX:Tier4InvocationThreshold=500
* -XX:+LogCompilation -XX:LogFile=positive_256.log
* -XX:CompileOnly=sun.security.provider.DigestBase::*
* -XX:CompileOnly=sun.security.provider.SHA3::*
* -XX:+UseSHA3Intrinsics -XX:-UseMD5Intrinsics
* -XX:+IgnoreUnrecognizedVMOptions
* -XX:-UseSIMDForSHA3Intrinsic -XX:+PreserveFramePointer
* -XX:-UseSHA1Intrinsics -XX:-UseSHA256Intrinsics
* -XX:-UseSHA512Intrinsics -Dalgorithm=SHA3-256
* compiler.intrinsics.sha.sanity.TestSHA3MultiBlockIntrinsics
* @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions
* -XX:+WhiteBoxAPI -Xbatch -XX:CompileThreshold=500
* -XX:Tier4InvocationThreshold=500
* -XX:+LogCompilation -XX:LogFile=positive_256_def.log
* -XX:CompileOnly=sun.security.provider.DigestBase::*
* -XX:CompileOnly=sun.security.provider.SHA3::*
* -XX:+UseSHA3Intrinsics -Dalgorithm=SHA3-256
* -XX:+IgnoreUnrecognizedVMOptions
* -XX:-UseSIMDForSHA3Intrinsic -XX:+PreserveFramePointer
* compiler.intrinsics.sha.sanity.TestSHA3MultiBlockIntrinsics
*
* @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions
* -XX:+WhiteBoxAPI -Xbatch -XX:CompileThreshold=500
* -XX:Tier4InvocationThreshold=500
* -XX:+LogCompilation -XX:LogFile=positive_384.log
* -XX:CompileOnly=sun.security.provider.DigestBase::*
* -XX:CompileOnly=sun.security.provider.SHA3::*
* -XX:+UseSHA3Intrinsics -XX:-UseMD5Intrinsics
* -XX:+IgnoreUnrecognizedVMOptions
* -XX:-UseSIMDForSHA3Intrinsic -XX:+PreserveFramePointer
* -XX:-UseSHA1Intrinsics -XX:-UseSHA256Intrinsics
* -XX:-UseSHA512Intrinsics -Dalgorithm=SHA3-384
* compiler.intrinsics.sha.sanity.TestSHA3MultiBlockIntrinsics
* @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions
* -XX:+WhiteBoxAPI -Xbatch -XX:CompileThreshold=500
* -XX:Tier4InvocationThreshold=500
* -XX:+LogCompilation -XX:LogFile=positive_384_def.log
* -XX:CompileOnly=sun.security.provider.DigestBase::*
* -XX:CompileOnly=sun.security.provider.SHA3::*
* -XX:+UseSHA3Intrinsics -Dalgorithm=SHA3-384
* -XX:+IgnoreUnrecognizedVMOptions
* -XX:-UseSIMDForSHA3Intrinsic -XX:+PreserveFramePointer
* compiler.intrinsics.sha.sanity.TestSHA3MultiBlockIntrinsics
*
* @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions
* -XX:+WhiteBoxAPI -Xbatch -XX:CompileThreshold=500
* -XX:Tier4InvocationThreshold=500
* -XX:+LogCompilation -XX:LogFile=positive_512.log
* -XX:CompileOnly=sun.security.provider.DigestBase::*
* -XX:CompileOnly=sun.security.provider.SHA3::*
* -XX:+UseSHA3Intrinsics -XX:-UseMD5Intrinsics
* -XX:+IgnoreUnrecognizedVMOptions
* -XX:-UseSIMDForSHA3Intrinsic -XX:+PreserveFramePointer
* -XX:-UseSHA1Intrinsics -XX:-UseSHA256Intrinsics
* -XX:-UseSHA512Intrinsics -Dalgorithm=SHA3-512
* compiler.intrinsics.sha.sanity.TestSHA3MultiBlockIntrinsics
* @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions
* -XX:+WhiteBoxAPI -Xbatch -XX:CompileThreshold=500
* -XX:Tier4InvocationThreshold=500
* -XX:+LogCompilation -XX:LogFile=positive_512_def.log
* -XX:CompileOnly=sun.security.provider.DigestBase::*
* -XX:CompileOnly=sun.security.provider.SHA3::*
* -XX:+UseSHA3Intrinsics -Dalgorithm=SHA3-512
* -XX:+IgnoreUnrecognizedVMOptions
* -XX:-UseSIMDForSHA3Intrinsic -XX:+PreserveFramePointer
* compiler.intrinsics.sha.sanity.TestSHA3MultiBlockIntrinsics
* @run main/othervm -DverificationStrategy=VERIFY_INTRINSIC_USAGE
* compiler.testlibrary.intrinsics.Verifier positive_224.log positive_256.log
* positive_384.log positive_512.log positive_224_def.log positive_256_def.log
* positive_384_def.log positive_512_def.log
*/
package compiler.intrinsics.sha.sanity; package compiler.intrinsics.sha.sanity;
import compiler.testlibrary.sha.predicate.IntrinsicPredicates; import compiler.testlibrary.sha.predicate.IntrinsicPredicates;