platform_bionic/libm
Elliott Hughes 079f6fd857 libm: admit we use SSE4.1 in x86's libm.
Although the NDK ABI for x86 doesn't include SSE4.1, it's needed for
roundss/roundsd, and we've used that (via hand-written assembler) in the
x86 libm since Android M. We've recently switched to using compiler
builtins to generate the assembler instead, and without allowing the
compiler to use SSE4.1, it can't (resulting in infinite recursion as
these functions defer to themselves for an answer).

Given that the x86 libm.so has required SSE4.1 for 8 years at this
point without anyone noticing, let alone caring, let's just retain the
status quo rather.

(Despite the fact that this caused boot failures for cf_x86, I didn't
notice when testing the 32-bit libm.so from a cf_x86_64 build because our
x86-64 ABI *does* include SSE4.1, and the BoardConfig.mk for cf_x86_64
explicitly chooses "silvermont" as the 32-bit cpu variant, implicitly
enabling SSE4.1.)

Test: llvm-objdump -d on a cf_x86 build
Change-Id: I9392d3699057fcca96677de52f8d36d377b1719a
2023-02-10 16:42:50 +00:00
..
amd64 Move math headers in with the other headers. 2016-04-02 08:36:33 -07:00
arm libm: remove hand-written assembler for arm32 too. 2023-02-03 01:21:12 +00:00
arm64 Use clang's builtins for sqrt()/sqrtf() and lrint() family. 2023-02-01 02:05:24 +00:00
i387 Make it possible to build bionic with -I instead of -isystem. 2016-07-22 13:12:53 -07:00
riscv64 Use clang's builtins for sqrt()/sqrtf() and lrint() family. 2023-02-01 02:05:24 +00:00
upstream-freebsd Remove fallback C sqrt/sqrtf. 2022-10-28 20:18:17 +00:00
upstream-netbsd Fully disable clang format where needed. 2020-01-30 08:10:17 -08:00
x86 Let clang generate most of our assembler for x86/x86-64 too. 2023-02-07 01:22:29 +00:00
x86_64 Let clang generate most of our assembler for x86/x86-64 too. 2023-02-07 01:22:29 +00:00
Android.bp libm: admit we use SSE4.1 in x86's libm. 2023-02-10 16:42:50 +00:00
builtins.cpp Fix floor()/floorl() on armv7 arm32 devices. 2023-02-09 06:54:18 +00:00
digittoint.c Upgrade libm. 2013-02-01 14:51:19 -08:00
fake_long_double.c Move the copysign() family over to builtins all the time. 2023-02-08 01:26:43 +00:00
fenv-access.h [libm] Set pragma FENV_EACCESS for x86_64, i386 2021-08-20 14:49:17 -07:00
fpmath.h Switch the rest of our internal headers to #pragma once. 2018-02-13 14:27:17 -08:00
freebsd-compat.h libm: sync with upstream. 2022-01-12 17:52:15 -08:00
libm.map.txt Clean up the math headers. 2020-02-11 08:46:29 -08:00
MODULE_LICENSE_BSD_LIKE Initial Contribution 2008-10-21 07:00:00 -07:00
NOTICE libm: remove hand-written assembler for arm32 too. 2023-02-03 01:21:12 +00:00
signbit.cpp Remove some legacy declarations from <math.h>. 2017-10-19 14:15:31 -07:00
significandl.c Clean-up _fpmath and fake_long_doubles 2014-04-23 19:03:06 +01:00