diff options
author | Thomas Preud'homme <thomas.preudhomme@arm.com> | 2015-12-09 11:00:55 +0800 |
---|---|---|
committer | Corinna Vinschen <corinna@vinschen.de> | 2015-12-09 10:30:31 +0100 |
commit | 5b9873fa7236daa522c59c2c40f85938098acfe7 (patch) | |
tree | 8689354e0921c1522de203b9520a9ca52bbb426d /newlib/libm/machine/arm/s_trunc.c | |
parent | 91a8eacec6575a3a2c6aa4c4cf26961870f6074a (diff) | |
download | cygnal-5b9873fa7236daa522c59c2c40f85938098acfe7.tar.gz cygnal-5b9873fa7236daa522c59c2c40f85938098acfe7.tar.bz2 cygnal-5b9873fa7236daa522c59c2c40f85938098acfe7.zip |
Check for 64 FP instructions availability in libm before using them
Currently, double precision math functions in newlib/libm/machine/arm detect whether neon instructions can be used for double precision computation by checking the architecture version (>= 8) and the availability of floating-point instructions. However, these instructions would not be available if targeting fpv5-sp-d16 as the FPU, which by definition does not have 64bit float instructions. This patch adds a check that __ARM_FP advertises 64bit float instructions.
* libm/machine/arm/s_ceil.c: Also check that 64bit FP instructions are
available in the guard.
* libm/machine/arm/s_floor.c: Likewise.
* libm/machine/arm/s_nearbyint.c: Likewise.
* libm/machine/arm/s_rint.c: Likewise.
* libm/machine/arm/s_round.c: Likewise.
* libm/machine/arm/s_trunc.c: Likewise.
Diffstat (limited to 'newlib/libm/machine/arm/s_trunc.c')
-rw-r--r-- | newlib/libm/machine/arm/s_trunc.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/newlib/libm/machine/arm/s_trunc.c b/newlib/libm/machine/arm/s_trunc.c index 2f38a3574..6fb696814 100644 --- a/newlib/libm/machine/arm/s_trunc.c +++ b/newlib/libm/machine/arm/s_trunc.c @@ -24,7 +24,7 @@ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#if __ARM_ARCH >= 8 && !defined (__SOFTFP__) +#if __ARM_ARCH >= 8 && (__ARM_FP & 0x8) && !defined (__SOFTFP__) #include <math.h> double |