RFR(XS): 8078113: 8011102 changes may cause incorrect results

Viswanathan, Sandhya sandhya.viswanathan at intel.com
Fri Apr 17 22:05:58 UTC 2015


Hi All,

We would like to contribute a patch for bug 8078113 from Intel.


RFE: https://bugs.openjdk.java.net/browse/JDK-8078113



webrev: http://cr.openjdk.java.net/~kvn/8078113/webrev.00/


With 32 byte width vectorization the JVM produces wrong results under certain circumstances for x86_64.
The Vzeroupper instruction introduced in String.equals, String.compareTo and OptimizeFill intrinsic/stubs in the following change set is the cause of the bug:

http://hg.openjdk.java.net/jdk7u/jdk7u/hotspot/rev/d59ed8d47aed

For 32 byte vectorization, YMM registers are used by the hotspot compiler and the register allocator can allocate these across intrinsic methods.
Vzeroupper in the intrinsic is clobbering upper 16 bytes in all the other YMM registers that are not touched in these methods and so our customers are
seeing unexpected results.



This patch fixes the problem on Linux.


Best Regards,
Sandhya

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.openjdk.java.net/pipermail/hotspot-compiler-dev/attachments/20150417/05698911/attachment.html>


More information about the hotspot-compiler-dev mailing list