Request for adding 8x float16 arm neon intrinsics to burst support

Hi, I’m developing a cpu simulation using burst. I’ve ported it over to float32x4 arm neon intrinsics for a 4x perf boost and it works great and makes new things possible (on Quest 2+ where vertex and compute are weak).

Are there any plans to expose the half float float16x8 intrinsics for arm 8.2 and arm9? It seems like a possible easy win for 2x more performance if these methods were added to the surface? It would just need to be a convertible half float float16 and not computable directly in c#. I’ve toyed with the 8x int16 math but I don’t think its really possible without float16 (too many overflowed multiplies…)

Thanks

I did find a multiply and shift for Q0.16 fixed point format that may be the step forward for us with int16x8. I’m no fixed point expert yet. Still interested to see if float16 will be supported.

It looks like what you are looking for requires the UNITY_BURST_EXPERIMENTAL_NEON_INTRINSICS scripting define. It is in NEON_AArch64_fp16.cs if you want to see for yourself.

Thanks, that seems to allow the _f16 functions – I’ll test and write some extra notes here based on what I find.


f16x8 neon version of the code was around 20% faster on Quest2 – I think the cores available are kind of weak and don’t have dual neon pipelines from what I could see.