RFR: 8287970: riscv: jdk/incubator/vector/*VectorTests failing [v2]

Yadong Wang yadongwang at openjdk.java.net
Wed Jun 8 09:51:15 UTC 2022


On Wed, 8 Jun 2022 07:59:14 GMT, Feilong Jiang <fjiang at openjdk.org> wrote:

>> [JDK-8284960](https://bugs.openjdk.org/browse/JDK-8284960) added a new vector operation VectorOperations.BIT_COUNT, which needs the support of PopCountV*. The following tests failed when enabling `UseRVV`:
>> 
>> jdk/incubator/vector/Byte256VectorTests.java
>> jdk/incubator/vector/ByteMaxVectorTests.java
>> jdk/incubator/vector/Int256VectorTests.java
>> jdk/incubator/vector/IntMaxVectorTests.java
>> jdk/incubator/vector/Short256VectorTests.java
>> jdk/incubator/vector/ShortMaxVectorTests.java
>> 
>> Tests are failing with "assert(n_type->isa_vect() == __null || lrg._is_vector || ireg == Op_RegD || ireg == Op_RegL || ireg == Op_RegVectMask) failed: vector must be in vector registers" because C2 instruct "vpopcountI" stores the result into a general-purpose register (GPR) instead of a vector register.
>> 
>> Currently, riscv vector extension `vpopc.m` instruction counts the number of mask elements of the active elements of the vector source mask register that has the value 1 and writes the result to a scalar x register. [1] `PopCountV*` needs to write back the pop counting results to vector registers, there is no single instruction in rvv that can satisfy the requirement.  So we decide to remove the vpopcountI instruct for now.
>> 
>> [1]: https://github.com/riscv/riscv-v-spec/releases/download/v1.0/riscv-v-spec-1.0.pdf
>> 
>> Additional Tests:
>> - [x] jdk/incubator/vector (release with UseRVV on QEMU)
>> - [x] hotspot:tier1 (release with UseRVV on QEMU without new failure)
>
> Feilong Jiang has updated the pull request incrementally with one additional commit since the last revision:
> 
>   disable Op_PopCountV* in op_vec_supported

lgtm

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

Marked as reviewed by yadongwang (Author).

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


More information about the hotspot-compiler-dev mailing list