[vectorIntrinsics+fp16] RFR: Merge panama-vector:vectorIntrinsics
Bhavana Kilambi
bkilambi at openjdk.org
Tue May 23 15:29:30 UTC 2023
Merges panama-vector:vectorIntrinsics into panama-vector:vectorInstrinsics+fp16 branch.
Resolved merge conflicts in the following files -
src/hotspot/cpu/x86/assembler_x86.hpp
src/hotspot/cpu/x86/macroAssembler_x86.cpp
src/hotspot/cpu/x86/stubGenerator_x86_64.cpp
src/hotspot/cpu/x86/stubRoutines_x86.cpp
src/hotspot/cpu/x86/vm_version_x86.cpp
src/hotspot/cpu/x86/vm_version_x86.hpp
src/hotspot/share/opto/classes.hpp
src/hotspot/share/opto/convertnode.hpp
src/hotspot/share/opto/vectorIntrinsics.cpp
src/hotspot/share/opto/vectornode.cpp
src/hotspot/share/opto/vectornode.hpp
src/java.base/share/classes/java/lang/Float.java
src/jdk.incubator.vector/share/classes/jdk/incubator/vector/LaneType.java
src/jdk.incubator.vector/share/classes/jdk/incubator/vector/X-Vector.java.template
src/jdk.incubator.vector/share/classes/jdk/incubator/vector/X-VectorBits.java.template
test/jdk/jdk/incubator/vector/templates/X-LoadStoreTest.java.template
In addition to resolving the above merge conflicts, some parts of the
JDK code were also changed (to resolve JDK build errors and also to fix
some JTREG test errors). Listing them out below for easier review -
1. Modified the logic for a couple of assertions in [1] and [2] to
incorporate checks for the Halffloat type as well <Build error without
this change>
2. Modified the definition of ELEMENT_LAYOUT in [3] to consider
Short type for Halffloat <Build error without this change>
3. In [4] - LayoutType was added in commit [5] to enable using
"SHORT" type for Halffloat but after the above modification #2, we do not
need this variable anymore <Dead variable, not needed anymore>
4. Removed an extra AddVHF node declaration in [6] <JTREG error without
this change>
5. Fixed evfmadd231ph function by modifying - emit_operand() here - [7]
<JDK build error without this change>
6.Removed these rules in Matcher::match_rule_supported_vector() - [8]
<JTREG errors without this change>
7. Added AVX512_FP16 flag to - [9] <JTREG errors without this change>
8. Modified the rules for IR verification for x86 in - [10] <JTREG
errors without this change>
[1] https://github.com/openjdk/panama-vector/blob/b044e652cc662a127b435d8a88ed522de306a450/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/LaneType.java#L69
[2] https://github.com/openjdk/panama-vector/blob/b044e652cc662a127b435d8a88ed522de306a450/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/LaneType.java#L75
[3] https://github.com/openjdk/panama-vector/blob/b044e652cc662a127b435d8a88ed522de306a450/test/jdk/jdk/incubator/vector/templates/X-LoadStoreTest.java.template#L70
[4] https://github.com/openjdk/panama-vector/blob/8f2a18d7adcf22b0ceefd4e82753f2fee1808e19/test/jdk/jdk/incubator/vector/gen-tests.sh#L68
[5] https://github.com/openjdk/panama-vector/commit/8f2a18d7adcf22b0ceefd4e82753f2fee1808e19
[6] https://github.com/openjdk/panama-vector/blob/8f2a18d7adcf22b0ceefd4e82753f2fee1808e19/src/hotspot/share/runtime/vmStructs.cpp#L1749
[7] https://github.com/openjdk/panama-vector/blob/8f2a18d7adcf22b0ceefd4e82753f2fee1808e19/src/hotspot/cpu/x86/assembler_x86.cpp#L6570
[8] https://github.com/openjdk/panama-vector/blob/d77a41033a162c2c9bf02d6b8da91f2825320ad8/src/hotspot/cpu/x86/x86.ad#L1904
[9] https://github.com/openjdk/panama-vector/blob/d77a41033a162c2c9bf02d6b8da91f2825320ad8/src/jdk.internal.vm.ci/share/classes/jdk/vm/ci/amd64/AMD64.java#L175
[10] https://github.com/openjdk/panama-vector/blob/d77a41033a162c2c9bf02d6b8da91f2825320ad8/test/hotspot/jtreg/compiler/vectorization/TestFloatConversionsVector.java#L29
All the JTREG tests in tier 1-3 pass on aarch64. The "jdk/jdk/incubator/vector" and "hotspot/compiler" tests also pass successfully on an SVE machine. For x86 - All tier1-2 tests pass but tier3 tests fail due to five Halffloat<x>VectorTests failing. It does not look like these failures are due to the modifications or merge conflicts fixed in this patch but due to the intrinsification patch for the floatToFloat16 and float16ToFloat methods which was added from the jdk mainline to the fp16 branch during this merge (https://github.com/openjdk/jdk/commit/07946aa49c97c93bd11675a9b0b90d07c83f2a94). The tests pass successfully when these intrinsics are disabled. So probably it's something to do with x86 backend which I request someone from Intel maybe @jatin-bhateja or @smita-kamath to look at. I would also be grateful if the Intel specific code changes can be verified as well. Thanks!
-------------
Commit messages:
- Merge panama-vector:vectorIntrinsics into vectorInstrinsics+fp16
- Merge panama-vector:master
- 8299592: Fix and reenable warnings in java.desktop native code compilation
- 8306077: Replace NEW_ARENA_ARRAY with NEW_RESOURCE_ARRAY when applicable in opto
- 8301497: Replace NULL with nullptr in cpu/s390
- 8305781: compiler/c2/irTests/TestVectorizationMultiInvar.java failed with "IRViolationException: There were one or multiple IR rule failures."
- 8305690: [X86] Do not emit two REX prefixes in Assembler::prefix
- 8305668: PPC: Non-Top Interpreted frames should be independent of ABI_ELFv2
- 8303422: Use common functions to exit the VM for -Xshare:dump and CDS errors
- 8305762: FileInputStream and FileOutputStream implSpec should be corrected or removed
- ... and 4720 more: https://git.openjdk.org/panama-vector/compare/8f2a18d7...ab8352c7
The webrevs contain the adjustments done while merging with regards to each parent branch:
- vectorIntrinsics+fp16: https://webrevs.openjdk.org/?repo=panama-vector&pr=216&range=00.0
- panama-vector:vectorIntrinsics: https://webrevs.openjdk.org/?repo=panama-vector&pr=216&range=00.1
Changes: https://git.openjdk.org/panama-vector/pull/216/files
Stats: 1775054 lines in 17314 files changed: 1096949 ins; 489516 del; 188589 mod
Patch: https://git.openjdk.org/panama-vector/pull/216.diff
Fetch: git fetch https://git.openjdk.org/panama-vector.git pull/216/head:pull/216
PR: https://git.openjdk.org/panama-vector/pull/216
More information about the panama-dev
mailing list