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
