Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8287970

riscv: jdk/incubator/vector/*VectorTests failing

XMLWordPrintable

    • 19
    • b26
    • riscv
    • linux

        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

              fjiang Feilong Jiang
              fjiang Feilong Jiang
              Votes:
              0 Vote for this issue
              Watchers:
              4 Start watching this issue

                Created:
                Updated:
                Resolved: