[libre-riscv-dev] [isa-dev] FP reciprocal sqrt extension proposal

lkcl luke.leighton at gmail.com
Fri Jul 12 08:30:04 BST 2019


On Friday, July 12, 2019 at 5:09:47 AM UTC+8, andrew wrote:

> It’s not straightforward to correctly implement sqrt(x) using something like sqrt(x+y), because the addition messes up the sign of zero for sqrt(-0). You’d need to use 2-3 instructions to get the IEEE 754-mandated value (load zero into y; copy the sign of x onto y; then perform sqrt(x+y)).

Assuming this is isqrt rather than sqrt we are discussing.

So what you are saying Andrew is that FP exceptions on the add part would make a hybrid operation much more complex. Two possible exceptions could occur, and I assume the same +/- zero issues arise?

FMUL on the other hand, exceptions etc. have been thought through and the add has not been problematic.

With the possibility of a FP HW Exception extension to be created, it would be even more important to get this right.

> So, in addition to being more complex to implement, it’s also a less useful instruction than plain-old sqrt.

Isqrt. Definitely needed for 3D.

Thank you for this insight Andrew it cuts off a lot of development time potentially expended unnecessarily.

L.


More information about the libre-riscv-dev mailing list