> Suite MaskedLogicOpts.maskedLogicOperationsLong512() failed on both x86 and > AArch64 with the following error: > > > java.lang.IndexOutOfBoundsException: Index 252 out of bounds for length 249 > > > The variable `long256_arr_idx` is misused when indexing 'LongVector l2, l3, > l4, l5' in function `maskedLogicOperationsLongKernel()`. 'long256_arr_idx' > increases by 4 every time the benchmark runs and ensures the incremented > value remains within the bounds of the array. However, for > `LongVector.SPECIES_512`, it loads 8 numbers from the array each time the > benchmark runs, resulting in an out-of-range indexing issue. > > Hence, we revised the index variables from `long256_arr_idx` to > `long512_arr_idx`, which has a stride of 8, to ensure that the loaded vector > is inside of the array boundary for all vector species. This is also > consistent with other kernel functions. > > Additionally, some defined but unused variables have been removed.
Nicole Xu has updated the pull request incrementally with two additional commits since the last revision: - 8346954: [JMH] jdk.incubator.vector.MaskedLogicOpts fails due to IndexOutOfBoundsException Suite MaskedLogicOpts.maskedLogicOperationsLong512() failed on both x86 and AArch64 with the following error: ``` java.lang.IndexOutOfBoundsException: Index 252 out of bounds for length 249 ``` The variable `long256_arr_idx` is misused when indexing `LongVector l2`, `l3`, `l4`, `l5` in function `maskedLogicOperationsLongKernel()` resulting in the IndexOutOfBoundsException error. On the other hand, the unified index for 128-bit, 256-bit and 512-bit species might not be proper since it leaves gaps in between when accessing the data for 128-bit and 256-bit species. This will unnecessarily include the noise due to cache misses or (on some targets) prefetching additional cache lines which are not usable, thereby impacting the crispness of microbenchmark. Hence, we improved the benchmark from several aspects, 1. Used sufficient number of predicated operations within the vector loop while minimizing the noise due to memory operations. 2. Modified the index computation logic which can now withstand any ARRAYLEN without resulting in an IOOBE. 3. Removed redundant vector read/writes to instance fields, thus eliminating significant boxing penalty which translates into throughput gains. Change-Id: Ie8a9d495b1ca5e36f1eae069ff70a815a2de00c0 - Revert "8346954: [JMH] jdk.incubator.vector.MaskedLogicOpts fails due to IndexOutOfBoundsException" This reverts commit 083bedec04d5ab78a420e156e74c1257ce30aee8. ------------- Changes: - all: https://git.openjdk.org/jdk/pull/22963/files - new: https://git.openjdk.org/jdk/pull/22963/files/083bedec..896c27ea Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=22963&range=01 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=22963&range=00-01 Stats: 147 lines in 1 file changed: 14 ins; 29 del; 104 mod Patch: https://git.openjdk.org/jdk/pull/22963.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/22963/head:pull/22963 PR: https://git.openjdk.org/jdk/pull/22963