RFR(S): x86:8190934: Regressions on Haswell Xeon due to JDK-8178811
Vladimir Kozlov
vladimir.kozlov at oracle.com
Fri Dec 15 00:10:49 UTC 2017
Lets do one more iteration ;)
Pass Compile* C argument to generate_vzeroupper() in .ad file because
Compile::current() is expensive call and you have C already in 2 cases.
There is one extra space before { in compile.hpp for set_clear_upper_avx().
Please, update, webrev. I will start testing meanwhile.
Thanks,
Vladimir
On 12/14/17 3:02 PM, Deshpande, Vivek R wrote:
> Hi Vladimir
>
> I have updated webrev with your suggested changes.
> Would you please review it and sponsor the changes.
> The webrev is here:
> http://cr.openjdk.java.net/~vdeshpande/8190934/webrev.01/
> I have also updated the bug.
>
> Regards,
> Vivek
> -----Original Message-----
> From: Vladimir Kozlov [mailto:vladimir.kozlov at oracle.com]
> Sent: Thursday, December 14, 2017 10:44 AM
> To: Deshpande, Vivek R <vivek.r.deshpande at intel.com>; hotspot-compiler-dev at openjdk.java.net
> Cc: Viswanathan, Sandhya <sandhya.viswanathan at intel.com>
> Subject: Re: RFR(S): x86:8190934: Regressions on Haswell Xeon due to JDK-8178811
>
> Note, my suggesting changes don't affect performance and other testing results. They are still valid because these changes are only refactoring.
>
> Thanks,
> Vladimir
>
> On 12/14/17 10:32 AM, Vladimir Kozlov wrote:
>> Thank you, Vivek
>>
>> 1. You don't need new INCLUDE_CLEAR_UPPER_AVX. The main issue is
>> UseAVX flag is defined only on x86. You can use #ifdef X86 for that.
>>
>> 2. You don't need next guard
>>
>> +#if INCLUDE_CLEAR_UPPER_AVX
>> + clear_upper_avx();
>> +#endif
>>
>> if you define empty body in else case (using #ifdef X86):
>>
>> + void clear_upper_avx() {
>> +#ifdef X86
>> + if (UseAVX >= 2) {
>> + C->set_clear_upper_avx(true);
>> + }
>> +#endif
>> + }
>>
>> 3. Factor next checks into one static method (similar to
>> clear_avx_size()) to avoid next repetitive checks in .ad file:
>>
>> (C->max_vector_size() > 16 || C->clear_upper_avx() == true)
>>
>> 4. remove unrelated change (empty line removed) in
>> macroAssembler_x86.cpp
>>
>> Thanks,
>> Vladimir
>>
>> On 12/13/17 11:22 PM, Deshpande, Vivek R wrote:
>>> Hi Vladimir
>>>
>>> I have a fix for the slowdown observed on haswell due to jdk-8178811.
>>>
>>> The solution selectively generates vzeroupper when AVX2/ AVX512
>>> instructions have been executed and before the transition to SSE code.
>>>
>>> I tested this fix with the test case given with bug and SPECjbb2015.
>>>
>>> Could you please review and sponsor the patch?
>>>
>>> Webrev:
>>>
>>> http://cr.openjdk.java.net/~vdeshpande/8190934/webrev.00/
>>>
>>> I have also updated the bug:
>>> https://bugs.openjdk.java.net/browse/JDK-8190934
>>>
>>> Regards,
>>>
>>> Vivek
>>>
More information about the hotspot-compiler-dev
mailing list