Use clang's builtins for sqrt()/sqrtf() and lrint() family.
Bug: https://github.com/google/android-riscv64/issues/12
Test: llvm-objdump
Change-Id: I2b5647ca245b28433faabe633d970ea2fd69c763
diff --git a/libm/builtins.cpp b/libm/builtins.cpp
index 58cd81d..256436e 100644
--- a/libm/builtins.cpp
+++ b/libm/builtins.cpp
@@ -47,6 +47,11 @@
float fminf(float x, float y) { return __builtin_fminf(x, y); }
double fmin(double x, double y) { return __builtin_fmin(x, y); }
+long lrint(double x) { return __builtin_lrint(x); }
+long lrintf(float x) { return __builtin_lrintf(x); }
+long long llrint(double x) { return __builtin_llrint(x); }
+long long llrintf(float x) { return __builtin_llrintf(x); }
+
long lround(double x) { return __builtin_lround(x); }
long lroundf(float x) { return __builtin_lroundf(x); }
long long llround(double x) { return __builtin_llround(x); }
@@ -59,7 +64,14 @@
float roundf(float x) { return __builtin_roundf(x); }
double round(double x) { return __builtin_round(x); }
+#endif
+#if defined(__aarch64__) || defined(__riscv)
+float sqrtf(float x) { return __builtin_sqrtf(x); }
+double sqrt(double x) { return __builtin_sqrt(x); }
+#endif
+
+#if defined(__aarch64__)
float truncf(float x) { return __builtin_truncf(x); }
double trunc(double x) { return __builtin_trunc(x); }
#endif