mirror of
https://github.com/openjdk/jdk.git
synced 2026-03-15 18:33:41 +00:00
8055903: Develop sanity tests on SPARC's SHA instructions support
Reviewed-by: kvn, iignatyev
This commit is contained in:
parent
9f825ac4cb
commit
8381452775
@ -0,0 +1,109 @@
|
||||
/*
|
||||
* Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 only, as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
* or visit www.oracle.com if you need additional information or have any
|
||||
* questions.
|
||||
*/
|
||||
|
||||
import intrinsics.Verifier;
|
||||
import sun.hotspot.WhiteBox;
|
||||
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.util.Objects;
|
||||
import java.util.Properties;
|
||||
import java.util.function.BooleanSupplier;
|
||||
|
||||
/**
|
||||
* Base class for sanity tests on SHA intrinsics support.
|
||||
*/
|
||||
public class SHASanityTestBase {
|
||||
protected static final String SHA1_INTRINSIC_ID
|
||||
= "_sha_implCompress";
|
||||
protected static final String SHA256_INTRINSIC_ID
|
||||
= "_sha2_implCompress";
|
||||
protected static final String SHA512_INTRINSIC_ID
|
||||
= "_sha5_implCompress";
|
||||
protected static final String MB_INTRINSIC_ID
|
||||
= "_digestBase_implCompressMB";
|
||||
|
||||
private static final WhiteBox WHITE_BOX = WhiteBox.getWhiteBox();
|
||||
private static final int MSG_SIZE = 1024;
|
||||
private static final int OFFSET = 0;
|
||||
private static final int ITERATIONS = 10000;
|
||||
private static final int WARMUP_ITERATIONS = 1;
|
||||
private static final String PROVIDER = "SUN";
|
||||
|
||||
private final BooleanSupplier predicate;
|
||||
private final String intrinsicID;
|
||||
|
||||
/**
|
||||
* Construct the new test on intrinsic with ID {@code intrinsicID},
|
||||
* which is expected to be emitted if {@code predicate} is evaluated to
|
||||
* {@code true}.
|
||||
*
|
||||
* @param predicate The predicate indicating if the intrinsic is expected to
|
||||
* be used.
|
||||
* @param intrinsicID The ID of the intrinsic to be tested.
|
||||
*/
|
||||
protected SHASanityTestBase(BooleanSupplier predicate, String intrinsicID) {
|
||||
this.predicate = predicate;
|
||||
this.intrinsicID = intrinsicID;
|
||||
}
|
||||
|
||||
/**
|
||||
* Run the test and dump properties to file.
|
||||
*
|
||||
* @throws Exception when something went wrong.
|
||||
*/
|
||||
public final void test() throws Exception {
|
||||
String algorithm = Objects.requireNonNull(
|
||||
System.getProperty("algorithm"),
|
||||
"Algorithm name should be specified.");
|
||||
|
||||
dumpProperties();
|
||||
|
||||
TestSHA.testSHA(SHASanityTestBase.PROVIDER, algorithm,
|
||||
SHASanityTestBase.MSG_SIZE, SHASanityTestBase.OFFSET,
|
||||
SHASanityTestBase.ITERATIONS,
|
||||
SHASanityTestBase.WARMUP_ITERATIONS);
|
||||
}
|
||||
|
||||
/**
|
||||
* Dump properties containing information about the tested intrinsic name
|
||||
* and whether or not is should be used to the file
|
||||
* <LogFile value>.verify.properties.
|
||||
*
|
||||
* @throws IOException when something went wrong during dumping to file.
|
||||
*/
|
||||
private void dumpProperties() throws IOException {
|
||||
Properties properties = new Properties();
|
||||
properties.setProperty(Verifier.INTRINSIC_NAME_PROPERTY, intrinsicID);
|
||||
properties.setProperty(Verifier.INTRINSIC_IS_EXPECTED_PROPERTY,
|
||||
String.valueOf(predicate.getAsBoolean()));
|
||||
|
||||
String logFileName
|
||||
= SHASanityTestBase.WHITE_BOX.getStringVMFlag("LogFile");
|
||||
FileOutputStream fileOutputStream = new FileOutputStream(logFileName
|
||||
+ Verifier.PROPERTY_FILE_SUFFIX);
|
||||
|
||||
properties.store(fileOutputStream, null);
|
||||
fileOutputStream.close();
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,58 @@
|
||||
/*
|
||||
* Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 only, as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
* or visit www.oracle.com if you need additional information or have any
|
||||
* questions.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @test
|
||||
* @bug 8035968
|
||||
* @summary Verify that SHA-1 intrinsic is actually used.
|
||||
* @library /testlibrary /testlibrary/whitebox /compiler/testlibrary ../
|
||||
* @build TestSHA intrinsics.Verifier TestSHA1Intrinsics
|
||||
* @run main ClassFileInstaller sun.hotspot.WhiteBox
|
||||
* sun.hotspot.WhiteBox$WhiteBoxPermission
|
||||
* @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions
|
||||
* -XX:+WhiteBoxAPI -Xbatch -XX:CompileThreshold=500
|
||||
* -XX:Tier4InvocationThreshold=500
|
||||
* -XX:+LogCompilation -XX:LogFile=positive.log
|
||||
* -XX:CompileOnly=sun/security/provider/DigestBase
|
||||
* -XX:CompileOnly=sun/security/provider/SHA
|
||||
* -XX:+UseSHA1Intrinsics
|
||||
* -Dalgorithm=SHA-1 TestSHA1Intrinsics
|
||||
* @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions
|
||||
* -XX:+WhiteBoxAPI -Xbatch -XX:CompileThreshold=500
|
||||
* -XX:Tier4InvocationThreshold=500
|
||||
* -XX:+LogCompilation -XX:LogFile=negative.log
|
||||
* -XX:CompileOnly=sun/security/provider/DigestBase
|
||||
* -XX:CompileOnly=sun/security/provider/SHA
|
||||
* -XX:-UseSHA1Intrinsics
|
||||
* -Dalgorithm=SHA-1 TestSHA1Intrinsics
|
||||
* @run main/othervm -DverificationStrategy=VERIFY_INTRINSIC_USAGE
|
||||
* intrinsics.Verifier positive.log negative.log
|
||||
*/
|
||||
import sha.predicate.IntrinsicPredicates;
|
||||
|
||||
public class TestSHA1Intrinsics {
|
||||
public static void main(String args[]) throws Exception {
|
||||
new SHASanityTestBase(IntrinsicPredicates.SHA1_INTRINSICS_AVAILABLE,
|
||||
SHASanityTestBase.SHA1_INTRINSIC_ID).test();
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,67 @@
|
||||
/*
|
||||
* Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 only, as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
* or visit www.oracle.com if you need additional information or have any
|
||||
* questions.
|
||||
*/
|
||||
|
||||
import sha.predicate.IntrinsicPredicates;
|
||||
|
||||
/**
|
||||
* @test
|
||||
* @bug 8035968
|
||||
* @summary Verify that SHA-1 multi block intrinsic is actually used.
|
||||
* @library /testlibrary /testlibrary/whitebox /compiler/testlibrary ../
|
||||
* @build TestSHA intrinsics.Verifier TestSHA1MultiBlockIntrinsics
|
||||
* @run main ClassFileInstaller sun.hotspot.WhiteBox
|
||||
* sun.hotspot.WhiteBox$WhiteBoxPermission
|
||||
* @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions
|
||||
* -XX:+WhiteBoxAPI -Xbatch -XX:CompileThreshold=500
|
||||
* -XX:Tier4InvocationThreshold=500
|
||||
* -XX:+LogCompilation -XX:LogFile=positive.log
|
||||
* -XX:CompileOnly=sun/security/provider/DigestBase
|
||||
* -XX:CompileOnly=sun/security/provider/SHA
|
||||
* -XX:+UseSHA1Intrinsics -XX:-UseSHA256Intrinsics
|
||||
* -XX:-UseSHA512Intrinsics
|
||||
* -Dalgorithm=SHA-1 TestSHA1MultiBlockIntrinsics
|
||||
* @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions
|
||||
* -XX:+WhiteBoxAPI -Xbatch -XX:CompileThreshold=500
|
||||
* -XX:Tier4InvocationThreshold=500
|
||||
* -XX:+LogCompilation -XX:LogFile=positive_def.log
|
||||
* -XX:CompileOnly=sun/security/provider/DigestBase
|
||||
* -XX:CompileOnly=sun/security/provider/SHA
|
||||
* -XX:+UseSHA1Intrinsics -Dalgorithm=SHA-1
|
||||
* TestSHA1MultiBlockIntrinsics
|
||||
* @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions
|
||||
* -XX:+WhiteBoxAPI -Xbatch -XX:CompileThreshold=500
|
||||
* -XX:Tier4InvocationThreshold=500
|
||||
* -XX:+LogCompilation -XX:LogFile=negative.log
|
||||
* -XX:CompileOnly=sun/security/provider/DigestBase
|
||||
* -XX:CompileOnly=sun/security/provider/SHA -XX:-UseSHA
|
||||
* -Dalgorithm=SHA-1 TestSHA1MultiBlockIntrinsics
|
||||
* @run main/othervm -DverificationStrategy=VERIFY_INTRINSIC_USAGE
|
||||
* intrinsics.Verifier positive.log positive_def.log
|
||||
* negative.log
|
||||
*/
|
||||
public class TestSHA1MultiBlockIntrinsics {
|
||||
public static void main(String args[]) throws Exception {
|
||||
new SHASanityTestBase(IntrinsicPredicates.SHA1_INTRINSICS_AVAILABLE,
|
||||
SHASanityTestBase.MB_INTRINSIC_ID).test();
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,75 @@
|
||||
/*
|
||||
* Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 only, as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
* or visit www.oracle.com if you need additional information or have any
|
||||
* questions.
|
||||
*/
|
||||
|
||||
import sha.predicate.IntrinsicPredicates;
|
||||
|
||||
/**
|
||||
* @test
|
||||
* @bug 8035968
|
||||
* @summary Verify that SHA-256 intrinsic is actually used.
|
||||
* @library /testlibrary /testlibrary/whitebox /compiler/testlibrary ../
|
||||
* @build TestSHA intrinsics.Verifier TestSHA256Intrinsics
|
||||
* @run main ClassFileInstaller sun.hotspot.WhiteBox
|
||||
* sun.hotspot.WhiteBox$WhiteBoxPermission
|
||||
* @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/SHA
|
||||
* -XX:+UseSHA256Intrinsics
|
||||
* -Dalgorithm=SHA-224 TestSHA256Intrinsics
|
||||
* @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions
|
||||
* -XX:+WhiteBoxAPI -Xbatch -XX:CompileThreshold=500
|
||||
* -XX:Tier4InvocationThreshold=500
|
||||
* -XX:+LogCompilation -XX:LogFile=negative_224.log
|
||||
* -XX:CompileOnly=sun/security/provider/DigestBase
|
||||
* -XX:CompileOnly=sun/security/provider/SHA
|
||||
* -XX:-UseSHA256Intrinsics
|
||||
* -Dalgorithm=SHA-224 TestSHA256Intrinsics
|
||||
* @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/SHA
|
||||
* -XX:+UseSHA256Intrinsics
|
||||
* -Dalgorithm=SHA-256 TestSHA256Intrinsics
|
||||
* @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions
|
||||
* -XX:+WhiteBoxAPI -Xbatch -XX:CompileThreshold=500
|
||||
* -XX:Tier4InvocationThreshold=500
|
||||
* -XX:+LogCompilation -XX:LogFile=negative_256.log
|
||||
* -XX:CompileOnly=sun/security/provider/DigestBase
|
||||
* -XX:CompileOnly=sun/security/provider/SHA
|
||||
* -XX:-UseSHA256Intrinsics
|
||||
* -Dalgorithm=SHA-256 TestSHA256Intrinsics
|
||||
* @run main/othervm -DverificationStrategy=VERIFY_INTRINSIC_USAGE
|
||||
* intrinsics.Verifier positive_224.log positive_256.log
|
||||
* negative_224.log negative_256.log
|
||||
*/
|
||||
public class TestSHA256Intrinsics {
|
||||
public static void main(String args[]) throws Exception {
|
||||
new SHASanityTestBase(IntrinsicPredicates.SHA256_INTRINSICS_AVAILABLE,
|
||||
SHASanityTestBase.SHA256_INTRINSIC_ID).test();
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,92 @@
|
||||
/*
|
||||
* Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 only, as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
* or visit www.oracle.com if you need additional information or have any
|
||||
* questions.
|
||||
*/
|
||||
|
||||
import sha.predicate.IntrinsicPredicates;
|
||||
|
||||
/**
|
||||
* @test
|
||||
* @bug 8035968
|
||||
* @summary Verify that SHA-256 multi block intrinsic is actually used.
|
||||
* @library /testlibrary /testlibrary/whitebox /compiler/testlibrary ../
|
||||
* @build TestSHA intrinsics.Verifier TestSHA256MultiBlockIntrinsics
|
||||
* @run main ClassFileInstaller sun.hotspot.WhiteBox
|
||||
* sun.hotspot.WhiteBox$WhiteBoxPermission
|
||||
* @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/SHA
|
||||
* -XX:+UseSHA256Intrinsics -XX:-UseSHA1Intrinsics
|
||||
* -XX:-UseSHA512Intrinsics
|
||||
* -Dalgorithm=SHA-224 TestSHA256MultiBlockIntrinsics
|
||||
* @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/SHA
|
||||
* -XX:+UseSHA256Intrinsics -Dalgorithm=SHA-224
|
||||
* TestSHA256MultiBlockIntrinsics
|
||||
* @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions
|
||||
* -XX:+WhiteBoxAPI -Xbatch -XX:CompileThreshold=500
|
||||
* -XX:Tier4InvocationThreshold=500
|
||||
* -XX:+LogCompilation -XX:LogFile=negative_224.log
|
||||
* -XX:CompileOnly=sun/security/provider/DigestBase
|
||||
* -XX:CompileOnly=sun/security/provider/SHA -XX:-UseSHA
|
||||
* -Dalgorithm=SHA-224 TestSHA256MultiBlockIntrinsics
|
||||
* @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/SHA
|
||||
* -XX:+UseSHA256Intrinsics -XX:-UseSHA1Intrinsics
|
||||
* -XX:-UseSHA512Intrinsics
|
||||
* -Dalgorithm=SHA-256 TestSHA256MultiBlockIntrinsics
|
||||
* @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/SHA
|
||||
* -XX:+UseSHA256Intrinsics -Dalgorithm=SHA-256
|
||||
* TestSHA256MultiBlockIntrinsics
|
||||
* @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions
|
||||
* -XX:+WhiteBoxAPI -Xbatch -XX:CompileThreshold=500
|
||||
* -XX:Tier4InvocationThreshold=500
|
||||
* -XX:+LogCompilation -XX:LogFile=negative_256.log
|
||||
* -XX:CompileOnly=sun/security/provider/DigestBase
|
||||
* -XX:CompileOnly=sun/security/provider/SHA -XX:-UseSHA
|
||||
* -Dalgorithm=SHA-256 TestSHA256MultiBlockIntrinsics
|
||||
* @run main/othervm -DverificationStrategy=VERIFY_INTRINSIC_USAGE
|
||||
* intrinsics.Verifier positive_224.log positive_256.log
|
||||
* positive_224_def.log positive_256_def.log negative_224.log
|
||||
* negative_256.log
|
||||
*/
|
||||
public class TestSHA256MultiBlockIntrinsics {
|
||||
public static void main(String args[]) throws Exception {
|
||||
new SHASanityTestBase(IntrinsicPredicates.SHA256_INTRINSICS_AVAILABLE,
|
||||
SHASanityTestBase.MB_INTRINSIC_ID).test();
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,75 @@
|
||||
/*
|
||||
* Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 only, as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
* or visit www.oracle.com if you need additional information or have any
|
||||
* questions.
|
||||
*/
|
||||
|
||||
import sha.predicate.IntrinsicPredicates;
|
||||
|
||||
/**
|
||||
* @test
|
||||
* @bug 8035968
|
||||
* @summary Verify that SHA-512 intrinsic is actually used.
|
||||
* @library /testlibrary /testlibrary/whitebox /compiler/testlibrary ../
|
||||
* @build TestSHA intrinsics.Verifier TestSHA512Intrinsics
|
||||
* @run main ClassFileInstaller sun.hotspot.WhiteBox
|
||||
* sun.hotspot.WhiteBox$WhiteBoxPermission
|
||||
* @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/SHA
|
||||
* -XX:+UseSHA512Intrinsics
|
||||
* -Dalgorithm=SHA-384 TestSHA512Intrinsics
|
||||
* @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions
|
||||
* -XX:+WhiteBoxAPI -Xbatch -XX:CompileThreshold=500
|
||||
* -XX:Tier4InvocationThreshold=500
|
||||
* -XX:+LogCompilation -XX:LogFile=negative_384.log
|
||||
* -XX:CompileOnly=sun/security/provider/DigestBase
|
||||
* -XX:CompileOnly=sun/security/provider/SHA
|
||||
* -XX:-UseSHA512Intrinsics
|
||||
* -Dalgorithm=SHA-384 TestSHA512Intrinsics
|
||||
* @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/SHA
|
||||
* -XX:+UseSHA512Intrinsics
|
||||
* -Dalgorithm=SHA-512 TestSHA512Intrinsics
|
||||
* @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions
|
||||
* -XX:+WhiteBoxAPI -Xbatch -XX:CompileThreshold=500
|
||||
* -XX:Tier4InvocationThreshold=500
|
||||
* -XX:+LogCompilation -XX:LogFile=negative_512.log
|
||||
* -XX:CompileOnly=sun/security/provider/DigestBase
|
||||
* -XX:CompileOnly=sun/security/provider/SHA
|
||||
* -XX:-UseSHA512Intrinsics
|
||||
* -Dalgorithm=SHA-512 TestSHA512Intrinsics
|
||||
* @run main/othervm -DverificationStrategy=VERIFY_INTRINSIC_USAGE
|
||||
* intrinsics.Verifier positive_384.log positive_512.log
|
||||
* negative_384.log negative_512.log
|
||||
*/
|
||||
public class TestSHA512Intrinsics {
|
||||
public static void main(String args[]) throws Exception {
|
||||
new SHASanityTestBase(IntrinsicPredicates.SHA512_INTRINSICS_AVAILABLE,
|
||||
SHASanityTestBase.SHA512_INTRINSIC_ID).test();
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,92 @@
|
||||
/*
|
||||
* Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 only, as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
* or visit www.oracle.com if you need additional information or have any
|
||||
* questions.
|
||||
*/
|
||||
|
||||
import sha.predicate.IntrinsicPredicates;
|
||||
|
||||
/**
|
||||
* @test
|
||||
* @bug 8035968
|
||||
* @summary Verify that SHA-512 multi block intrinsic is actually used.
|
||||
* @library /testlibrary /testlibrary/whitebox /compiler/testlibrary ../
|
||||
* @build TestSHA intrinsics.Verifier TestSHA512MultiBlockIntrinsics
|
||||
* @run main ClassFileInstaller sun.hotspot.WhiteBox
|
||||
* sun.hotspot.WhiteBox$WhiteBoxPermission
|
||||
* @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/SHA
|
||||
* -XX:+UseSHA512Intrinsics -XX:-UseSHA1Intrinsics
|
||||
* -XX:-UseSHA256Intrinsics
|
||||
* -Dalgorithm=SHA-384 TestSHA512MultiBlockIntrinsics
|
||||
* @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/SHA
|
||||
* -XX:+UseSHA512Intrinsics -Dalgorithm=SHA-384
|
||||
* TestSHA512MultiBlockIntrinsics
|
||||
* @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions
|
||||
* -XX:+WhiteBoxAPI -Xbatch -XX:CompileThreshold=500
|
||||
* -XX:Tier4InvocationThreshold=500
|
||||
* -XX:+LogCompilation -XX:LogFile=negative_384.log
|
||||
* -XX:CompileOnly=sun/security/provider/DigestBase
|
||||
* -XX:CompileOnly=sun/security/provider/SHA -XX:-UseSHA
|
||||
* -Dalgorithm=SHA-384 TestSHA1Intrinsics
|
||||
* @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/SHA
|
||||
* -XX:+UseSHA512Intrinsics -XX:-UseSHA1Intrinsics
|
||||
* -XX:-UseSHA256Intrinsics
|
||||
* -Dalgorithm=SHA-512 TestSHA512MultiBlockIntrinsics
|
||||
* @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/SHA
|
||||
* -XX:+UseSHA512Intrinsics -Dalgorithm=SHA-512
|
||||
* TestSHA512MultiBlockIntrinsics
|
||||
* @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions
|
||||
* -XX:+WhiteBoxAPI -Xbatch -XX:CompileThreshold=500
|
||||
* -XX:Tier4InvocationThreshold=500
|
||||
* -XX:+LogCompilation -XX:LogFile=negative_512.log
|
||||
* -XX:CompileOnly=sun/security/provider/DigestBase
|
||||
* -XX:CompileOnly=sun/security/provider/SHA -XX:-UseSHA
|
||||
* -Dalgorithm=SHA-512 TestSHA512MultiBlockIntrinsics
|
||||
* @run main/othervm -DverificationStrategy=VERIFY_INTRINSIC_USAGE
|
||||
* intrinsics.Verifier positive_384.log positive_512.log
|
||||
* positive_384_def.log positive_512_def.log negative_384.log
|
||||
* negative_512.log
|
||||
*/
|
||||
public class TestSHA512MultiBlockIntrinsics {
|
||||
public static void main(String args[]) throws Exception {
|
||||
new SHASanityTestBase(IntrinsicPredicates.SHA512_INTRINSICS_AVAILABLE,
|
||||
SHASanityTestBase.MB_INTRINSIC_ID).test();
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,103 @@
|
||||
/*
|
||||
* Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 only, as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
* or visit www.oracle.com if you need additional information or have any
|
||||
* questions.
|
||||
*/
|
||||
|
||||
package sha.predicate;
|
||||
|
||||
import com.oracle.java.testlibrary.Platform;
|
||||
import com.oracle.java.testlibrary.cli.predicate.AndPredicate;
|
||||
import com.oracle.java.testlibrary.cli.predicate.CPUSpecificPredicate;
|
||||
import com.oracle.java.testlibrary.cli.predicate.OrPredicate;
|
||||
import sun.hotspot.WhiteBox;
|
||||
|
||||
import java.util.function.BooleanSupplier;
|
||||
|
||||
/**
|
||||
* Helper class aimed to provide predicates on availability of SHA-related
|
||||
* CPU instructions and intrinsics.
|
||||
*/
|
||||
public class IntrinsicPredicates {
|
||||
private static final WhiteBox WHITE_BOX = WhiteBox.getWhiteBox();
|
||||
private static final long TIERED_MAX_LEVEL = 4L;
|
||||
/**
|
||||
* Boolean supplier that check if any method could be compiled by C2.
|
||||
* Method potentially could be compiled by C2 if Server VM is used and
|
||||
* either tiered compilation is disabled or TIERED_MAX_LEVEL tier is
|
||||
* reachable.
|
||||
*
|
||||
* Please don't place this definition after SHA*_INTRINSICS_AVAILABLE
|
||||
* definitions. Otherwise its value will be {@code null} at the time when
|
||||
* all dependent fields will be initialized.
|
||||
*/
|
||||
private static final BooleanSupplier COMPILABLE_BY_C2 = () -> {
|
||||
boolean isTiered = IntrinsicPredicates.WHITE_BOX.getBooleanVMFlag(
|
||||
"TieredCompilation");
|
||||
long tieredMaxLevel = IntrinsicPredicates.WHITE_BOX.getIntxVMFlag(
|
||||
"TieredStopAtLevel");
|
||||
boolean maxLevelIsReachable = (tieredMaxLevel
|
||||
== IntrinsicPredicates.TIERED_MAX_LEVEL);
|
||||
return Platform.isServer() && (!isTiered || maxLevelIsReachable);
|
||||
};
|
||||
|
||||
public static final BooleanSupplier SHA1_INSTRUCTION_AVAILABLE
|
||||
= new CPUSpecificPredicate("sparc.*", new String[] { "sha1" },
|
||||
null);
|
||||
|
||||
public static final BooleanSupplier SHA256_INSTRUCTION_AVAILABLE
|
||||
= new CPUSpecificPredicate("sparc.*", new String[] { "sha256" },
|
||||
null);
|
||||
|
||||
public static final BooleanSupplier SHA512_INSTRUCTION_AVAILABLE
|
||||
= new CPUSpecificPredicate("sparc.*", new String[] { "sha512" },
|
||||
null);
|
||||
|
||||
public static final BooleanSupplier ANY_SHA_INSTRUCTION_AVAILABLE
|
||||
= new OrPredicate(IntrinsicPredicates.SHA1_INSTRUCTION_AVAILABLE,
|
||||
new OrPredicate(
|
||||
IntrinsicPredicates.SHA256_INSTRUCTION_AVAILABLE,
|
||||
IntrinsicPredicates.SHA512_INSTRUCTION_AVAILABLE));
|
||||
|
||||
public static final BooleanSupplier SHA1_INTRINSICS_AVAILABLE
|
||||
= new AndPredicate(new AndPredicate(
|
||||
IntrinsicPredicates.SHA1_INSTRUCTION_AVAILABLE,
|
||||
IntrinsicPredicates.COMPILABLE_BY_C2),
|
||||
IntrinsicPredicates.booleanOptionValue("UseSHA1Intrinsics"));
|
||||
|
||||
public static final BooleanSupplier SHA256_INTRINSICS_AVAILABLE
|
||||
= new AndPredicate(new AndPredicate(
|
||||
IntrinsicPredicates.SHA256_INSTRUCTION_AVAILABLE,
|
||||
IntrinsicPredicates.COMPILABLE_BY_C2),
|
||||
IntrinsicPredicates.booleanOptionValue("UseSHA256Intrinsics"));
|
||||
|
||||
public static final BooleanSupplier SHA512_INTRINSICS_AVAILABLE
|
||||
= new AndPredicate(new AndPredicate(
|
||||
IntrinsicPredicates.SHA512_INSTRUCTION_AVAILABLE,
|
||||
IntrinsicPredicates.COMPILABLE_BY_C2),
|
||||
IntrinsicPredicates.booleanOptionValue("UseSHA512Intrinsics"));
|
||||
|
||||
private static BooleanSupplier booleanOptionValue(String option) {
|
||||
return () -> IntrinsicPredicates.WHITE_BOX.getBooleanVMFlag(option);
|
||||
}
|
||||
|
||||
private IntrinsicPredicates() {
|
||||
}
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user