RFR: 8298189: Regression in SPECjvm2008-MonteCarlo for pre-Cascade Lake Intel processors

Roberto Castañeda Lozano rcastanedalo at openjdk.org
Mon Apr 24 07:17:49 UTC 2023


The `mov + inc/dec -> lea` subset of the peephole rules introduced by [JDK-8283699](https://bugs.openjdk.org/browse/JDK-8283699) has been found to cause minor regressions for some common benchmarks on Intel microarchitectures earlier than Cascade Lake. This changeset limits their application to Intel Cascade Lake and microarchitectures with full ALU support for lea (`VM_Version::supports_fast_3op_lea()`), where these peephole rules have been confirmed to be beneficial. The adjustment speeds up SPECjvm2008's MonteCarlo benchmark by between 0.1% and 2.7% on pre-Cascade Lake microarchitectures (Haswell-DT, Coffee Lake-B) across different garbage collectors (G1, ZGC). It additionally yields a speedup of 2.1% on SPECjvm2008's Derby benchmark when using G1 on Coffee Lake-B.

Thanks to @ericcaspole for discussions and helping out with benchmarking.

#### Testing

##### Functionality

- tier1-5 (windows-x64, linux-x64, macosx-x64; release and debug mode).
- Checked that the expected combination of peephole rules is enabled for all microarchitectures supported by Intel's Software Development Emulator 9.0.

##### Performance

- Tested performance on a set of standard benchmark suites (DaCapo, SPECjbb2015, SPECjvm2008), different Intel microarchitectures (Haswell-DT, Coffee Lake-B, Cascade Lake, Ice Lake-SP) and operating systems (linux-x64, windows-x64, and macosx-x64). No significant change was observed besides the improvements mentioned above.

-------------

Commit messages:
 - Run x86 mov + inc/dec -> lea peephole rules only on Cascade Lake or later

Changes: https://git.openjdk.org/jdk/pull/13605/files
 Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=13605&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8298189
  Stats: 23 lines in 3 files changed: 17 ins; 1 del; 5 mod
  Patch: https://git.openjdk.org/jdk/pull/13605.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/13605/head:pull/13605

PR: https://git.openjdk.org/jdk/pull/13605


More information about the hotspot-compiler-dev mailing list