On Tue, 10 May 2022 01:23:55 GMT, Xiaohong Gong <xg...@openjdk.org> wrote:

> Checking whether the indexes of masked lanes are inside of the valid memory 
> boundary is necessary for masked vector memory access. However, this could be 
> saved if the given offset is inside of the vector range that could make sure 
> no IOOBE (IndexOutOfBoundaryException) happens. The masked load APIs have 
> saved this kind of check for common cases. And this patch did the similar 
> optimization for the masked vector store.
> 
> The performance for the new added store masked benchmarks improves about 
> `1.83x ~ 2.62x` on a x86 system:
> 
> Benchmark                                   Before    After     Gain Units
> StoreMaskedBenchmark.byteStoreArrayMask   12757.936 23291.118  1.826 ops/ms
> StoreMaskedBenchmark.doubleStoreArrayMask  1520.932  3921.616  2.578 ops/ms
> StoreMaskedBenchmark.floatStoreArrayMask   2713.031  7122.535  2.625 ops/ms
> StoreMaskedBenchmark.intStoreArrayMask     4113.772  8220.206  1.998 ops/ms
> StoreMaskedBenchmark.longStoreArrayMask    1993.986  4874.148  2.444 ops/ms
> StoreMaskedBenchmark.shortStoreArrayMask   8543.593 17821.086  2.086 ops/ms
> 
> Similar performane gain can also be observed on ARM hardware.

This pull request has now been integrated.

Changeset: ef7cc210
Author:    Xiaohong Gong <xg...@openjdk.org>
URL:       
https://git.openjdk.java.net/jdk/commit/ef7cc2105c66de443d3a9af706220272018a0d8d
Stats:     216 lines in 9 files changed: 179 ins; 0 del; 37 mod

8286279: [vectorapi] Only check index of masked lanes if offset is out of array 
boundary for masked store

Reviewed-by: psandoz

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

PR: https://git.openjdk.java.net/jdk/pull/8620

Reply via email to