RFR: 8346038: [REDO] - [C1] LIR Operations with one input should be implemented as LIR_Op1 [v2]

Martin Doerr mdoerr at openjdk.org
Fri Jan 10 23:03:20 UTC 2025


> 1st commit: Same as https://github.com/openjdk/jdk/commit/a21d21f4d7b74e21f68b6bf9c5dc9ba7d3f9963c
> 2nd commit: Removal of special "Knights Landing" code for `lir_abs` and `lir_neg` from C1.
> 
> Testing:
> make run-test TEST="test/hotspot/jtreg/compiler" JTREG="VM_OPTIONS=-XX:UseAVX=3 -XX:+UnlockDiagnosticVMOptions -XX:+UseKNLSetting"
> All passed.
> 
> This is how this PR changes the C1 code on Knights Landing CPUs (emulated by -XX:+UseKNLSetting):
> 
> `lir_abs` without this patch:
> 
> vmovsd -0x63(%rip),%xmm1
> vpandnd %zmm0,%zmm1,%zmm0
> 
> 
> `lir_neg` without this patch:
> 
> vmovsd -0x63(%rip),%xmm1
> vpxord %zmm0,%zmm1,%zmm0
> 
> 
> (The `vmovsd` loads the `LIR_OprFact::doubleConst(-0.0)`.)
> 
> `lir_abs` with this patch:
> 
> vandpd 0xa1b213d(%rip),%xmm0,%xmm0
> 
> 
> `lir_neg` with this patch:
> 
> vxorpd 0xa12585d(%rip),%xmm0,%xmm0
> 
> 
> New code is faster on our machine (using -XX:+UseKNLSetting).

Martin Doerr has updated the pull request incrementally with one additional commit since the last revision:

  Update Copyright year.

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

Changes:
  - all: https://git.openjdk.org/jdk/pull/22709/files
  - new: https://git.openjdk.org/jdk/pull/22709/files/5576ac95..6d8dad1c

Webrevs:
 - full: https://webrevs.openjdk.org/?repo=jdk&pr=22709&range=01
 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=22709&range=00-01

  Stats: 1 line in 1 file changed: 0 ins; 0 del; 1 mod
  Patch: https://git.openjdk.org/jdk/pull/22709.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/22709/head:pull/22709

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


More information about the hotspot-compiler-dev mailing list