RFR (S) 8037226: compiler/7196199/Test7196199.java fails on 32-bit linux with MaxVectorSize > 16
Igor Veresov
igor.veresov at oracle.com
Fri Mar 14 23:23:54 UTC 2014
Look good, except for the typo in vm_version_x86.cpp:
55 // Address of instruction which causes SEGV
56 address VM_Version::_cpuinfo_cont_addr = 0;
The comment probably has to say: "Address of the instruction after the one that causes SEGV" ?
igor
On Mar 14, 2014, at 4:01 PM, Vladimir Kozlov <vladimir.kozlov at oracle.com> wrote:
> I updated changes to include more ymm registers to test and print them in debug VM.
>
> http://cr.openjdk.java.net/~kvn/8037226/webrev.01/
>
> Thanks,
> Vladimir
>
> On 3/13/14 11:11 PM, Vladimir Kozlov wrote:
>> WARNING: it is ugly but I don't know an other way to fix the problem and
>> keep wide AVX vectors.
>>
>> Some operating systems (or VMs) does not restore upper 128 bit of AVX
>> registers YMM after signal processing. About year ago Mac OS had this
>> problem (8003878). And now we found 32-bit Ubuntu (Linux 3.8.0-29) which
>> has the same problem.
>>
>> Instead of reducing vectorization to 16 bytes (XMM registers) I added
>> code which verifies YMM state after signal processing and set limit on
>> vector's size. The code is part of cpuid info code which JVM executes
>> during startup.
>>
>> https://bugs.openjdk.java.net/browse/JDK-8037226
>> http://cr.openjdk.java.net/~kvn/8037226/webrev/
>>
>> Tested on failing machines.
>>
>> thanks,
>> Vladimir
More information about the hotspot-dev
mailing list