Add aarch64 instructions wherever possible
fma, sqrt and various rounding functions have aarch64 instruction equivalent Change-Id: I1284f31b9f78f914281e5563b8d44db8362b627d
This commit is contained in:
parent
d5c2745ca8
commit
32936c895d
8 changed files with 285 additions and 22 deletions
109
libm/Android.mk
109
libm/Android.mk
|
@ -69,8 +69,6 @@ LOCAL_SRC_FILES := \
|
||||||
upstream-freebsd/lib/msun/src/e_scalbf.c \
|
upstream-freebsd/lib/msun/src/e_scalbf.c \
|
||||||
upstream-freebsd/lib/msun/src/e_sinh.c \
|
upstream-freebsd/lib/msun/src/e_sinh.c \
|
||||||
upstream-freebsd/lib/msun/src/e_sinhf.c \
|
upstream-freebsd/lib/msun/src/e_sinhf.c \
|
||||||
upstream-freebsd/lib/msun/src/e_sqrt.c \
|
|
||||||
upstream-freebsd/lib/msun/src/e_sqrtf.c \
|
|
||||||
upstream-freebsd/lib/msun/src/imprecise.c \
|
upstream-freebsd/lib/msun/src/imprecise.c \
|
||||||
upstream-freebsd/lib/msun/src/k_cos.c \
|
upstream-freebsd/lib/msun/src/k_cos.c \
|
||||||
upstream-freebsd/lib/msun/src/k_cosf.c \
|
upstream-freebsd/lib/msun/src/k_cosf.c \
|
||||||
|
@ -92,8 +90,6 @@ LOCAL_SRC_FILES := \
|
||||||
upstream-freebsd/lib/msun/src/s_cbrtf.c \
|
upstream-freebsd/lib/msun/src/s_cbrtf.c \
|
||||||
upstream-freebsd/lib/msun/src/s_ccosh.c \
|
upstream-freebsd/lib/msun/src/s_ccosh.c \
|
||||||
upstream-freebsd/lib/msun/src/s_ccoshf.c \
|
upstream-freebsd/lib/msun/src/s_ccoshf.c \
|
||||||
upstream-freebsd/lib/msun/src/s_ceil.c \
|
|
||||||
upstream-freebsd/lib/msun/src/s_ceilf.c \
|
|
||||||
upstream-freebsd/lib/msun/src/s_cexp.c \
|
upstream-freebsd/lib/msun/src/s_cexp.c \
|
||||||
upstream-freebsd/lib/msun/src/s_cexpf.c \
|
upstream-freebsd/lib/msun/src/s_cexpf.c \
|
||||||
upstream-freebsd/lib/msun/src/s_cimag.c \
|
upstream-freebsd/lib/msun/src/s_cimag.c \
|
||||||
|
@ -130,9 +126,6 @@ LOCAL_SRC_FILES := \
|
||||||
upstream-freebsd/lib/msun/src/s_fdim.c \
|
upstream-freebsd/lib/msun/src/s_fdim.c \
|
||||||
upstream-freebsd/lib/msun/src/s_finite.c \
|
upstream-freebsd/lib/msun/src/s_finite.c \
|
||||||
upstream-freebsd/lib/msun/src/s_finitef.c \
|
upstream-freebsd/lib/msun/src/s_finitef.c \
|
||||||
upstream-freebsd/lib/msun/src/s_floorf.c \
|
|
||||||
upstream-freebsd/lib/msun/src/s_fma.c \
|
|
||||||
upstream-freebsd/lib/msun/src/s_fmaf.c \
|
|
||||||
upstream-freebsd/lib/msun/src/s_fmax.c \
|
upstream-freebsd/lib/msun/src/s_fmax.c \
|
||||||
upstream-freebsd/lib/msun/src/s_fmaxf.c \
|
upstream-freebsd/lib/msun/src/s_fmaxf.c \
|
||||||
upstream-freebsd/lib/msun/src/s_fmin.c \
|
upstream-freebsd/lib/msun/src/s_fmin.c \
|
||||||
|
@ -141,16 +134,12 @@ LOCAL_SRC_FILES := \
|
||||||
upstream-freebsd/lib/msun/src/s_frexpf.c \
|
upstream-freebsd/lib/msun/src/s_frexpf.c \
|
||||||
upstream-freebsd/lib/msun/src/s_ilogb.c \
|
upstream-freebsd/lib/msun/src/s_ilogb.c \
|
||||||
upstream-freebsd/lib/msun/src/s_ilogbf.c \
|
upstream-freebsd/lib/msun/src/s_ilogbf.c \
|
||||||
upstream-freebsd/lib/msun/src/s_llrint.c \
|
|
||||||
upstream-freebsd/lib/msun/src/s_llrintf.c \
|
|
||||||
upstream-freebsd/lib/msun/src/s_llround.c \
|
upstream-freebsd/lib/msun/src/s_llround.c \
|
||||||
upstream-freebsd/lib/msun/src/s_llroundf.c \
|
upstream-freebsd/lib/msun/src/s_llroundf.c \
|
||||||
upstream-freebsd/lib/msun/src/s_log1p.c \
|
upstream-freebsd/lib/msun/src/s_log1p.c \
|
||||||
upstream-freebsd/lib/msun/src/s_log1pf.c \
|
upstream-freebsd/lib/msun/src/s_log1pf.c \
|
||||||
upstream-freebsd/lib/msun/src/s_logb.c \
|
upstream-freebsd/lib/msun/src/s_logb.c \
|
||||||
upstream-freebsd/lib/msun/src/s_logbf.c \
|
upstream-freebsd/lib/msun/src/s_logbf.c \
|
||||||
upstream-freebsd/lib/msun/src/s_lrint.c \
|
|
||||||
upstream-freebsd/lib/msun/src/s_lrintf.c \
|
|
||||||
upstream-freebsd/lib/msun/src/s_lround.c \
|
upstream-freebsd/lib/msun/src/s_lround.c \
|
||||||
upstream-freebsd/lib/msun/src/s_lroundf.c \
|
upstream-freebsd/lib/msun/src/s_lroundf.c \
|
||||||
upstream-freebsd/lib/msun/src/s_modf.c \
|
upstream-freebsd/lib/msun/src/s_modf.c \
|
||||||
|
@ -161,8 +150,6 @@ LOCAL_SRC_FILES := \
|
||||||
upstream-freebsd/lib/msun/src/s_nextafterf.c \
|
upstream-freebsd/lib/msun/src/s_nextafterf.c \
|
||||||
upstream-freebsd/lib/msun/src/s_remquo.c \
|
upstream-freebsd/lib/msun/src/s_remquo.c \
|
||||||
upstream-freebsd/lib/msun/src/s_remquof.c \
|
upstream-freebsd/lib/msun/src/s_remquof.c \
|
||||||
upstream-freebsd/lib/msun/src/s_rint.c \
|
|
||||||
upstream-freebsd/lib/msun/src/s_rintf.c \
|
|
||||||
upstream-freebsd/lib/msun/src/s_round.c \
|
upstream-freebsd/lib/msun/src/s_round.c \
|
||||||
upstream-freebsd/lib/msun/src/s_roundf.c \
|
upstream-freebsd/lib/msun/src/s_roundf.c \
|
||||||
upstream-freebsd/lib/msun/src/s_scalbln.c \
|
upstream-freebsd/lib/msun/src/s_scalbln.c \
|
||||||
|
@ -178,8 +165,6 @@ LOCAL_SRC_FILES := \
|
||||||
upstream-freebsd/lib/msun/src/s_tanh.c \
|
upstream-freebsd/lib/msun/src/s_tanh.c \
|
||||||
upstream-freebsd/lib/msun/src/s_tanhf.c \
|
upstream-freebsd/lib/msun/src/s_tanhf.c \
|
||||||
upstream-freebsd/lib/msun/src/s_tgammaf.c \
|
upstream-freebsd/lib/msun/src/s_tgammaf.c \
|
||||||
upstream-freebsd/lib/msun/src/s_trunc.c \
|
|
||||||
upstream-freebsd/lib/msun/src/s_truncf.c \
|
|
||||||
upstream-freebsd/lib/msun/src/w_cabs.c \
|
upstream-freebsd/lib/msun/src/w_cabs.c \
|
||||||
upstream-freebsd/lib/msun/src/w_cabsf.c \
|
upstream-freebsd/lib/msun/src/w_cabsf.c \
|
||||||
upstream-freebsd/lib/msun/src/w_cabsl.c \
|
upstream-freebsd/lib/msun/src/w_cabsl.c \
|
||||||
|
@ -260,8 +245,28 @@ LOCAL_SRC_FILES += \
|
||||||
LOCAL_SRC_FILES += \
|
LOCAL_SRC_FILES += \
|
||||||
signbit.c \
|
signbit.c \
|
||||||
|
|
||||||
|
# Arch specific optimizations.
|
||||||
|
|
||||||
|
# -----------------------------------------------------------------------------
|
||||||
|
# arm
|
||||||
|
# -----------------------------------------------------------------------------
|
||||||
LOCAL_SRC_FILES_arm += \
|
LOCAL_SRC_FILES_arm += \
|
||||||
arm/fenv.c \
|
arm/fenv.c \
|
||||||
|
upstream-freebsd/lib/msun/src/e_sqrt.c \
|
||||||
|
upstream-freebsd/lib/msun/src/e_sqrtf.c \
|
||||||
|
upstream-freebsd/lib/msun/src/s_ceil.c \
|
||||||
|
upstream-freebsd/lib/msun/src/s_ceilf.c \
|
||||||
|
upstream-freebsd/lib/msun/src/s_fma.c \
|
||||||
|
upstream-freebsd/lib/msun/src/s_fmaf.c \
|
||||||
|
upstream-freebsd/lib/msun/src/s_floorf.c \
|
||||||
|
upstream-freebsd/lib/msun/src/s_llrint.c \
|
||||||
|
upstream-freebsd/lib/msun/src/s_llrintf.c \
|
||||||
|
upstream-freebsd/lib/msun/src/s_lrint.c \
|
||||||
|
upstream-freebsd/lib/msun/src/s_lrintf.c \
|
||||||
|
upstream-freebsd/lib/msun/src/s_rint.c \
|
||||||
|
upstream-freebsd/lib/msun/src/s_rintf.c \
|
||||||
|
upstream-freebsd/lib/msun/src/s_trunc.c \
|
||||||
|
upstream-freebsd/lib/msun/src/s_truncf.c \
|
||||||
|
|
||||||
# s_floor.S requires neon instructions.
|
# s_floor.S requires neon instructions.
|
||||||
ifdef TARGET_2ND_ARCH
|
ifdef TARGET_2ND_ARCH
|
||||||
|
@ -277,25 +282,87 @@ else
|
||||||
LOCAL_SRC_FILES_arm += arm/s_floor.S
|
LOCAL_SRC_FILES_arm += arm/s_floor.S
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
# -----------------------------------------------------------------------------
|
||||||
|
# arm64
|
||||||
|
# -----------------------------------------------------------------------------
|
||||||
LOCAL_SRC_FILES_arm64 += \
|
LOCAL_SRC_FILES_arm64 += \
|
||||||
|
arm64/ceil.S \
|
||||||
arm64/fenv.c \
|
arm64/fenv.c \
|
||||||
upstream-freebsd/lib/msun/src/s_floor.c \
|
arm64/fma.S \
|
||||||
|
arm64/floor.S \
|
||||||
|
arm64/lrint.S \
|
||||||
|
arm64/rint.S \
|
||||||
|
arm64/sqrt.S \
|
||||||
|
arm64/trunc.S \
|
||||||
|
|
||||||
LOCAL_SRC_FILES_mips += \
|
# -----------------------------------------------------------------------------
|
||||||
|
# mips
|
||||||
|
# -----------------------------------------------------------------------------
|
||||||
|
libm_mips_arch_files := \
|
||||||
mips/fenv.c \
|
mips/fenv.c \
|
||||||
|
upstream-freebsd/lib/msun/src/e_sqrt.c \
|
||||||
|
upstream-freebsd/lib/msun/src/e_sqrtf.c \
|
||||||
|
upstream-freebsd/lib/msun/src/s_ceil.c \
|
||||||
|
upstream-freebsd/lib/msun/src/s_ceilf.c \
|
||||||
|
upstream-freebsd/lib/msun/src/s_fma.c \
|
||||||
|
upstream-freebsd/lib/msun/src/s_fmaf.c \
|
||||||
upstream-freebsd/lib/msun/src/s_floor.c \
|
upstream-freebsd/lib/msun/src/s_floor.c \
|
||||||
|
upstream-freebsd/lib/msun/src/s_floorf.c \
|
||||||
|
upstream-freebsd/lib/msun/src/s_llrint.c \
|
||||||
|
upstream-freebsd/lib/msun/src/s_llrintf.c \
|
||||||
|
upstream-freebsd/lib/msun/src/s_lrint.c \
|
||||||
|
upstream-freebsd/lib/msun/src/s_lrintf.c \
|
||||||
|
upstream-freebsd/lib/msun/src/s_rint.c \
|
||||||
|
upstream-freebsd/lib/msun/src/s_rintf.c \
|
||||||
|
upstream-freebsd/lib/msun/src/s_trunc.c \
|
||||||
|
upstream-freebsd/lib/msun/src/s_truncf.c \
|
||||||
|
|
||||||
LOCAL_SRC_FILES_mips64 += \
|
LOCAL_SRC_FILES_mips += $(libm_mips_arch_files)
|
||||||
mips/fenv.c \
|
LOCAL_SRC_FILES_mips64 += $(libm_mips_arch_files)
|
||||||
upstream-freebsd/lib/msun/src/s_floor.c \
|
|
||||||
|
|
||||||
|
# -----------------------------------------------------------------------------
|
||||||
|
# x86
|
||||||
|
# -----------------------------------------------------------------------------
|
||||||
LOCAL_SRC_FILES_x86 += \
|
LOCAL_SRC_FILES_x86 += \
|
||||||
i387/fenv.c \
|
i387/fenv.c \
|
||||||
|
upstream-freebsd/lib/msun/src/e_sqrt.c \
|
||||||
|
upstream-freebsd/lib/msun/src/e_sqrtf.c \
|
||||||
|
upstream-freebsd/lib/msun/src/s_ceil.c \
|
||||||
|
upstream-freebsd/lib/msun/src/s_ceilf.c \
|
||||||
|
upstream-freebsd/lib/msun/src/s_fma.c \
|
||||||
|
upstream-freebsd/lib/msun/src/s_fmaf.c \
|
||||||
upstream-freebsd/lib/msun/src/s_floor.c \
|
upstream-freebsd/lib/msun/src/s_floor.c \
|
||||||
|
upstream-freebsd/lib/msun/src/s_floorf.c \
|
||||||
|
upstream-freebsd/lib/msun/src/s_llrint.c \
|
||||||
|
upstream-freebsd/lib/msun/src/s_llrintf.c \
|
||||||
|
upstream-freebsd/lib/msun/src/s_lrint.c \
|
||||||
|
upstream-freebsd/lib/msun/src/s_lrintf.c \
|
||||||
|
upstream-freebsd/lib/msun/src/s_rint.c \
|
||||||
|
upstream-freebsd/lib/msun/src/s_rintf.c \
|
||||||
|
upstream-freebsd/lib/msun/src/s_trunc.c \
|
||||||
|
upstream-freebsd/lib/msun/src/s_truncf.c \
|
||||||
|
|
||||||
|
# -----------------------------------------------------------------------------
|
||||||
|
# x86_64
|
||||||
|
# -----------------------------------------------------------------------------
|
||||||
LOCAL_SRC_FILES_x86_64 += \
|
LOCAL_SRC_FILES_x86_64 += \
|
||||||
amd64/fenv.c \
|
amd64/fenv.c \
|
||||||
|
upstream-freebsd/lib/msun/src/e_sqrt.c \
|
||||||
|
upstream-freebsd/lib/msun/src/e_sqrtf.c \
|
||||||
|
upstream-freebsd/lib/msun/src/s_ceil.c \
|
||||||
|
upstream-freebsd/lib/msun/src/s_ceilf.c \
|
||||||
|
upstream-freebsd/lib/msun/src/s_fma.c \
|
||||||
|
upstream-freebsd/lib/msun/src/s_fmaf.c \
|
||||||
upstream-freebsd/lib/msun/src/s_floor.c \
|
upstream-freebsd/lib/msun/src/s_floor.c \
|
||||||
|
upstream-freebsd/lib/msun/src/s_floorf.c \
|
||||||
|
upstream-freebsd/lib/msun/src/s_llrint.c \
|
||||||
|
upstream-freebsd/lib/msun/src/s_llrintf.c \
|
||||||
|
upstream-freebsd/lib/msun/src/s_lrint.c \
|
||||||
|
upstream-freebsd/lib/msun/src/s_lrintf.c \
|
||||||
|
upstream-freebsd/lib/msun/src/s_rint.c \
|
||||||
|
upstream-freebsd/lib/msun/src/s_rintf.c \
|
||||||
|
upstream-freebsd/lib/msun/src/s_trunc.c \
|
||||||
|
upstream-freebsd/lib/msun/src/s_truncf.c \
|
||||||
|
|
||||||
LOCAL_C_INCLUDES_x86 += $(LOCAL_PATH)/i387
|
LOCAL_C_INCLUDES_x86 += $(LOCAL_PATH)/i387
|
||||||
|
|
||||||
|
@ -303,7 +370,6 @@ LOCAL_C_INCLUDES += $(LOCAL_PATH)/upstream-freebsd/lib/msun/src/
|
||||||
LOCAL_C_INCLUDES_64 += $(LOCAL_PATH)/upstream-freebsd/lib/msun/ld128/
|
LOCAL_C_INCLUDES_64 += $(LOCAL_PATH)/upstream-freebsd/lib/msun/ld128/
|
||||||
|
|
||||||
LOCAL_CLANG := $(libm_clang)
|
LOCAL_CLANG := $(libm_clang)
|
||||||
LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
|
|
||||||
LOCAL_ARM_MODE := arm
|
LOCAL_ARM_MODE := arm
|
||||||
LOCAL_CFLAGS := \
|
LOCAL_CFLAGS := \
|
||||||
-DFLT_EVAL_METHOD=0 \
|
-DFLT_EVAL_METHOD=0 \
|
||||||
|
@ -340,7 +406,6 @@ include $(CLEAR_VARS)
|
||||||
|
|
||||||
LOCAL_MODULE := libm
|
LOCAL_MODULE := libm
|
||||||
LOCAL_CLANG := $(libm_clang)
|
LOCAL_CLANG := $(libm_clang)
|
||||||
LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
|
|
||||||
LOCAL_SYSTEM_SHARED_LIBRARIES := libc
|
LOCAL_SYSTEM_SHARED_LIBRARIES := libc
|
||||||
LOCAL_WHOLE_STATIC_LIBRARIES := libm
|
LOCAL_WHOLE_STATIC_LIBRARIES := libm
|
||||||
|
|
||||||
|
|
27
libm/arm64/ceil.S
Normal file
27
libm/arm64/ceil.S
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2015, The Android Open Source Project
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <private/bionic_asm.h>
|
||||||
|
|
||||||
|
ENTRY(ceil)
|
||||||
|
frintP d0, d0
|
||||||
|
ret
|
||||||
|
END(ceil)
|
||||||
|
|
||||||
|
ENTRY(ceilf)
|
||||||
|
frintP s0, s0
|
||||||
|
ret
|
||||||
|
END(ceilf)
|
27
libm/arm64/floor.S
Normal file
27
libm/arm64/floor.S
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2015, The Android Open Source Project
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <private/bionic_asm.h>
|
||||||
|
|
||||||
|
ENTRY(floor)
|
||||||
|
frintM d0, d0
|
||||||
|
ret
|
||||||
|
END(floor)
|
||||||
|
|
||||||
|
ENTRY(floorf)
|
||||||
|
frintM s0, s0
|
||||||
|
ret
|
||||||
|
END(floorf)
|
27
libm/arm64/fma.S
Normal file
27
libm/arm64/fma.S
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2015, The Android Open Source Project
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <private/bionic_asm.h>
|
||||||
|
|
||||||
|
ENTRY(fma)
|
||||||
|
fmadd d0, d0, d1, d2
|
||||||
|
ret
|
||||||
|
END(fma)
|
||||||
|
|
||||||
|
ENTRY(fmaf)
|
||||||
|
fmadd s0, s0, s1, s2
|
||||||
|
ret
|
||||||
|
END(fmaf)
|
36
libm/arm64/lrint.S
Normal file
36
libm/arm64/lrint.S
Normal file
|
@ -0,0 +1,36 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2015, The Android Open Source Project
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <private/bionic_asm.h>
|
||||||
|
|
||||||
|
ENTRY(lrint)
|
||||||
|
frintX d0, d0
|
||||||
|
fcvtzs x0, d0
|
||||||
|
ret
|
||||||
|
END(lrint)
|
||||||
|
|
||||||
|
ENTRY(lrintf)
|
||||||
|
frintX s0, s0
|
||||||
|
fcvtzs x0, s0
|
||||||
|
ret
|
||||||
|
END(lrintf)
|
||||||
|
|
||||||
|
// sizeof(long) and sizeof(long long) are the same for aarch64
|
||||||
|
.weak llrint
|
||||||
|
.equ llrint,lrint
|
||||||
|
|
||||||
|
.weak llrintf
|
||||||
|
.equ llrintf,lrintf
|
27
libm/arm64/rint.S
Normal file
27
libm/arm64/rint.S
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2015, The Android Open Source Project
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <private/bionic_asm.h>
|
||||||
|
|
||||||
|
ENTRY(rint)
|
||||||
|
frintX d0, d0
|
||||||
|
ret
|
||||||
|
END(rint)
|
||||||
|
|
||||||
|
ENTRY(rintf)
|
||||||
|
frintX s0, s0
|
||||||
|
ret
|
||||||
|
END(rintf)
|
27
libm/arm64/sqrt.S
Normal file
27
libm/arm64/sqrt.S
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2015, The Android Open Source Project
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <private/bionic_asm.h>
|
||||||
|
|
||||||
|
ENTRY(sqrt)
|
||||||
|
fsqrt d0, d0
|
||||||
|
ret
|
||||||
|
END(sqrt)
|
||||||
|
|
||||||
|
ENTRY(sqrtf)
|
||||||
|
fsqrt s0, s0
|
||||||
|
ret
|
||||||
|
END(sqrtf)
|
27
libm/arm64/trunc.S
Normal file
27
libm/arm64/trunc.S
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2015, The Android Open Source Project
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <private/bionic_asm.h>
|
||||||
|
|
||||||
|
ENTRY(trunc)
|
||||||
|
frintZ d0, d0
|
||||||
|
ret
|
||||||
|
END(trunc)
|
||||||
|
|
||||||
|
ENTRY(truncf)
|
||||||
|
frintZ s0, s0
|
||||||
|
ret
|
||||||
|
END(truncf)
|
Loading…
Reference in a new issue