RFR: 8276846: JDK-8273416 is incomplete for UseSSE=1

Aleksey Shipilev shade at openjdk.java.net
Tue Nov 9 12:02:47 UTC 2021


When doing the fix for [JDK-8273416](https://bugs.openjdk.java.net/browse/JDK-8273416), I made a mistake of not running with `UseSSE=1`. That one highlights a bug (see JIRA for reproducer): I have misjudged that `float` and `double` args are handled at the same SSE levels, which they are not. `doubles` uses FPU with SSE={0,1}, and `float` uses FPU with SSE={0}. See for example the blurbs in `MacroAssembler::{load|store}_{float|double}`. So the new predicate for `regFPR` argument mishandles UseSSE=1 case: we should not allow `castFF_PR` to match then.

Additional testing:
 - [x] Linux x86_32 `hotspot:tier1` with `-XX:UseAVX=0 -XX:UseSSE=0`
 - [x] Linux x86_32 `hotspot:tier1` with `-XX:UseAVX=0 -XX:UseSSE=1`
 - [x] Linux x86_32 `hotspot:tier1` with `-XX:UseAVX=0 -XX:UseSSE=2`
 - [x] Linux x86_32 `hotspot:tier1` with `-XX:UseAVX=0 -XX:UseSSE=3`
 - [x] Linux x86_32 `hotspot:tier1` with `-XX:UseAVX=0 -XX:UseSSE=4`
 - [x] Linux x86_32 `hotspot:tier1` with `-XX:UseAVX=1 -XX:UseSSE=4`
 - [x] Linux x86_32 `hotspot:tier1` with `-XX:UseAVX=2 -XX:UseSSE=4`
 - [ ] Linux x86_32 `jdk:tier1` with `-XX:UseAVX=0 -XX:UseSSE=0`
 - [ ] Linux x86_32 `jdk:tier1` with `-XX:UseAVX=0 -XX:UseSSE=1`
 - [ ] Linux x86_32 `jdk:tier1` with `-XX:UseAVX=0 -XX:UseSSE=2`
 - [ ] Linux x86_32 `jdk:tier1` with `-XX:UseAVX=0 -XX:UseSSE=3`
 - [ ] Linux x86_32 `jdk:tier1` with `-XX:UseAVX=0 -XX:UseSSE=4`
 - [ ] Linux x86_32 `jdk:tier1` with `-XX:UseAVX=1 -XX:UseSSE=4`
 - [ ] Linux x86_32 `jdk:tier1` with `-XX:UseAVX=2 -XX:UseSSE=4`
 - [ ] Linux x86_32 `langtools:tier1` with `-XX:UseAVX=0 -XX:UseSSE=0`
 - [ ] Linux x86_32 `langtools:tier1` with `-XX:UseAVX=0 -XX:UseSSE=1`
 - [ ] Linux x86_32 `langtools:tier1` with `-XX:UseAVX=0 -XX:UseSSE=2`
 - [ ] Linux x86_32 `langtools:tier1` with `-XX:UseAVX=0 -XX:UseSSE=3`
 - [ ] Linux x86_32 `langtools:tier1` with `-XX:UseAVX=0 -XX:UseSSE=4`
 - [ ] Linux x86_32 `langtools:tier1` with `-XX:UseAVX=1 -XX:UseSSE=4`
 - [ ] Linux x86_32 `langtools:tier1` with `-XX:UseAVX=2 -XX:UseSSE=4`

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

Commit messages:
 - Fix

Changes: https://git.openjdk.java.net/jdk/pull/6308/files
 Webrev: https://webrevs.openjdk.java.net/?repo=jdk&pr=6308&range=00
  Issue: https://bugs.openjdk.java.net/browse/JDK-8276846
  Stats: 2 lines in 1 file changed: 0 ins; 0 del; 2 mod
  Patch: https://git.openjdk.java.net/jdk/pull/6308.diff
  Fetch: git fetch https://git.openjdk.java.net/jdk pull/6308/head:pull/6308

PR: https://git.openjdk.java.net/jdk/pull/6308


More information about the hotspot-compiler-dev mailing list