On Mon, 13 Apr 2026 08:13:35 GMT, Jatin Bhateja <[email protected]> wrote:

>> Add a new  Float16lVector 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/SQRT/FMA.
>> - Use existing Float16 vector IR and backend support.
>> - Extended the existing VectorAPI JTREG test suite for the newly added 
>> Float16Vector 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 
>> Float16Vector benchmarking kernels compared to equivalent auto-vectorized 
>> Float16OperationsBenchmark kernels.
>> 
>> <img width="1344" height="532" alt="image" 
>> src="https://github.com/user-attachments/assets/c8157c3c-22b0-4bc1-9de9-7a68cadb7b2a";
>>  />
>> 
>> 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
>> 
>> ---------
>> - [x] I confirm that I make this contribution in accordance with the 
>> [OpenJDK Interim AI Policy](https://openjdk.org/legal/ai).
>
> Jatin Bhateja has updated the pull request incrementally with one additional 
> commit since the last revision:
> 
>   Review comments resolutions

src/jdk.incubator.vector/share/classes/jdk/incubator/vector/Float16Vector.java 
line 198:

> 196: 
> 197:     /*package-private*/
> 198:     interface FSnOp {

You replaced `U` with `S`, which removes the connection to a unary operation. 
Same for the methods. I gather this is only required for handling the unary 
sqrt operation. I am not sure we need them, if we do we should name them more 
clearly. I will leave a comment next to the unary sqrt operation.

src/jdk.incubator.vector/share/classes/jdk/incubator/vector/Float16Vector.java 
line 803:

> 801:                     v0.uOp(m, (i, a) -> (float) Math.log10(a));
> 802:             case VECTOR_OP_SQRT: return (v0, m) ->
> 803:                     v0.sOp(m, (i, a) -> (short) 
> float16ToRawShortBits(Float16.sqrt(shortBitsToFloat16(a))));

Can we reuse `uOp` and convert the result of `Float16.sqrt` to `float` instead?

src/jdk.incubator.vector/share/classes/jdk/incubator/vector/ShortVector.java 
line 4155:

> 4153:      * of this method is arbitrarily designated as
> 4154:      * {@code Vector<?>}.  Future versions of this API may change the 
> return
> 4155:      * type if additional floating point types become available.

Remove implementation note.

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

PR Review Comment: https://git.openjdk.org/jdk/pull/28002#discussion_r3190601739
PR Review Comment: https://git.openjdk.org/jdk/pull/28002#discussion_r3190609300
PR Review Comment: https://git.openjdk.org/jdk/pull/28002#discussion_r3190446302

Reply via email to