Mercurial > hg > truffle
annotate test/compiler/intrinsics/sha/sanity/SHASanityTestBase.java @ 21891:ccaf9eb1f5eb
Findbugs fix
author | Michael Van De Vanter <michael.van.de.vanter@oracle.com> |
---|---|
date | Tue, 09 Jun 2015 18:48:06 -0700 |
parents | 4d8781a35525 |
children |
rev | line source |
---|---|
20428
4d8781a35525
8055903: Develop sanity tests on SPARC's SHA instructions support
fzhinkin
parents:
diff
changeset
|
1 /* |
4d8781a35525
8055903: Develop sanity tests on SPARC's SHA instructions support
fzhinkin
parents:
diff
changeset
|
2 * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. |
4d8781a35525
8055903: Develop sanity tests on SPARC's SHA instructions support
fzhinkin
parents:
diff
changeset
|
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
4d8781a35525
8055903: Develop sanity tests on SPARC's SHA instructions support
fzhinkin
parents:
diff
changeset
|
4 * |
4d8781a35525
8055903: Develop sanity tests on SPARC's SHA instructions support
fzhinkin
parents:
diff
changeset
|
5 * This code is free software; you can redistribute it and/or modify it |
4d8781a35525
8055903: Develop sanity tests on SPARC's SHA instructions support
fzhinkin
parents:
diff
changeset
|
6 * under the terms of the GNU General Public License version 2 only, as |
4d8781a35525
8055903: Develop sanity tests on SPARC's SHA instructions support
fzhinkin
parents:
diff
changeset
|
7 * published by the Free Software Foundation. |
4d8781a35525
8055903: Develop sanity tests on SPARC's SHA instructions support
fzhinkin
parents:
diff
changeset
|
8 * |
4d8781a35525
8055903: Develop sanity tests on SPARC's SHA instructions support
fzhinkin
parents:
diff
changeset
|
9 * This code is distributed in the hope that it will be useful, but WITHOUT |
4d8781a35525
8055903: Develop sanity tests on SPARC's SHA instructions support
fzhinkin
parents:
diff
changeset
|
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
4d8781a35525
8055903: Develop sanity tests on SPARC's SHA instructions support
fzhinkin
parents:
diff
changeset
|
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
4d8781a35525
8055903: Develop sanity tests on SPARC's SHA instructions support
fzhinkin
parents:
diff
changeset
|
12 * version 2 for more details (a copy is included in the LICENSE file that |
4d8781a35525
8055903: Develop sanity tests on SPARC's SHA instructions support
fzhinkin
parents:
diff
changeset
|
13 * accompanied this code). |
4d8781a35525
8055903: Develop sanity tests on SPARC's SHA instructions support
fzhinkin
parents:
diff
changeset
|
14 * |
4d8781a35525
8055903: Develop sanity tests on SPARC's SHA instructions support
fzhinkin
parents:
diff
changeset
|
15 * You should have received a copy of the GNU General Public License version |
4d8781a35525
8055903: Develop sanity tests on SPARC's SHA instructions support
fzhinkin
parents:
diff
changeset
|
16 * 2 along with this work; if not, write to the Free Software Foundation, |
4d8781a35525
8055903: Develop sanity tests on SPARC's SHA instructions support
fzhinkin
parents:
diff
changeset
|
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
4d8781a35525
8055903: Develop sanity tests on SPARC's SHA instructions support
fzhinkin
parents:
diff
changeset
|
18 * |
4d8781a35525
8055903: Develop sanity tests on SPARC's SHA instructions support
fzhinkin
parents:
diff
changeset
|
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
4d8781a35525
8055903: Develop sanity tests on SPARC's SHA instructions support
fzhinkin
parents:
diff
changeset
|
20 * or visit www.oracle.com if you need additional information or have any |
4d8781a35525
8055903: Develop sanity tests on SPARC's SHA instructions support
fzhinkin
parents:
diff
changeset
|
21 * questions. |
4d8781a35525
8055903: Develop sanity tests on SPARC's SHA instructions support
fzhinkin
parents:
diff
changeset
|
22 */ |
4d8781a35525
8055903: Develop sanity tests on SPARC's SHA instructions support
fzhinkin
parents:
diff
changeset
|
23 |
4d8781a35525
8055903: Develop sanity tests on SPARC's SHA instructions support
fzhinkin
parents:
diff
changeset
|
24 import intrinsics.Verifier; |
4d8781a35525
8055903: Develop sanity tests on SPARC's SHA instructions support
fzhinkin
parents:
diff
changeset
|
25 import sun.hotspot.WhiteBox; |
4d8781a35525
8055903: Develop sanity tests on SPARC's SHA instructions support
fzhinkin
parents:
diff
changeset
|
26 |
4d8781a35525
8055903: Develop sanity tests on SPARC's SHA instructions support
fzhinkin
parents:
diff
changeset
|
27 import java.io.FileOutputStream; |
4d8781a35525
8055903: Develop sanity tests on SPARC's SHA instructions support
fzhinkin
parents:
diff
changeset
|
28 import java.io.IOException; |
4d8781a35525
8055903: Develop sanity tests on SPARC's SHA instructions support
fzhinkin
parents:
diff
changeset
|
29 import java.util.Objects; |
4d8781a35525
8055903: Develop sanity tests on SPARC's SHA instructions support
fzhinkin
parents:
diff
changeset
|
30 import java.util.Properties; |
4d8781a35525
8055903: Develop sanity tests on SPARC's SHA instructions support
fzhinkin
parents:
diff
changeset
|
31 import java.util.function.BooleanSupplier; |
4d8781a35525
8055903: Develop sanity tests on SPARC's SHA instructions support
fzhinkin
parents:
diff
changeset
|
32 |
4d8781a35525
8055903: Develop sanity tests on SPARC's SHA instructions support
fzhinkin
parents:
diff
changeset
|
33 /** |
4d8781a35525
8055903: Develop sanity tests on SPARC's SHA instructions support
fzhinkin
parents:
diff
changeset
|
34 * Base class for sanity tests on SHA intrinsics support. |
4d8781a35525
8055903: Develop sanity tests on SPARC's SHA instructions support
fzhinkin
parents:
diff
changeset
|
35 */ |
4d8781a35525
8055903: Develop sanity tests on SPARC's SHA instructions support
fzhinkin
parents:
diff
changeset
|
36 public class SHASanityTestBase { |
4d8781a35525
8055903: Develop sanity tests on SPARC's SHA instructions support
fzhinkin
parents:
diff
changeset
|
37 protected static final String SHA1_INTRINSIC_ID |
4d8781a35525
8055903: Develop sanity tests on SPARC's SHA instructions support
fzhinkin
parents:
diff
changeset
|
38 = "_sha_implCompress"; |
4d8781a35525
8055903: Develop sanity tests on SPARC's SHA instructions support
fzhinkin
parents:
diff
changeset
|
39 protected static final String SHA256_INTRINSIC_ID |
4d8781a35525
8055903: Develop sanity tests on SPARC's SHA instructions support
fzhinkin
parents:
diff
changeset
|
40 = "_sha2_implCompress"; |
4d8781a35525
8055903: Develop sanity tests on SPARC's SHA instructions support
fzhinkin
parents:
diff
changeset
|
41 protected static final String SHA512_INTRINSIC_ID |
4d8781a35525
8055903: Develop sanity tests on SPARC's SHA instructions support
fzhinkin
parents:
diff
changeset
|
42 = "_sha5_implCompress"; |
4d8781a35525
8055903: Develop sanity tests on SPARC's SHA instructions support
fzhinkin
parents:
diff
changeset
|
43 protected static final String MB_INTRINSIC_ID |
4d8781a35525
8055903: Develop sanity tests on SPARC's SHA instructions support
fzhinkin
parents:
diff
changeset
|
44 = "_digestBase_implCompressMB"; |
4d8781a35525
8055903: Develop sanity tests on SPARC's SHA instructions support
fzhinkin
parents:
diff
changeset
|
45 |
4d8781a35525
8055903: Develop sanity tests on SPARC's SHA instructions support
fzhinkin
parents:
diff
changeset
|
46 private static final WhiteBox WHITE_BOX = WhiteBox.getWhiteBox(); |
4d8781a35525
8055903: Develop sanity tests on SPARC's SHA instructions support
fzhinkin
parents:
diff
changeset
|
47 private static final int MSG_SIZE = 1024; |
4d8781a35525
8055903: Develop sanity tests on SPARC's SHA instructions support
fzhinkin
parents:
diff
changeset
|
48 private static final int OFFSET = 0; |
4d8781a35525
8055903: Develop sanity tests on SPARC's SHA instructions support
fzhinkin
parents:
diff
changeset
|
49 private static final int ITERATIONS = 10000; |
4d8781a35525
8055903: Develop sanity tests on SPARC's SHA instructions support
fzhinkin
parents:
diff
changeset
|
50 private static final int WARMUP_ITERATIONS = 1; |
4d8781a35525
8055903: Develop sanity tests on SPARC's SHA instructions support
fzhinkin
parents:
diff
changeset
|
51 private static final String PROVIDER = "SUN"; |
4d8781a35525
8055903: Develop sanity tests on SPARC's SHA instructions support
fzhinkin
parents:
diff
changeset
|
52 |
4d8781a35525
8055903: Develop sanity tests on SPARC's SHA instructions support
fzhinkin
parents:
diff
changeset
|
53 private final BooleanSupplier predicate; |
4d8781a35525
8055903: Develop sanity tests on SPARC's SHA instructions support
fzhinkin
parents:
diff
changeset
|
54 private final String intrinsicID; |
4d8781a35525
8055903: Develop sanity tests on SPARC's SHA instructions support
fzhinkin
parents:
diff
changeset
|
55 |
4d8781a35525
8055903: Develop sanity tests on SPARC's SHA instructions support
fzhinkin
parents:
diff
changeset
|
56 /** |
4d8781a35525
8055903: Develop sanity tests on SPARC's SHA instructions support
fzhinkin
parents:
diff
changeset
|
57 * Construct the new test on intrinsic with ID {@code intrinsicID}, |
4d8781a35525
8055903: Develop sanity tests on SPARC's SHA instructions support
fzhinkin
parents:
diff
changeset
|
58 * which is expected to be emitted if {@code predicate} is evaluated to |
4d8781a35525
8055903: Develop sanity tests on SPARC's SHA instructions support
fzhinkin
parents:
diff
changeset
|
59 * {@code true}. |
4d8781a35525
8055903: Develop sanity tests on SPARC's SHA instructions support
fzhinkin
parents:
diff
changeset
|
60 * |
4d8781a35525
8055903: Develop sanity tests on SPARC's SHA instructions support
fzhinkin
parents:
diff
changeset
|
61 * @param predicate The predicate indicating if the intrinsic is expected to |
4d8781a35525
8055903: Develop sanity tests on SPARC's SHA instructions support
fzhinkin
parents:
diff
changeset
|
62 * be used. |
4d8781a35525
8055903: Develop sanity tests on SPARC's SHA instructions support
fzhinkin
parents:
diff
changeset
|
63 * @param intrinsicID The ID of the intrinsic to be tested. |
4d8781a35525
8055903: Develop sanity tests on SPARC's SHA instructions support
fzhinkin
parents:
diff
changeset
|
64 */ |
4d8781a35525
8055903: Develop sanity tests on SPARC's SHA instructions support
fzhinkin
parents:
diff
changeset
|
65 protected SHASanityTestBase(BooleanSupplier predicate, String intrinsicID) { |
4d8781a35525
8055903: Develop sanity tests on SPARC's SHA instructions support
fzhinkin
parents:
diff
changeset
|
66 this.predicate = predicate; |
4d8781a35525
8055903: Develop sanity tests on SPARC's SHA instructions support
fzhinkin
parents:
diff
changeset
|
67 this.intrinsicID = intrinsicID; |
4d8781a35525
8055903: Develop sanity tests on SPARC's SHA instructions support
fzhinkin
parents:
diff
changeset
|
68 } |
4d8781a35525
8055903: Develop sanity tests on SPARC's SHA instructions support
fzhinkin
parents:
diff
changeset
|
69 |
4d8781a35525
8055903: Develop sanity tests on SPARC's SHA instructions support
fzhinkin
parents:
diff
changeset
|
70 /** |
4d8781a35525
8055903: Develop sanity tests on SPARC's SHA instructions support
fzhinkin
parents:
diff
changeset
|
71 * Run the test and dump properties to file. |
4d8781a35525
8055903: Develop sanity tests on SPARC's SHA instructions support
fzhinkin
parents:
diff
changeset
|
72 * |
4d8781a35525
8055903: Develop sanity tests on SPARC's SHA instructions support
fzhinkin
parents:
diff
changeset
|
73 * @throws Exception when something went wrong. |
4d8781a35525
8055903: Develop sanity tests on SPARC's SHA instructions support
fzhinkin
parents:
diff
changeset
|
74 */ |
4d8781a35525
8055903: Develop sanity tests on SPARC's SHA instructions support
fzhinkin
parents:
diff
changeset
|
75 public final void test() throws Exception { |
4d8781a35525
8055903: Develop sanity tests on SPARC's SHA instructions support
fzhinkin
parents:
diff
changeset
|
76 String algorithm = Objects.requireNonNull( |
4d8781a35525
8055903: Develop sanity tests on SPARC's SHA instructions support
fzhinkin
parents:
diff
changeset
|
77 System.getProperty("algorithm"), |
4d8781a35525
8055903: Develop sanity tests on SPARC's SHA instructions support
fzhinkin
parents:
diff
changeset
|
78 "Algorithm name should be specified."); |
4d8781a35525
8055903: Develop sanity tests on SPARC's SHA instructions support
fzhinkin
parents:
diff
changeset
|
79 |
4d8781a35525
8055903: Develop sanity tests on SPARC's SHA instructions support
fzhinkin
parents:
diff
changeset
|
80 dumpProperties(); |
4d8781a35525
8055903: Develop sanity tests on SPARC's SHA instructions support
fzhinkin
parents:
diff
changeset
|
81 |
4d8781a35525
8055903: Develop sanity tests on SPARC's SHA instructions support
fzhinkin
parents:
diff
changeset
|
82 TestSHA.testSHA(SHASanityTestBase.PROVIDER, algorithm, |
4d8781a35525
8055903: Develop sanity tests on SPARC's SHA instructions support
fzhinkin
parents:
diff
changeset
|
83 SHASanityTestBase.MSG_SIZE, SHASanityTestBase.OFFSET, |
4d8781a35525
8055903: Develop sanity tests on SPARC's SHA instructions support
fzhinkin
parents:
diff
changeset
|
84 SHASanityTestBase.ITERATIONS, |
4d8781a35525
8055903: Develop sanity tests on SPARC's SHA instructions support
fzhinkin
parents:
diff
changeset
|
85 SHASanityTestBase.WARMUP_ITERATIONS); |
4d8781a35525
8055903: Develop sanity tests on SPARC's SHA instructions support
fzhinkin
parents:
diff
changeset
|
86 } |
4d8781a35525
8055903: Develop sanity tests on SPARC's SHA instructions support
fzhinkin
parents:
diff
changeset
|
87 |
4d8781a35525
8055903: Develop sanity tests on SPARC's SHA instructions support
fzhinkin
parents:
diff
changeset
|
88 /** |
4d8781a35525
8055903: Develop sanity tests on SPARC's SHA instructions support
fzhinkin
parents:
diff
changeset
|
89 * Dump properties containing information about the tested intrinsic name |
4d8781a35525
8055903: Develop sanity tests on SPARC's SHA instructions support
fzhinkin
parents:
diff
changeset
|
90 * and whether or not is should be used to the file |
4d8781a35525
8055903: Develop sanity tests on SPARC's SHA instructions support
fzhinkin
parents:
diff
changeset
|
91 * <LogFile value>.verify.properties. |
4d8781a35525
8055903: Develop sanity tests on SPARC's SHA instructions support
fzhinkin
parents:
diff
changeset
|
92 * |
4d8781a35525
8055903: Develop sanity tests on SPARC's SHA instructions support
fzhinkin
parents:
diff
changeset
|
93 * @throws IOException when something went wrong during dumping to file. |
4d8781a35525
8055903: Develop sanity tests on SPARC's SHA instructions support
fzhinkin
parents:
diff
changeset
|
94 */ |
4d8781a35525
8055903: Develop sanity tests on SPARC's SHA instructions support
fzhinkin
parents:
diff
changeset
|
95 private void dumpProperties() throws IOException { |
4d8781a35525
8055903: Develop sanity tests on SPARC's SHA instructions support
fzhinkin
parents:
diff
changeset
|
96 Properties properties = new Properties(); |
4d8781a35525
8055903: Develop sanity tests on SPARC's SHA instructions support
fzhinkin
parents:
diff
changeset
|
97 properties.setProperty(Verifier.INTRINSIC_NAME_PROPERTY, intrinsicID); |
4d8781a35525
8055903: Develop sanity tests on SPARC's SHA instructions support
fzhinkin
parents:
diff
changeset
|
98 properties.setProperty(Verifier.INTRINSIC_IS_EXPECTED_PROPERTY, |
4d8781a35525
8055903: Develop sanity tests on SPARC's SHA instructions support
fzhinkin
parents:
diff
changeset
|
99 String.valueOf(predicate.getAsBoolean())); |
4d8781a35525
8055903: Develop sanity tests on SPARC's SHA instructions support
fzhinkin
parents:
diff
changeset
|
100 |
4d8781a35525
8055903: Develop sanity tests on SPARC's SHA instructions support
fzhinkin
parents:
diff
changeset
|
101 String logFileName |
4d8781a35525
8055903: Develop sanity tests on SPARC's SHA instructions support
fzhinkin
parents:
diff
changeset
|
102 = SHASanityTestBase.WHITE_BOX.getStringVMFlag("LogFile"); |
4d8781a35525
8055903: Develop sanity tests on SPARC's SHA instructions support
fzhinkin
parents:
diff
changeset
|
103 FileOutputStream fileOutputStream = new FileOutputStream(logFileName |
4d8781a35525
8055903: Develop sanity tests on SPARC's SHA instructions support
fzhinkin
parents:
diff
changeset
|
104 + Verifier.PROPERTY_FILE_SUFFIX); |
4d8781a35525
8055903: Develop sanity tests on SPARC's SHA instructions support
fzhinkin
parents:
diff
changeset
|
105 |
4d8781a35525
8055903: Develop sanity tests on SPARC's SHA instructions support
fzhinkin
parents:
diff
changeset
|
106 properties.store(fileOutputStream, null); |
4d8781a35525
8055903: Develop sanity tests on SPARC's SHA instructions support
fzhinkin
parents:
diff
changeset
|
107 fileOutputStream.close(); |
4d8781a35525
8055903: Develop sanity tests on SPARC's SHA instructions support
fzhinkin
parents:
diff
changeset
|
108 } |
4d8781a35525
8055903: Develop sanity tests on SPARC's SHA instructions support
fzhinkin
parents:
diff
changeset
|
109 } |