JDK-8154974 : AVX-512 equipped inflate, has_negatives & compress intrinsics
  • Type: Enhancement
  • Component: hotspot
  • Sub-Component: compiler
  • Affected Version: 9
  • Priority: P3
  • Status: Resolved
  • Resolution: Fixed
  • CPU: x86
  • Submitted: 2016-04-22
  • Updated: 2018-08-15
  • Resolved: 2016-05-06
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
JDK 9
9 b120Fixed
Related Reports
Relates :  
Description
Inflate, Compress, hasNegatives AVX512 enabled intrinsics. Using mask registers for a tail of the loops. 32 element warp size for inflate, compress. 64 warp for hasNegatives (regardless of bitnes of the architecture). Tight loop followed by a tail (and sometimes partial candidates snippet).
Code Contributed by: Tomasz Wojtowicz (tomasz.wojtowicz@intel.com)
---------
Testing:
---------
Internally developed ubenchmarks for performance & similar functional using Reflections API for those 3 intrinsics on an up to 4K chunks of pseudo random initialized data to verify correctness.
Has_negatives had a negative sentinel as a last element in an array.
Also tailored examples for compress which would test all of the possible entry scenarios (tail present/not present, non-compressable element found in head OR tail - to make sure that there is a coverage for all of the basic blocks inside intrinsic)

Everything run at least 3 times for -XX:UseAVX=1 then 2 and 3, depending on a scenario for establishing performance baseline AND/OR correctness when "older"(AVX<=2) had been modified.

Comments
Updated webrev: http://cr.openjdk.java.net/~vdeshpande/8154974/webrev.02/
05-05-2016

Updated webrev: http://cr.openjdk.java.net/~vdeshpande/8154974/webrev.01/
05-05-2016

Webrev: http://cr.openjdk.java.net/~vdeshpande/8154974/webrev.00/
29-04-2016

This work is contributed by Tomasz Wojtowicz
27-04-2016