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