RFR: 8289604: compiler/vectorapi/VectorLogicalOpIdentityTest.java failed on x86 AVX1 system
Vladimir Kozlov
kvn at openjdk.org
Tue Jul 5 19:11:31 UTC 2022
On Tue, 5 Jul 2022 07:47:58 GMT, Xiaohong Gong <xgong at openjdk.org> wrote:
> The sub-test "`testMaskAndZero()`" failed on x86 systems when
> `UseAVX=1` with the IR check failure:
>
> - counts: Graph contains wrong number of nodes:
> * Regex 1: (\\d+(\\s){2}(StoreVector.*)+(\\s){2}===.*)
> - Failed comparison: [found] 0 >= 1 [given]
> - No nodes matched!
>
> The root cause is the `VectorMask.fromArray/intoArray` APIs
> are not intrinsified when "`UseAVX=1`" for long type vectors
> with following reasons:
> 1) The system supported max vector size is 128 bits for
> integral vector operations when "`UseAVX=1`".
> 2) The match rule of `VectorLoadMaskNode/VectorStoreMaskNode`
> are not supported for vectors with 2 elements (see [1]).
>
> Note that `VectorMask.fromArray()` needs to be intrinsified
> with "`LoadVector+VectorLoadMask`". And `VectorMask.intoArray()`
> needs to be intrinsified with "`VectorStoreMask+StoreVector`".
> Either "`VectorStoreMask`" or "`StoreVector`" not supported by the
> compiler backend will forbit the relative API intrinsification.
>
> Replacing the vector type from Long to other integral types
> in the test case can fix the issue.
>
> [1] https://github.com/openjdk/jdk/blob/master/src/hotspot/cpu/x86/x86.ad#L1861
I submitted testing.
-------------
PR: https://git.openjdk.org/jdk/pull/9373
More information about the hotspot-compiler-dev
mailing list