On Fri, 6 Mar 2026 10:47:02 GMT, Emanuel Peter <[email protected]> wrote:

> Found while working on JDK-8369699.
> 
> In general, the Vector API documentation is a bit vague around part numbers.
> There was considerable confusion around expansion/contraction: are we talking 
> about logical, physical or output expansion/contraction? Confusingly, in some 
> places we called expansions things that go from more to fewer bits, and we 
> called contractions that went from fewer to more bits.
> 
> And exception messages are not very helpful, for example they don't provide 
> the legal range.
> 
> @rose00 took a first stab at improving things 
> (https://github.com/openjdk/jdk/pull/29306), and I eventually took over the 
> project.
> 
> --------------------------------------
> 
> Principles:
> - Expansion means fewer->more bits.
> - Contraction means more->fewer bits.
> - Be clear about input, logical result and output.
> - We primarily use:
>   - conversion lanewise expansion (logical)
>   - conversion lanewise contraction (logical)
>   - conversion lanewise in-place (logical)
>   - reinterpret (logical)
>   - select, for truncation (output)
>   - insert, for padding (output)
>   - in-place, logical fits output (output)
> 
> Please review this PR in this order:
> - Changes in the "Expansions, contractions, and partial results" section of 
> `Vector.java`. We must first agree on the definitions here, before we go and 
> disagree elsewhere ;)
> - Changes in affected methods `convertShape`, `convert`, and 
> `reinterpretShape`.
> - Internal changes in `AbstractVector.java‎`: adjust nomenclature and 
> exception message.
> - New test. I think it is necessary, I caught some mistakes I made. And when 
> I wanted to add tests for `unslice` I realized that it does not throw for out 
> of bounds `part`. So I think it is justified.
> 
> In general, I'm a bit worried that the documentation is a bit too long, and 
> feels a bit heavy/overwhelming.
> To a large degree, this is due to the complexity of part numbers.
> We could drop some paragraphs and some repetition. Let me know what you think 
> is too much.
> More explanations may help make things clearer, but also risk being too much 
> and overwhelming.
> I'm open to cut things down more, and any other constructive suggestions ;)
> 
> -----------------------
> 
> While reading the documentation and testing for `unslice`, I found out that 
> https://github.com/openjdk/jdk/pull/3804 accidentally removed the bounds 
> checks for `part`. But we did not notice, because there were no tests for it. 
> I'm adding the bounds check back in and adding tests for it as well.
> 
> ---------
> - [x] I confirm that I make this contribution in ac...

This pull request has now been integrated.

Changeset: 1476d4f3
Author:    Emanuel Peter <[email protected]>
URL:       
https://git.openjdk.org/jdk/commit/1476d4f3a6b0502a1afb754168757bbedf5665ed
Stats:     1821 lines in 11 files changed: 1497 ins; 147 del; 177 mod

8375631: VectorAPI part number: reformulate documentation and improve exception 
message

Co-authored-by: John R Rose <[email protected]>
Reviewed-by: psandoz, sherman, jrose

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

PR: https://git.openjdk.org/jdk/pull/30113

Reply via email to