riscv-non-isa/rvv-intrinsic-doc

`vfirst` and `vcpop` return types unexpectedly changed

Closed this issue · 1 comments

(Cross-posting #287 (comment) to a new issue.)

In #287, the return values for the vcpop and vfirst intrinsics were switched from unsigned long and long to unsigned int and int, while the implementations in upstream LLVM and GCC still have the former types. This API change appears to have been made in this PR, with the following justification:

Replace float16_t with _Float16 that is now supported by both LLVM and GCC. This keeps us away from the need to define our own type. (Resolves #31, and alongside also resolves #166.

FP16 is not relevant to those two issues, and the change made in this PR was not the agreed-upon solution to those issues. (I don't know if we had even come to a consensus: I had argued for a different solution altogether.)

At this point, I suggest we just revert this part of #287.

Cherry-picked into v1.0.x

ca4156a
4ba136c
eccc2e0