7 * published by the Free Software Foundation.
8 *
9 * This code is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12 * version 2 for more details (a copy is included in the LICENSE file that
13 * accompanied this code).
14 *
15 * You should have received a copy of the GNU General Public License version
16 * 2 along with this work; if not, write to the Free Software Foundation,
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 */
23
24 package compiler.cpuflags;
25
26 import compiler.codegen.aes.TestAESMain;
27 import compiler.cpuflags.predicate.AESSupportPredicate;
28 import jdk.test.lib.cli.CommandLineOptionTest;
29
30 import java.util.Arrays;
31 import java.util.function.BooleanSupplier;
32
33 public abstract class AESIntrinsicsBase extends CommandLineOptionTest {
34 public static final BooleanSupplier AES_SUPPORTED_PREDICATE
35 = new AESSupportPredicate();
36 public static final String CIPHER_INTRINSIC = "com\\.sun\\.crypto\\"
37 + ".provider\\.CipherBlockChaining::"
38 + "(implEncrypt|implDecrypt) \\([0-9]+ bytes\\)\\s+\\(intrinsic[,\\)]";
39 public static final String AES_INTRINSIC = "com\\.sun\\.crypto\\"
40 + ".provider\\.AESCrypt::(implEncryptBlock|implDecryptBlock) \\([0-9]+ "
41 + "bytes\\)\\s+\\(intrinsic[,\\)]";
42 public static final String USE_AES = "UseAES";
43 public static final String USE_AES_INTRINSICS = "UseAESIntrinsics";
44 public static final String USE_SSE = "UseSSE";
45 public static final String USE_VIS = "UseVIS";
46 public static final String[] USE_DIAGNOSTIC_CMD
47 = {"-XX:+UnlockDiagnosticVMOptions", "-XX:+PrintIntrinsics"};
48 public static final String[] TEST_AES_CMD
49 = {"-XX:+IgnoreUnrecognizedVMOptions", "-XX:+PrintFlagsFinal",
50 "-Xbatch", "-XX:CompileThresholdScaling=0.01", "-DcheckOutput=true", "-Dmode=CBC",
51 TestAESMain.class.getName(), "100", "1000"};
52
53 protected AESIntrinsicsBase(BooleanSupplier predicate) {
54 super(predicate);
55 }
56
57 /**
58 * Prepares command for TestAESMain execution.
59 * Intrinsics flags are of diagnostic type
60 * and must be preceded by UnlockDiagnosticVMOptions.
61 * @param args flags that must be added to command
62 * @return command for TestAESMain execution
63 */
64 public static String[] prepareArguments(String... args) {
65 String[] command = Arrays.copyOf(USE_DIAGNOSTIC_CMD, args.length
66 + USE_DIAGNOSTIC_CMD.length + TEST_AES_CMD.length);
67 System.arraycopy(args, 0, command, USE_DIAGNOSTIC_CMD.length,
68 args.length);
69 System.arraycopy(TEST_AES_CMD, 0, command, args.length
70 + USE_DIAGNOSTIC_CMD.length, TEST_AES_CMD.length);
71 return command;
72 }
73 }
|
7 * published by the Free Software Foundation.
8 *
9 * This code is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12 * version 2 for more details (a copy is included in the LICENSE file that
13 * accompanied this code).
14 *
15 * You should have received a copy of the GNU General Public License version
16 * 2 along with this work; if not, write to the Free Software Foundation,
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 */
23
24 package compiler.cpuflags;
25
26 import compiler.codegen.aes.TestAESMain;
27 import java.util.Arrays;
28
29 public abstract class AESIntrinsicsBase {
30 public static final String CIPHER_INTRINSIC = "com\\.sun\\.crypto\\"
31 + ".provider\\.CipherBlockChaining::"
32 + "(implEncrypt|implDecrypt) \\([0-9]+ bytes\\)\\s+\\(intrinsic[,\\)]";
33 public static final String AES_INTRINSIC = "com\\.sun\\.crypto\\"
34 + ".provider\\.AESCrypt::(implEncryptBlock|implDecryptBlock) \\([0-9]+ "
35 + "bytes\\)\\s+\\(intrinsic[,\\)]";
36 public static final String USE_AES = "UseAES";
37 public static final String USE_AES_INTRINSICS = "UseAESIntrinsics";
38 public static final String USE_SSE = "UseSSE";
39 public static final String USE_VIS = "UseVIS";
40 public static final String[] USE_DIAGNOSTIC_CMD
41 = {"-XX:+UnlockDiagnosticVMOptions", "-XX:+PrintIntrinsics"};
42 public static final String[] TEST_AES_CMD
43 = {"-XX:+IgnoreUnrecognizedVMOptions", "-XX:+PrintFlagsFinal",
44 "-Xbatch", "-XX:CompileThresholdScaling=0.01", "-DcheckOutput=true", "-Dmode=CBC",
45 TestAESMain.class.getName(), "100", "1000"};
46
47 /**
48 * Prepares command for TestAESMain execution.
49 * Intrinsics flags are of diagnostic type
50 * and must be preceded by UnlockDiagnosticVMOptions.
51 * @param args flags that must be added to command
52 * @return command for TestAESMain execution
53 */
54 public static String[] prepareArguments(String... args) {
55 String[] command = Arrays.copyOf(USE_DIAGNOSTIC_CMD, args.length
56 + USE_DIAGNOSTIC_CMD.length + TEST_AES_CMD.length);
57 System.arraycopy(args, 0, command, USE_DIAGNOSTIC_CMD.length,
58 args.length);
59 System.arraycopy(TEST_AES_CMD, 0, command, args.length
60 + USE_DIAGNOSTIC_CMD.length, TEST_AES_CMD.length);
61 return command;
62 }
63 }
|