Request for reviews (M): 7199010: incorrect vector alignment
Christian Thalinger
christian.thalinger at oracle.com
Wed Sep 19 11:27:52 PDT 2012
Looks good. -- Chris
On Sep 18, 2012, at 6:21 PM, Vladimir Kozlov <vladimir.kozlov at oracle.com> wrote:
> http://cr.openjdk.java.net/~kvn/7199010/webrev
>
> Vector memory operations could be misaligned when accesses to arrays of different types are vectorized in one loop. It leads to hw trap on SPARC and slow performance on old x86 (with slow unaligned memory instructions). It was caused by 2 main reasons: using iv_adjustment_in_bytes instead of iv_adjustment (number of iterations) and typo in same_velt_type().
>
> Fixes:
>
> Used iv_adjustment as number of iterations in pre-loop to calculate correct offset in SuperWord::memory_alignment() method. Fixed typo in SuperWord::same_velt_type().
>
> Allowed misaligned memory operations for vectors only on x86 which have fast misaligned memory instructions. I also did some code style clean up there. Note, the flag AlignVector is used in x64.ad file:
>
> const bool Matcher::misaligned_vectors_ok() {
> return !AlignVector;
> }
>
> Excluded LoadUI2L node from vector operations because it reports incorrect memory size.
>
> Thanks,
> Vladimir
More information about the hotspot-compiler-dev
mailing list