Commit 0dfe15e5 authored by Committed by ROOLBrowse files
Add accelerated elementary functions
In order to reduce reliance on FPA, where we rely on the FPA transcendentals in various places which are subsequently caught and emulated via FPEmulator, expose VFP implementations of these for wider use. They are the base elementary functions corresponding to SIN/COS/TAN/ASN/ACS/ATN/POL/LOG/LGN/EXP/POW and as a bonus an FMA for pre-VFPv4 variants. Function signatures follow their C standard definition and a generic APCS to allow their use from high level languages. The FMA implementation comes from OpenLibm, translated by hand from C, and the accompanying test bed checks for bit identical results to ARM's instruction. For that to make sense clearly it needs to be run on something with VFPv4 otherwise it's comparing itself with itself! When not available in hardware the elementary functions call across to these slower software implementations via a VFused macro. Makefile: Add the new object files VFPSupport: New SWI name, and reason flags GetAll.s: Get the maths helpers Macros.s: Some helper macros for bit manipulation of FP numbers Module.s: New SWI SupportCode.s: Error handler to recover R12 and optionally throw an error Tested with a special version of BASICVFP which replaces the FPA transcendentals with a call to VFPSupport instead. Version 0.15. Tagged as 'VFPSupport-0_15'
Showing with 2861 additions and 17 deletions