On Wed, 11 Sep 2024 13:34:28 GMT, Roman Kennke <rken...@openjdk.org> wrote:

> > @rkennke Can you please explain the changes in these tests:
> > ```
> > test/hotspot/jtreg/compiler/c2/irTests/TestVectorizationMismatchedAccess.java
> > test/hotspot/jtreg/compiler/c2/irTests/TestVectorizationNotRun.java
> > test/hotspot/jtreg/compiler/loopopts/superword/TestAlignVector.java
> > test/hotspot/jtreg/compiler/loopopts/superword/TestIndependentPacksWithCyclicDependency.java
> > test/hotspot/jtreg/compiler/loopopts/superword/TestMulAddS2I.java
> > ```
> > 
> > 
> >     
> >       
> >     
> > 
> >       
> >     
> > 
> >     
> >   
> > You added these IR rule restriction: `@IR(applyIf = 
> > {"UseCompactObjectHeaders", "false"},`
> > This means that if `UseCompactObjectHeaders` is enabled, vectorization 
> > seems to be impacted - that could be concerning because it has a 
> > performance impact.
> > I have recently changed a few things in SuperWord, so maybe some of them 
> > can be removed, because they now vectorize anyway?
> > Of course some special tests may just rely on `UseCompactObjectHeaders == 
> > false` - but I would need some comments in the tests where you added it to 
> > justify why we add the restriction.
> > Please also test this patch with the cross combinations of 
> > `UseCompactObjectHeaders` and `AlignVector` enabled and disabled (and add 
> > `VerifyAlignVector` as well).
> 
> IIRC (it has been a while), the problem is that with Lilliput (and also 
> without compact headers, but disabling compressed class-pointers 
> -UseCompressedClassPointers, but nobody ever does that), byte[] and long[] 
> start at different offsets (12 and 16, respectively). That is because with 
> compact headers, we are using the 4 bytes after the arraylength, but 
> long-arrays cannot do that because of alignment constraints. The impact is 
> that these tests don't work as expected, because vectorization triggers 
> differently. I don't remember the details, TBH, but I believe they would now 
> generate pre-loops, or some might even not vectorize at all. Those seemed to 
> be use-cases that did not look very important, but I may be wrong. It would 
> be nice to properly fix those tests, or make corresponding tests for compact 
> headers, instead, or improve vectorization to better deal with the offset 
> mismatch, if necessary/possible.
> 
> I will re-evaluate those tests, and add comments or remove the restrictions.

If it has indeed been a while, then it might well be that some of them work 
now, since I did make some improvements to auto-vectorization ;)

My suggestion is this: go over the examples, check which ones are now ok. Those 
that are not ok, add a comment, and file a bug: I can then analyze those cases 
later, and see how to write other tests or improve auto-vectorization.

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

PR Comment: https://git.openjdk.org/jdk/pull/20677#issuecomment-2343797957

Reply via email to