[libre-riscv-dev] FP16 FCVT needed (int, uint, fp32, fp64)

lkcl luke.leighton at gmail.com
Fri Sep 13 00:34:23 BST 2019


On Thursday, September 12, 2019 at 4:18:29 AM UTC+8, Bruce Hoult wrote:

> We do intend to have half precision FP in the scalar instruction set,
> as it doesn't make sense to have it in the vector instruction set but
> not scalar.

Ah before I forget:
https://libre-riscv.org/rv_major_opcode_1010011/
Search for FCVT

I arbitrarily chose some funct5 allocations to illustrate and ensure that it's not forgotten that FCVT FP16 opcodes will be needed.

Int/signed, 4 opcodes:
FCVT.U/S.H
FCVT.H.U/S

FP, 6 opcodes:
FCVT.F/D/Q.H
FCVT.H.F/D/Q

It is a pascal triangle, the opcode proliferation in FP. Fortunately for INT conversion just O(N) proliferation, and both are 1 op so funct5 subops can be used.

Still, that is 10 new funct5 reservations.

The FP major opcode is quite sparsely populated at the moment (even with transcendentals), that is no reason to go mad though.

[3D Alliance still has texture ops, LERP, SLERP, dotproduct, crossproduct, length, normalisation etc. to add]

If the FP opcode gets seriously under pressure, conversion to FP32 only could be considered, requiring further conversion to D and Q with existing opcodes. That would bring it down to 6 funct5 reservations.  It penalises FP16 implementors if the wrong choice is made, though.

Is there a schedule and/or bugreport for this? I'd like to keep track through crossreferencing in the above page (otherwise information is fragmented and uncoordinated)

L.


More information about the libre-riscv-dev mailing list