[vector]: RFR (XS): Small bug fixes
Vladimir Ivanov
vladimir.x.ivanov at oracle.com
Thu Feb 22 18:10:02 UTC 2018
http://cr.openjdk.java.net/~vlivanov/panama/vector.fixes.00/
src/hotspot/cpu/x86/x86.ad:
While testing the patch proposed by Al Miftah, I spotted a bug in some
AD rules for NegVI: src and dst registers can be the same and pxor then
overwrites input value.
src/jdk.incubator.vector/share/classes/jdk/incubator/vector/VectorIntrinsics.java:
Mixing vector & scalar memory accesses on a same memory type can be
problematic in C2: alias analysis can't detect interference between
accesses of different width. That's why aliasing between vector & scalar
accesses can get unnoticed and lead to incorrect code being generated.
Established way to fix that is to put memory barriers in between (e.g.,
raw unsafe accesses are surrounded by barriers).
All scalar accesses happens in default implementations and have to fetch
backing array first. That's where I decided to put the fence.
A better place would be in JVM during intrinsification of
VI::maybeRebox() (it can take into account whether any vector accesses
are performed before putting a barrier), but for now I decided to just
put it on Java side using Unsafe.fullFence() to simplify the implementation.
I considered there's no need in another barrier after, because scalars
accesses into backing array are followed by vector box allocation and it
should isolate vector accesses happening later.
Thanks!
Best regards,
Vladimir Ivanov
More information about the panama-dev
mailing list