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.
This commit is contained in:
Thomas Preud'homme 2015-12-09 11:00:55 +08:00 committed by Corinna Vinschen
parent 91a8eacec6
commit 5b9873fa72
7 changed files with 16 additions and 6 deletions

View File

@ -1,3 +1,13 @@
2015-12-09 Thomas Preud'homme <thomas.preudhomme@arm.com>
* 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.
2015-12-08 Corinna Vinschen <corinna@vinschen.de> 2015-12-08 Corinna Vinschen <corinna@vinschen.de>
* libc/stdio/fclose.c (_fclose_r): Make _flockfile/_funlockfile calls * libc/stdio/fclose.c (_fclose_r): Make _flockfile/_funlockfile calls

View File

@ -24,7 +24,7 @@
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ 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> #include <math.h>
double double

View File

@ -24,7 +24,7 @@
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ 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> #include <math.h>
double double

View File

@ -24,7 +24,7 @@
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ 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> #include <math.h>
double double

View File

@ -24,7 +24,7 @@
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ 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> #include <math.h>
double double

View File

@ -24,7 +24,7 @@
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ 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> #include <math.h>
double double

View File

@ -24,7 +24,7 @@
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ 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> #include <math.h>
double double