> Intel® AVX10 ISA [1] extensions added new floating point comparison > instructions. They set the EFLAGS register so that relationships can be > tested independently to avoid extra checks when one of the inputs is NaN. > > Most of the work is covered in the architecture definition (`x86.ad`) file. A > new comparison operand was created to be used by new CMove and JMP > definitions with the APX specific portions of the CMove section being updated > to rely on the new instructions because both sets of instructions are always > expected to be available on the same platform. New floating point comparison > definitions were also added. > > This change uses the new AVX10.2 (UCOMXSS or UCOMXSD) instructions on > supported platforms to avoid the extra handling required with existing > (UCOMISS or UCOMISD) instructions. To make sure no new failures were > introduced, tier1, tier2, and tier3 tests were run on builds with and without > the changes. Additionally, the JTREG tests listed below were used to verify > correctness with `-XX:-UseAPX` / `-XX:+UseAPX` options. The baseline build > used is [OpenJDK > v26-b26](https://github.com/openjdk/jdk/releases/tag/jdk-26%2B26). > > 1. `jtreg:test/hotspot/jtreg/compiler/c2/irTests/CMoveLConstants.java` > 2. `jtreg:test/hotspot/jtreg/compiler/c2/irTests/TestFPComparison.java` > 3. > `jtreg:test/hotspot/jtreg/compiler/intrinsics/math/TestSignumIntrinsic.java` > 4. `jtreg:test/hotspot/jtreg/compiler/vectorization/TestSignumVector.java` > > Finally, the JMH micro-benchmark listed below was updated to separately > exercise CMove and JMP code paths. > > 1. `micro:test/micro/org/openjdk/bench/java/lang/FPComparison.java` > > [1] > https://www.intel.com/content/www/us/en/content-details/856721/intel-advanced-vector-extensions-10-2-intel-avx10-2-architecture-specification.html?wapkw=AVX10
Mohamed Issa has updated the pull request incrementally with one additional commit since the last revision: Remove extra jump instruction in signum floating point and unify three-way floating point comparison logic in x86.ad ------------- Changes: - all: https://git.openjdk.org/jdk/pull/28337/files - new: https://git.openjdk.org/jdk/pull/28337/files/38735c37..cd7acad7 Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=28337&range=03 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=28337&range=02-03 Stats: 23 lines in 2 files changed: 9 ins; 11 del; 3 mod Patch: https://git.openjdk.org/jdk/pull/28337.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/28337/head:pull/28337 PR: https://git.openjdk.org/jdk/pull/28337
