On Mon, 27 Oct 2025 15:19:48 GMT, Jatin Bhateja <[email protected]> wrote:
> Add new HalffloatVector type and corresponding concrete vector classes in
> addition to existing primitive vector types, maintaining operation parity
> with the FloatVector type.
> - Add necessary inline expander support.
> - Enable intrinsification for a few vector operations, namely
> ADD/SUB/MUL/DIV/MAX/MIN/FMA.
> - Use existing Float16 vector IR and backend support.
> - Extended the existing VectorAPI JTREG test suite for the newly added
> HalffloatVector operations.
>
> The idea here is to first be at par with Float16 auto-vectorization support
> before intrinsifying new operations (conversions, reduction, etc).
>
> The following are the performance numbers for some of the selected
> HalfflotVector benchmarking kernels compared to equivalent
> Float16OperationsBenchmark kernels.
>
> <img width="837" height="650" alt="{A2BA2D85-085A-489F-8DDD-0FCFB5986EA5}"
> src="https://github.com/user-attachments/assets/2f34138e-80f4-4870-9b5f-f64bf43c1b11"
> />
>
> Initial RFP[1] was floated on the panama-dev mailing list.
>
> Kindly review the draft PR and share your feedback.
>
> Best Regards,
> Jatin
>
> [1] https://mail.openjdk.org/pipermail/panama-dev/2025-August/021100.html
Some quick comments.
We should be consistent in the naming, and rename `Halfloat*` to `Float16*`.
When you generate the fallback code for unary/binary etc can you push the
carrier type and conversations into the uOp/bOp implementations so you don't
have to explicitly operate on the carrier type and do the conversions as you do
now e.g.,:
v0.uOp(m, (i, a) ->
float16ToShortBits(Float16.valueOf(-(shortBitsToFloat16(($type$)a).floatValue()))));
The transition of intrinsic arguments from `vsp.elementType()` to
`vsp.carrierType(), vsp.operType()` is a little unfortunate. Is this because
HotSpot cannot directly refer to the `Float16` class from the incubating
module? Requiring two arguments means they can get out of sync. Previously the
class provided all the information needed, now arguably the type does.
-------------
PR Review: https://git.openjdk.org/jdk/pull/28002#pullrequestreview-3445662107