RFR(XS) : 8155192 : [TESTBUG] SHA tests assumes that x86 does not have SHA intrinsics

Igor Ignatyev igor.ignatyev at oracle.com
Fri Jun 22 18:41:15 UTC 2018


Hi Gustavo,

thanks for checking. I'll push webrev.01 + your diff later today.

-- Igor

> On Jun 22, 2018, at 5:42 AM, Gustavo Romero <gromero at linux.vnet.ibm.com> wrote:
> 
> Hi Igor,
> 
> On 06/21/2018 08:41 PM, Igor Ignatyev wrote:
>> http://cr.openjdk.java.net/~iignatyev//8155192/webrev.01/index.html
>>> 33 lines changed: 1 ins; 10 del; 22 mod;
>> I've removed Platforms::* from UseSHAIntrinsicsSpecificTestCaseForUnsupportedCPU and UseSHASpecificTestCaseForSupportedCPU. all compiler/intrinsics/sha tests passed in our labs on sparc and x86 hosts.
>> new version of webrev -- http://cr.openjdk.java.net/~iignatyev//8155192/webrev.01/index.html
>> Gustavo, could you please test this version of path on your platforms?
> 
> Sure.
> 
> So after applying it I got the following state:
> 
> FAILED: compiler/intrinsics/sha/cli/TestUseSHA512IntrinsicsOptionOnSupportedCPU.java
> Passed: compiler/intrinsics/sha/cli/TestUseSHAOptionOnUnsupportedCPU.java
> FAILED: compiler/intrinsics/sha/cli/TestUseSHA256IntrinsicsOptionOnSupportedCPU.java
> Passed: compiler/intrinsics/sha/cli/TestUseSHA256IntrinsicsOptionOnUnsupportedCPU.java
> FAILED: compiler/intrinsics/sha/cli/TestUseSHA1IntrinsicsOptionOnUnsupportedCPU.java
> Passed: compiler/intrinsics/sha/cli/TestUseSHA512IntrinsicsOptionOnUnsupportedCPU.java
> FAILED: compiler/intrinsics/sha/cli/TestUseSHAOptionOnSupportedCPU.java
> Passed: compiler/intrinsics/sha/cli/TestUseSHA1IntrinsicsOptionOnSupportedCPU.java
> Passed: compiler/intrinsics/sha/sanity/TestSHA1Intrinsics.java
> Passed: compiler/intrinsics/sha/sanity/TestSHA1MultiBlockIntrinsics.java
> Passed: compiler/intrinsics/sha/sanity/TestSHA512Intrinsics.java
> Passed: compiler/intrinsics/sha/sanity/TestSHA256Intrinsics.java
> Passed: compiler/intrinsics/sha/sanity/TestSHA512MultiBlockIntrinsics.java
> Passed: compiler/intrinsics/sha/sanity/TestSHA256MultiBlockIntrinsics.java
> Passed: compiler/intrinsics/sha/TestSHA.java
> Test results: passed: 11; failed: 4
> 
> due to (Please see full log at http://cr.openjdk.java.net/~gromero/logs/sha_jtreg_failure.log):
> 
> java.lang.Error: Support for CPUs different fromn AARCH64, S390x, SPARC, and X86 is not implemented
>        at compiler.intrinsics.sha.cli.SHAOptionsBase.getWarningForUnsupportedCPU(SHAOptionsBase.java:92)
>        at compiler.intrinsics.sha.cli.testcases.GenericTestCaseForSupportedCPU.verifyWarnings(GenericTestCaseForSupportedCPU.java:50)
>        at compiler.intrinsics.sha.cli.SHAOptionsBase$TestCase.test(SHAOptionsBase.java:152)
>        at compiler.intrinsics.sha.cli.SHAOptionsBase.runTestCases(SHAOptionsBase.java:129)
>        at jdk.test.lib.cli.CommandLineOptionTest.test(CommandLineOptionTest.java:537)
>        at compiler.intrinsics.sha.cli.TestUseSHA512IntrinsicsOptionOnSupportedCPU.main(TestUseSHA512IntrinsicsOptionOnSupportedCPU.java:47)
>        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
>        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>        at java.base/java.lang.reflect.Method.invoke(Method.java:566)
>        at com.sun.javatest.regtest.agent.MainWrapper$MainThread.run(MainWrapper.java:115)
>        at java.base/java.lang.Thread.run(Thread.java:832)
> 
> which seems resolved by the following tiny change:
> 
> diff -r 027c909decaf test/hotspot/jtreg/compiler/intrinsics/sha/cli/SHAOptionsBase.java
> --- a/test/hotspot/jtreg/compiler/intrinsics/sha/cli/SHAOptionsBase.java        Fri Jun 22 08:10:43 2018 -0400
> +++ b/test/hotspot/jtreg/compiler/intrinsics/sha/cli/SHAOptionsBase.java        Fri Jun 22 08:33:42 2018 -0400
> @@ -75,7 +75,7 @@
>      */
>     public static String getWarningForUnsupportedCPU(String optionName) {
>         if (Platform.isAArch64() || Platform.isS390x() || Platform.isSparc() ||
> -            Platform.isX64() || Platform.isX86()) {
> +            Platform.isX64() || Platform.isX86() || Platform.isPPC()) {
>             switch (optionName) {
>             case SHAOptionsBase.USE_SHA_OPTION:
>                 return SHAOptionsBase.SHA_INSTRUCTIONS_ARE_NOT_AVAILABLE;
> @@ -89,7 +89,7 @@
>                 throw new Error("Unexpected option " + optionName);
>             }
>         } else {
> -            throw new Error("Support for CPUs different fromn AARCH64, S390x, SPARC, and X86 "
> +            throw new Error("Support for CPUs different from AARCH64, S390x, SPARC, X86, and PPC "
>                             + "is not implemented");
>         }
>     }
> 
> Thus with your fix plus that fix above ^ the current state looks ok:
> 
> Passed: compiler/intrinsics/sha/cli/TestUseSHA512IntrinsicsOptionOnSupportedCPU.java
> Passed: compiler/intrinsics/sha/cli/TestUseSHAOptionOnUnsupportedCPU.java
> Passed: compiler/intrinsics/sha/cli/TestUseSHA256IntrinsicsOptionOnUnsupportedCPU.java
> Passed: compiler/intrinsics/sha/cli/TestUseSHA512IntrinsicsOptionOnUnsupportedCPU.java
> Passed: compiler/intrinsics/sha/cli/TestUseSHA1IntrinsicsOptionOnUnsupportedCPU.java
> Passed: compiler/intrinsics/sha/cli/TestUseSHA1IntrinsicsOptionOnSupportedCPU.java
> Passed: compiler/intrinsics/sha/cli/TestUseSHA256IntrinsicsOptionOnSupportedCPU.java
> Passed: compiler/intrinsics/sha/sanity/TestSHA1Intrinsics.java
> Passed: compiler/intrinsics/sha/cli/TestUseSHAOptionOnSupportedCPU.java
> Passed: compiler/intrinsics/sha/sanity/TestSHA1MultiBlockIntrinsics.java
> Passed: compiler/intrinsics/sha/sanity/TestSHA512Intrinsics.java
> Passed: compiler/intrinsics/sha/sanity/TestSHA256Intrinsics.java
> Passed: compiler/intrinsics/sha/sanity/TestSHA512MultiBlockIntrinsics.java
> Passed: compiler/intrinsics/sha/sanity/TestSHA256MultiBlockIntrinsics.java
> Passed: compiler/intrinsics/sha/TestSHA.java
> Test results: passed: 15
> 
> 
> Thanks,
> Gustavo
> 
>> Thanks,
>> -- Igor
>>> On Jun 21, 2018, at 2:43 PM, Igor Ignatyev <igor.ignatyev at oracle.com> wrote:
>>> 
>>> Hi Gustavo,
>>> 
>>> please see my answers inline.
>>> 
>>> Thanks,
>>> -- Igor
>>> 
>>>> On Jun 21, 2018, at 1:34 PM, Gustavo Romero <gromero at linux.vnet.ibm.com <mailto:gromero at linux.vnet.ibm.com>> wrote:
>>>> 
>>>> Hi Vladimir, Igor
>>>> 
>>>> On 06/21/2018 02:47 PM, Vladimir Kozlov wrote:
>>>>> But I find it strange that PPC64 (Platform::isPPC) is only listed in one files. According to vm_version_ppc.cpp it supports SHA256 and SHA512.
>>>> 
>>>> Yes, that's correct.
>>>> 
>>>> Igor, do you mind to confirm which tests exactly must be enabled on PPC64 (or
>>>> disabled if the list is smaller...)?
>>> all the tests are already enabled on PPC64, but they don't do much testing, as they will be skipped by the tests themselves.
>>>> 
>>>> For instance, it's not clear to me yet why the suggested fix in [1] is adding PPC to
>>>> UseSHAIntrinsicsSpecificTestCaseForUnsupportedCPU.java.
>>> UseSHAIntrinsicsSpecificTestCaseForUnsupportedCPU is supposed to be run to hosts which *do* support some sha instructions, but don't support a specific one. I don't know if it's a case for PPC or not. in any case, it might be better to get rid of Platform::* predicates in this class and just use IntrinsicPredicates and SHAOptionsBase.getPredicateForOption, so its c-tor will be:
>>>>         super(optionName, new AndPredicate(
>>>>                         IntrinsicPredicates.ANY_SHA_INSTRUCTION_AVAILABLE,
>>>>                         new NotPredicate(SHAOptionsBase.getPredicateForOption(optionName))));
>>>>    < ...>
>>> 
>>> 
>>> and UseSHASpecificTestCaseForSupportedCPU's c-tor can be changed to:
>>>>         super(SHAOptionsBase.USE_SHA_OPTION, IntrinsicPredicates.ANY_SHA_INSTRUCTION_AVAILABLE);
>>> 
>>>>    < ...>
>>> 
>>> I'll retest the patch for 8155192 w/ these changes.
>>> 
>>>> 
>>>> Current status on PPC64 is:
>>>> 
>>>> Passed: compiler/intrinsics/sha/cli/TestUseSHA256IntrinsicsOptionOnUnsupportedCPU.java
>>>> Passed: compiler/intrinsics/sha/cli/TestUseSHA1IntrinsicsOptionOnSupportedCPU.java
>>>> Passed: compiler/intrinsics/sha/cli/TestUseSHAOptionOnUnsupportedCPU.java
>>>> Passed: compiler/intrinsics/sha/cli/TestUseSHA512IntrinsicsOptionOnSupportedCPU.java
>>>> Passed: compiler/intrinsics/sha/cli/TestUseSHA512IntrinsicsOptionOnUnsupportedCPU.java
>>>> Passed: compiler/intrinsics/sha/cli/TestUseSHA256IntrinsicsOptionOnSupportedCPU.java
>>>> Passed: compiler/intrinsics/sha/cli/TestUseSHAOptionOnSupportedCPU.java
>>>> Passed: compiler/intrinsics/sha/cli/TestUseSHA1IntrinsicsOptionOnUnsupportedCPU.java
>>>> Passed: compiler/intrinsics/sha/sanity/TestSHA1Intrinsics.java
>>>> Passed: compiler/intrinsics/sha/sanity/TestSHA1MultiBlockIntrinsics.java
>>>> Passed: compiler/intrinsics/sha/sanity/TestSHA512Intrinsics.java
>>>> Passed: compiler/intrinsics/sha/sanity/TestSHA256Intrinsics.java
>>>> Passed: compiler/intrinsics/sha/sanity/TestSHA512MultiBlockIntrinsics.java
>>>> Passed: compiler/intrinsics/sha/sanity/TestSHA256MultiBlockIntrinsics.java
>>>> Passed: compiler/intrinsics/sha/TestSHA.java
>>>> Test results: passed: 15
>>> as I explained above, all the tests are run on all platforms, but some of their parts are just skipped on PPC64.
>>> 
>>>> 
>>>> Thanks.
>>>> 
>>>> Best regards,
>>>> Gustavo
>>>> 
>>>> [1] https://bugs.openjdk.java.net/browse/JDK-8205492
>>>> 
>>>>> Thanks,
>>>>> Vladimir
>>>>> On 6/20/18 8:28 PM, Igor Ignatyev wrote:
>>>>>> http://cr.openjdk.java.net/~iignatyev//8155192/webrev.00/index.html
>>>>>>> 29 lines changed: 10 ins; 3 del; 16 mod;
>>>>>> 
>>>>>> Hi all,
>>>>>> 
>>>>>> could you please review this tiny fix for SHA tests? the fix adjusts definitions of supported/unsupported CPUs in sha tests.
>>>>>> 
>>>>>> JBS: https://bugs.openjdk.java.net/browse/JDK-8155192
>>>>>> webrev: http://cr.openjdk.java.net/~iignatyev//8155192/webrev.00/index.htm
>>>>>> testing: test/hotspot/jtreg/compiler/intrinsics tests
>>>>>> 
>>>>>> Thanks,
>>>>>> -- Igor
> 



More information about the hotspot-compiler-dev mailing list