[libre-riscv-dev] Vector Operations Extension (cross, dot, length, lerp, slerp)

lkcl luke.leighton at gmail.com
Tue Sep 17 07:55:52 BST 2019


On Monday, September 16, 2019 at 5:39:48 PM UTC+8, lkcl wrote:
> On Mon, Sep 16, 2019 at 9:44 AM Jacob Lifshay <programmerjake at gmail.com> wrote:
> 
> > I definitely think SLERP shouldn't be a HW instruction, it is not used
> > often enough and has several trig function calls as well as having
> > dozens of flops worth of computation per subvector.

Found what I was looking for, knew I'd seen it somewhere:

https://www.atlantis-press.com/proceedings/jcis2006/232

This is a CORDIC algorithm that is power efficient and can do 3D rotations.

I am sure I have seen somewhere else that SLERP can be done with a complex number CORDIC.

The point of including this particular opcode is that it is for the "unusual" applications, more experimental and innovative beyond the normal mass market.

Just a couple of days ago I learned of a new Khronos WG involving 3D animation (stick figures abd robotics) and very interestingly it is already integrated into Blender.

You specify the joints, not the triangles. Much more animatronics and Virtual Reality. Kaneva, for example, will almost certainly be using it in their online VR Gaming platform.

So that is the use case.

>From a technical perspective, if CORDIC is to be used for other purposes, and is already in silicon, then just like in BitManip there are three different opcode "frontends" all using the same bitmask hardware "backend", SLERP would hypothetically be no different.

Just have to research it properly. And drop it into its own subextension.

L.


More information about the libre-riscv-dev mailing list