Merge lworld into lworld+vector
Bhateja, Jatin
jatin.bhateja at intel.com
Thu Apr 17 10:14:20 UTC 2025
Hi All,
I have just merged the latest lworld code into lworld+vector branch after 3+ months.
PR : https://github.com/openjdk/valhalla/pull/1436
Commit : https://github.com/openjdk/valhalla/commit/50897b2885b98977fbfef5bc522847be099e289c
There are some jtreg failures with different validation configurations after this merge which I plan to fix in subsequent bug fix PRs.
Please refer to the following commit notes for details.
Best Regards,
Jatin
Commit Notes:-
* Removed @ImplicitlyConstructibleValue annotation from all VectorPayloadMF* classes.
* Annotated multifield backed payload with @strict<https://github.com/strict> annotation.
* Re-alignment of the new shuffle implementation with multifield-backed payloads.
* Fine tuning to skip over value forwarding vector boxes to handle non-flat payloads with -XX:-UseNonAtomicValueFlattening) in see_through_inline_type.
* Fix in PhaseMacroExpand::eliminate_allocate_node to skip over the elimination of larval allocations.
* New InlineTypeNode Identity transform to forward VectorBoxes tied to oop fields.
Such patterns are generated during incremental inlining when vector intrinsic call is replaced
by an equivalent VetorBoxNode. At this point, we don't require rematerializing InlineTypeNode chain
earlier tied to vector oop returned by intrinsic call.
* Turning off AbortVMOnCompilationFailure for test/hotspot/jtreg/compiler/vectorapi/VectorMemoryAlias.java
to avoid test failures due to compilation bailouts related make/finish private buffer intrinsic.
Functional Validation:-
Valhalla JTREG tests configuration tested:-
1. Default Settings [2 FAILURES
compiler/valhalla/inlinetypes/TestFieldNullMarkers.java compiler/valhalla/inlinetypes/TestLWorld.java
]
2. With -XX:+DeoptimizeALot -XX:+SafePointALot [4 FAILURES]
compiler/valhalla/inlinetypes/TestAllocationMergeAndFolding.java
compiler/valhalla/inlinetypes/TestC2CCalls.java
compiler/valhalla/inlinetypes/TestFieldNullMarkers.java
compiler/valhalla/inlinetypes/TestLWorld.java ]
VectorAPI JTREG test configurations tested:-
1. Default Settings - [ALL GREEN]
2. With -XX:+DeoptimizeALot -XX:+SafePointALot [ Intermittent failures ]
3. With-XX:-UseNonAtomicValueFlattening [ALL GREEN except 1 failure compiler/vectorapi/TestReverseByteTransforms.java on KNL]
Additional Notes:-
* With the removal of the flat field size capping runtime flag 'InlineTypeMaxFlatSize', all vector payload fields
by default have a flat layout within concrete vector containers.
* Since VectorPayloadMF* classes are decorated with LooselyConsistentValue annotation and payload fields are marked
as @NullRestricted with @strict<https://github.com/strict> field semantics, the only way to prevent payload flattening is through runtime flag -XX:-UseNonAtomicValueFlattening.
Performance:-
Fixed redundant boxing hitting performance of almost all vector kernels. After incremental inlining, VectorBox was getting connected to safepoint nodes through a series of InlineTypeNodes, which were materialized from the return value of CallStaticJavaNode IR created for vector intrinsic entry points after parsing. Removing redundantly materialized InlineTypeNode through an InlineTypeNode::Identity transform directly connects the VectorBoxNode to the Safepoint, thereby enabling box elimination.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.org/pipermail/valhalla-dev/attachments/20250417/d65de787/attachment.htm>
More information about the valhalla-dev
mailing list