Merge "Add the timestamps for each alloc data"
diff --git a/README.md b/README.md
index 85c8190..8d8e583 100644
--- a/README.md
+++ b/README.md
@@ -246,6 +246,7 @@
### Debugging tips
1. Key error for a new codename in libc/libc.map.txt
+
e.g. what you add in libc/libc.map.txt is:
```
@@ -271,6 +272,7 @@
Solution: Ask in the team and wait for the update.
2. Use of undeclared identifier of the new system call in the test
+
Possible Solution: Check everything ready in the files mentioned above first.
Maybe glibc matters. Follow the example and try #if defined(__GLIBC__).
@@ -323,7 +325,7 @@
Note that we use our own custom gtest runner that offers a superset of the
options documented at
-<https://github.com/google/googletest/blob/master/googletest/docs/AdvancedGuide.md#running-test-programs-advanced-options>,
+<https://github.com/google/googletest/blob/main/docs/advanced.md#running-test-programs-advanced-options>,
in particular for test isolation and parallelism (both on by default).
### Device tests via CTS
diff --git a/TEST_MAPPING b/TEST_MAPPING
index 18e8bbc..f56e16a 100644
--- a/TEST_MAPPING
+++ b/TEST_MAPPING
@@ -83,5 +83,10 @@
{
"name": "toybox-tests"
}
+ ],
+ "kernel-presubmit": [
+ {
+ "name": "CtsBionicTestCases"
+ }
]
}
diff --git a/benchmarks/Android.bp b/benchmarks/Android.bp
index 5dfc38f..17d2d68 100644
--- a/benchmarks/Android.bp
+++ b/benchmarks/Android.bp
@@ -156,3 +156,23 @@
],
data: ["test_suites/*"],
}
+
+cc_binary {
+ name: "malloc-rss-benchmark",
+ srcs: [
+ "malloc_rss_benchmark.cpp",
+ ],
+
+ shared_libs: [
+ "libbase",
+ ],
+
+ target: {
+ android: {
+ static_libs: [
+ "libmeminfo",
+ "libprocinfo",
+ ],
+ },
+ },
+}
diff --git a/benchmarks/NOTICE b/benchmarks/NOTICE
index f720e23..e46a624 100644
--- a/benchmarks/NOTICE
+++ b/benchmarks/NOTICE
@@ -178,3 +178,31 @@
-------------------------------------------------------------------
+Copyright (C) 2022 The Android Open Source Project
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in
+ the documentation and/or other materials provided with the
+ distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+
+-------------------------------------------------------------------
+
diff --git a/benchmarks/linker_relocation/include/linker_reloc_bench_asm.h b/benchmarks/linker_relocation/include/linker_reloc_bench_asm.h
index 2ff3d81..885e47f 100644
--- a/benchmarks/linker_relocation/include/linker_reloc_bench_asm.h
+++ b/benchmarks/linker_relocation/include/linker_reloc_bench_asm.h
@@ -42,6 +42,15 @@
#define DATA_WORD(val) .quad val
#define MAIN .globl main; main: mov w0, wzr; ret
+#elif defined(__riscv)
+
+// No `lga` in clang unless https://reviews.llvm.org/D107278 lands.
+// `la` is equivalent when using PIC (which we do) though.
+#define GOT_RELOC(sym) la a0, sym
+#define CALL(sym) call sym@plt
+#define DATA_WORD(val) .quad val
+#define MAIN .globl main; main: li a0, 0; ret
+
#elif defined(__i386__)
#define GOT_RELOC(sym) .long sym@got
diff --git a/benchmarks/malloc_rss_benchmark.cpp b/benchmarks/malloc_rss_benchmark.cpp
new file mode 100644
index 0000000..58f61d9
--- /dev/null
+++ b/benchmarks/malloc_rss_benchmark.cpp
@@ -0,0 +1,165 @@
+/*
+ * Copyright (C) 2022 The Android Open Source Project
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#include <malloc.h>
+#include <string.h>
+#include <unistd.h>
+
+#include <algorithm>
+#include <chrono>
+#include <iostream>
+#include <memory>
+#include <random>
+#include <thread>
+#include <vector>
+
+#include <android-base/strings.h>
+#if defined(__BIONIC__)
+#include <malloc.h>
+#include <meminfo/procmeminfo.h>
+#include <procinfo/process_map.h>
+#endif
+
+constexpr size_t kMaxThreads = 8;
+// The max number of bytes that can be allocated by a thread. Note that each
+// allocator may have its own limitation on each size allocation. For example,
+// Scudo has a 256 MB limit for each size-class in the primary allocator. The
+// amount of memory allocated should not exceed the limit in each allocator.
+constexpr size_t kMaxBytes = 1 << 24;
+constexpr size_t kMaxLen = kMaxBytes;
+void* MemPool[kMaxThreads][kMaxLen];
+
+void dirtyMem(void* ptr, size_t bytes) {
+ memset(ptr, 1U, bytes);
+}
+
+void ThreadTask(int id, size_t allocSize) {
+ // In the following, we will first allocate blocks with kMaxBytes of memory
+ // and release all of them in random order. In the end, we will do another
+ // round of allocations until it reaches 1/10 kMaxBytes.
+
+ // Total number of blocks
+ const size_t maxCounts = kMaxBytes / allocSize;
+ // The number of blocks in the end
+ const size_t finalCounts = maxCounts / 10;
+
+ for (size_t i = 0; i < maxCounts; ++i) {
+ MemPool[id][i] = malloc(allocSize);
+ if (MemPool[id][i] == 0) {
+ std::cout << "Allocation failure."
+ "Please consider reducing the number of threads"
+ << std::endl;
+ exit(1);
+ }
+ dirtyMem(MemPool[id][i], allocSize);
+ }
+
+ // Each allocator may apply different strategies to manage the free blocks and
+ // each strategy may have different impacts on future memory usage. For
+ // example, managing free blocks in simple FIFO list may have its memory usage
+ // highly correlated with the blocks releasing pattern. Therefore, release the
+ // blocks in random order to observe the impact of free blocks handling.
+ unsigned seed = std::chrono::system_clock::now().time_since_epoch().count();
+ std::shuffle(MemPool[id], MemPool[id] + maxCounts, std::default_random_engine(seed));
+ for (size_t i = 0; i < maxCounts; ++i) {
+ free(MemPool[id][i]);
+ MemPool[id][i] = nullptr;
+ }
+
+ for (size_t i = 0; i < finalCounts; ++i) {
+ MemPool[id][i] = malloc(allocSize);
+ dirtyMem(MemPool[id][i], allocSize);
+ }
+}
+
+void StressSizeClass(size_t numThreads, size_t allocSize) {
+ // We would like to see the minimum memory usage under aggressive page
+ // releasing.
+ mallopt(M_DECAY_TIME, 0);
+
+ std::thread* threads[kMaxThreads];
+ for (size_t i = 0; i < numThreads; ++i) threads[i] = new std::thread(ThreadTask, i, allocSize);
+
+ for (size_t i = 0; i < numThreads; ++i) {
+ threads[i]->join();
+ delete threads[i];
+ }
+
+ // Do an explicit purge to ensure we will be more likely to get the actual
+ // in-use memory.
+ mallopt(M_PURGE, 0);
+
+ android::meminfo::ProcMemInfo proc_mem(getpid());
+ const std::vector<android::meminfo::Vma>& maps = proc_mem.MapsWithoutUsageStats();
+ uint64_t rss_bytes = 0;
+ uint64_t vss_bytes = 0;
+
+ for (auto& vma : maps) {
+ if (vma.name == "[anon:libc_malloc]" || android::base::StartsWith(vma.name, "[anon:scudo:") ||
+ android::base::StartsWith(vma.name, "[anon:GWP-ASan")) {
+ android::meminfo::Vma update_vma(vma);
+ if (!proc_mem.FillInVmaStats(update_vma)) {
+ std::cout << "Failed to parse VMA" << std::endl;
+ exit(1);
+ }
+ rss_bytes += update_vma.usage.rss;
+ vss_bytes += update_vma.usage.vss;
+ }
+ }
+
+ std::cout << "RSS: " << rss_bytes / (1024.0 * 1024.0) << " MB" << std::endl;
+ std::cout << "VSS: " << vss_bytes / (1024.0 * 1024.0) << " MB" << std::endl;
+
+ for (size_t i = 0; i < numThreads; ++i) {
+ for (size_t j = 0; j < kMaxLen; ++j) free(MemPool[i][j]);
+ }
+}
+
+int main(int argc, char* argv[]) {
+ if (argc != 3) {
+ std::cerr << "usage: " << argv[0] << " $NUM_THREADS $ALLOC_SIZE" << std::endl;
+ return 1;
+ }
+
+ size_t numThreads = atoi(argv[1]);
+ size_t allocSize = atoi(argv[2]);
+
+ if (numThreads == 0 || allocSize == 0) {
+ std::cerr << "Please provide valid $NUM_THREADS and $ALLOC_SIZE" << std::endl;
+ return 1;
+ }
+
+ if (numThreads > kMaxThreads) {
+ std::cerr << "The max number of threads is " << kMaxThreads << std::endl;
+ return 1;
+ }
+
+ StressSizeClass(numThreads, allocSize);
+
+ return 0;
+}
diff --git a/docs/status.md b/docs/status.md
index 20a1309..5d2603a 100644
--- a/docs/status.md
+++ b/docs/status.md
@@ -36,13 +36,17 @@
* `<monetary.h>`. See
[discussion](https://github.com/android/ndk/issues/1182).
* `<wordexp.h>`
+ * Locales. Although bionic contains the various `_l()` functions, the only
+ locale supported is a UTF-8 C/POSIX locale. Most of the POSIX APIs are
+ insufficient to support the wide range of languages used by Android users,
+ and apps should use icu4c (or do their i18n work in Java) instead.
+ * Robust mutexes. See
+ [discussion](https://github.com/android/ndk/issues/1181).
* Thread cancellation (`pthread_cancel`). Unlikely to ever be implemented
because of the difficulty and cost of implementing it, and the difficulty
of using it correctly. See
[This is why we can't have safe cancellation points](https://lwn.net/Articles/683118/)
for more about thread cancellation.
- * Robust mutexes. See
- [discussion](https://github.com/android/ndk/issues/1181).
Run `./libc/tools/check-symbols-glibc.py` in bionic/ for the current
list of POSIX functions implemented by glibc but not by bionic.
diff --git a/libc/Android.bp b/libc/Android.bp
index 6042929..6442bc9 100644
--- a/libc/Android.bp
+++ b/libc/Android.bp
@@ -248,6 +248,7 @@
cc_library_static {
defaults: ["libc_defaults"],
+ tidy_disabled_srcs: ["upstream-*/**/*.c"],
srcs: [
"tzcode/**/*.c",
"tzcode/bionic.cpp",
@@ -291,6 +292,7 @@
cc_library_static {
defaults: ["libc_defaults"],
+ tidy_disabled_srcs: ["upstream-*/**/*.c"],
srcs: [
"dns/**/*.c*",
@@ -326,6 +328,7 @@
cc_library_static {
defaults: ["libc_defaults"],
+ tidy_disabled_srcs: ["upstream-*/**/*.c"],
srcs: [
"upstream-freebsd/lib/libc/gen/ldexp.c",
"upstream-freebsd/lib/libc/stdlib/getopt_long.c",
@@ -363,11 +366,6 @@
"upstream-freebsd/lib/libc/string/wmemset.c",
],
arch: {
- arm64: {
- exclude_srcs: [
- "upstream-freebsd/lib/libc/string/wmemmove.c",
- ],
- },
x86: {
exclude_srcs: [
"upstream-freebsd/lib/libc/string/wcschr.c",
@@ -397,6 +395,7 @@
cc_library_static {
defaults: ["libc_defaults"],
+ tidy_disabled_srcs: ["upstream-*/**/*.c"],
srcs: [
"upstream-freebsd/lib/libc/gen/glob.c",
],
@@ -424,6 +423,7 @@
cc_library_static {
defaults: ["libc_defaults"],
+ tidy_disabled_srcs: ["upstream-*/**/*.c"],
srcs: [
"upstream-netbsd/common/lib/libc/stdlib/random.c",
"upstream-netbsd/lib/libc/gen/nice.c",
@@ -481,6 +481,7 @@
cc_library_static {
name: "libc_openbsd_ndk",
defaults: ["libc_defaults"],
+ tidy_disabled_srcs: ["upstream-*/**/*.c"],
srcs: [
"upstream-openbsd/lib/libc/gen/alarm.c",
"upstream-openbsd/lib/libc/gen/ctype_.c",
@@ -599,6 +600,7 @@
cc_library_static {
name: "libc_openbsd_large_stack",
defaults: ["libc_defaults"],
+ tidy_disabled_srcs: ["upstream-*/**/*.c"],
srcs: [
"stdio/vfprintf.cpp",
"stdio/vfwprintf.cpp",
@@ -628,6 +630,7 @@
// automatically included.
cc_library_static {
defaults: ["libc_defaults"],
+ tidy_disabled_srcs: ["upstream-*/**/*.c"],
srcs: [
// These two depend on getentropy, which isn't in libc_ndk.a.
"upstream-openbsd/lib/libc/crypt/arc4random.c",
@@ -727,6 +730,7 @@
cc_library_static {
defaults: ["libc_defaults"],
+ tidy_disabled_srcs: ["upstream-*/**/*.c"],
srcs: [
"upstream-openbsd/android/gdtoa_support.cpp",
"upstream-openbsd/lib/libc/gdtoa/dmisc.c",
@@ -787,7 +791,6 @@
arch: {
arm: {
cflags: [
- "-DNO___MEMCPY_CHK",
"-DRENAME___STRCAT_CHK",
"-DRENAME___STRCPY_CHK",
],
@@ -814,9 +817,9 @@
],
},
arm64: {
- cflags: ["-DNO___MEMCPY_CHK"],
srcs: [
- "arch-arm64/generic/bionic/__memcpy_chk.S",
+ "arch-arm64/string/__memcpy_chk.S",
+ "arch-arm64/string/__memset_chk.S",
],
},
},
@@ -900,11 +903,6 @@
},
arm64: {
srcs: [
- "arch-arm64/generic/bionic/memcpy.S",
- "arch-arm64/generic/bionic/memmove.S",
- "arch-arm64/generic/bionic/memset.S",
- "arch-arm64/generic/bionic/wmemmove.S",
-
"arch-arm64/bionic/__bionic_clone.S",
"arch-arm64/bionic/_exit_with_stack_teardown.S",
"arch-arm64/bionic/setjmp.S",
@@ -912,7 +910,6 @@
"arch-arm64/bionic/vfork.S",
],
exclude_srcs: [
- "bionic/__memcpy_chk.cpp",
"bionic/strchr.cpp",
"bionic/strchrnul.cpp",
"bionic/strnlen.c",
@@ -2272,6 +2269,32 @@
}
// ========================================================
+// libc dependencies for baremetal Rust projects.
+// ========================================================
+
+cc_library_static {
+ name: "librust_baremetal",
+ header_libs: ["libc_headers"],
+ include_dirs: [
+ "bionic/libc/async_safe/include",
+ "bionic/libc/platform",
+ ],
+ cflags: [
+ "-Wall",
+ "-Werror",
+ ],
+ whole_static_libs: [
+ "libarm-optimized-routines-mem",
+ ],
+ system_shared_libs: [],
+ nocrt: true,
+ stl: "none",
+ visibility: [
+ "//packages/modules/Virtualization/vmbase",
+ ],
+}
+
+// ========================================================
// NDK headers.
// ========================================================
@@ -2793,6 +2816,7 @@
cc_library_host_static {
name: "libfts",
+ tidy_disabled_srcs: ["upstream-*/**/*.c"],
srcs: [
"bionic/fts.c",
"upstream-openbsd/lib/libc/stdlib/recallocarray.c",
@@ -2835,6 +2859,7 @@
cc_library_host_static {
name: "libb64",
visibility: ["//external/musl"],
+ tidy_disabled_srcs: ["upstream-*/**/*.c"],
srcs: ["upstream-openbsd/lib/libc/net/base64.c"],
export_include_dirs: ["b64/include"],
local_include_dirs: [
diff --git a/libc/NOTICE b/libc/NOTICE
index 51f43f1..332885d 100644
--- a/libc/NOTICE
+++ b/libc/NOTICE
@@ -2439,9 +2439,15 @@
-------------------------------------------------------------------
+Copyright (c) 1992, 1993, 1994 Henry Spencer.
Copyright (c) 1992, 1993, 1994
The Regents of the University of California. All rights reserved.
+Copyright (c) 2011 The FreeBSD Foundation
+All rights reserved.
+Portions of this software were developed by David Chisnall
+under sponsorship from the FreeBSD Foundation.
+
This code is derived from software contributed to Berkeley by
Henry Spencer.
@@ -2472,6 +2478,8 @@
-------------------------------------------------------------------
Copyright (c) 1992, 1993, 1994 Henry Spencer.
+Copyright (c) 1992, 1993, 1994
+ The Regents of the University of California. All rights reserved.
This code is derived from software contributed to Berkeley by
Henry Spencer.
@@ -2484,11 +2492,7 @@
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
-3. All advertising materials mentioning features or use of this software
- must display the following acknowledgement:
- This product includes software developed by the University of
- California, Berkeley and its contributors.
-4. Neither the name of the University nor the names of its contributors
+3. Neither the name of the University nor the names of its contributors
may be used to endorse or promote products derived from this software
without specific prior written permission.
@@ -4298,33 +4302,6 @@
-------------------------------------------------------------------
-Copyright (c) 2012-2013, Linaro Limited
- All rights reserved.
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are met:
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
- * Neither the name of the Linaro nor the
- names of its contributors may be used to endorse or promote products
- derived from this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-
--------------------------------------------------------------------
-
Copyright (c) 2012-2014 ARM Ltd
All rights reserved.
@@ -4426,33 +4403,6 @@
-------------------------------------------------------------------
-Copyright (c) 2013, Linaro Limited
- All rights reserved.
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are met:
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
- * Neither the name of the Linaro nor the
- names of its contributors may be used to endorse or promote products
- derived from this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-
--------------------------------------------------------------------
-
Copyright (c) 2014, Intel Corporation
All rights reserved.
@@ -4483,62 +4433,6 @@
-------------------------------------------------------------------
-Copyright (c) 2014, Linaro Limited
- All rights reserved.
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are met:
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
- * Neither the name of the Linaro nor the
- names of its contributors may be used to endorse or promote products
- derived from this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
--------------------------------------------------------------------
-
-Copyright (c) 2015 ARM Ltd
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-1. Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-2. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-3. The name of the company may not be used to endorse or promote
- products derived from this software without specific prior written
- permission.
-
-THIS SOFTWARE IS PROVIDED BY ARM LTD ``AS IS'' AND ANY EXPRESS OR IMPLIED
-WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
-IN NO EVENT SHALL ARM LTD BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
-TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
--------------------------------------------------------------------
-
Copyright (c) 2015 Joerg Sonnenberger <joerg@NetBSD.org>.
All rights reserved.
diff --git a/libc/SECCOMP_ALLOWLIST_APP.TXT b/libc/SECCOMP_ALLOWLIST_APP.TXT
index 39c6c53..7e1ecde 100644
--- a/libc/SECCOMP_ALLOWLIST_APP.TXT
+++ b/libc/SECCOMP_ALLOWLIST_APP.TXT
@@ -59,4 +59,4 @@
# Not used by bionic in U because riscv64 doesn't have it, but still
# used by legacy apps (http://b/254179267).
-int renameat(int, const char*, int, const char*) arm,x86,arm64,x86-64
+int renameat(int, const char*, int, const char*) arm,x86,arm64,x86_64
diff --git a/libc/SECCOMP_ALLOWLIST_COMMON.TXT b/libc/SECCOMP_ALLOWLIST_COMMON.TXT
index a4218ee..efbf28b 100644
--- a/libc/SECCOMP_ALLOWLIST_COMMON.TXT
+++ b/libc/SECCOMP_ALLOWLIST_COMMON.TXT
@@ -3,60 +3,60 @@
#
# This file is processed by a python script named genseccomp.py.
-# syscalls needed to boot android
-int pivot_root:pivot_root(const char *new_root, const char *put_old) lp64
-int ioprio_get:ioprio_get(int which, int who) lp64
-int ioprio_set:ioprio_set(int which, int who, int ioprio) lp64
-pid_t gettid:gettid() all
-int futex:futex(int *uaddr, int futex_op, int val, const struct timespec *timeout, int *uaddr2, int val3) all
-int clone:clone(int (*fn)(void *), void *child_stack, int flags, void *arg, ..) all
-int sigreturn:sigreturn(unsigned long __unused) lp32
-int rt_sigreturn:rt_sigreturn(unsigned long __unused) all
-int rt_tgsigqueueinfo:int rt_tgsigqueueinfo(pid_t tgid, pid_t tid, int sig, siginfo_t *uinfo) all
-int restart_syscall:int restart_syscall() all
+# Syscalls needed to boot android
+int pivot_root(const char*, const char*) lp64
+int ioprio_get(int, int) lp64
+int ioprio_set(int, int, int) lp64
-# vfork is used by java.lang.ProcessBuilder
-pid_t vfork:vfork() arm,x86,x86_64
+# Syscalls used internally by bionic, but not exposed directly.
+pid_t gettid() all
+int futex(int*, int, int, const timespec*, int*, int) all
+int clone(int (*)(void*), void*, int, void*, ...) all
+int sigreturn(unsigned long) lp32
+int rt_sigreturn(unsigned long) all
+int rt_tgsigqueueinfo(pid_t, pid_t, int, siginfo_t*) all
+int restart_syscall() all
-# Needed for performance tools
-int perf_event_open:perf_event_open(struct perf_event_attr *attr, pid_t pid, int cpu, int group_fd, unsigned long flags) all
+# vfork is used by bionic (and java.lang.ProcessBuilder) on some
+# architectures. (The others use clone(2) directly instead.)
+pid_t vfork() arm,x86,x86_64
-# Needed for strace
-int tkill:tkill(int tid, int sig) all
+# Needed for performance tools.
+int perf_event_open(perf_event_attr*, pid_t, int, int, unsigned long) all
-# b/34763393
-int seccomp:seccomp(unsigned int operation, unsigned int flags, void *args) all
+# Needed for strace.
+int tkill(int, int) all
-# Needed by sanitizers (b/34606909, b/136777266).
-int open:open(const char*, int, ...) arm,x86,x86_64
-int stat64:stat64(const char*, struct stat64*) arm,x86
-ssize_t readlink:readlink(const char*, char*, size_t) arm,x86,x86_64
-# Needed by ubsan in T? (http://b/229989971)
-int stat(const char*, struct stat*) arm,x86,x86_64
+# Needed for a CTS test of seccomp (b/34763393).
+int seccomp(unsigned, unsigned, void*) all
+
+# TODO: remove these now we've updated the toolchain (http://b/229989971).
+int open(const char*, int, ...) arm,x86,x86_64
+int stat64(const char*, stat64*) arm,x86
+ssize_t readlink(const char*, char*, size_t) arm,x86,x86_64
+int stat(const char*, stat*) arm,x86,x86_64
#
-# Useful new syscalls which we don't yet use in bionic.
+# (Potentially) useful new syscalls which we don't yet use in bionic.
#
# Since Linux 2.5, not in glibc.
-int io_setup(unsigned nr, aio_context_t *ctxp) all
-int io_destroy(aio_context_t ctx) all
-int io_submit(aio_context_t ctx, long nr, struct iocb **iocbpp) all
-int io_getevents(aio_context_t ctx, long min_nr, long max_nr, struct io_event *events, struct timespec *timeout) all
-int io_cancel(aio_context_t ctx, struct iocb *, struct io_event *result) all
+int io_setup(unsigned, aio_context_t*) all
+int io_destroy(aio_context_t) all
+int io_submit(aio_context_t, long, iocb**) all
+int io_getevents(aio_context_t, long, long, io_event*, timespec*) all
+int io_cancel(aio_context_t, iocb*, io_event*) all
# Since Linux 3.14, not in glibc.
-int sched_getattr(pid_t pid, struct sched_attr* attr, unsigned int flags) all
-int sched_setattr(pid_t pid, struct sched_attr* attr, unsigned int size, unsigned int flags) all
+int sched_getattr(pid_t, sched_attr*, unsigned) all
+int sched_setattr(pid_t, sched_attr*, unsigned, unsigned) all
# Since Linux 3.19, not in glibc (and not really needed to implement fexecve).
-int execveat(int dirfd, const char* pathname, char* const* argv, char* const* envp, int flags) all
+int execveat(int, const char*, char* const*, char* const*, int) all
# Since Linux 4.3, not in glibc. Probed for and conditionally used by ART.
-int membarrier(int cmd, int flags) all
-# Since Linux 4.5, glibc 2.27.
-ssize_t copy_file_range(int fd_in, loff_t* off_in, int fd_out, loff_t* off_out, size_t len, unsigned int flags) all
-# Since Linux 4.6, glibc 2.26.
-ssize_t preadv2(int fd, const struct iovec* iov, int iovcnt, off_t offset, int flags) all
-ssize_t pwritev2(int fd, const struct iovec* iov, int iovcnt, off_t offset, int flags) all
-# Since Linux 5.1, not in glibc.
+int membarrier(int, int) all
+# Since Linux 5.1, not in glibc. Not used by bionic, and not likely ever
+# to be (because the last thing anyone needs is a new 32-bit ABI in the
+# 2020s!) but http://b/138781460 showed cuttlefish needed at least the
+# clock_gettime64 syscall.
int clock_gettime64(clockid_t, timespec64*) lp32
int clock_settime64(clockid_t, const timespec64*) lp32
int clock_adjtime64(clockid_t, timex64*) lp32
@@ -70,7 +70,6 @@
int pselect6_time64(int, fd_set*, fd_set*, timespec64*, void*) lp32
int ppoll_time64(pollfd*, unsigned int, timespec64*, const sigset64_t*, size_t) lp32
int recvmmsg_time64(int, mmsghdr*, unsigned int, int, const timespec64*) lp32
-int semtimedop_time64(int, sembuf*, size_t, const timespec64*) lp32
int rt_sigtimedwait_time64(const sigset64_t*, siginfo_t*, const timespec64*, size_t) lp32
int futex_time64(int*, int, int, const timespec64*, int*, int) lp32
int sched_rr_get_interval_time64(pid_t, timespec64*) lp32
diff --git a/libc/arch-arm64/dynamic_function_dispatch.cpp b/libc/arch-arm64/dynamic_function_dispatch.cpp
index 83e5ca4..bbd4218 100644
--- a/libc/arch-arm64/dynamic_function_dispatch.cpp
+++ b/libc/arch-arm64/dynamic_function_dispatch.cpp
@@ -41,6 +41,24 @@
}
}
+typedef void* memcpy_func(void*, const void*, size_t);
+DEFINE_IFUNC_FOR(memcpy) {
+ if (arg->_hwcap & HWCAP_ASIMD) {
+ RETURN_FUNC(memcpy_func, __memcpy_aarch64_simd);
+ } else {
+ RETURN_FUNC(memcpy_func, __memcpy_aarch64);
+ }
+}
+
+typedef void* memmove_func(void*, const void*, size_t);
+DEFINE_IFUNC_FOR(memmove) {
+ if (arg->_hwcap & HWCAP_ASIMD) {
+ RETURN_FUNC(memmove_func, __memmove_aarch64_simd);
+ } else {
+ RETURN_FUNC(memmove_func, __memmove_aarch64);
+ }
+}
+
typedef int stpcpy_func(char*, const char*);
DEFINE_IFUNC_FOR(stpcpy) {
if (arg->_hwcap2 & HWCAP2_MTE) {
diff --git a/libc/arch-arm64/generic/bionic/memcpy_base.S b/libc/arch-arm64/generic/bionic/memcpy_base.S
deleted file mode 100644
index f850624..0000000
--- a/libc/arch-arm64/generic/bionic/memcpy_base.S
+++ /dev/null
@@ -1,217 +0,0 @@
-/* Copyright (c) 2012-2013, Linaro Limited
- All rights reserved.
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are met:
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
- * Neither the name of the Linaro nor the
- names of its contributors may be used to endorse or promote products
- derived from this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */
-
-/*
- * Copyright (c) 2015 ARM Ltd
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. The name of the company may not be used to endorse or promote
- * products derived from this software without specific prior written
- * permission.
- *
- * THIS SOFTWARE IS PROVIDED BY ARM LTD ``AS IS'' AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- * IN NO EVENT SHALL ARM LTD BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
- * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-/* Assumptions:
- *
- * ARMv8-a, AArch64, unaligned accesses.
- *
- */
-
-#include <private/bionic_asm.h>
-
-#define dstin x0
-#define src x1
-#define count x2
-#define dst x3
-#define srcend x4
-#define dstend x5
-#define A_l x6
-#define A_lw w6
-#define A_h x7
-#define A_hw w7
-#define B_l x8
-#define B_lw w8
-#define B_h x9
-#define C_l x10
-#define C_h x11
-#define D_l x12
-#define D_h x13
-#define E_l src
-#define E_h count
-#define F_l srcend
-#define F_h dst
-#define tmp1 x9
-
-#define L(l) .L ## l
-
-/* Copies are split into 3 main cases: small copies of up to 16 bytes,
- medium copies of 17..96 bytes which are fully unrolled. Large copies
- of more than 96 bytes align the destination and use an unrolled loop
- processing 64 bytes per iteration.
- Small and medium copies read all data before writing, allowing any
- kind of overlap, and memmove tailcalls memcpy for these cases as
- well as non-overlapping copies.
-*/
-
- prfm PLDL1KEEP, [src]
- add srcend, src, count
- add dstend, dstin, count
- cmp count, 16
- b.ls L(copy16)
- cmp count, 96
- b.hi L(copy_long)
-
- /* Medium copies: 17..96 bytes. */
- sub tmp1, count, 1
- ldp A_l, A_h, [src]
- tbnz tmp1, 6, L(copy96)
- ldp D_l, D_h, [srcend, -16]
- tbz tmp1, 5, 1f
- ldp B_l, B_h, [src, 16]
- ldp C_l, C_h, [srcend, -32]
- stp B_l, B_h, [dstin, 16]
- stp C_l, C_h, [dstend, -32]
-1:
- stp A_l, A_h, [dstin]
- stp D_l, D_h, [dstend, -16]
- ret
-
- .p2align 4
-
- /* Small copies: 0..16 bytes. */
-L(copy16):
- cmp count, 8
- b.lo 1f
- ldr A_l, [src]
- ldr A_h, [srcend, -8]
- str A_l, [dstin]
- str A_h, [dstend, -8]
- ret
- .p2align 4
-1:
- tbz count, 2, 1f
- ldr A_lw, [src]
- ldr A_hw, [srcend, -4]
- str A_lw, [dstin]
- str A_hw, [dstend, -4]
- ret
-
- /* Copy 0..3 bytes. Use a branchless sequence that copies the same
- byte 3 times if count==1, or the 2nd byte twice if count==2. */
-1:
- cbz count, 2f
- lsr tmp1, count, 1
- ldrb A_lw, [src]
- ldrb A_hw, [srcend, -1]
- ldrb B_lw, [src, tmp1]
- strb A_lw, [dstin]
- strb B_lw, [dstin, tmp1]
- strb A_hw, [dstend, -1]
-2: ret
-
- .p2align 4
- /* Copy 64..96 bytes. Copy 64 bytes from the start and
- 32 bytes from the end. */
-L(copy96):
- ldp B_l, B_h, [src, 16]
- ldp C_l, C_h, [src, 32]
- ldp D_l, D_h, [src, 48]
- ldp E_l, E_h, [srcend, -32]
- ldp F_l, F_h, [srcend, -16]
- stp A_l, A_h, [dstin]
- stp B_l, B_h, [dstin, 16]
- stp C_l, C_h, [dstin, 32]
- stp D_l, D_h, [dstin, 48]
- stp E_l, E_h, [dstend, -32]
- stp F_l, F_h, [dstend, -16]
- ret
-
- /* Align DST to 16 byte alignment so that we don't cross cache line
- boundaries on both loads and stores. There are at least 96 bytes
- to copy, so copy 16 bytes unaligned and then align. The loop
- copies 64 bytes per iteration and prefetches one iteration ahead. */
-
- .p2align 4
-L(copy_long):
- and tmp1, dstin, 15
- bic dst, dstin, 15
- ldp D_l, D_h, [src]
- sub src, src, tmp1
- add count, count, tmp1 /* Count is now 16 too large. */
- ldp A_l, A_h, [src, 16]
- stp D_l, D_h, [dstin]
- ldp B_l, B_h, [src, 32]
- ldp C_l, C_h, [src, 48]
- ldp D_l, D_h, [src, 64]!
- subs count, count, 128 + 16 /* Test and readjust count. */
- b.ls 2f
-1:
- stp A_l, A_h, [dst, 16]
- ldp A_l, A_h, [src, 16]
- stp B_l, B_h, [dst, 32]
- ldp B_l, B_h, [src, 32]
- stp C_l, C_h, [dst, 48]
- ldp C_l, C_h, [src, 48]
- stp D_l, D_h, [dst, 64]!
- ldp D_l, D_h, [src, 64]!
- subs count, count, 64
- b.hi 1b
-
- /* Write the last full set of 64 bytes. The remainder is at most 64
- bytes, so it is safe to always copy 64 bytes from the end even if
- there is just 1 byte left. */
-2:
- ldp E_l, E_h, [srcend, -64]
- stp A_l, A_h, [dst, 16]
- ldp A_l, A_h, [srcend, -48]
- stp B_l, B_h, [dst, 32]
- ldp B_l, B_h, [srcend, -32]
- stp C_l, C_h, [dst, 48]
- ldp C_l, C_h, [srcend, -16]
- stp D_l, D_h, [dst, 64]
- stp E_l, E_h, [dstend, -64]
- stp A_l, A_h, [dstend, -48]
- stp B_l, B_h, [dstend, -32]
- stp C_l, C_h, [dstend, -16]
- ret
diff --git a/libc/arch-arm64/generic/bionic/memmove.S b/libc/arch-arm64/generic/bionic/memmove.S
deleted file mode 100644
index 0f752ea..0000000
--- a/libc/arch-arm64/generic/bionic/memmove.S
+++ /dev/null
@@ -1,157 +0,0 @@
-/* Copyright (c) 2013, Linaro Limited
- All rights reserved.
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are met:
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
- * Neither the name of the Linaro nor the
- names of its contributors may be used to endorse or promote products
- derived from this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */
-
-/*
- * Copyright (c) 2015 ARM Ltd
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. The name of the company may not be used to endorse or promote
- * products derived from this software without specific prior written
- * permission.
- *
- * THIS SOFTWARE IS PROVIDED BY ARM LTD ``AS IS'' AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- * IN NO EVENT SHALL ARM LTD BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
- * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-/* Assumptions:
- *
- * ARMv8-a, AArch64, unaligned accesses, wchar_t is 4 bytes
- */
-
-#include <private/bionic_asm.h>
-
-/* Parameters and result. */
-#define dstin x0
-#define src x1
-#define count x2
-#define srcend x3
-#define dstend x4
-#define tmp1 x5
-#define A_l x6
-#define A_h x7
-#define B_l x8
-#define B_h x9
-#define C_l x10
-#define C_h x11
-#define D_l x12
-#define D_h x13
-#define E_l count
-#define E_h tmp1
-
-/* All memmoves up to 96 bytes are done by memcpy as it supports overlaps.
- Larger backwards copies are also handled by memcpy. The only remaining
- case is forward large copies. The destination is aligned, and an
- unrolled loop processes 64 bytes per iteration.
-*/
-
-#if defined(WMEMMOVE)
-ENTRY(wmemmove)
- lsl count, count, #2
-#else
-ENTRY(memmove)
-#endif
- sub tmp1, dstin, src
- cmp count, 96
- ccmp tmp1, count, 2, hi
- b.hs __memcpy
-
- cbz tmp1, 3f
- add dstend, dstin, count
- add srcend, src, count
-
- /* Align dstend to 16 byte alignment so that we don't cross cache line
- boundaries on both loads and stores. There are at least 96 bytes
- to copy, so copy 16 bytes unaligned and then align. The loop
- copies 64 bytes per iteration and prefetches one iteration ahead. */
-
- and tmp1, dstend, 15
- ldp D_l, D_h, [srcend, -16]
- sub srcend, srcend, tmp1
- sub count, count, tmp1
- ldp A_l, A_h, [srcend, -16]
- stp D_l, D_h, [dstend, -16]
- ldp B_l, B_h, [srcend, -32]
- ldp C_l, C_h, [srcend, -48]
- ldp D_l, D_h, [srcend, -64]!
- sub dstend, dstend, tmp1
- subs count, count, 128
- b.ls 2f
- nop
-1:
- stp A_l, A_h, [dstend, -16]
- ldp A_l, A_h, [srcend, -16]
- stp B_l, B_h, [dstend, -32]
- ldp B_l, B_h, [srcend, -32]
- stp C_l, C_h, [dstend, -48]
- ldp C_l, C_h, [srcend, -48]
- stp D_l, D_h, [dstend, -64]!
- ldp D_l, D_h, [srcend, -64]!
- subs count, count, 64
- b.hi 1b
-
- /* Write the last full set of 64 bytes. The remainder is at most 64
- bytes, so it is safe to always copy 64 bytes from the start even if
- there is just 1 byte left. */
-2:
- ldp E_l, E_h, [src, 48]
- stp A_l, A_h, [dstend, -16]
- ldp A_l, A_h, [src, 32]
- stp B_l, B_h, [dstend, -32]
- ldp B_l, B_h, [src, 16]
- stp C_l, C_h, [dstend, -48]
- ldp C_l, C_h, [src]
- stp D_l, D_h, [dstend, -64]
- stp E_l, E_h, [dstin, 48]
- stp A_l, A_h, [dstin, 32]
- stp B_l, B_h, [dstin, 16]
- stp C_l, C_h, [dstin]
-3: ret
-
-#if defined(WMEMMOVE)
-END(wmemmove)
-#else
-END(memmove)
-
-ALIAS_SYMBOL(memcpy, memmove)
-#endif
-
-NOTE_GNU_PROPERTY()
diff --git a/libc/arch-arm64/generic/bionic/memset.S b/libc/arch-arm64/generic/bionic/memset.S
deleted file mode 100644
index 19d3510..0000000
--- a/libc/arch-arm64/generic/bionic/memset.S
+++ /dev/null
@@ -1,253 +0,0 @@
-/* Copyright (c) 2012-2013, Linaro Limited
- All rights reserved.
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are met:
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
- * Neither the name of the Linaro nor the
- names of its contributors may be used to endorse or promote products
- derived from this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */
-
-/*
- * Copyright (c) 2015 ARM Ltd
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. The name of the company may not be used to endorse or promote
- * products derived from this software without specific prior written
- * permission.
- *
- * THIS SOFTWARE IS PROVIDED BY ARM LTD ``AS IS'' AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- * IN NO EVENT SHALL ARM LTD BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
- * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-/* Assumptions:
- *
- * ARMv8-a, AArch64, unaligned accesses
- *
- */
-
-#include <private/bionic_asm.h>
-
-/* By default we assume that the DC instruction can be used to zero
- data blocks more efficiently. In some circumstances this might be
- unsafe, for example in an asymmetric multiprocessor environment with
- different DC clear lengths (neither the upper nor lower lengths are
- safe to use).
-
- If code may be run in a virtualized environment, then define
- MAYBE_VIRT. This will cause the code to cache the system register
- values rather than re-reading them each call. */
-
-#define dstin x0
-#define val x1
-#define valw w1
-#define count x2
-#define dst x3
-#define dstend x4
-#define tmp1 x5
-#define tmp1w w5
-#define tmp2 x6
-#define tmp2w w6
-#define zva_len x7
-#define zva_lenw w7
-
-#define L(l) .L ## l
-
-ENTRY(__memset_chk)
- cmp count, dst
- bls memset
-
- // Preserve for accurate backtrace.
- stp x29, x30, [sp, -16]!
- .cfi_def_cfa_offset 16
- .cfi_rel_offset x29, 0
- .cfi_rel_offset x30, 8
-
- bl __memset_chk_fail
-END(__memset_chk)
-
-ENTRY(memset)
-
- dup v0.16B, valw
- add dstend, dstin, count
-
- cmp count, 96
- b.hi L(set_long)
- cmp count, 16
- b.hs L(set_medium)
- mov val, v0.D[0]
-
- /* Set 0..15 bytes. */
- tbz count, 3, 1f
- str val, [dstin]
- str val, [dstend, -8]
- ret
- nop
-1: tbz count, 2, 2f
- str valw, [dstin]
- str valw, [dstend, -4]
- ret
-2: cbz count, 3f
- strb valw, [dstin]
- tbz count, 1, 3f
- strh valw, [dstend, -2]
-3: ret
-
- /* Set 17..96 bytes. */
-L(set_medium):
- str q0, [dstin]
- tbnz count, 6, L(set96)
- str q0, [dstend, -16]
- tbz count, 5, 1f
- str q0, [dstin, 16]
- str q0, [dstend, -32]
-1: ret
-
- .p2align 4
- /* Set 64..96 bytes. Write 64 bytes from the start and
- 32 bytes from the end. */
-L(set96):
- str q0, [dstin, 16]
- stp q0, q0, [dstin, 32]
- stp q0, q0, [dstend, -32]
- ret
-
- .p2align 3
- nop
-L(set_long):
- and valw, valw, 255
- bic dst, dstin, 15
- str q0, [dstin]
- cmp count, 256
- ccmp valw, 0, 0, cs
- b.eq L(try_zva)
-L(no_zva):
- sub count, dstend, dst /* Count is 16 too large. */
- add dst, dst, 16
- sub count, count, 64 + 16 /* Adjust count and bias for loop. */
-1: stp q0, q0, [dst], 64
- stp q0, q0, [dst, -32]
-L(tail64):
- subs count, count, 64
- b.hi 1b
-2: stp q0, q0, [dstend, -64]
- stp q0, q0, [dstend, -32]
- ret
-
- .p2align 3
-L(try_zva):
- mrs tmp1, dczid_el0
- tbnz tmp1w, 4, L(no_zva)
- and tmp1w, tmp1w, 15
- cmp tmp1w, 4 /* ZVA size is 64 bytes. */
- b.ne L(zva_128)
-
- /* Write the first and last 64 byte aligned block using stp rather
- than using DC ZVA. This is faster on some cores.
- */
-L(zva_64):
- str q0, [dst, 16]
- stp q0, q0, [dst, 32]
- bic dst, dst, 63
- stp q0, q0, [dst, 64]
- stp q0, q0, [dst, 96]
- sub count, dstend, dst /* Count is now 128 too large. */
- sub count, count, 128+64+64 /* Adjust count and bias for loop. */
- add dst, dst, 128
- nop
-1: dc zva, dst
- add dst, dst, 64
- subs count, count, 64
- b.hi 1b
- stp q0, q0, [dst, 0]
- stp q0, q0, [dst, 32]
- stp q0, q0, [dstend, -64]
- stp q0, q0, [dstend, -32]
- ret
-
- .p2align 3
-L(zva_128):
- cmp tmp1w, 5 /* ZVA size is 128 bytes. */
- b.ne L(zva_other)
-
- str q0, [dst, 16]
- stp q0, q0, [dst, 32]
- stp q0, q0, [dst, 64]
- stp q0, q0, [dst, 96]
- bic dst, dst, 127
- sub count, dstend, dst /* Count is now 128 too large. */
- sub count, count, 128+128 /* Adjust count and bias for loop. */
- add dst, dst, 128
-1: dc zva, dst
- add dst, dst, 128
- subs count, count, 128
- b.hi 1b
- stp q0, q0, [dstend, -128]
- stp q0, q0, [dstend, -96]
- stp q0, q0, [dstend, -64]
- stp q0, q0, [dstend, -32]
- ret
-
-L(zva_other):
- mov tmp2w, 4
- lsl zva_lenw, tmp2w, tmp1w
- add tmp1, zva_len, 64 /* Max alignment bytes written. */
- cmp count, tmp1
- blo L(no_zva)
-
- sub tmp2, zva_len, 1
- add tmp1, dst, zva_len
- add dst, dst, 16
- subs count, tmp1, dst /* Actual alignment bytes to write. */
- bic tmp1, tmp1, tmp2 /* Aligned dc zva start address. */
- beq 2f
-1: stp q0, q0, [dst], 64
- stp q0, q0, [dst, -32]
- subs count, count, 64
- b.hi 1b
-2: mov dst, tmp1
- sub count, dstend, tmp1 /* Remaining bytes to write. */
- subs count, count, zva_len
- b.lo 4f
-3: dc zva, dst
- add dst, dst, zva_len
- subs count, count, zva_len
- b.hs 3b
-4: add count, count, zva_len
- b L(tail64)
-
-END(memset)
-
-NOTE_GNU_PROPERTY()
diff --git a/libc/arch-arm64/generic/bionic/wmemmove.S b/libc/arch-arm64/generic/bionic/wmemmove.S
deleted file mode 100644
index b130530..0000000
--- a/libc/arch-arm64/generic/bionic/wmemmove.S
+++ /dev/null
@@ -1,32 +0,0 @@
-/* Copyright (c) 2014, Linaro Limited
- All rights reserved.
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are met:
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
- * Neither the name of the Linaro nor the
- names of its contributors may be used to endorse or promote products
- derived from this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#define WMEMMOVE
-#include "memmove.S"
-#undef WMEMMOVE
-
-NOTE_GNU_PROPERTY()
diff --git a/libc/arch-arm64/static_function_dispatch.S b/libc/arch-arm64/static_function_dispatch.S
index 161ece8..d00f071 100644
--- a/libc/arch-arm64/static_function_dispatch.S
+++ b/libc/arch-arm64/static_function_dispatch.S
@@ -34,6 +34,8 @@
END(name)
FUNCTION_DELEGATE(memchr, __memchr_aarch64_mte)
+FUNCTION_DELEGATE(memcpy, __memcpy_aarch64)
+FUNCTION_DELEGATE(memmove, __memmove_aarch64)
FUNCTION_DELEGATE(stpcpy, __stpcpy_aarch64_mte)
FUNCTION_DELEGATE(strchr, __strchr_aarch64_mte)
FUNCTION_DELEGATE(strchrnul, __strchrnul_aarch64_mte)
diff --git a/libc/arch-arm64/generic/bionic/__memcpy_chk.S b/libc/arch-arm64/string/__memcpy_chk.S
similarity index 100%
rename from libc/arch-arm64/generic/bionic/__memcpy_chk.S
rename to libc/arch-arm64/string/__memcpy_chk.S
diff --git a/libc/arch-arm64/generic/bionic/memcpy.S b/libc/arch-arm64/string/__memset_chk.S
similarity index 78%
rename from libc/arch-arm64/generic/bionic/memcpy.S
rename to libc/arch-arm64/string/__memset_chk.S
index bc1945c..e1e29d0 100644
--- a/libc/arch-arm64/generic/bionic/memcpy.S
+++ b/libc/arch-arm64/string/__memset_chk.S
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2008 The Android Open Source Project
+ * Copyright (C) 2017 The Android Open Source Project
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -26,12 +26,22 @@
* SUCH DAMAGE.
*/
-// Prototype: void *memcpy (void *dst, const void *src, size_t count).
-
#include <private/bionic_asm.h>
-ENTRY(__memcpy)
- #include "memcpy_base.S"
-END(__memcpy)
+ENTRY(__memset_chk)
+ cmp x2, x3
+ // Direct b.ls memcpy may not have enough range
+ b.hi .L_memset_chk_fail
+ b memset
+
+.L_memset_chk_fail:
+ // Preserve for accurate backtrace.
+ stp x29, x30, [sp, -16]!
+ .cfi_def_cfa_offset 16
+ .cfi_rel_offset x29, 0
+ .cfi_rel_offset x30, 8
+
+ bl __memset_chk_fail
+END(__memset_chk)
NOTE_GNU_PROPERTY()
diff --git a/libc/bionic/android_unsafe_frame_pointer_chase.cpp b/libc/bionic/android_unsafe_frame_pointer_chase.cpp
index a1cb3c6..1a59718 100644
--- a/libc/bionic/android_unsafe_frame_pointer_chase.cpp
+++ b/libc/bionic/android_unsafe_frame_pointer_chase.cpp
@@ -72,7 +72,13 @@
size_t num_frames = 0;
while (1) {
+#if defined(__riscv)
+ // Frame addresses seem to have been implemented incorrectly for RISC-V.
+ // See https://reviews.llvm.org/D87579.
+ auto* frame = reinterpret_cast<frame_record*>(begin - 16);
+#else
auto* frame = reinterpret_cast<frame_record*>(begin);
+#endif
if (num_frames < num_entries) {
buf[num_frames] = __bionic_clear_pac_bits(frame->return_addr);
}
diff --git a/libc/bionic/fcntl.cpp b/libc/bionic/fcntl.cpp
index c508131..754277b 100644
--- a/libc/bionic/fcntl.cpp
+++ b/libc/bionic/fcntl.cpp
@@ -30,21 +30,29 @@
#include <fcntl.h>
#include "private/bionic_fdtrack.h"
-
-#if defined(__LP64__)
+#include "private/bionic_fortify.h"
extern "C" int __fcntl(int fd, int cmd, ...);
+extern "C" int __fcntl64(int, int, ...);
int fcntl(int fd, int cmd, ...) {
va_list args;
va_start(args, cmd);
-
- // This is a bit sketchy, especially because arg can be an int, but all of our
- // supported 64-bit ABIs pass arg in a register.
+ // This is a bit sketchy for LP64, especially because arg can be an int,
+ // but all of our supported 64-bit ABIs pass the argument in a register.
void* arg = va_arg(args, void*);
va_end(args);
+ if (cmd == F_SETFD && (reinterpret_cast<uintptr_t>(arg) & ~FD_CLOEXEC) != 0) {
+ __fortify_fatal("fcntl(F_SETFD) passed non-FD_CLOEXEC flag: %p", arg);
+ }
+
+#if defined(__LP64__)
int rc = __fcntl(fd, cmd, arg);
+#else
+ // For LP32 we use the fcntl64 system call to signal that we're using struct flock64.
+ int rc = __fcntl64(fd, cmd, arg);
+#endif
if (cmd == F_DUPFD) {
return FDTRACK_CREATE_NAME("F_DUPFD", rc);
} else if (cmd == F_DUPFD_CLOEXEC) {
@@ -52,25 +60,3 @@
}
return rc;
}
-
-#else
-
-extern "C" int __fcntl64(int, int, ...);
-
-// For fcntl we use the fcntl64 system call to signal that we're using struct flock64.
-int fcntl(int fd, int cmd, ...) {
- va_list ap;
-
- va_start(ap, cmd);
- void* arg = va_arg(ap, void*);
- va_end(ap);
-
- if (cmd == F_DUPFD) {
- return FDTRACK_CREATE_NAME("F_DUPFD", __fcntl64(fd, cmd, arg));
- } else if (cmd == F_DUPFD_CLOEXEC) {
- return FDTRACK_CREATE_NAME("F_DUPFD_CLOEXEC", __fcntl64(fd, cmd, arg));
- }
- return __fcntl64(fd, cmd, arg);
-}
-
-#endif
diff --git a/libc/bionic/fortify.cpp b/libc/bionic/fortify.cpp
index 88ae477..73cf973 100644
--- a/libc/bionic/fortify.cpp
+++ b/libc/bionic/fortify.cpp
@@ -489,14 +489,15 @@
return strcpy(dst, src);
}
-#if !defined(NO___MEMCPY_CHK)
+#if !defined(__arm__) && !defined(__aarch64__)
// Runtime implementation of __memcpy_chk (used directly by compiler, not in headers).
+// arm32 and arm64 have assembler implementations, and don't need this C fallback.
extern "C" void* __memcpy_chk(void* dst, const void* src, size_t count, size_t dst_len) {
__check_count("memcpy", "count", count);
__check_buffer_access("memcpy", "write into", count, dst_len);
return memcpy(dst, src, count);
}
-#endif // NO___MEMCPY_CHK
+#endif
// Runtime implementation of __mempcpy_chk (used directly by compiler, not in headers).
extern "C" void* __mempcpy_chk(void* dst, const void* src, size_t count, size_t dst_len) {
diff --git a/libc/bionic/strtol.cpp b/libc/bionic/strtol.cpp
index ec72b09..05b4b53 100644
--- a/libc/bionic/strtol.cpp
+++ b/libc/bionic/strtol.cpp
@@ -208,9 +208,6 @@
return StrToI<long long, LLONG_MIN, LLONG_MAX, wchar_t>(s, end, base);
}
-// Public API since L, but not in any header.
-__strong_alias(strtoq, strtoll);
-
unsigned long strtoul(const char* s, char** end, int base) {
return StrToU<unsigned long, ULONG_MAX, char>(s, end, base);
}
@@ -234,6 +231,3 @@
uintmax_t wcstoumax(const wchar_t* s, wchar_t** end, int base) {
return StrToU<uintmax_t, UINTMAX_MAX, wchar_t>(s, end, base);
}
-
-// Public API since L, but not in any header.
-__strong_alias(strtouq, strtoull);
diff --git a/libc/include/langinfo.h b/libc/include/langinfo.h
index d9d8c15..2b43892 100644
--- a/libc/include/langinfo.h
+++ b/libc/include/langinfo.h
@@ -92,8 +92,8 @@
#define NOEXPR 54
#define CRNCYSTR 55
-char* nl_langinfo(nl_item __item) __INTRODUCED_IN(26);
-char* nl_langinfo_l(nl_item __item, locale_t __l) __INTRODUCED_IN(26);
+char* _Nonnull nl_langinfo(nl_item __item) __INTRODUCED_IN(26);
+char* _Nonnull nl_langinfo_l(nl_item __item, locale_t _Nonnull __l) __INTRODUCED_IN(26);
__END_DECLS
diff --git a/libc/include/libgen.h b/libc/include/libgen.h
index b910790..474f066 100644
--- a/libc/include/libgen.h
+++ b/libc/include/libgen.h
@@ -50,7 +50,7 @@
* Note that Android's cv-qualifiers differ from POSIX; Android's implementation doesn't
* modify its input and uses thread-local storage for the result if necessary.
*/
-char* __posix_basename(const char* __path) __RENAME(basename);
+char* _Nullable __posix_basename(const char* _Nullable __path) __RENAME(basename);
/**
* This macro ensures that callers get the POSIX basename() if they include this header,
@@ -65,13 +65,13 @@
* Note that Android's cv-qualifiers differ from POSIX; Android's implementation doesn't
* modify its input and uses thread-local storage for the result if necessary.
*/
-char* dirname(const char* __path);
+char* _Nullable dirname(const char* _Nullable __path);
#if !defined(__LP64__)
/** Deprecated. Use dirname() instead. */
-int dirname_r(const char* __path, char* __buf, size_t __n);
+int dirname_r(const char* _Nullable __path, char* _Nullable __buf, size_t __n);
/** Deprecated. Use basename() instead. */
-int basename_r(const char* __path, char* __buf, size_t __n);
+int basename_r(const char* _Nullable __path, char* _Nullable __buf, size_t __n);
#endif
__END_DECLS
diff --git a/libc/include/malloc.h b/libc/include/malloc.h
index 40786fa..02bda60 100644
--- a/libc/include/malloc.h
+++ b/libc/include/malloc.h
@@ -40,7 +40,7 @@
* Returns a pointer to the allocated memory on success and returns a null
* pointer and sets `errno` on failure.
*/
-void* malloc(size_t __byte_count) __mallocfunc __BIONIC_ALLOC_SIZE(1) __wur;
+void* _Nullable malloc(size_t __byte_count) __mallocfunc __BIONIC_ALLOC_SIZE(1) __wur;
/**
* [calloc(3)](http://man7.org/linux/man-pages/man3/calloc.3.html) allocates
@@ -49,7 +49,7 @@
* Returns a pointer to the allocated memory on success and returns a null
* pointer and sets `errno` on failure.
*/
-void* calloc(size_t __item_count, size_t __item_size) __mallocfunc __BIONIC_ALLOC_SIZE(1,2) __wur;
+void* _Nullable calloc(size_t __item_count, size_t __item_size) __mallocfunc __BIONIC_ALLOC_SIZE(1,2) __wur;
/**
* [realloc(3)](http://man7.org/linux/man-pages/man3/realloc.3.html) resizes
@@ -58,7 +58,7 @@
* Returns a pointer (which may be different from `__ptr`) to the resized
* memory on success and returns a null pointer and sets `errno` on failure.
*/
-void* realloc(void* __ptr, size_t __byte_count) __BIONIC_ALLOC_SIZE(2) __wur;
+void* _Nullable realloc(void* _Nullable __ptr, size_t __byte_count) __BIONIC_ALLOC_SIZE(2) __wur;
/**
* [reallocarray(3)](http://man7.org/linux/man-pages/man3/realloc.3.html) resizes
@@ -70,13 +70,13 @@
* Returns a pointer (which may be different from `__ptr`) to the resized
* memory on success and returns a null pointer and sets `errno` on failure.
*/
-void* reallocarray(void* __ptr, size_t __item_count, size_t __item_size) __BIONIC_ALLOC_SIZE(2, 3) __wur __INTRODUCED_IN(29);
+void* _Nullable reallocarray(void* _Nullable __ptr, size_t __item_count, size_t __item_size) __BIONIC_ALLOC_SIZE(2, 3) __wur __INTRODUCED_IN(29);
/**
* [free(3)](http://man7.org/linux/man-pages/man3/free.3.html) deallocates
* memory on the heap.
*/
-void free(void* __ptr);
+void free(void* _Nullable __ptr);
/**
* [memalign(3)](http://man7.org/linux/man-pages/man3/memalign.3.html) allocates
@@ -87,7 +87,7 @@
*
* See also posix_memalign().
*/
-void* memalign(size_t __alignment, size_t __byte_count) __mallocfunc __BIONIC_ALLOC_SIZE(2) __wur;
+void* _Nullable memalign(size_t __alignment, size_t __byte_count) __mallocfunc __BIONIC_ALLOC_SIZE(2) __wur;
/**
* [malloc_usable_size(3)](http://man7.org/linux/man-pages/man3/malloc_usable_size.3.html)
@@ -95,7 +95,7 @@
*
* Available since API level 17.
*/
-size_t malloc_usable_size(const void* __ptr) __INTRODUCED_IN(17);
+size_t malloc_usable_size(const void* _Nullable __ptr) __INTRODUCED_IN(17);
#define __MALLINFO_BODY \
/** Total number of non-mmapped bytes currently allocated from OS. */ \
@@ -168,7 +168,7 @@
*
* Available since API level 23.
*/
-int malloc_info(int __must_be_zero, FILE* __fp) __INTRODUCED_IN(23);
+int malloc_info(int __must_be_zero, FILE* _Nonnull __fp) __INTRODUCED_IN(23);
/**
* mallopt() option to set the decay time. Valid values are 0 and 1.
@@ -329,7 +329,7 @@
*
* See also: [extra documentation](https://android.googlesource.com/platform/bionic/+/master/libc/malloc_hooks/README.md)
*/
-extern void* (*volatile __malloc_hook)(size_t __byte_count, const void* __caller) __INTRODUCED_IN(28);
+extern void* _Nonnull (*volatile _Nonnull __malloc_hook)(size_t __byte_count, const void* _Nonnull __caller) __INTRODUCED_IN(28);
/**
* [__realloc_hook(3)](http://man7.org/linux/man-pages/man3/__realloc_hook.3.html)
@@ -340,7 +340,7 @@
*
* See also: [extra documentation](https://android.googlesource.com/platform/bionic/+/master/libc/malloc_hooks/README.md)
*/
-extern void* (*volatile __realloc_hook)(void* __ptr, size_t __byte_count, const void* __caller) __INTRODUCED_IN(28);
+extern void* _Nonnull (*volatile _Nonnull __realloc_hook)(void* _Nullable __ptr, size_t __byte_count, const void* _Nonnull __caller) __INTRODUCED_IN(28);
/**
* [__free_hook(3)](http://man7.org/linux/man-pages/man3/__free_hook.3.html)
@@ -351,7 +351,7 @@
*
* See also: [extra documentation](https://android.googlesource.com/platform/bionic/+/master/libc/malloc_hooks/README.md)
*/
-extern void (*volatile __free_hook)(void* __ptr, const void* __caller) __INTRODUCED_IN(28);
+extern void (*volatile _Nonnull __free_hook)(void* _Nullable __ptr, const void* _Nonnull __caller) __INTRODUCED_IN(28);
/**
* [__memalign_hook(3)](http://man7.org/linux/man-pages/man3/__memalign_hook.3.html)
@@ -362,6 +362,6 @@
*
* See also: [extra documentation](https://android.googlesource.com/platform/bionic/+/master/libc/malloc_hooks/README.md)
*/
-extern void* (*volatile __memalign_hook)(size_t __alignment, size_t __byte_count, const void* __caller) __INTRODUCED_IN(28);
+extern void* _Nonnull (*volatile _Nonnull __memalign_hook)(size_t __alignment, size_t __byte_count, const void* _Nonnull __caller) __INTRODUCED_IN(28);
__END_DECLS
diff --git a/libc/include/regex.h b/libc/include/regex.h
index c4cc39c..be1418e 100644
--- a/libc/include/regex.h
+++ b/libc/include/regex.h
@@ -49,8 +49,8 @@
typedef struct {
int re_magic;
size_t re_nsub; /* number of parenthesized subexpressions */
- const char *re_endp; /* end pointer for REG_PEND */
- struct re_guts *re_g; /* none of your business :-) */
+ const char * _Null_unspecified re_endp; /* end pointer for REG_PEND */
+ struct re_guts * _Null_unspecified re_g; /* none of your business :-) */
} regex_t;
typedef struct {
@@ -67,6 +67,7 @@
#define REG_NOSPEC 0020
#define REG_PEND 0040
#define REG_DUMP 0200
+#define REG_GNU 0400
/* regerror() flags */
#define REG_NOMATCH 1
@@ -85,6 +86,7 @@
#define REG_EMPTY 14
#define REG_ASSERT 15
#define REG_INVARG 16
+#define REG_ILLSEQ 17
#define REG_ATOI 255 /* convert name to number (!) */
#define REG_ITOA 0400 /* convert number to name (!) */
@@ -97,10 +99,10 @@
#define REG_BACKR 02000 /* force use of backref code */
__BEGIN_DECLS
-int regcomp(regex_t* __re, const char* __regex, int __flags);
-size_t regerror(int __error_code, const regex_t* __re, char* __buf, size_t __n);
-int regexec(const regex_t* __re, const char* __s, size_t __match_count, regmatch_t __matches[], int __flags);
-void regfree(regex_t* __re);
+int regcomp(regex_t* _Nonnull __re, const char* _Nonnull __regex, int __flags);
+size_t regerror(int __error_code, const regex_t* _Nullable __re, char* _Nullable __buf, size_t __n);
+int regexec(const regex_t* _Nonnull __re, const char* _Nonnull __s, size_t __match_count, regmatch_t __matches[_Nullable], int __flags);
+void regfree(regex_t* _Nonnull __re);
__END_DECLS
#endif
diff --git a/libc/include/stdlib.h b/libc/include/stdlib.h
index 4aa27f9..06ed3f4 100644
--- a/libc/include/stdlib.h
+++ b/libc/include/stdlib.h
@@ -49,82 +49,82 @@
__noreturn void _Exit(int) __RENAME(_exit);
#endif
-int atexit(void (*__fn)(void));
+int atexit(void (* _Nonnull __fn)(void));
-int at_quick_exit(void (*__fn)(void)) __INTRODUCED_IN(21);
+int at_quick_exit(void (* _Nonnull __fn)(void)) __INTRODUCED_IN(21);
void quick_exit(int __status) __noreturn __INTRODUCED_IN(21);
-char* getenv(const char* __name);
-int putenv(char* __assignment);
-int setenv(const char* __name, const char* __value, int __overwrite);
-int unsetenv(const char* __name);
+char* _Nullable getenv(const char* _Nonnull __name);
+int putenv(char* _Nonnull __assignment);
+int setenv(const char* _Nonnull __name, const char* _Nonnull __value, int __overwrite);
+int unsetenv(const char* _Nonnull __name);
int clearenv(void);
-char* mkdtemp(char* __template);
-char* mktemp(char* __template) __attribute__((deprecated("mktemp is unsafe, use mkstemp or tmpfile instead")));
+char* _Nullable mkdtemp(char* _Nonnull __template);
+char* _Nullable mktemp(char* _Nonnull __template) __attribute__((deprecated("mktemp is unsafe, use mkstemp or tmpfile instead")));
-int mkostemp64(char* __template, int __flags) __INTRODUCED_IN(23);
-int mkostemp(char* __template, int __flags) __INTRODUCED_IN(23);
-int mkostemps64(char* __template, int __suffix_length, int __flags) __INTRODUCED_IN(23);
-int mkostemps(char* __template, int __suffix_length, int __flags) __INTRODUCED_IN(23);
-int mkstemp64(char* __template) __INTRODUCED_IN(21);
-int mkstemp(char* __template);
-int mkstemps64(char* __template, int __flags) __INTRODUCED_IN(23);
-int mkstemps(char* __template, int __flags);
+int mkostemp64(char* _Nonnull __template, int __flags) __INTRODUCED_IN(23);
+int mkostemp(char* _Nonnull __template, int __flags) __INTRODUCED_IN(23);
+int mkostemps64(char* _Nonnull __template, int __suffix_length, int __flags) __INTRODUCED_IN(23);
+int mkostemps(char* _Nonnull __template, int __suffix_length, int __flags) __INTRODUCED_IN(23);
+int mkstemp64(char* _Nonnull __template) __INTRODUCED_IN(21);
+int mkstemp(char* _Nonnull __template);
+int mkstemps64(char* _Nonnull __template, int __flags) __INTRODUCED_IN(23);
+int mkstemps(char* _Nonnull __template, int __flags);
-long strtol(const char* __s, char** __end_ptr, int __base);
-long long strtoll(const char* __s, char** __end_ptr, int __base);
-unsigned long strtoul(const char* __s, char** __end_ptr, int __base);
-unsigned long long strtoull(const char* __s, char** __end_ptr, int __base);
+long strtol(const char* _Nonnull __s, char* _Nullable * _Nullable __end_ptr, int __base);
+long long strtoll(const char* _Nonnull __s, char* _Nullable * _Nullable __end_ptr, int __base);
+unsigned long strtoul(const char* _Nonnull __s, char* _Nullable * _Nullable __end_ptr, int __base);
+unsigned long long strtoull(const char* _Nonnull __s, char* _Nullable * _Nullable __end_ptr, int __base);
-int posix_memalign(void** __memptr, size_t __alignment, size_t __size) __INTRODUCED_IN(17);
+int posix_memalign(void* _Nullable * _Nullable __memptr, size_t __alignment, size_t __size) __INTRODUCED_IN(17);
-void* aligned_alloc(size_t __alignment, size_t __size) __INTRODUCED_IN(28);
+void* _Nullable aligned_alloc(size_t __alignment, size_t __size) __INTRODUCED_IN(28);
-double strtod(const char* __s, char** __end_ptr);
-long double strtold(const char* __s, char** __end_ptr) __RENAME_LDBL(strtod, 3, 21);
+double strtod(const char* _Nonnull __s, char* _Nullable * _Nullable __end_ptr);
+long double strtold(const char* _Nonnull __s, char* _Nullable * _Nullable __end_ptr) __RENAME_LDBL(strtod, 3, 21);
-unsigned long strtoul_l(const char* __s, char** __end_ptr, int __base, locale_t __l) __INTRODUCED_IN(26);
+unsigned long strtoul_l(const char* _Nonnull __s, char* _Nullable * _Nullable __end_ptr, int __base, locale_t _Nonnull __l) __INTRODUCED_IN(26);
-int atoi(const char* __s) __attribute_pure__;
-long atol(const char* __s) __attribute_pure__;
-long long atoll(const char* __s) __attribute_pure__;
+int atoi(const char* _Nonnull __s) __attribute_pure__;
+long atol(const char* _Nonnull __s) __attribute_pure__;
+long long atoll(const char* _Nonnull __s) __attribute_pure__;
-__wur char* realpath(const char* __path, char* __resolved);
-int system(const char* __command);
+__wur char* _Nullable realpath(const char* _Nonnull __path, char* _Nullable __resolved);
+int system(const char* _Nonnull __command);
-void* bsearch(const void* __key, const void* __base, size_t __nmemb, size_t __size, int (*__comparator)(const void* __lhs, const void* __rhs));
+void* _Nullable bsearch(const void* _Nonnull __key, const void* _Nullable __base, size_t __nmemb, size_t __size, int (* _Nonnull __comparator)(const void* _Nonnull __lhs, const void* _Nonnull __rhs));
-void qsort(void* __base, size_t __nmemb, size_t __size, int (*__comparator)(const void* __lhs, const void* __rhs));
+void qsort(void* _Nullable __base, size_t __nmemb, size_t __size, int (* _Nonnull __comparator)(const void* _Nonnull __lhs, const void* _Nonnull __rhs));
uint32_t arc4random(void);
uint32_t arc4random_uniform(uint32_t __upper_bound);
-void arc4random_buf(void* __buf, size_t __n);
+void arc4random_buf(void* _Nonnull __buf, size_t __n);
#define RAND_MAX 0x7fffffff
-int rand_r(unsigned int* __seed_ptr) __INTRODUCED_IN(21);
+int rand_r(unsigned int* _Nonnull __seed_ptr) __INTRODUCED_IN(21);
double drand48(void);
-double erand48(unsigned short __xsubi[3]);
-long jrand48(unsigned short __xsubi[3]);
-void lcong48(unsigned short __param[7]) __INTRODUCED_IN(23);
+double erand48(unsigned short __xsubi[_Nonnull 3]);
+long jrand48(unsigned short __xsubi[_Nonnull 3]);
+void lcong48(unsigned short __param[_Nonnull 7]) __INTRODUCED_IN(23);
long lrand48(void);
long mrand48(void);
-long nrand48(unsigned short __xsubi[3]);
-unsigned short* seed48(unsigned short __seed16v[3]);
+long nrand48(unsigned short __xsubi[_Nonnull 3]);
+unsigned short* _Nonnull seed48(unsigned short __seed16v[_Nonnull 3]);
void srand48(long __seed);
-char* initstate(unsigned int __seed, char* __state, size_t __n) __INTRODUCED_IN(21);
-char* setstate(char* __state) __INTRODUCED_IN(21);
+char* _Nullable initstate(unsigned int __seed, char* _Nonnull __state, size_t __n) __INTRODUCED_IN(21);
+char* _Nullable setstate(char* _Nonnull __state) __INTRODUCED_IN(21);
int getpt(void);
int posix_openpt(int __flags) __INTRODUCED_IN(21);
-char* ptsname(int __fd);
-int ptsname_r(int __fd, char* __buf, size_t __n);
+char* _Nullable ptsname(int __fd);
+int ptsname_r(int __fd, char* _Nonnull __buf, size_t __n);
int unlockpt(int __fd);
-int getsubopt(char** __option, char* const* __tokens, char** __value_ptr) __INTRODUCED_IN(26);
+int getsubopt(char* _Nonnull * _Nonnull __option, char* _Nonnull const* _Nonnull __tokens, char* _Nullable * _Nonnull __value_ptr) __INTRODUCED_IN(26);
typedef struct {
int quot;
@@ -154,18 +154,18 @@
*
* Returns the number of samples written to `__averages` (at most 3), and returns -1 on failure.
*/
-int getloadavg(double __averages[], int __n) __INTRODUCED_IN(29);
+int getloadavg(double __averages[_Nonnull], int __n) __INTRODUCED_IN(29);
/* BSD compatibility. */
-const char* getprogname(void) __INTRODUCED_IN(21);
-void setprogname(const char* __name) __INTRODUCED_IN(21);
+const char* _Nullable getprogname(void) __INTRODUCED_IN(21);
+void setprogname(const char* _Nonnull __name) __INTRODUCED_IN(21);
-int mblen(const char* __s, size_t __n) __INTRODUCED_IN_NO_GUARD_FOR_NDK(26);
-size_t mbstowcs(wchar_t* __dst, const char* __src, size_t __n) __INTRODUCED_IN_NO_GUARD_FOR_NDK(21);
-int mbtowc(wchar_t* __wc_ptr, const char* __s, size_t __n) __INTRODUCED_IN_NO_GUARD_FOR_NDK(21);
-int wctomb(char* __dst, wchar_t __wc) __INTRODUCED_IN_NO_GUARD_FOR_NDK(21);
+int mblen(const char* _Nullable __s, size_t __n) __INTRODUCED_IN_NO_GUARD_FOR_NDK(26);
+size_t mbstowcs(wchar_t* _Nullable __dst, const char* _Nullable __src, size_t __n) __INTRODUCED_IN_NO_GUARD_FOR_NDK(21);
+int mbtowc(wchar_t* _Nullable __wc_ptr, const char* _Nullable __s, size_t __n) __INTRODUCED_IN_NO_GUARD_FOR_NDK(21);
+int wctomb(char* _Nullable __dst, wchar_t __wc) __INTRODUCED_IN_NO_GUARD_FOR_NDK(21);
-size_t wcstombs(char* __dst, const wchar_t* __src, size_t __n) __INTRODUCED_IN_NO_GUARD_FOR_NDK(21);
+size_t wcstombs(char* _Nullable __dst, const wchar_t* _Nullable __src, size_t __n) __INTRODUCED_IN_NO_GUARD_FOR_NDK(21);
#if __ANDROID_API__ >= 21
size_t __ctype_get_mb_cur_max(void) __INTRODUCED_IN(21);
@@ -192,25 +192,25 @@
#endif
#if __ANDROID_API__ >= 21
-float strtof(const char* __s, char** __end_ptr) __INTRODUCED_IN(21);
-double atof(const char* __s) __attribute_pure__ __INTRODUCED_IN(21);
+float strtof(const char* _Nonnull __s, char* _Nullable * _Nullable __end_ptr) __INTRODUCED_IN(21);
+double atof(const char* _Nonnull __s) __attribute_pure__ __INTRODUCED_IN(21);
int rand(void) __INTRODUCED_IN(21);
void srand(unsigned int __seed) __INTRODUCED_IN(21);
long random(void) __INTRODUCED_IN(21);
void srandom(unsigned int __seed) __INTRODUCED_IN(21);
int grantpt(int __fd) __INTRODUCED_IN(21);
-long long strtoll_l(const char* __s, char** __end_ptr, int __base, locale_t __l) __INTRODUCED_IN(21);
-unsigned long long strtoull_l(const char* __s, char** __end_ptr, int __base, locale_t __l) __INTRODUCED_IN(21);
-long double strtold_l(const char* __s, char** __end_ptr, locale_t __l) __INTRODUCED_IN(21);
+long long strtoll_l(const char* _Nonnull __s, char* _Nullable * _Nullable __end_ptr, int __base, locale_t _Nonnull __l) __INTRODUCED_IN(21);
+unsigned long long strtoull_l(const char* _Nonnull __s, char* _Nullable * _Nullable __end_ptr, int __base, locale_t _Nonnull __l) __INTRODUCED_IN(21);
+long double strtold_l(const char* _Nonnull __s, char* _Nullable * _Nullable __end_ptr, locale_t _Nonnull __l) __INTRODUCED_IN(21);
#else
// Implemented as static inlines before 21.
#endif
#if __ANDROID_API__ >= 26
-double strtod_l(const char* __s, char** __end_ptr, locale_t __l) __INTRODUCED_IN(26);
-float strtof_l(const char* __s, char** __end_ptr, locale_t __l) __INTRODUCED_IN(26);
-long strtol_l(const char* __s, char** __end_ptr, int, locale_t __l) __INTRODUCED_IN(26);
+double strtod_l(const char* _Nonnull __s, char* _Nullable * _Nullable __end_ptr, locale_t _Nonnull __l) __INTRODUCED_IN(26);
+float strtof_l(const char* _Nonnull __s, char* _Nullable * _Nullable __end_ptr, locale_t _Nonnull __l) __INTRODUCED_IN(26);
+long strtol_l(const char* _Nonnull __s, char* _Nullable * _Nullable __end_ptr, int, locale_t _Nonnull __l) __INTRODUCED_IN(26);
#else
// Implemented as static inlines before 26.
#endif
diff --git a/libc/include/sys/mman.h b/libc/include/sys/mman.h
index 9e865a3..fea9332 100644
--- a/libc/include/sys/mman.h
+++ b/libc/include/sys/mman.h
@@ -110,6 +110,8 @@
* [mlockall(2)](http://man7.org/linux/man-pages/man2/mlockall.2.html)
* locks pages (preventing swapping).
*
+ * Available since API level 17.
+ *
* Returns 0 on success, and returns -1 and sets `errno` on failure.
*/
int mlockall(int __flags) __INTRODUCED_IN(17);
@@ -118,6 +120,8 @@
* [munlockall(2)](http://man7.org/linux/man-pages/man2/munlockall.2.html)
* unlocks pages (allowing swapping).
*
+ * Available since API level 17.
+ *
* Returns 0 on success, and returns -1 and sets `errno` on failure.
*/
int munlockall(void) __INTRODUCED_IN(17);
@@ -134,6 +138,8 @@
* [mlock2(2)](http://man7.org/linux/man-pages/man2/mlock.2.html)
* locks pages (preventing swapping), with optional flags.
*
+ * Available since API level 30.
+ *
* Returns 0 on success, and returns -1 and sets `errno` on failure.
*/
int mlock2(const void* __addr, size_t __size, int __flags) __INTRODUCED_IN(30);
@@ -167,12 +173,12 @@
* works just like madvise(2) but applies to the process specified by the given
* PID file descriptor.
*
- * Returns the number of bytes advised on success, and returns -1 and sets `errno` on failure.
- *
* Available since API level 31. Its sibling process_mrelease() does not have a
* libc wrapper and should be called using syscall() instead. Given the lack of
* widespread applicability of this system call and the absence of wrappers in
* other libcs, it was probably a mistake to have added this wrapper to bionic.
+ *
+ * Returns the number of bytes advised on success, and returns -1 and sets `errno` on failure.
*/
ssize_t process_madvise(int __pid_fd, const struct iovec* __iov, size_t __count, int __advice, unsigned __flags) __INTRODUCED_IN(31);
@@ -182,6 +188,8 @@
* [memfd_create(2)](http://man7.org/linux/man-pages/man2/memfd_create.2.html)
* creates an anonymous file.
*
+ * Available since API level 30.
+ *
* Returns an fd on success, and returns -1 and sets `errno` on failure.
*/
int memfd_create(const char* __name, unsigned __flags) __INTRODUCED_IN(30);
@@ -216,9 +224,10 @@
* [posix_madvise(3)](http://man7.org/linux/man-pages/man3/posix_madvise.3.html)
* gives the kernel advice about future usage patterns.
*
- * Returns 0 on success, and returns a positive error number on failure.
+ * Available since API level 23.
+ * See also madvise() which is available at all API levels.
*
- * See also madvise() which has been available much longer.
+ * Returns 0 on success, and returns a positive error number on failure.
*/
int posix_madvise(void* __addr, size_t __size, int __advice) __INTRODUCED_IN(23);
diff --git a/libc/include/sys/resource.h b/libc/include/sys/resource.h
index 9181125..ccb267d 100644
--- a/libc/include/sys/resource.h
+++ b/libc/include/sys/resource.h
@@ -41,6 +41,7 @@
#define RLIM_SAVED_MAX RLIM_INFINITY
typedef unsigned long rlim_t;
+typedef unsigned long long rlim64_t;
int getrlimit(int __resource, struct rlimit* __limit);
int setrlimit(int __resource, const struct rlimit* __limit);
diff --git a/libc/include/sys/ucontext.h b/libc/include/sys/ucontext.h
index 72b8adb..8e5873d 100644
--- a/libc/include/sys/ucontext.h
+++ b/libc/include/sys/ucontext.h
@@ -366,7 +366,10 @@
unsigned long uc_flags;
struct ucontext_t* uc_link;
stack_t uc_stack;
- sigset_t uc_sigmask;
+ union {
+ sigset_t uc_sigmask;
+ sigset64_t uc_sigmask64;
+ };
/* The kernel adds extra padding here to allow sigset_t to grow. */
char __padding[128 - sizeof(sigset_t)];
mcontext_t uc_mcontext;
diff --git a/libc/include/syslog.h b/libc/include/syslog.h
index 45de253..d89d769 100644
--- a/libc/include/syslog.h
+++ b/libc/include/syslog.h
@@ -133,9 +133,10 @@
/**
* [openlog(3)](http://man7.org/linux/man-pages/man3/openlog.3.html) sets
- * the log tag to `__prefix`. On Android, the other two arguments are ignored.
+ * the log tag to `__prefix`, which can be NULL to return to the default of
+ * getprogname(). On Android, the other two arguments are ignored.
*/
-void openlog(const char* __prefix, int __option, int __facility);
+void openlog(const char* _Nullable __prefix, int __option, int __facility);
/**
* [setlogmask(3)](http://man7.org/linux/man-pages/man3/setlogmask.3.html)
@@ -149,13 +150,13 @@
* the printf()-like message and logs it with the given priority, unless
* suppressed by setlogmask(). On Android, the output goes to logcat.
*/
-void syslog(int __priority, const char* __fmt, ...) __printflike(2, 3);
+void syslog(int __priority, const char* _Nonnull __fmt, ...) __printflike(2, 3);
/**
* [vsyslog(3)](http://man7.org/linux/man-pages/man3/vsyslog.3.html) formats
* the vprintf()-like message and logs it with the given priority, unless
* suppressed by setlogmask(). On Android, the output goes to logcat.
*/
-void vsyslog(int __priority, const char* __fmt, va_list __args) __printflike(2, 0);
+void vsyslog(int __priority, const char* _Nonnull __fmt, va_list __args) __printflike(2, 0);
__END_DECLS
diff --git a/libc/include/time.h b/libc/include/time.h
index 0db14ff..4b005c6 100644
--- a/libc/include/time.h
+++ b/libc/include/time.h
@@ -37,7 +37,7 @@
#define CLOCKS_PER_SEC 1000000
-extern char* tzname[];
+extern char* _Nonnull tzname[];
extern int daylight;
extern long int timezone;
@@ -54,62 +54,64 @@
int tm_yday;
int tm_isdst;
long int tm_gmtoff;
- const char* tm_zone;
+ const char* _Nullable tm_zone;
};
#define TM_ZONE tm_zone
-time_t time(time_t* __t);
-int nanosleep(const struct timespec* __request, struct timespec* __remainder);
+time_t time(time_t* _Nullable __t);
+int nanosleep(const struct timespec* _Nonnull __request, struct timespec* _Nullable __remainder);
-char* asctime(const struct tm* __tm);
-char* asctime_r(const struct tm* __tm, char* __buf);
+char* _Nullable asctime(const struct tm* _Nonnull __tm);
+char* _Nullable asctime_r(const struct tm* _Nonnull __tm, char* _Nonnull __buf);
double difftime(time_t __lhs, time_t __rhs);
-time_t mktime(struct tm* __tm);
+time_t mktime(struct tm* _Nonnull __tm);
-struct tm* localtime(const time_t* __t);
-struct tm* localtime_r(const time_t* __t, struct tm* __tm);
+struct tm* _Nullable localtime(const time_t* _Nonnull __t);
+struct tm* _Nullable localtime_r(const time_t* _Nonnull __t, struct tm* _Nonnull __tm);
-struct tm* gmtime(const time_t* __t);
-struct tm* gmtime_r(const time_t* __t, struct tm* __tm);
+struct tm* _Nullable gmtime(const time_t* _Nonnull __t);
+struct tm* _Nullable gmtime_r(const time_t* _Nonnull __t, struct tm* _Nonnull __tm);
-char* strptime(const char* __s, const char* __fmt, struct tm* __tm) __strftimelike(2);
-char* strptime_l(const char* __s, const char* __fmt, struct tm* __tm, locale_t __l) __strftimelike(2) __INTRODUCED_IN(28);
+char* _Nullable strptime(const char* _Nonnull __s, const char* _Nonnull __fmt, struct tm* _Nonnull __tm) __strftimelike(2);
+char* _Nullable strptime_l(const char* _Nonnull __s, const char* _Nonnull __fmt, struct tm* _Nonnull __tm, locale_t _Nonnull __l) __strftimelike(2) __INTRODUCED_IN(28);
-size_t strftime(char* __buf, size_t __n, const char* __fmt, const struct tm* __tm) __strftimelike(3);
+size_t strftime(char* _Nonnull __buf, size_t __n, const char* _Nonnull __fmt, const struct tm* _Nullable __tm) __strftimelike(3);
#if __ANDROID_API__ >= 21
-size_t strftime_l(char* __buf, size_t __n, const char* __fmt, const struct tm* __tm, locale_t __l) __strftimelike(3) __INTRODUCED_IN(21);
+size_t strftime_l(char* _Nonnull __buf, size_t __n, const char* _Nonnull __fmt, const struct tm* _Nullable __tm, locale_t _Nonnull __l) __strftimelike(3) __INTRODUCED_IN(21);
#else
// Implemented as static inline before 21.
#endif
-char* ctime(const time_t* __t);
-char* ctime_r(const time_t* __t, char* __buf);
+
+char* _Nullable ctime(const time_t* _Nonnull __t);
+char* _Nullable ctime_r(const time_t* _Nonnull __t, char* _Nonnull __buf);
void tzset(void);
clock_t clock(void);
-int clock_getcpuclockid(pid_t __pid, clockid_t* __clock) __INTRODUCED_IN(23);
+int clock_getcpuclockid(pid_t __pid, clockid_t* _Nonnull __clock) __INTRODUCED_IN(23);
-int clock_getres(clockid_t __clock, struct timespec* __resolution);
-int clock_gettime(clockid_t __clock, struct timespec* __ts);
-int clock_nanosleep(clockid_t __clock, int __flags, const struct timespec* __request, struct timespec* __remainder);
-int clock_settime(clockid_t __clock, const struct timespec* __ts);
-int timer_create(clockid_t __clock, struct sigevent* __event, timer_t* __timer_ptr);
-int timer_delete(timer_t __timer);
-int timer_settime(timer_t __timer, int __flags, const struct itimerspec* __new_value, struct itimerspec* __old_value);
-int timer_gettime(timer_t __timer, struct itimerspec* __ts);
-int timer_getoverrun(timer_t __timer);
+int clock_getres(clockid_t __clock, struct timespec* _Nullable __resolution);
+int clock_gettime(clockid_t __clock, struct timespec* _Nonnull __ts);
+int clock_nanosleep(clockid_t __clock, int __flags, const struct timespec* _Nonnull __request, struct timespec* _Nullable __remainder);
+int clock_settime(clockid_t __clock, const struct timespec* _Nonnull __ts);
+
+int timer_create(clockid_t __clock, struct sigevent* _Nullable __event, timer_t _Nonnull * _Nonnull __timer_ptr);
+int timer_delete(timer_t _Nonnull __timer);
+int timer_settime(timer_t _Nonnull __timer, int __flags, const struct itimerspec* _Nonnull __new_value, struct itimerspec* _Nullable __old_value);
+int timer_gettime(timer_t _Nonnull _timer, struct itimerspec* _Nonnull __ts);
+int timer_getoverrun(timer_t _Nonnull __timer);
/* Non-standard extensions that are in the BSDs and glibc. */
-time_t timelocal(struct tm* __tm);
-time_t timegm(struct tm* __tm);
+time_t timelocal(struct tm* _Nonnull __tm);
+time_t timegm(struct tm* _Nonnull __tm);
#define TIME_UTC 1
-int timespec_get(struct timespec* __ts, int __base) __INTRODUCED_IN(29);
+int timespec_get(struct timespec* _Nonnull __ts, int __base) __INTRODUCED_IN(29);
__END_DECLS
diff --git a/libc/include/time64.h b/libc/include/time64.h
index 905669d..7d70030 100644
--- a/libc/include/time64.h
+++ b/libc/include/time64.h
@@ -47,17 +47,17 @@
typedef int64_t time64_t;
-char* asctime64(const struct tm*);
-char* asctime64_r(const struct tm*, char*);
-char* ctime64(const time64_t*);
-char* ctime64_r(const time64_t*, char*);
-struct tm* gmtime64(const time64_t*);
-struct tm* gmtime64_r(const time64_t*, struct tm*);
-struct tm* localtime64(const time64_t*);
-struct tm* localtime64_r(const time64_t*, struct tm*);
-time64_t mktime64(const struct tm*);
-time64_t timegm64(const struct tm*);
-time64_t timelocal64(const struct tm*);
+char* _Nullable asctime64(const struct tm* _Nonnull);
+char* _Nullable asctime64_r(const struct tm* _Nonnull, char* _Nonnull);
+char* _Nullable ctime64(const time64_t* _Nonnull);
+char* _Nullable ctime64_r(const time64_t* _Nonnull, char* _Nonnull);
+struct tm* _Nullable gmtime64(const time64_t* _Nonnull);
+struct tm* _Nullable gmtime64_r(const time64_t* _Nonnull, struct tm* _Nonnull);
+struct tm* _Nullable localtime64(const time64_t* _Nonnull);
+struct tm* _Nullable localtime64_r(const time64_t* _Nonnull, struct tm* _Nonnull);
+time64_t mktime64(const struct tm* _Nonnull);
+time64_t timegm64(const struct tm* _Nonnull);
+time64_t timelocal64(const struct tm* _Nonnull);
__END_DECLS
diff --git a/libc/include/unistd.h b/libc/include/unistd.h
index b5694b8..3efc9a2 100644
--- a/libc/include/unistd.h
+++ b/libc/include/unistd.h
@@ -317,10 +317,10 @@
* [copy_file_range(2)](https://man7.org/linux/man-pages/man2/copy_file_range.2.html) copies
* a range of data from one file descriptor to another.
*
- * Returns the number of bytes copied on success, and returns -1 and sets errno
- * on failure.
- *
* Available since API level 34.
+ *
+ * Returns the number of bytes copied on success, and returns -1 and sets
+ * `errno` on failure.
*/
ssize_t copy_file_range(int __fd_in, off64_t* __off_in, int __fd_out, off64_t* __off_out, size_t __length, unsigned int __flags) __INTRODUCED_IN(34);
diff --git a/libc/kernel/tools/defaults.py b/libc/kernel/tools/defaults.py
index abb8f82..d0fe157 100644
--- a/libc/kernel/tools/defaults.py
+++ b/libc/kernel/tools/defaults.py
@@ -94,6 +94,9 @@
"__kernel_old_timeval": "timeval",
# Do the same for __kernel_old_itimerval as for timeval.
"__kernel_old_itimerval": "itimerval",
+ # Replace __packed with __attribute__((__packed__)) to avoid depending
+ # on sys/cdefs.h
+ "__packed": "__attribute__((__packed__))",
}
diff --git a/libc/kernel/uapi/asm-arm64/asm/hwcap.h b/libc/kernel/uapi/asm-arm64/asm/hwcap.h
index 95d21aa..af32056 100644
--- a/libc/kernel/uapi/asm-arm64/asm/hwcap.h
+++ b/libc/kernel/uapi/asm-arm64/asm/hwcap.h
@@ -82,4 +82,6 @@
#define HWCAP2_SME_F32F32 (1 << 29)
#define HWCAP2_SME_FA64 (1 << 30)
#define HWCAP2_WFXT (1UL << 31)
+#define HWCAP2_EBF16 (1UL << 32)
+#define HWCAP2_SVE_EBF16 (1UL << 33)
#endif
diff --git a/libc/kernel/uapi/asm-arm64/asm/kvm.h b/libc/kernel/uapi/asm-arm64/asm/kvm.h
index 1f57fca..4f9b347 100644
--- a/libc/kernel/uapi/asm-arm64/asm/kvm.h
+++ b/libc/kernel/uapi/asm-arm64/asm/kvm.h
@@ -51,9 +51,9 @@
#define KVM_ARM_TARGET_GENERIC_V8 5
#define KVM_ARM_NUM_TARGETS 6
#define KVM_ARM_DEVICE_TYPE_SHIFT 0
-#define KVM_ARM_DEVICE_TYPE_MASK (0xffff << KVM_ARM_DEVICE_TYPE_SHIFT)
+#define KVM_ARM_DEVICE_TYPE_MASK GENMASK(KVM_ARM_DEVICE_TYPE_SHIFT + 15, KVM_ARM_DEVICE_TYPE_SHIFT)
#define KVM_ARM_DEVICE_ID_SHIFT 16
-#define KVM_ARM_DEVICE_ID_MASK (0xffff << KVM_ARM_DEVICE_ID_SHIFT)
+#define KVM_ARM_DEVICE_ID_MASK GENMASK(KVM_ARM_DEVICE_ID_SHIFT + 15, KVM_ARM_DEVICE_ID_SHIFT)
#define KVM_ARM_DEVICE_VGIC_V2 0
#define KVM_VGIC_V2_ADDR_TYPE_DIST 0
#define KVM_VGIC_V2_ADDR_TYPE_CPU 1
diff --git a/libc/kernel/uapi/asm-arm64/asm/perf_regs.h b/libc/kernel/uapi/asm-arm64/asm/perf_regs.h
index 71d496f..e18fd05 100644
--- a/libc/kernel/uapi/asm-arm64/asm/perf_regs.h
+++ b/libc/kernel/uapi/asm-arm64/asm/perf_regs.h
@@ -53,5 +53,8 @@
PERF_REG_ARM64_SP,
PERF_REG_ARM64_PC,
PERF_REG_ARM64_MAX,
+ PERF_REG_ARM64_VG = 46,
+ PERF_REG_ARM64_EXTENDED_MAX
};
+#define PERF_REG_EXTENDED_MASK (1ULL << PERF_REG_ARM64_VG)
#endif
diff --git a/libc/kernel/uapi/asm-generic/hugetlb_encode.h b/libc/kernel/uapi/asm-generic/hugetlb_encode.h
index 73d8180..059991c 100644
--- a/libc/kernel/uapi/asm-generic/hugetlb_encode.h
+++ b/libc/kernel/uapi/asm-generic/hugetlb_encode.h
@@ -20,17 +20,17 @@
#define _ASM_GENERIC_HUGETLB_ENCODE_H_
#define HUGETLB_FLAG_ENCODE_SHIFT 26
#define HUGETLB_FLAG_ENCODE_MASK 0x3f
-#define HUGETLB_FLAG_ENCODE_16KB (14 << HUGETLB_FLAG_ENCODE_SHIFT)
-#define HUGETLB_FLAG_ENCODE_64KB (16 << HUGETLB_FLAG_ENCODE_SHIFT)
-#define HUGETLB_FLAG_ENCODE_512KB (19 << HUGETLB_FLAG_ENCODE_SHIFT)
-#define HUGETLB_FLAG_ENCODE_1MB (20 << HUGETLB_FLAG_ENCODE_SHIFT)
-#define HUGETLB_FLAG_ENCODE_2MB (21 << HUGETLB_FLAG_ENCODE_SHIFT)
-#define HUGETLB_FLAG_ENCODE_8MB (23 << HUGETLB_FLAG_ENCODE_SHIFT)
-#define HUGETLB_FLAG_ENCODE_16MB (24 << HUGETLB_FLAG_ENCODE_SHIFT)
-#define HUGETLB_FLAG_ENCODE_32MB (25 << HUGETLB_FLAG_ENCODE_SHIFT)
-#define HUGETLB_FLAG_ENCODE_256MB (28 << HUGETLB_FLAG_ENCODE_SHIFT)
-#define HUGETLB_FLAG_ENCODE_512MB (29 << HUGETLB_FLAG_ENCODE_SHIFT)
-#define HUGETLB_FLAG_ENCODE_1GB (30 << HUGETLB_FLAG_ENCODE_SHIFT)
-#define HUGETLB_FLAG_ENCODE_2GB (31 << HUGETLB_FLAG_ENCODE_SHIFT)
-#define HUGETLB_FLAG_ENCODE_16GB (34 << HUGETLB_FLAG_ENCODE_SHIFT)
+#define HUGETLB_FLAG_ENCODE_16KB (14U << HUGETLB_FLAG_ENCODE_SHIFT)
+#define HUGETLB_FLAG_ENCODE_64KB (16U << HUGETLB_FLAG_ENCODE_SHIFT)
+#define HUGETLB_FLAG_ENCODE_512KB (19U << HUGETLB_FLAG_ENCODE_SHIFT)
+#define HUGETLB_FLAG_ENCODE_1MB (20U << HUGETLB_FLAG_ENCODE_SHIFT)
+#define HUGETLB_FLAG_ENCODE_2MB (21U << HUGETLB_FLAG_ENCODE_SHIFT)
+#define HUGETLB_FLAG_ENCODE_8MB (23U << HUGETLB_FLAG_ENCODE_SHIFT)
+#define HUGETLB_FLAG_ENCODE_16MB (24U << HUGETLB_FLAG_ENCODE_SHIFT)
+#define HUGETLB_FLAG_ENCODE_32MB (25U << HUGETLB_FLAG_ENCODE_SHIFT)
+#define HUGETLB_FLAG_ENCODE_256MB (28U << HUGETLB_FLAG_ENCODE_SHIFT)
+#define HUGETLB_FLAG_ENCODE_512MB (29U << HUGETLB_FLAG_ENCODE_SHIFT)
+#define HUGETLB_FLAG_ENCODE_1GB (30U << HUGETLB_FLAG_ENCODE_SHIFT)
+#define HUGETLB_FLAG_ENCODE_2GB (31U << HUGETLB_FLAG_ENCODE_SHIFT)
+#define HUGETLB_FLAG_ENCODE_16GB (34U << HUGETLB_FLAG_ENCODE_SHIFT)
#endif
diff --git a/libc/kernel/uapi/asm-generic/mman-common.h b/libc/kernel/uapi/asm-generic/mman-common.h
index e96f4cc..966d05b 100644
--- a/libc/kernel/uapi/asm-generic/mman-common.h
+++ b/libc/kernel/uapi/asm-generic/mman-common.h
@@ -63,6 +63,7 @@
#define MADV_POPULATE_READ 22
#define MADV_POPULATE_WRITE 23
#define MADV_DONTNEED_LOCKED 24
+#define MADV_COLLAPSE 25
#define MAP_FILE 0
#define PKEY_DISABLE_ACCESS 0x1
#define PKEY_DISABLE_WRITE 0x2
diff --git a/libc/kernel/uapi/asm-generic/termbits-common.h b/libc/kernel/uapi/asm-generic/termbits-common.h
index c67f21d..281eee8 100644
--- a/libc/kernel/uapi/asm-generic/termbits-common.h
+++ b/libc/kernel/uapi/asm-generic/termbits-common.h
@@ -54,6 +54,7 @@
#define B38400 0x0000000f
#define EXTA B19200
#define EXTB B38400
+#define ADDRB 0x20000000
#define CMSPAR 0x40000000
#define CRTSCTS 0x80000000
#define IBSHIFT 16
diff --git a/libc/kernel/uapi/asm-riscv/asm/auxvec.h b/libc/kernel/uapi/asm-riscv/asm/auxvec.h
index b0e22af..c70be17 100644
--- a/libc/kernel/uapi/asm-riscv/asm/auxvec.h
+++ b/libc/kernel/uapi/asm-riscv/asm/auxvec.h
@@ -25,5 +25,7 @@
#define AT_L1D_CACHEGEOMETRY 43
#define AT_L2_CACHESIZE 44
#define AT_L2_CACHEGEOMETRY 45
-#define AT_VECTOR_SIZE_ARCH 7
+#define AT_L3_CACHESIZE 46
+#define AT_L3_CACHEGEOMETRY 47
+#define AT_VECTOR_SIZE_ARCH 9
#endif
diff --git a/libc/kernel/uapi/asm-riscv/asm/kvm.h b/libc/kernel/uapi/asm-riscv/asm/kvm.h
index 8cb1cee..5dc165b 100644
--- a/libc/kernel/uapi/asm-riscv/asm/kvm.h
+++ b/libc/kernel/uapi/asm-riscv/asm/kvm.h
@@ -39,6 +39,7 @@
};
struct kvm_riscv_config {
unsigned long isa;
+ unsigned long zicbom_block_size;
};
struct kvm_riscv_core {
struct user_regs_struct regs;
@@ -72,6 +73,11 @@
KVM_RISCV_ISA_EXT_H,
KVM_RISCV_ISA_EXT_I,
KVM_RISCV_ISA_EXT_M,
+ KVM_RISCV_ISA_EXT_SVPBMT,
+ KVM_RISCV_ISA_EXT_SSTC,
+ KVM_RISCV_ISA_EXT_SVINVAL,
+ KVM_RISCV_ISA_EXT_ZIHINTPAUSE,
+ KVM_RISCV_ISA_EXT_ZICBOM,
KVM_RISCV_ISA_EXT_MAX,
};
#define KVM_RISCV_TIMER_STATE_OFF 0
diff --git a/libc/kernel/uapi/asm-x86/asm/bootparam.h b/libc/kernel/uapi/asm-x86/asm/bootparam.h
index ba1143b..ab9d7f3 100644
--- a/libc/kernel/uapi/asm-x86/asm/bootparam.h
+++ b/libc/kernel/uapi/asm-x86/asm/bootparam.h
@@ -26,8 +26,11 @@
#define SETUP_APPLE_PROPERTIES 5
#define SETUP_JAILHOUSE 6
#define SETUP_CC_BLOB 7
+#define SETUP_IMA 8
+#define SETUP_RNG_SEED 9
+#define SETUP_ENUM_MAX SETUP_RNG_SEED
#define SETUP_INDIRECT (1 << 31)
-#define SETUP_TYPE_MAX (SETUP_INDIRECT | SETUP_CC_BLOB)
+#define SETUP_TYPE_MAX (SETUP_ENUM_MAX | SETUP_INDIRECT)
#define RAMDISK_IMAGE_START_MASK 0x07FF
#define RAMDISK_PROMPT_FLAG 0x8000
#define RAMDISK_LOAD_FLAG 0x4000
@@ -54,7 +57,7 @@
__u64 next;
__u32 type;
__u32 len;
- __u8 data[0];
+ __u8 data[];
};
struct setup_indirect {
__u32 type;
@@ -148,6 +151,10 @@
__u32 flags;
} __attribute__((packed)) v2;
} __attribute__((packed));
+struct ima_setup_data {
+ __u64 addr;
+ __u64 size;
+} __attribute__((packed));
struct boot_params {
struct screen_info screen_info;
struct apm_bios_info apm_bios_info;
diff --git a/libc/kernel/uapi/asm-x86/asm/kvm.h b/libc/kernel/uapi/asm-x86/asm/kvm.h
index 9a929ae..f07b00e 100644
--- a/libc/kernel/uapi/asm-x86/asm/kvm.h
+++ b/libc/kernel/uapi/asm-x86/asm/kvm.h
@@ -178,11 +178,11 @@
struct kvm_msrs {
__u32 nmsrs;
__u32 pad;
- struct kvm_msr_entry entries[0];
+ struct kvm_msr_entry entries[];
};
struct kvm_msr_list {
__u32 nmsrs;
- __u32 indices[0];
+ __u32 indices[];
};
#define KVM_MSR_FILTER_MAX_BITMAP_SIZE 0x600
struct kvm_msr_filter_range {
@@ -211,7 +211,7 @@
struct kvm_cpuid {
__u32 nent;
__u32 padding;
- struct kvm_cpuid_entry entries[0];
+ struct kvm_cpuid_entry entries[];
};
struct kvm_cpuid_entry2 {
__u32 function;
@@ -229,7 +229,7 @@
struct kvm_cpuid2 {
__u32 nent;
__u32 padding;
- struct kvm_cpuid_entry2 entries[0];
+ struct kvm_cpuid_entry2 entries[];
};
struct kvm_pit_channel_state {
__u32 count;
@@ -265,6 +265,7 @@
struct kvm_pit_channel_state channels[3];
};
#define KVM_PIT_FLAGS_HPET_LEGACY 0x00000001
+#define KVM_PIT_FLAGS_SPEAKER_DATA_ON 0x00000002
struct kvm_pit_state2 {
struct kvm_pit_channel_state channels[3];
__u32 flags;
@@ -279,6 +280,7 @@
#define KVM_VCPUEVENT_VALID_SHADOW 0x00000004
#define KVM_VCPUEVENT_VALID_SMM 0x00000008
#define KVM_VCPUEVENT_VALID_PAYLOAD 0x00000010
+#define KVM_VCPUEVENT_VALID_TRIPLE_FAULT 0x00000020
#define KVM_X86_SHADOW_INT_MOV_SS 0x01
#define KVM_X86_SHADOW_INT_STI 0x02
struct kvm_vcpu_events {
@@ -309,7 +311,10 @@
__u8 smm_inside_nmi;
__u8 latched_init;
} smi;
- __u8 reserved[27];
+ struct {
+ __u8 pending;
+ } triple_fault;
+ __u8 reserved[26];
__u8 exception_has_payload;
__u64 exception_payload;
};
@@ -322,7 +327,7 @@
};
struct kvm_xsave {
__u32 region[1024];
- __u32 extra[0];
+ __u32 extra[];
};
#define KVM_MAX_XCRS 16
struct kvm_xcr {
@@ -351,6 +356,7 @@
#define KVM_X86_QUIRK_OUT_7E_INC_RIP (1 << 3)
#define KVM_X86_QUIRK_MISC_ENABLE_NO_MWAIT (1 << 4)
#define KVM_X86_QUIRK_FIX_HYPERCALL_INSN (1 << 5)
+#define KVM_X86_QUIRK_MWAIT_NEVER_UD_FAULTS (1 << 6)
#define KVM_STATE_NESTED_FORMAT_VMX 0
#define KVM_STATE_NESTED_FORMAT_SVM 1
#define KVM_STATE_NESTED_GUEST_MODE 0x00000001
@@ -404,7 +410,7 @@
__u32 fixed_counter_bitmap;
__u32 flags;
__u32 pad[4];
- __u64 events[0];
+ __u64 events[];
};
#define KVM_PMU_EVENT_ALLOW 0
#define KVM_PMU_EVENT_DENY 1
diff --git a/libc/kernel/uapi/asm-x86/asm/sgx.h b/libc/kernel/uapi/asm-x86/asm/sgx.h
index 1874b78..fdc2700 100644
--- a/libc/kernel/uapi/asm-x86/asm/sgx.h
+++ b/libc/kernel/uapi/asm-x86/asm/sgx.h
@@ -29,6 +29,9 @@
#define SGX_IOC_ENCLAVE_INIT _IOW(SGX_MAGIC, 0x02, struct sgx_enclave_init)
#define SGX_IOC_ENCLAVE_PROVISION _IOW(SGX_MAGIC, 0x03, struct sgx_enclave_provision)
#define SGX_IOC_VEPC_REMOVE_ALL _IO(SGX_MAGIC, 0x04)
+#define SGX_IOC_ENCLAVE_RESTRICT_PERMISSIONS _IOWR(SGX_MAGIC, 0x05, struct sgx_enclave_restrict_permissions)
+#define SGX_IOC_ENCLAVE_MODIFY_TYPES _IOWR(SGX_MAGIC, 0x06, struct sgx_enclave_modify_types)
+#define SGX_IOC_ENCLAVE_REMOVE_PAGES _IOWR(SGX_MAGIC, 0x07, struct sgx_enclave_remove_pages)
struct sgx_enclave_create {
__u64 src;
};
@@ -46,6 +49,25 @@
struct sgx_enclave_provision {
__u64 fd;
};
+struct sgx_enclave_restrict_permissions {
+ __u64 offset;
+ __u64 length;
+ __u64 permissions;
+ __u64 result;
+ __u64 count;
+};
+struct sgx_enclave_modify_types {
+ __u64 offset;
+ __u64 length;
+ __u64 page_type;
+ __u64 result;
+ __u64 count;
+};
+struct sgx_enclave_remove_pages {
+ __u64 offset;
+ __u64 length;
+ __u64 count;
+};
struct sgx_enclave_run;
typedef int(* sgx_enclave_user_handler_t) (long rdi, long rsi, long rdx, long rsp, long r8, long r9, struct sgx_enclave_run * run);
struct sgx_enclave_run {
diff --git a/libc/kernel/uapi/asm-x86/asm/vmx.h b/libc/kernel/uapi/asm-x86/asm/vmx.h
index 6c07d4c..fdea539 100644
--- a/libc/kernel/uapi/asm-x86/asm/vmx.h
+++ b/libc/kernel/uapi/asm-x86/asm/vmx.h
@@ -81,7 +81,8 @@
#define EXIT_REASON_UMWAIT 67
#define EXIT_REASON_TPAUSE 68
#define EXIT_REASON_BUS_LOCK 74
-#define VMX_EXIT_REASONS { EXIT_REASON_EXCEPTION_NMI, "EXCEPTION_NMI" }, { EXIT_REASON_EXTERNAL_INTERRUPT, "EXTERNAL_INTERRUPT" }, { EXIT_REASON_TRIPLE_FAULT, "TRIPLE_FAULT" }, { EXIT_REASON_INIT_SIGNAL, "INIT_SIGNAL" }, { EXIT_REASON_SIPI_SIGNAL, "SIPI_SIGNAL" }, { EXIT_REASON_INTERRUPT_WINDOW, "INTERRUPT_WINDOW" }, { EXIT_REASON_NMI_WINDOW, "NMI_WINDOW" }, { EXIT_REASON_TASK_SWITCH, "TASK_SWITCH" }, { EXIT_REASON_CPUID, "CPUID" }, { EXIT_REASON_HLT, "HLT" }, { EXIT_REASON_INVD, "INVD" }, { EXIT_REASON_INVLPG, "INVLPG" }, { EXIT_REASON_RDPMC, "RDPMC" }, { EXIT_REASON_RDTSC, "RDTSC" }, { EXIT_REASON_VMCALL, "VMCALL" }, { EXIT_REASON_VMCLEAR, "VMCLEAR" }, { EXIT_REASON_VMLAUNCH, "VMLAUNCH" }, { EXIT_REASON_VMPTRLD, "VMPTRLD" }, { EXIT_REASON_VMPTRST, "VMPTRST" }, { EXIT_REASON_VMREAD, "VMREAD" }, { EXIT_REASON_VMRESUME, "VMRESUME" }, { EXIT_REASON_VMWRITE, "VMWRITE" }, { EXIT_REASON_VMOFF, "VMOFF" }, { EXIT_REASON_VMON, "VMON" }, { EXIT_REASON_CR_ACCESS, "CR_ACCESS" }, { EXIT_REASON_DR_ACCESS, "DR_ACCESS" }, { EXIT_REASON_IO_INSTRUCTION, "IO_INSTRUCTION" }, { EXIT_REASON_MSR_READ, "MSR_READ" }, { EXIT_REASON_MSR_WRITE, "MSR_WRITE" }, { EXIT_REASON_INVALID_STATE, "INVALID_STATE" }, { EXIT_REASON_MSR_LOAD_FAIL, "MSR_LOAD_FAIL" }, { EXIT_REASON_MWAIT_INSTRUCTION, "MWAIT_INSTRUCTION" }, { EXIT_REASON_MONITOR_TRAP_FLAG, "MONITOR_TRAP_FLAG" }, { EXIT_REASON_MONITOR_INSTRUCTION, "MONITOR_INSTRUCTION" }, { EXIT_REASON_PAUSE_INSTRUCTION, "PAUSE_INSTRUCTION" }, { EXIT_REASON_MCE_DURING_VMENTRY, "MCE_DURING_VMENTRY" }, { EXIT_REASON_TPR_BELOW_THRESHOLD, "TPR_BELOW_THRESHOLD" }, { EXIT_REASON_APIC_ACCESS, "APIC_ACCESS" }, { EXIT_REASON_EOI_INDUCED, "EOI_INDUCED" }, { EXIT_REASON_GDTR_IDTR, "GDTR_IDTR" }, { EXIT_REASON_LDTR_TR, "LDTR_TR" }, { EXIT_REASON_EPT_VIOLATION, "EPT_VIOLATION" }, { EXIT_REASON_EPT_MISCONFIG, "EPT_MISCONFIG" }, { EXIT_REASON_INVEPT, "INVEPT" }, { EXIT_REASON_RDTSCP, "RDTSCP" }, { EXIT_REASON_PREEMPTION_TIMER, "PREEMPTION_TIMER" }, { EXIT_REASON_INVVPID, "INVVPID" }, { EXIT_REASON_WBINVD, "WBINVD" }, { EXIT_REASON_XSETBV, "XSETBV" }, { EXIT_REASON_APIC_WRITE, "APIC_WRITE" }, { EXIT_REASON_RDRAND, "RDRAND" }, { EXIT_REASON_INVPCID, "INVPCID" }, { EXIT_REASON_VMFUNC, "VMFUNC" }, { EXIT_REASON_ENCLS, "ENCLS" }, { EXIT_REASON_RDSEED, "RDSEED" }, { EXIT_REASON_PML_FULL, "PML_FULL" }, { EXIT_REASON_XSAVES, "XSAVES" }, { EXIT_REASON_XRSTORS, "XRSTORS" }, { EXIT_REASON_UMWAIT, "UMWAIT" }, { EXIT_REASON_TPAUSE, "TPAUSE" }, { EXIT_REASON_BUS_LOCK, "BUS_LOCK" }
+#define EXIT_REASON_NOTIFY 75
+#define VMX_EXIT_REASONS { EXIT_REASON_EXCEPTION_NMI, "EXCEPTION_NMI" }, { EXIT_REASON_EXTERNAL_INTERRUPT, "EXTERNAL_INTERRUPT" }, { EXIT_REASON_TRIPLE_FAULT, "TRIPLE_FAULT" }, { EXIT_REASON_INIT_SIGNAL, "INIT_SIGNAL" }, { EXIT_REASON_SIPI_SIGNAL, "SIPI_SIGNAL" }, { EXIT_REASON_INTERRUPT_WINDOW, "INTERRUPT_WINDOW" }, { EXIT_REASON_NMI_WINDOW, "NMI_WINDOW" }, { EXIT_REASON_TASK_SWITCH, "TASK_SWITCH" }, { EXIT_REASON_CPUID, "CPUID" }, { EXIT_REASON_HLT, "HLT" }, { EXIT_REASON_INVD, "INVD" }, { EXIT_REASON_INVLPG, "INVLPG" }, { EXIT_REASON_RDPMC, "RDPMC" }, { EXIT_REASON_RDTSC, "RDTSC" }, { EXIT_REASON_VMCALL, "VMCALL" }, { EXIT_REASON_VMCLEAR, "VMCLEAR" }, { EXIT_REASON_VMLAUNCH, "VMLAUNCH" }, { EXIT_REASON_VMPTRLD, "VMPTRLD" }, { EXIT_REASON_VMPTRST, "VMPTRST" }, { EXIT_REASON_VMREAD, "VMREAD" }, { EXIT_REASON_VMRESUME, "VMRESUME" }, { EXIT_REASON_VMWRITE, "VMWRITE" }, { EXIT_REASON_VMOFF, "VMOFF" }, { EXIT_REASON_VMON, "VMON" }, { EXIT_REASON_CR_ACCESS, "CR_ACCESS" }, { EXIT_REASON_DR_ACCESS, "DR_ACCESS" }, { EXIT_REASON_IO_INSTRUCTION, "IO_INSTRUCTION" }, { EXIT_REASON_MSR_READ, "MSR_READ" }, { EXIT_REASON_MSR_WRITE, "MSR_WRITE" }, { EXIT_REASON_INVALID_STATE, "INVALID_STATE" }, { EXIT_REASON_MSR_LOAD_FAIL, "MSR_LOAD_FAIL" }, { EXIT_REASON_MWAIT_INSTRUCTION, "MWAIT_INSTRUCTION" }, { EXIT_REASON_MONITOR_TRAP_FLAG, "MONITOR_TRAP_FLAG" }, { EXIT_REASON_MONITOR_INSTRUCTION, "MONITOR_INSTRUCTION" }, { EXIT_REASON_PAUSE_INSTRUCTION, "PAUSE_INSTRUCTION" }, { EXIT_REASON_MCE_DURING_VMENTRY, "MCE_DURING_VMENTRY" }, { EXIT_REASON_TPR_BELOW_THRESHOLD, "TPR_BELOW_THRESHOLD" }, { EXIT_REASON_APIC_ACCESS, "APIC_ACCESS" }, { EXIT_REASON_EOI_INDUCED, "EOI_INDUCED" }, { EXIT_REASON_GDTR_IDTR, "GDTR_IDTR" }, { EXIT_REASON_LDTR_TR, "LDTR_TR" }, { EXIT_REASON_EPT_VIOLATION, "EPT_VIOLATION" }, { EXIT_REASON_EPT_MISCONFIG, "EPT_MISCONFIG" }, { EXIT_REASON_INVEPT, "INVEPT" }, { EXIT_REASON_RDTSCP, "RDTSCP" }, { EXIT_REASON_PREEMPTION_TIMER, "PREEMPTION_TIMER" }, { EXIT_REASON_INVVPID, "INVVPID" }, { EXIT_REASON_WBINVD, "WBINVD" }, { EXIT_REASON_XSETBV, "XSETBV" }, { EXIT_REASON_APIC_WRITE, "APIC_WRITE" }, { EXIT_REASON_RDRAND, "RDRAND" }, { EXIT_REASON_INVPCID, "INVPCID" }, { EXIT_REASON_VMFUNC, "VMFUNC" }, { EXIT_REASON_ENCLS, "ENCLS" }, { EXIT_REASON_RDSEED, "RDSEED" }, { EXIT_REASON_PML_FULL, "PML_FULL" }, { EXIT_REASON_XSAVES, "XSAVES" }, { EXIT_REASON_XRSTORS, "XRSTORS" }, { EXIT_REASON_UMWAIT, "UMWAIT" }, { EXIT_REASON_TPAUSE, "TPAUSE" }, { EXIT_REASON_BUS_LOCK, "BUS_LOCK" }, { EXIT_REASON_NOTIFY, "NOTIFY" }
#define VMX_EXIT_REASON_FLAGS { VMX_EXIT_REASONS_FAILED_VMENTRY, "FAILED_VMENTRY" }
#define VMX_ABORT_SAVE_GUEST_MSR_FAIL 1
#define VMX_ABORT_LOAD_HOST_PDPTE_FAIL 2
diff --git a/libc/kernel/uapi/drm/amdgpu_drm.h b/libc/kernel/uapi/drm/amdgpu_drm.h
index 2d3afda..658eb31 100644
--- a/libc/kernel/uapi/drm/amdgpu_drm.h
+++ b/libc/kernel/uapi/drm/amdgpu_drm.h
@@ -453,6 +453,11 @@
#define AMDGPU_INFO_FW_DMCUB 0x14
#define AMDGPU_INFO_FW_TOC 0x15
#define AMDGPU_INFO_FW_CAP 0x16
+#define AMDGPU_INFO_FW_GFX_RLCP 0x17
+#define AMDGPU_INFO_FW_GFX_RLCV 0x18
+#define AMDGPU_INFO_FW_MES_KIQ 0x19
+#define AMDGPU_INFO_FW_MES 0x1a
+#define AMDGPU_INFO_FW_IMU 0x1b
#define AMDGPU_INFO_NUM_BYTES_MOVED 0x0f
#define AMDGPU_INFO_VRAM_USAGE 0x10
#define AMDGPU_INFO_GTT_USAGE 0x11
@@ -650,7 +655,7 @@
__u32 ib_start_alignment;
__u32 ib_size_alignment;
__u32 available_rings;
- __u32 _pad;
+ __u32 ip_discovery_version;
};
struct drm_amdgpu_info_num_handles {
__u32 uvd_max_handles;
diff --git a/libc/kernel/uapi/drm/drm_fourcc.h b/libc/kernel/uapi/drm/drm_fourcc.h
index f032fa3..8188b8f 100644
--- a/libc/kernel/uapi/drm/drm_fourcc.h
+++ b/libc/kernel/uapi/drm/drm_fourcc.h
@@ -25,7 +25,17 @@
#define fourcc_code(a,b,c,d) ((__u32) (a) | ((__u32) (b) << 8) | ((__u32) (c) << 16) | ((__u32) (d) << 24))
#define DRM_FORMAT_BIG_ENDIAN (1U << 31)
#define DRM_FORMAT_INVALID 0
+#define DRM_FORMAT_C1 fourcc_code('C', '1', ' ', ' ')
+#define DRM_FORMAT_C2 fourcc_code('C', '2', ' ', ' ')
+#define DRM_FORMAT_C4 fourcc_code('C', '4', ' ', ' ')
#define DRM_FORMAT_C8 fourcc_code('C', '8', ' ', ' ')
+#define DRM_FORMAT_D1 fourcc_code('D', '1', ' ', ' ')
+#define DRM_FORMAT_D2 fourcc_code('D', '2', ' ', ' ')
+#define DRM_FORMAT_D4 fourcc_code('D', '4', ' ', ' ')
+#define DRM_FORMAT_D8 fourcc_code('D', '8', ' ', ' ')
+#define DRM_FORMAT_R1 fourcc_code('R', '1', ' ', ' ')
+#define DRM_FORMAT_R2 fourcc_code('R', '2', ' ', ' ')
+#define DRM_FORMAT_R4 fourcc_code('R', '4', ' ', ' ')
#define DRM_FORMAT_R8 fourcc_code('R', '8', ' ', ' ')
#define DRM_FORMAT_R10 fourcc_code('R', '1', '0', ' ')
#define DRM_FORMAT_R12 fourcc_code('R', '1', '2', ' ')
@@ -86,7 +96,9 @@
#define DRM_FORMAT_UYVY fourcc_code('U', 'Y', 'V', 'Y')
#define DRM_FORMAT_VYUY fourcc_code('V', 'Y', 'U', 'Y')
#define DRM_FORMAT_AYUV fourcc_code('A', 'Y', 'U', 'V')
+#define DRM_FORMAT_AVUY8888 fourcc_code('A', 'V', 'U', 'Y')
#define DRM_FORMAT_XYUV8888 fourcc_code('X', 'Y', 'U', 'V')
+#define DRM_FORMAT_XVUY8888 fourcc_code('X', 'V', 'U', 'Y')
#define DRM_FORMAT_VUY888 fourcc_code('V', 'U', '2', '4')
#define DRM_FORMAT_VUY101010 fourcc_code('V', 'U', '3', '0')
#define DRM_FORMAT_Y210 fourcc_code('Y', '2', '1', '0')
@@ -241,11 +253,13 @@
#define AMD_FMT_MOD_TILE_VER_GFX9 1
#define AMD_FMT_MOD_TILE_VER_GFX10 2
#define AMD_FMT_MOD_TILE_VER_GFX10_RBPLUS 3
+#define AMD_FMT_MOD_TILE_VER_GFX11 4
#define AMD_FMT_MOD_TILE_GFX9_64K_S 9
#define AMD_FMT_MOD_TILE_GFX9_64K_D 10
#define AMD_FMT_MOD_TILE_GFX9_64K_S_X 25
#define AMD_FMT_MOD_TILE_GFX9_64K_D_X 26
#define AMD_FMT_MOD_TILE_GFX9_64K_R_X 27
+#define AMD_FMT_MOD_TILE_GFX11_256K_R_X 31
#define AMD_FMT_MOD_DCC_BLOCK_64B 0
#define AMD_FMT_MOD_DCC_BLOCK_128B 1
#define AMD_FMT_MOD_DCC_BLOCK_256B 2
diff --git a/libc/kernel/uapi/drm/i915_drm.h b/libc/kernel/uapi/drm/i915_drm.h
index 1c79905..198b969 100644
--- a/libc/kernel/uapi/drm/i915_drm.h
+++ b/libc/kernel/uapi/drm/i915_drm.h
@@ -368,10 +368,11 @@
#define I915_PARAM_PERF_REVISION 54
#define I915_PARAM_HAS_EXEC_TIMELINE_FENCES 55
#define I915_PARAM_HAS_USERPTR_PROBE 56
-typedef struct drm_i915_getparam {
+struct drm_i915_getparam {
__s32 param;
int __user * value;
-} drm_i915_getparam_t;
+};
+typedef struct drm_i915_getparam drm_i915_getparam_t;
#define I915_SETPARAM_USE_MI_BATCHBUFFER_START 1
#define I915_SETPARAM_TEX_LRU_LOG_GRANULARITY 2
#define I915_SETPARAM_ALLOW_BATCHBUFFER 3
@@ -526,13 +527,13 @@
};
struct drm_i915_gem_exec_fence {
__u32 handle;
+ __u32 flags;
#define I915_EXEC_FENCE_WAIT (1 << 0)
#define I915_EXEC_FENCE_SIGNAL (1 << 1)
#define __I915_EXEC_FENCE_UNKNOWN_FLAGS (- (I915_EXEC_FENCE_SIGNAL << 1))
- __u32 flags;
};
-#define DRM_I915_GEM_EXECBUFFER_EXT_TIMELINE_FENCES 0
struct drm_i915_gem_execbuffer_ext_timeline_fences {
+#define DRM_I915_GEM_EXECBUFFER_EXT_TIMELINE_FENCES 0
struct i915_user_extension base;
__u64 fence_count;
__u64 handles_ptr;
@@ -547,6 +548,7 @@
__u32 DR4;
__u32 num_cliprects;
__u64 cliprects_ptr;
+ __u64 flags;
#define I915_EXEC_RING_MASK (0x3f)
#define I915_EXEC_DEFAULT (0 << 0)
#define I915_EXEC_RENDER (1 << 0)
@@ -557,10 +559,6 @@
#define I915_EXEC_CONSTANTS_REL_GENERAL (0 << 6)
#define I915_EXEC_CONSTANTS_ABSOLUTE (1 << 6)
#define I915_EXEC_CONSTANTS_REL_SURFACE (2 << 6)
- __u64 flags;
- __u64 rsvd1;
- __u64 rsvd2;
-};
#define I915_EXEC_GEN7_SOL_RESET (1 << 8)
#define I915_EXEC_SECURE (1 << 9)
#define I915_EXEC_IS_PINNED (1 << 10)
@@ -579,6 +577,9 @@
#define I915_EXEC_FENCE_SUBMIT (1 << 20)
#define I915_EXEC_USE_EXTENSIONS (1 << 21)
#define __I915_EXEC_UNKNOWN_FLAGS (- (I915_EXEC_USE_EXTENSIONS << 1))
+ __u64 rsvd1;
+ __u64 rsvd2;
+};
#define I915_EXEC_CONTEXT_ID_MASK (0xffffffff)
#define i915_execbuffer2_set_context_id(eb2,context) (eb2).rsvd1 = context & I915_EXEC_CONTEXT_ID_MASK
#define i915_execbuffer2_get_context_id(eb2) ((eb2).rsvd1 & I915_EXEC_CONTEXT_ID_MASK)
@@ -722,6 +723,8 @@
#define I915_CONTEXT_CREATE_FLAGS_SINGLE_TIMELINE (1u << 1)
#define I915_CONTEXT_CREATE_FLAGS_UNKNOWN (- (I915_CONTEXT_CREATE_FLAGS_SINGLE_TIMELINE << 1))
__u64 extensions;
+#define I915_CONTEXT_CREATE_EXT_SETPARAM 0
+#define I915_CONTEXT_CREATE_EXT_CLONE 1
};
struct drm_i915_gem_context_param {
__u32 ctx_id;
@@ -761,7 +764,7 @@
__u16 num_siblings;
__u32 flags;
__u64 mbz64;
- struct i915_engine_class_instance engines[0];
+ struct i915_engine_class_instance engines[];
} __attribute__((packed));
#define I915_DEFINE_CONTEXT_ENGINES_LOAD_BALANCE(name__,N__) struct { struct i915_user_extension base; __u16 engine_index; __u16 num_siblings; __u32 flags; __u64 mbz64; struct i915_engine_class_instance engines[N__]; \
} __attribute__((packed)) name__
@@ -772,7 +775,7 @@
__u16 num_bonds;
__u64 flags;
__u64 mbz64[4];
- struct i915_engine_class_instance engines[0];
+ struct i915_engine_class_instance engines[];
} __attribute__((packed));
#define I915_DEFINE_CONTEXT_ENGINES_BOND(name__,N__) struct { struct i915_user_extension base; struct i915_engine_class_instance master; __u16 virtual_index; __u16 num_bonds; __u64 flags; __u64 mbz64[4]; struct i915_engine_class_instance engines[N__]; \
} __attribute__((packed)) name__
@@ -784,8 +787,8 @@
__u16 mbz16;
__u64 flags;
__u64 mbz64[3];
- struct i915_engine_class_instance engines[0];
-} __packed;
+ struct i915_engine_class_instance engines[];
+} __attribute__((__packed__));
#define I915_DEFINE_CONTEXT_ENGINES_PARALLEL_SUBMIT(name__,N__) struct { struct i915_user_extension base; __u16 engine_index; __u16 width; __u16 num_siblings; __u16 mbz16; __u64 flags; __u64 mbz64[3]; struct i915_engine_class_instance engines[N__]; \
} __attribute__((packed)) name__
struct i915_context_param_engines {
@@ -798,11 +801,9 @@
#define I915_DEFINE_CONTEXT_PARAM_ENGINES(name__,N__) struct { __u64 extensions; struct i915_engine_class_instance engines[N__]; \
} __attribute__((packed)) name__
struct drm_i915_gem_context_create_ext_setparam {
-#define I915_CONTEXT_CREATE_EXT_SETPARAM 0
struct i915_user_extension base;
struct drm_i915_gem_context_param param;
};
-#define I915_CONTEXT_CREATE_EXT_CLONE 1
struct drm_i915_gem_context_destroy {
__u32 ctx_id;
__u32 pad;
@@ -959,7 +960,13 @@
__u32 rsvd0;
__u64 probed_size;
__u64 unallocated_size;
- __u64 rsvd1[8];
+ union {
+ __u64 rsvd1[8];
+ struct {
+ __u64 probed_cpu_visible_size;
+ __u64 unallocated_cpu_visible_size;
+ };
+ };
};
struct drm_i915_query_memory_regions {
__u32 num_regions;
@@ -969,6 +976,7 @@
struct drm_i915_gem_create_ext {
__u64 size;
__u32 handle;
+#define I915_GEM_CREATE_EXT_FLAG_NEEDS_CPU_ACCESS (1 << 0)
__u32 flags;
#define I915_GEM_CREATE_EXT_MEMORY_REGIONS 0
#define I915_GEM_CREATE_EXT_PROTECTED_CONTENT 1
diff --git a/libc/kernel/uapi/drm/panfrost_drm.h b/libc/kernel/uapi/drm/panfrost_drm.h
index 1f4473d..04a85df 100644
--- a/libc/kernel/uapi/drm/panfrost_drm.h
+++ b/libc/kernel/uapi/drm/panfrost_drm.h
@@ -136,6 +136,38 @@
__u32 madv;
__u32 retained;
};
+#define PANFROSTDUMP_MAJOR 1
+#define PANFROSTDUMP_MINOR 0
+#define PANFROSTDUMP_MAGIC 0x464E4150
+#define PANFROSTDUMP_BUF_REG 0
+#define PANFROSTDUMP_BUF_BOMAP (PANFROSTDUMP_BUF_REG + 1)
+#define PANFROSTDUMP_BUF_BO (PANFROSTDUMP_BUF_BOMAP + 1)
+#define PANFROSTDUMP_BUF_TRAILER (PANFROSTDUMP_BUF_BO + 1)
+struct panfrost_dump_object_header {
+ __u32 magic;
+ __u32 type;
+ __u32 file_size;
+ __u32 file_offset;
+ union {
+ struct {
+ __u64 jc;
+ __u32 gpu_id;
+ __u32 major;
+ __u32 minor;
+ __u64 nbos;
+ } reghdr;
+ struct {
+ __u32 valid;
+ __u64 iova;
+ __u32 data[2];
+ } bomap;
+ __u32 sizer[496];
+ };
+};
+struct panfrost_dump_registers {
+ __u32 reg;
+ __u32 value;
+};
#ifdef __cplusplus
}
#endif
diff --git a/libc/kernel/uapi/linux/android/binder.h b/libc/kernel/uapi/linux/android/binder.h
index 2745972..52f4c6b 100644
--- a/libc/kernel/uapi/linux/android/binder.h
+++ b/libc/kernel/uapi/linux/android/binder.h
@@ -152,6 +152,7 @@
TF_STATUS_CODE = 0x08,
TF_ACCEPT_FDS = 0x10,
TF_CLEAR_BUF = 0x20,
+ TF_UPDATE_TXN = 0x40,
};
struct binder_transaction_data {
union {
@@ -188,7 +189,7 @@
struct binder_handle_cookie {
__u32 handle;
binder_uintptr_t cookie;
-} __packed;
+} __attribute__((__packed__));
struct binder_pri_desc {
__s32 priority;
__u32 desc;
diff --git a/libc/kernel/uapi/linux/ashmem.h b/libc/kernel/uapi/linux/ashmem.h
index 174667f..88f0e81 100644
--- a/libc/kernel/uapi/linux/ashmem.h
+++ b/libc/kernel/uapi/linux/ashmem.h
@@ -41,4 +41,5 @@
#define ASHMEM_UNPIN _IOW(__ASHMEMIOC, 8, struct ashmem_pin)
#define ASHMEM_GET_PIN_STATUS _IO(__ASHMEMIOC, 9)
#define ASHMEM_PURGE_ALL_CACHES _IO(__ASHMEMIOC, 10)
+#define ASHMEM_GET_FILE_ID _IOR(__ASHMEMIOC, 11, unsigned long)
#endif
diff --git a/libc/kernel/uapi/linux/atm_zatm.h b/libc/kernel/uapi/linux/atm_zatm.h
new file mode 100644
index 0000000..1649b85
--- /dev/null
+++ b/libc/kernel/uapi/linux/atm_zatm.h
@@ -0,0 +1,42 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ *** This header was automatically generated from a Linux kernel header
+ *** of the same name, to make information necessary for userspace to
+ *** call into the kernel available to libc. It contains only constants,
+ *** structures, and macros generated from the original header, and thus,
+ *** contains no copyrightable information.
+ ***
+ *** To edit the content of this header, modify the corresponding
+ *** source file (e.g. under external/kernel-headers/original/) then
+ *** run bionic/libc/kernel/tools/update_all.py
+ ***
+ *** Any manual change here will be lost the next time this script will
+ *** be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef LINUX_ATM_ZATM_H
+#define LINUX_ATM_ZATM_H
+#include <linux/atmapi.h>
+#include <linux/atmioc.h>
+#define ZATM_GETPOOL _IOW('a', ATMIOC_SARPRV + 1, struct atmif_sioc)
+#define ZATM_GETPOOLZ _IOW('a', ATMIOC_SARPRV + 2, struct atmif_sioc)
+#define ZATM_SETPOOL _IOW('a', ATMIOC_SARPRV + 3, struct atmif_sioc)
+struct zatm_pool_info {
+ int ref_count;
+ int low_water, high_water;
+ int rqa_count, rqu_count;
+ int offset, next_off;
+ int next_cnt, next_thres;
+};
+struct zatm_pool_req {
+ int pool_num;
+ struct zatm_pool_info info;
+};
+#define ZATM_OAM_POOL 0
+#define ZATM_AAL0_POOL 1
+#define ZATM_AAL5_POOL_BASE 2
+#define ZATM_LAST_POOL ZATM_AAL5_POOL_BASE + 10
+#define ZATM_TIMER_HISTORY_SIZE 16
+#endif
diff --git a/libc/kernel/uapi/linux/audit.h b/libc/kernel/uapi/linux/audit.h
index 2c37e2a..f7c969b 100644
--- a/libc/kernel/uapi/linux/audit.h
+++ b/libc/kernel/uapi/linux/audit.h
@@ -140,7 +140,7 @@
#define AUDIT_MAX_KEY_LEN 256
#define AUDIT_BITMASK_SIZE 64
#define AUDIT_WORD(nr) ((__u32) ((nr) / 32))
-#define AUDIT_BIT(nr) (1 << ((nr) - AUDIT_WORD(nr) * 32))
+#define AUDIT_BIT(nr) (1U << ((nr) - AUDIT_WORD(nr) * 32))
#define AUDIT_SYSCALL_CLASSES 16
#define AUDIT_CLASS_DIR_WRITE 0
#define AUDIT_CLASS_DIR_WRITE_32 1
diff --git a/libc/kernel/uapi/linux/blkzoned.h b/libc/kernel/uapi/linux/blkzoned.h
index b551e8b..e41ac9f 100644
--- a/libc/kernel/uapi/linux/blkzoned.h
+++ b/libc/kernel/uapi/linux/blkzoned.h
@@ -54,7 +54,7 @@
__u64 sector;
__u32 nr_zones;
__u32 flags;
- struct blk_zone zones[0];
+ struct blk_zone zones[];
};
struct blk_zone_range {
__u64 sector;
diff --git a/libc/kernel/uapi/linux/bpf.h b/libc/kernel/uapi/linux/bpf.h
index dd10b34..807884a 100644
--- a/libc/kernel/uapi/linux/bpf.h
+++ b/libc/kernel/uapi/linux/bpf.h
@@ -74,10 +74,27 @@
__u64 cgroup_inode_id;
__u32 attach_type;
};
+enum bpf_cgroup_iter_order {
+ BPF_CGROUP_ITER_ORDER_UNSPEC = 0,
+ BPF_CGROUP_ITER_SELF_ONLY,
+ BPF_CGROUP_ITER_DESCENDANTS_PRE,
+ BPF_CGROUP_ITER_DESCENDANTS_POST,
+ BPF_CGROUP_ITER_ANCESTORS_UP,
+};
union bpf_iter_link_info {
struct {
__u32 map_fd;
} map;
+ struct {
+ enum bpf_cgroup_iter_order order;
+ __u32 cgroup_fd;
+ __u64 cgroup_id;
+ } cgroup;
+ struct {
+ __u32 tid;
+ __u32 pid;
+ __u32 pid_fd;
+ } task;
};
enum bpf_cmd {
BPF_MAP_CREATE,
@@ -150,6 +167,7 @@
BPF_MAP_TYPE_INODE_STORAGE,
BPF_MAP_TYPE_TASK_STORAGE,
BPF_MAP_TYPE_BLOOM_FILTER,
+ BPF_MAP_TYPE_USER_RINGBUF,
};
enum bpf_prog_type {
BPF_PROG_TYPE_UNSPEC,
@@ -229,6 +247,7 @@
BPF_SK_REUSEPORT_SELECT_OR_MIGRATE,
BPF_PERF_EVENT,
BPF_TRACE_KPROBE_MULTI,
+ BPF_LSM_CGROUP,
__MAX_BPF_ATTACH_TYPE
};
#define MAX_BPF_ATTACH_TYPE __MAX_BPF_ATTACH_TYPE
@@ -423,6 +442,7 @@
__u32 attach_flags;
__aligned_u64 prog_ids;
__u32 prog_cnt;
+ __aligned_u64 prog_attach_flags;
} query;
struct {
__u64 name;
@@ -498,7 +518,7 @@
__u32 flags;
} prog_bind_map;
} __attribute__((aligned(8)));
-#define __BPF_FUNC_MAPPER(FN) FN(unspec), FN(map_lookup_elem), FN(map_update_elem), FN(map_delete_elem), FN(probe_read), FN(ktime_get_ns), FN(trace_printk), FN(get_prandom_u32), FN(get_smp_processor_id), FN(skb_store_bytes), FN(l3_csum_replace), FN(l4_csum_replace), FN(tail_call), FN(clone_redirect), FN(get_current_pid_tgid), FN(get_current_uid_gid), FN(get_current_comm), FN(get_cgroup_classid), FN(skb_vlan_push), FN(skb_vlan_pop), FN(skb_get_tunnel_key), FN(skb_set_tunnel_key), FN(perf_event_read), FN(redirect), FN(get_route_realm), FN(perf_event_output), FN(skb_load_bytes), FN(get_stackid), FN(csum_diff), FN(skb_get_tunnel_opt), FN(skb_set_tunnel_opt), FN(skb_change_proto), FN(skb_change_type), FN(skb_under_cgroup), FN(get_hash_recalc), FN(get_current_task), FN(probe_write_user), FN(current_task_under_cgroup), FN(skb_change_tail), FN(skb_pull_data), FN(csum_update), FN(set_hash_invalid), FN(get_numa_node_id), FN(skb_change_head), FN(xdp_adjust_head), FN(probe_read_str), FN(get_socket_cookie), FN(get_socket_uid), FN(set_hash), FN(setsockopt), FN(skb_adjust_room), FN(redirect_map), FN(sk_redirect_map), FN(sock_map_update), FN(xdp_adjust_meta), FN(perf_event_read_value), FN(perf_prog_read_value), FN(getsockopt), FN(override_return), FN(sock_ops_cb_flags_set), FN(msg_redirect_map), FN(msg_apply_bytes), FN(msg_cork_bytes), FN(msg_pull_data), FN(bind), FN(xdp_adjust_tail), FN(skb_get_xfrm_state), FN(get_stack), FN(skb_load_bytes_relative), FN(fib_lookup), FN(sock_hash_update), FN(msg_redirect_hash), FN(sk_redirect_hash), FN(lwt_push_encap), FN(lwt_seg6_store_bytes), FN(lwt_seg6_adjust_srh), FN(lwt_seg6_action), FN(rc_repeat), FN(rc_keydown), FN(skb_cgroup_id), FN(get_current_cgroup_id), FN(get_local_storage), FN(sk_select_reuseport), FN(skb_ancestor_cgroup_id), FN(sk_lookup_tcp), FN(sk_lookup_udp), FN(sk_release), FN(map_push_elem), FN(map_pop_elem), FN(map_peek_elem), FN(msg_push_data), FN(msg_pop_data), FN(rc_pointer_rel), FN(spin_lock), FN(spin_unlock), FN(sk_fullsock), FN(tcp_sock), FN(skb_ecn_set_ce), FN(get_listener_sock), FN(skc_lookup_tcp), FN(tcp_check_syncookie), FN(sysctl_get_name), FN(sysctl_get_current_value), FN(sysctl_get_new_value), FN(sysctl_set_new_value), FN(strtol), FN(strtoul), FN(sk_storage_get), FN(sk_storage_delete), FN(send_signal), FN(tcp_gen_syncookie), FN(skb_output), FN(probe_read_user), FN(probe_read_kernel), FN(probe_read_user_str), FN(probe_read_kernel_str), FN(tcp_send_ack), FN(send_signal_thread), FN(jiffies64), FN(read_branch_records), FN(get_ns_current_pid_tgid), FN(xdp_output), FN(get_netns_cookie), FN(get_current_ancestor_cgroup_id), FN(sk_assign), FN(ktime_get_boot_ns), FN(seq_printf), FN(seq_write), FN(sk_cgroup_id), FN(sk_ancestor_cgroup_id), FN(ringbuf_output), FN(ringbuf_reserve), FN(ringbuf_submit), FN(ringbuf_discard), FN(ringbuf_query), FN(csum_level), FN(skc_to_tcp6_sock), FN(skc_to_tcp_sock), FN(skc_to_tcp_timewait_sock), FN(skc_to_tcp_request_sock), FN(skc_to_udp6_sock), FN(get_task_stack), FN(load_hdr_opt), FN(store_hdr_opt), FN(reserve_hdr_opt), FN(inode_storage_get), FN(inode_storage_delete), FN(d_path), FN(copy_from_user), FN(snprintf_btf), FN(seq_printf_btf), FN(skb_cgroup_classid), FN(redirect_neigh), FN(per_cpu_ptr), FN(this_cpu_ptr), FN(redirect_peer), FN(task_storage_get), FN(task_storage_delete), FN(get_current_task_btf), FN(bprm_opts_set), FN(ktime_get_coarse_ns), FN(ima_inode_hash), FN(sock_from_file), FN(check_mtu), FN(for_each_map_elem), FN(snprintf), FN(sys_bpf), FN(btf_find_by_name_kind), FN(sys_close), FN(timer_init), FN(timer_set_callback), FN(timer_start), FN(timer_cancel), FN(get_func_ip), FN(get_attach_cookie), FN(task_pt_regs), FN(get_branch_snapshot), FN(trace_vprintk), FN(skc_to_unix_sock), FN(kallsyms_lookup_name), FN(find_vma), FN(loop), FN(strncmp), FN(get_func_arg), FN(get_func_ret), FN(get_func_arg_cnt), FN(get_retval), FN(set_retval), FN(xdp_get_buff_len), FN(xdp_load_bytes), FN(xdp_store_bytes), FN(copy_from_user_task), FN(skb_set_tstamp), FN(ima_file_hash), FN(kptr_xchg), FN(map_lookup_percpu_elem), FN(skc_to_mptcp_sock), FN(dynptr_from_mem), FN(ringbuf_reserve_dynptr), FN(ringbuf_submit_dynptr), FN(ringbuf_discard_dynptr), FN(dynptr_read), FN(dynptr_write), FN(dynptr_data),
+#define __BPF_FUNC_MAPPER(FN) FN(unspec), FN(map_lookup_elem), FN(map_update_elem), FN(map_delete_elem), FN(probe_read), FN(ktime_get_ns), FN(trace_printk), FN(get_prandom_u32), FN(get_smp_processor_id), FN(skb_store_bytes), FN(l3_csum_replace), FN(l4_csum_replace), FN(tail_call), FN(clone_redirect), FN(get_current_pid_tgid), FN(get_current_uid_gid), FN(get_current_comm), FN(get_cgroup_classid), FN(skb_vlan_push), FN(skb_vlan_pop), FN(skb_get_tunnel_key), FN(skb_set_tunnel_key), FN(perf_event_read), FN(redirect), FN(get_route_realm), FN(perf_event_output), FN(skb_load_bytes), FN(get_stackid), FN(csum_diff), FN(skb_get_tunnel_opt), FN(skb_set_tunnel_opt), FN(skb_change_proto), FN(skb_change_type), FN(skb_under_cgroup), FN(get_hash_recalc), FN(get_current_task), FN(probe_write_user), FN(current_task_under_cgroup), FN(skb_change_tail), FN(skb_pull_data), FN(csum_update), FN(set_hash_invalid), FN(get_numa_node_id), FN(skb_change_head), FN(xdp_adjust_head), FN(probe_read_str), FN(get_socket_cookie), FN(get_socket_uid), FN(set_hash), FN(setsockopt), FN(skb_adjust_room), FN(redirect_map), FN(sk_redirect_map), FN(sock_map_update), FN(xdp_adjust_meta), FN(perf_event_read_value), FN(perf_prog_read_value), FN(getsockopt), FN(override_return), FN(sock_ops_cb_flags_set), FN(msg_redirect_map), FN(msg_apply_bytes), FN(msg_cork_bytes), FN(msg_pull_data), FN(bind), FN(xdp_adjust_tail), FN(skb_get_xfrm_state), FN(get_stack), FN(skb_load_bytes_relative), FN(fib_lookup), FN(sock_hash_update), FN(msg_redirect_hash), FN(sk_redirect_hash), FN(lwt_push_encap), FN(lwt_seg6_store_bytes), FN(lwt_seg6_adjust_srh), FN(lwt_seg6_action), FN(rc_repeat), FN(rc_keydown), FN(skb_cgroup_id), FN(get_current_cgroup_id), FN(get_local_storage), FN(sk_select_reuseport), FN(skb_ancestor_cgroup_id), FN(sk_lookup_tcp), FN(sk_lookup_udp), FN(sk_release), FN(map_push_elem), FN(map_pop_elem), FN(map_peek_elem), FN(msg_push_data), FN(msg_pop_data), FN(rc_pointer_rel), FN(spin_lock), FN(spin_unlock), FN(sk_fullsock), FN(tcp_sock), FN(skb_ecn_set_ce), FN(get_listener_sock), FN(skc_lookup_tcp), FN(tcp_check_syncookie), FN(sysctl_get_name), FN(sysctl_get_current_value), FN(sysctl_get_new_value), FN(sysctl_set_new_value), FN(strtol), FN(strtoul), FN(sk_storage_get), FN(sk_storage_delete), FN(send_signal), FN(tcp_gen_syncookie), FN(skb_output), FN(probe_read_user), FN(probe_read_kernel), FN(probe_read_user_str), FN(probe_read_kernel_str), FN(tcp_send_ack), FN(send_signal_thread), FN(jiffies64), FN(read_branch_records), FN(get_ns_current_pid_tgid), FN(xdp_output), FN(get_netns_cookie), FN(get_current_ancestor_cgroup_id), FN(sk_assign), FN(ktime_get_boot_ns), FN(seq_printf), FN(seq_write), FN(sk_cgroup_id), FN(sk_ancestor_cgroup_id), FN(ringbuf_output), FN(ringbuf_reserve), FN(ringbuf_submit), FN(ringbuf_discard), FN(ringbuf_query), FN(csum_level), FN(skc_to_tcp6_sock), FN(skc_to_tcp_sock), FN(skc_to_tcp_timewait_sock), FN(skc_to_tcp_request_sock), FN(skc_to_udp6_sock), FN(get_task_stack), FN(load_hdr_opt), FN(store_hdr_opt), FN(reserve_hdr_opt), FN(inode_storage_get), FN(inode_storage_delete), FN(d_path), FN(copy_from_user), FN(snprintf_btf), FN(seq_printf_btf), FN(skb_cgroup_classid), FN(redirect_neigh), FN(per_cpu_ptr), FN(this_cpu_ptr), FN(redirect_peer), FN(task_storage_get), FN(task_storage_delete), FN(get_current_task_btf), FN(bprm_opts_set), FN(ktime_get_coarse_ns), FN(ima_inode_hash), FN(sock_from_file), FN(check_mtu), FN(for_each_map_elem), FN(snprintf), FN(sys_bpf), FN(btf_find_by_name_kind), FN(sys_close), FN(timer_init), FN(timer_set_callback), FN(timer_start), FN(timer_cancel), FN(get_func_ip), FN(get_attach_cookie), FN(task_pt_regs), FN(get_branch_snapshot), FN(trace_vprintk), FN(skc_to_unix_sock), FN(kallsyms_lookup_name), FN(find_vma), FN(loop), FN(strncmp), FN(get_func_arg), FN(get_func_ret), FN(get_func_arg_cnt), FN(get_retval), FN(set_retval), FN(xdp_get_buff_len), FN(xdp_load_bytes), FN(xdp_store_bytes), FN(copy_from_user_task), FN(skb_set_tstamp), FN(ima_file_hash), FN(kptr_xchg), FN(map_lookup_percpu_elem), FN(skc_to_mptcp_sock), FN(dynptr_from_mem), FN(ringbuf_reserve_dynptr), FN(ringbuf_submit_dynptr), FN(ringbuf_discard_dynptr), FN(dynptr_read), FN(dynptr_write), FN(dynptr_data), FN(tcp_raw_gen_syncookie_ipv4), FN(tcp_raw_gen_syncookie_ipv6), FN(tcp_raw_check_syncookie_ipv4), FN(tcp_raw_check_syncookie_ipv6), FN(ktime_get_tai_ns), FN(user_ringbuf_drain),
#define __BPF_ENUM_FN(x) BPF_FUNC_ ##x
enum bpf_func_id {
__BPF_FUNC_MAPPER(__BPF_ENUM_FN) __BPF_FUNC_MAX_ID,
@@ -535,6 +555,9 @@
BPF_F_SEQ_NUMBER = (1ULL << 3),
};
enum {
+ BPF_F_TUNINFO_FLAGS = (1ULL << 4),
+};
+enum {
BPF_F_INDEX_MASK = 0xffffffffULL,
BPF_F_CURRENT_CPU = BPF_F_INDEX_MASK,
BPF_F_CTXLEN_MASK = (0xfffffULL << 32),
@@ -662,7 +685,10 @@
};
__u8 tunnel_tos;
__u8 tunnel_ttl;
- __u16 tunnel_ext;
+ union {
+ __u16 tunnel_ext;
+ __be16 tunnel_flags;
+ };
__u32 tunnel_label;
union {
__u32 local_ipv4;
@@ -684,6 +710,7 @@
BPF_DROP = 2,
BPF_REDIRECT = 7,
BPF_LWT_REROUTE = 128,
+ BPF_FLOW_DISSECTOR_CONTINUE = 129,
};
struct bpf_sock {
__u32 bound_dev_if;
@@ -846,6 +873,8 @@
__u64 run_cnt;
__u64 recursion_misses;
__u32 verified_insns;
+ __u32 attach_btf_obj_id;
+ __u32 attach_btf_id;
} __attribute__((aligned(8)));
struct bpf_map_info {
__u32 type;
@@ -899,6 +928,16 @@
__u32 map_id;
} map;
};
+ union {
+ struct {
+ __u64 cgroup_id;
+ __u32 order;
+ } cgroup;
+ struct {
+ __u32 tid;
+ __u32 pid;
+ } task;
+ };
} iter;
struct {
__u32 netns_ino;
@@ -1223,6 +1262,7 @@
BPF_CORE_TYPE_SIZE = 9,
BPF_CORE_ENUMVAL_EXISTS = 10,
BPF_CORE_ENUMVAL_VALUE = 11,
+ BPF_CORE_TYPE_MATCHES = 12,
};
struct bpf_core_relo {
__u32 insn_off;
diff --git a/libc/kernel/uapi/linux/btf.h b/libc/kernel/uapi/linux/btf.h
index fc57d3c..a1f68bf 100644
--- a/libc/kernel/uapi/linux/btf.h
+++ b/libc/kernel/uapi/linux/btf.h
@@ -65,6 +65,7 @@
BTF_KIND_FLOAT = 16,
BTF_KIND_DECL_TAG = 17,
BTF_KIND_TYPE_TAG = 18,
+ BTF_KIND_ENUM64 = 19,
NR_BTF_KINDS,
BTF_KIND_MAX = NR_BTF_KINDS - 1,
};
@@ -115,4 +116,9 @@
struct btf_decl_tag {
__s32 component_idx;
};
+struct btf_enum64 {
+ __u32 name_off;
+ __u32 val_lo32;
+ __u32 val_hi32;
+};
#endif
diff --git a/libc/kernel/uapi/linux/btrfs.h b/libc/kernel/uapi/linux/btrfs.h
index 9f76d52..506238f 100644
--- a/libc/kernel/uapi/linux/btrfs.h
+++ b/libc/kernel/uapi/linux/btrfs.h
@@ -59,7 +59,7 @@
__u64 num_ref_copies;
__u64 num_excl_copies;
struct btrfs_qgroup_limit lim;
- __u64 qgroups[0];
+ __u64 qgroups[];
};
struct btrfs_ioctl_qgroup_limit_args {
__u64 qgroupid;
@@ -176,6 +176,7 @@
#define BTRFS_FEATURE_COMPAT_RO_FREE_SPACE_TREE (1ULL << 0)
#define BTRFS_FEATURE_COMPAT_RO_FREE_SPACE_TREE_VALID (1ULL << 1)
#define BTRFS_FEATURE_COMPAT_RO_VERITY (1ULL << 2)
+#define BTRFS_FEATURE_COMPAT_RO_BLOCK_GROUP_TREE (1ULL << 3)
#define BTRFS_FEATURE_INCOMPAT_MIXED_BACKREF (1ULL << 0)
#define BTRFS_FEATURE_INCOMPAT_DEFAULT_SUBVOL (1ULL << 1)
#define BTRFS_FEATURE_INCOMPAT_MIXED_GROUPS (1ULL << 2)
@@ -304,7 +305,7 @@
struct btrfs_ioctl_search_args_v2 {
struct btrfs_ioctl_search_key key;
__u64 buf_size;
- __u64 buf[0];
+ __u64 buf[];
};
struct btrfs_ioctl_clone_range_args {
__s64 src_fd;
@@ -335,7 +336,7 @@
__u16 dest_count;
__u16 reserved1;
__u32 reserved2;
- struct btrfs_ioctl_same_extent_info info[0];
+ struct btrfs_ioctl_same_extent_info info[];
};
struct btrfs_ioctl_space_info {
__u64 flags;
@@ -345,14 +346,14 @@
struct btrfs_ioctl_space_args {
__u64 space_slots;
__u64 total_spaces;
- struct btrfs_ioctl_space_info spaces[0];
+ struct btrfs_ioctl_space_info spaces[];
};
struct btrfs_data_container {
__u32 bytes_left;
__u32 bytes_missing;
__u32 elem_cnt;
__u32 elem_missed;
- __u64 val[0];
+ __u64 val[];
};
struct btrfs_ioctl_ino_path_args {
__u64 inum;
@@ -422,7 +423,8 @@
#define BTRFS_SEND_FLAG_OMIT_STREAM_HEADER 0x2
#define BTRFS_SEND_FLAG_OMIT_END_CMD 0x4
#define BTRFS_SEND_FLAG_VERSION 0x8
-#define BTRFS_SEND_FLAG_MASK (BTRFS_SEND_FLAG_NO_FILE_DATA | BTRFS_SEND_FLAG_OMIT_STREAM_HEADER | BTRFS_SEND_FLAG_OMIT_END_CMD | BTRFS_SEND_FLAG_VERSION)
+#define BTRFS_SEND_FLAG_COMPRESSED 0x10
+#define BTRFS_SEND_FLAG_MASK (BTRFS_SEND_FLAG_NO_FILE_DATA | BTRFS_SEND_FLAG_OMIT_STREAM_HEADER | BTRFS_SEND_FLAG_OMIT_END_CMD | BTRFS_SEND_FLAG_VERSION | BTRFS_SEND_FLAG_COMPRESSED)
struct btrfs_ioctl_send_args {
__s64 send_fd;
__u64 clone_sources_count;
diff --git a/libc/kernel/uapi/linux/btrfs_tree.h b/libc/kernel/uapi/linux/btrfs_tree.h
index 02a9ae4..6cd46dd 100644
--- a/libc/kernel/uapi/linux/btrfs_tree.h
+++ b/libc/kernel/uapi/linux/btrfs_tree.h
@@ -221,7 +221,7 @@
__le64 parent_objectid;
__le64 index;
__le16 name_len;
- __u8 name[0];
+ __u8 name[];
} __attribute__((__packed__));
struct btrfs_timespec {
__le64 sec;
@@ -394,6 +394,7 @@
#define BTRFS_QGROUP_STATUS_FLAG_ON (1ULL << 0)
#define BTRFS_QGROUP_STATUS_FLAG_RESCAN (1ULL << 1)
#define BTRFS_QGROUP_STATUS_FLAG_INCONSISTENT (1ULL << 2)
+#define BTRFS_QGROUP_STATUS_FLAGS_MASK (BTRFS_QGROUP_STATUS_FLAG_ON | BTRFS_QGROUP_STATUS_FLAG_RESCAN | BTRFS_QGROUP_STATUS_FLAG_INCONSISTENT)
#define BTRFS_QGROUP_STATUS_VERSION 1
struct btrfs_qgroup_status_item {
__le64 version;
diff --git a/libc/kernel/uapi/linux/can.h b/libc/kernel/uapi/linux/can.h
index 30eeca2..1365dba 100644
--- a/libc/kernel/uapi/linux/can.h
+++ b/libc/kernel/uapi/linux/can.h
@@ -20,21 +20,29 @@
#define _UAPI_CAN_H
#include <linux/types.h>
#include <linux/socket.h>
+#include <linux/stddef.h>
#define CAN_EFF_FLAG 0x80000000U
#define CAN_RTR_FLAG 0x40000000U
#define CAN_ERR_FLAG 0x20000000U
#define CAN_SFF_MASK 0x000007FFU
#define CAN_EFF_MASK 0x1FFFFFFFU
#define CAN_ERR_MASK 0x1FFFFFFFU
+#define CANXL_PRIO_MASK CAN_SFF_MASK
typedef __u32 canid_t;
#define CAN_SFF_ID_BITS 11
#define CAN_EFF_ID_BITS 29
+#define CANXL_PRIO_BITS CAN_SFF_ID_BITS
typedef __u32 can_err_mask_t;
#define CAN_MAX_DLC 8
#define CAN_MAX_RAW_DLC 15
#define CAN_MAX_DLEN 8
#define CANFD_MAX_DLC 15
#define CANFD_MAX_DLEN 64
+#define CANXL_MIN_DLC 0
+#define CANXL_MAX_DLC 2047
+#define CANXL_MAX_DLC_MASK 0x07FF
+#define CANXL_MIN_DLEN 1
+#define CANXL_MAX_DLEN 2048
struct can_frame {
canid_t can_id;
union {
@@ -57,8 +65,22 @@
__u8 __res1;
__u8 data[CANFD_MAX_DLEN] __attribute__((aligned(8)));
};
+#define CANXL_XLF 0x80
+#define CANXL_SEC 0x01
+struct canxl_frame {
+ canid_t prio;
+ __u8 flags;
+ __u8 sdt;
+ __u16 len;
+ __u32 af;
+ __u8 data[CANXL_MAX_DLEN];
+};
#define CAN_MTU (sizeof(struct can_frame))
#define CANFD_MTU (sizeof(struct canfd_frame))
+#define CANXL_MTU (sizeof(struct canxl_frame))
+#define CANXL_HDR_SIZE (offsetof(struct canxl_frame, data))
+#define CANXL_MIN_MTU (CANXL_HDR_SIZE + 64)
+#define CANXL_MAX_MTU CANXL_MTU
#define CAN_RAW 1
#define CAN_BCM 2
#define CAN_TP16 3
diff --git a/libc/kernel/uapi/linux/can/bcm.h b/libc/kernel/uapi/linux/can/bcm.h
index 42e0782..f5ab2c2 100644
--- a/libc/kernel/uapi/linux/can/bcm.h
+++ b/libc/kernel/uapi/linux/can/bcm.h
@@ -31,7 +31,7 @@
struct bcm_timeval ival1, ival2;
canid_t can_id;
__u32 nframes;
- struct can_frame frames[0];
+ struct can_frame frames[];
};
enum {
TX_SETUP = 1,
diff --git a/libc/kernel/uapi/linux/can/error.h b/libc/kernel/uapi/linux/can/error.h
index 645373b..f585d2c 100644
--- a/libc/kernel/uapi/linux/can/error.h
+++ b/libc/kernel/uapi/linux/can/error.h
@@ -28,6 +28,7 @@
#define CAN_ERR_BUSOFF 0x00000040U
#define CAN_ERR_BUSERROR 0x00000080U
#define CAN_ERR_RESTARTED 0x00000100U
+#define CAN_ERR_CNT 0x00000200U
#define CAN_ERR_LOSTARB_UNSPEC 0x00
#define CAN_ERR_CRTL_UNSPEC 0x00
#define CAN_ERR_CRTL_RX_OVERFLOW 0x01
@@ -76,4 +77,7 @@
#define CAN_ERR_TRX_CANL_SHORT_TO_VCC 0x60
#define CAN_ERR_TRX_CANL_SHORT_TO_GND 0x70
#define CAN_ERR_TRX_CANL_SHORT_TO_CANH 0x80
+#define CAN_ERROR_WARNING_THRESHOLD 96
+#define CAN_ERROR_PASSIVE_THRESHOLD 128
+#define CAN_BUS_OFF_THRESHOLD 256
#endif
diff --git a/libc/kernel/uapi/linux/can/raw.h b/libc/kernel/uapi/linux/can/raw.h
index a3bddb7..f8de179 100644
--- a/libc/kernel/uapi/linux/can/raw.h
+++ b/libc/kernel/uapi/linux/can/raw.h
@@ -30,5 +30,6 @@
CAN_RAW_RECV_OWN_MSGS,
CAN_RAW_FD_FRAMES,
CAN_RAW_JOIN_FILTERS,
+ CAN_RAW_XL_FRAMES,
};
#endif
diff --git a/libc/kernel/uapi/linux/capability.h b/libc/kernel/uapi/linux/capability.h
index 958e6ab..c1b5dbf 100644
--- a/libc/kernel/uapi/linux/capability.h
+++ b/libc/kernel/uapi/linux/capability.h
@@ -111,5 +111,5 @@
#define CAP_LAST_CAP CAP_CHECKPOINT_RESTORE
#define cap_valid(x) ((x) >= 0 && (x) <= CAP_LAST_CAP)
#define CAP_TO_INDEX(x) ((x) >> 5)
-#define CAP_TO_MASK(x) (1 << ((x) & 31))
+#define CAP_TO_MASK(x) (1U << ((x) & 31))
#endif
diff --git a/libc/kernel/uapi/linux/cec.h b/libc/kernel/uapi/linux/cec.h
index b90dc49..3953fe3 100644
--- a/libc/kernel/uapi/linux/cec.h
+++ b/libc/kernel/uapi/linux/cec.h
@@ -340,6 +340,7 @@
#define CEC_OP_FEAT_DEV_HAS_SET_AUDIO_RATE 0x08
#define CEC_OP_FEAT_DEV_SINK_HAS_ARC_TX 0x04
#define CEC_OP_FEAT_DEV_SOURCE_HAS_ARC_RX 0x02
+#define CEC_OP_FEAT_DEV_HAS_SET_AUDIO_VOLUME_LEVEL 0x01
#define CEC_MSG_GIVE_FEATURES 0xa5
#define CEC_MSG_DECK_CONTROL 0x42
#define CEC_OP_DECK_CTL_MODE_SKIP_FWD 1
@@ -554,6 +555,7 @@
#define CEC_MSG_SYSTEM_AUDIO_MODE_STATUS 0x7e
#define CEC_OP_AUD_FMT_ID_CEA861 0
#define CEC_OP_AUD_FMT_ID_CEA861_CXT 1
+#define CEC_MSG_SET_AUDIO_VOLUME_LEVEL 0x73
#define CEC_MSG_SET_AUDIO_RATE 0x9a
#define CEC_OP_AUD_RATE_OFF 0
#define CEC_OP_AUD_RATE_WIDE_STD 1
diff --git a/libc/kernel/uapi/linux/connector.h b/libc/kernel/uapi/linux/connector.h
index adf3a7f..e3891e3 100644
--- a/libc/kernel/uapi/linux/connector.h
+++ b/libc/kernel/uapi/linux/connector.h
@@ -50,6 +50,6 @@
__u32 ack;
__u16 len;
__u16 flags;
- __u8 data[0];
+ __u8 data[];
};
#endif
diff --git a/libc/kernel/uapi/linux/counter.h b/libc/kernel/uapi/linux/counter.h
index 4b86b28..f986365 100644
--- a/libc/kernel/uapi/linux/counter.h
+++ b/libc/kernel/uapi/linux/counter.h
@@ -46,6 +46,7 @@
COUNTER_EVENT_THRESHOLD,
COUNTER_EVENT_INDEX,
COUNTER_EVENT_CHANGE_OF_STATE,
+ COUNTER_EVENT_CAPTURE,
};
struct counter_watch {
struct counter_component component;
@@ -91,4 +92,8 @@
COUNTER_SYNAPSE_ACTION_FALLING_EDGE,
COUNTER_SYNAPSE_ACTION_BOTH_EDGES,
};
+enum counter_signal_polarity {
+ COUNTER_SIGNAL_POLARITY_POSITIVE,
+ COUNTER_SIGNAL_POLARITY_NEGATIVE,
+};
#endif
diff --git a/libc/kernel/uapi/linux/cycx_cfm.h b/libc/kernel/uapi/linux/cycx_cfm.h
index 052de53..230b58d 100644
--- a/libc/kernel/uapi/linux/cycx_cfm.h
+++ b/libc/kernel/uapi/linux/cycx_cfm.h
@@ -53,7 +53,7 @@
unsigned short reserved[6];
char descr[CFM_DESCR_LEN];
struct cycx_fw_info info;
- unsigned char image[0];
+ unsigned char image[];
};
struct cycx_fw_header {
unsigned long reset_size;
diff --git a/libc/kernel/uapi/linux/devlink.h b/libc/kernel/uapi/linux/devlink.h
index b45865e..b2cdafa 100644
--- a/libc/kernel/uapi/linux/devlink.h
+++ b/libc/kernel/uapi/linux/devlink.h
@@ -107,6 +107,8 @@
DEVLINK_CMD_LINECARD_SET,
DEVLINK_CMD_LINECARD_NEW,
DEVLINK_CMD_LINECARD_DEL,
+ DEVLINK_CMD_SELFTESTS_GET,
+ DEVLINK_CMD_SELFTESTS_RUN,
__DEVLINK_CMD_MAX,
DEVLINK_CMD_MAX = __DEVLINK_CMD_MAX - 1
};
@@ -188,6 +190,25 @@
#define DEVLINK_FLASH_OVERWRITE_SETTINGS _BITUL(DEVLINK_FLASH_OVERWRITE_SETTINGS_BIT)
#define DEVLINK_FLASH_OVERWRITE_IDENTIFIERS _BITUL(DEVLINK_FLASH_OVERWRITE_IDENTIFIERS_BIT)
#define DEVLINK_SUPPORTED_FLASH_OVERWRITE_SECTIONS (_BITUL(__DEVLINK_FLASH_OVERWRITE_MAX_BIT) - 1)
+enum devlink_attr_selftest_id {
+ DEVLINK_ATTR_SELFTEST_ID_UNSPEC,
+ DEVLINK_ATTR_SELFTEST_ID_FLASH,
+ __DEVLINK_ATTR_SELFTEST_ID_MAX,
+ DEVLINK_ATTR_SELFTEST_ID_MAX = __DEVLINK_ATTR_SELFTEST_ID_MAX - 1
+};
+enum devlink_selftest_status {
+ DEVLINK_SELFTEST_STATUS_SKIP,
+ DEVLINK_SELFTEST_STATUS_PASS,
+ DEVLINK_SELFTEST_STATUS_FAIL
+};
+enum devlink_attr_selftest_result {
+ DEVLINK_ATTR_SELFTEST_RESULT_UNSPEC,
+ DEVLINK_ATTR_SELFTEST_RESULT,
+ DEVLINK_ATTR_SELFTEST_RESULT_ID,
+ DEVLINK_ATTR_SELFTEST_RESULT_STATUS,
+ __DEVLINK_ATTR_SELFTEST_RESULT_MAX,
+ DEVLINK_ATTR_SELFTEST_RESULT_MAX = __DEVLINK_ATTR_SELFTEST_RESULT_MAX - 1
+};
enum devlink_trap_action {
DEVLINK_TRAP_ACTION_DROP,
DEVLINK_TRAP_ACTION_TRAP,
@@ -403,6 +424,8 @@
DEVLINK_ATTR_LINECARD_STATE,
DEVLINK_ATTR_LINECARD_TYPE,
DEVLINK_ATTR_LINECARD_SUPPORTED_TYPES,
+ DEVLINK_ATTR_NESTED_DEVLINK,
+ DEVLINK_ATTR_SELFTESTS,
__DEVLINK_ATTR_MAX,
DEVLINK_ATTR_MAX = __DEVLINK_ATTR_MAX - 1
};
diff --git a/libc/kernel/uapi/linux/dlm.h b/libc/kernel/uapi/linux/dlm.h
index c75918f..499baad 100644
--- a/libc/kernel/uapi/linux/dlm.h
+++ b/libc/kernel/uapi/linux/dlm.h
@@ -31,6 +31,5 @@
char * sb_lvbptr;
};
#define DLM_LSFL_TIMEWARN 0x00000002
-#define DLM_LSFL_FS 0x00000004
#define DLM_LSFL_NEWEXCL 0x00000008
#endif
diff --git a/libc/kernel/uapi/linux/dm-ioctl.h b/libc/kernel/uapi/linux/dm-ioctl.h
index 98cbc1f..f0ff78c 100644
--- a/libc/kernel/uapi/linux/dm-ioctl.h
+++ b/libc/kernel/uapi/linux/dm-ioctl.h
@@ -48,23 +48,23 @@
struct dm_target_deps {
__u32 count;
__u32 padding;
- __u64 dev[0];
+ __u64 dev[];
};
struct dm_name_list {
__u64 dev;
__u32 next;
- char name[0];
+ char name[];
};
#define DM_NAME_LIST_FLAG_HAS_UUID 1
#define DM_NAME_LIST_FLAG_DOESNT_HAVE_UUID 2
struct dm_target_versions {
__u32 next;
__u32 version[3];
- char name[0];
+ char name[];
};
struct dm_target_msg {
__u64 sector;
- char message[0];
+ char message[];
};
enum {
DM_VERSION_CMD = 0,
@@ -106,9 +106,9 @@
#define DM_TARGET_MSG _IOWR(DM_IOCTL, DM_TARGET_MSG_CMD, struct dm_ioctl)
#define DM_DEV_SET_GEOMETRY _IOWR(DM_IOCTL, DM_DEV_SET_GEOMETRY_CMD, struct dm_ioctl)
#define DM_VERSION_MAJOR 4
-#define DM_VERSION_MINOR 46
+#define DM_VERSION_MINOR 47
#define DM_VERSION_PATCHLEVEL 0
-#define DM_VERSION_EXTRA "-ioctl(2022-02-22)"
+#define DM_VERSION_EXTRA "-ioctl(2022-07-28)"
#define DM_READONLY_FLAG (1 << 0)
#define DM_SUSPEND_FLAG (1 << 1)
#define DM_PERSISTENT_DEV_FLAG (1 << 3)
diff --git a/libc/kernel/uapi/linux/dm-log-userspace.h b/libc/kernel/uapi/linux/dm-log-userspace.h
index 4f0671b..37feee6 100644
--- a/libc/kernel/uapi/linux/dm-log-userspace.h
+++ b/libc/kernel/uapi/linux/dm-log-userspace.h
@@ -49,6 +49,6 @@
__u32 seq;
__u32 request_type;
__u32 data_size;
- char data[0];
+ char data[];
};
#endif
diff --git a/libc/kernel/uapi/linux/dma-buf.h b/libc/kernel/uapi/linux/dma-buf.h
index 4e31379..7462c15 100644
--- a/libc/kernel/uapi/linux/dma-buf.h
+++ b/libc/kernel/uapi/linux/dma-buf.h
@@ -29,9 +29,19 @@
#define DMA_BUF_SYNC_END (1 << 2)
#define DMA_BUF_SYNC_VALID_FLAGS_MASK (DMA_BUF_SYNC_RW | DMA_BUF_SYNC_END)
#define DMA_BUF_NAME_LEN 32
+struct dma_buf_export_sync_file {
+ __u32 flags;
+ __s32 fd;
+};
+struct dma_buf_import_sync_file {
+ __u32 flags;
+ __s32 fd;
+};
#define DMA_BUF_BASE 'b'
#define DMA_BUF_IOCTL_SYNC _IOW(DMA_BUF_BASE, 0, struct dma_buf_sync)
#define DMA_BUF_SET_NAME _IOW(DMA_BUF_BASE, 1, const char *)
#define DMA_BUF_SET_NAME_A _IOW(DMA_BUF_BASE, 1, __u32)
#define DMA_BUF_SET_NAME_B _IOW(DMA_BUF_BASE, 1, __u64)
+#define DMA_BUF_IOCTL_EXPORT_SYNC_FILE _IOWR(DMA_BUF_BASE, 2, struct dma_buf_export_sync_file)
+#define DMA_BUF_IOCTL_IMPORT_SYNC_FILE _IOW(DMA_BUF_BASE, 3, struct dma_buf_import_sync_file)
#endif
diff --git a/libc/kernel/uapi/linux/dn.h b/libc/kernel/uapi/linux/dn.h
deleted file mode 100644
index 621f60f..0000000
--- a/libc/kernel/uapi/linux/dn.h
+++ /dev/null
@@ -1,114 +0,0 @@
-/****************************************************************************
- ****************************************************************************
- ***
- *** This header was automatically generated from a Linux kernel header
- *** of the same name, to make information necessary for userspace to
- *** call into the kernel available to libc. It contains only constants,
- *** structures, and macros generated from the original header, and thus,
- *** contains no copyrightable information.
- ***
- *** To edit the content of this header, modify the corresponding
- *** source file (e.g. under external/kernel-headers/original/) then
- *** run bionic/libc/kernel/tools/update_all.py
- ***
- *** Any manual change here will be lost the next time this script will
- *** be run. You've been warned!
- ***
- ****************************************************************************
- ****************************************************************************/
-#ifndef _LINUX_DN_H
-#define _LINUX_DN_H
-#include <linux/ioctl.h>
-#include <linux/types.h>
-#include <linux/if_ether.h>
-#define DNPROTO_NSP 2
-#define DNPROTO_ROU 3
-#define DNPROTO_NML 4
-#define DNPROTO_EVL 5
-#define DNPROTO_EVR 6
-#define DNPROTO_NSPT 7
-#define DN_ADDL 2
-#define DN_MAXADDL 2
-#define DN_MAXOPTL 16
-#define DN_MAXOBJL 16
-#define DN_MAXACCL 40
-#define DN_MAXALIASL 128
-#define DN_MAXNODEL 256
-#define DNBUFSIZE 65023
-#define SO_CONDATA 1
-#define SO_CONACCESS 2
-#define SO_PROXYUSR 3
-#define SO_LINKINFO 7
-#define DSO_CONDATA 1
-#define DSO_DISDATA 10
-#define DSO_CONACCESS 2
-#define DSO_ACCEPTMODE 4
-#define DSO_CONACCEPT 5
-#define DSO_CONREJECT 6
-#define DSO_LINKINFO 7
-#define DSO_STREAM 8
-#define DSO_SEQPACKET 9
-#define DSO_MAXWINDOW 11
-#define DSO_NODELAY 12
-#define DSO_CORK 13
-#define DSO_SERVICES 14
-#define DSO_INFO 15
-#define DSO_MAX 15
-#define LL_INACTIVE 0
-#define LL_CONNECTING 1
-#define LL_RUNNING 2
-#define LL_DISCONNECTING 3
-#define ACC_IMMED 0
-#define ACC_DEFER 1
-#define SDF_WILD 1
-#define SDF_PROXY 2
-#define SDF_UICPROXY 4
-struct dn_naddr {
- __le16 a_len;
- __u8 a_addr[DN_MAXADDL];
-};
-struct sockaddr_dn {
- __u16 sdn_family;
- __u8 sdn_flags;
- __u8 sdn_objnum;
- __le16 sdn_objnamel;
- __u8 sdn_objname[DN_MAXOBJL];
- struct dn_naddr sdn_add;
-};
-#define sdn_nodeaddrl sdn_add.a_len
-#define sdn_nodeaddr sdn_add.a_addr
-struct optdata_dn {
- __le16 opt_status;
-#define opt_sts opt_status
- __le16 opt_optl;
- __u8 opt_data[16];
-};
-struct accessdata_dn {
- __u8 acc_accl;
- __u8 acc_acc[DN_MAXACCL];
- __u8 acc_passl;
- __u8 acc_pass[DN_MAXACCL];
- __u8 acc_userl;
- __u8 acc_user[DN_MAXACCL];
-};
-struct linkinfo_dn {
- __u16 idn_segsize;
- __u8 idn_linkstate;
-};
-union etheraddress {
- __u8 dne_addr[ETH_ALEN];
- struct {
- __u8 dne_hiord[4];
- __u8 dne_nodeaddr[2];
- } dne_remote;
-};
-struct dn_addr {
- __le16 dna_family;
- union etheraddress dna_netaddr;
-};
-#define DECNET_IOCTL_BASE 0x89
-#define SIOCSNETADDR _IOW(DECNET_IOCTL_BASE, 0xe0, struct dn_naddr)
-#define SIOCGNETADDR _IOR(DECNET_IOCTL_BASE, 0xe1, struct dn_naddr)
-#define OSIOCSNETADDR _IOW(DECNET_IOCTL_BASE, 0xe0, int)
-#define OSIOCGNETADDR _IOR(DECNET_IOCTL_BASE, 0xe1, int)
-#endif
diff --git a/libc/kernel/uapi/linux/dns_resolver.h b/libc/kernel/uapi/linux/dns_resolver.h
index 21cb5c0..e7113d0 100644
--- a/libc/kernel/uapi/linux/dns_resolver.h
+++ b/libc/kernel/uapi/linux/dns_resolver.h
@@ -55,13 +55,13 @@
__u8 zero;
__u8 content;
__u8 version;
-} __packed;
+} __attribute__((__packed__));
struct dns_server_list_v1_header {
struct dns_payload_header hdr;
__u8 source;
__u8 status;
__u8 nr_servers;
-} __packed;
+} __attribute__((__packed__));
struct dns_server_list_v1_server {
__u16 name_len;
__u16 priority;
@@ -71,8 +71,8 @@
__u8 status;
__u8 protocol;
__u8 nr_addrs;
-} __packed;
+} __attribute__((__packed__));
struct dns_server_list_v1_address {
__u8 address_type;
-} __packed;
+} __attribute__((__packed__));
#endif
diff --git a/libc/kernel/uapi/linux/dw100.h b/libc/kernel/uapi/linux/dw100.h
new file mode 100644
index 0000000..13d8487
--- /dev/null
+++ b/libc/kernel/uapi/linux/dw100.h
@@ -0,0 +1,23 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ *** This header was automatically generated from a Linux kernel header
+ *** of the same name, to make information necessary for userspace to
+ *** call into the kernel available to libc. It contains only constants,
+ *** structures, and macros generated from the original header, and thus,
+ *** contains no copyrightable information.
+ ***
+ *** To edit the content of this header, modify the corresponding
+ *** source file (e.g. under external/kernel-headers/original/) then
+ *** run bionic/libc/kernel/tools/update_all.py
+ ***
+ *** Any manual change here will be lost the next time this script will
+ *** be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __UAPI_DW100_H__
+#define __UAPI_DW100_H__
+#include <linux/v4l2-controls.h>
+#define V4L2_CID_DW100_DEWARPING_16x16_VERTEX_MAP (V4L2_CID_USER_DW100_BASE + 1)
+#endif
diff --git a/libc/kernel/uapi/linux/elf.h b/libc/kernel/uapi/linux/elf.h
index 35486fb..28c8426 100644
--- a/libc/kernel/uapi/linux/elf.h
+++ b/libc/kernel/uapi/linux/elf.h
@@ -352,6 +352,7 @@
#define NT_S390_GS_CB 0x30b
#define NT_S390_GS_BC 0x30c
#define NT_S390_RI_CB 0x30d
+#define NT_S390_PV_CPU_DATA 0x30e
#define NT_ARM_VFP 0x400
#define NT_ARM_TLS 0x401
#define NT_ARM_HW_BREAK 0x402
diff --git a/libc/kernel/uapi/linux/ethtool.h b/libc/kernel/uapi/linux/ethtool.h
index c096f7f..8bdd622 100644
--- a/libc/kernel/uapi/linux/ethtool.h
+++ b/libc/kernel/uapi/linux/ethtool.h
@@ -98,7 +98,7 @@
__u32 id;
__u32 type_id;
__u32 len;
- void * data[0];
+ void * data[];
};
#define DOWNSHIFT_DEV_DEFAULT_COUNT 0xff
#define DOWNSHIFT_DEV_DISABLE 0
@@ -118,14 +118,14 @@
__u32 cmd;
__u32 version;
__u32 len;
- __u8 data[0];
+ __u8 data[];
};
struct ethtool_eeprom {
__u32 cmd;
__u32 magic;
__u32 offset;
__u32 len;
- __u8 data[0];
+ __u8 data[];
};
struct ethtool_eee {
__u32 cmd;
@@ -277,17 +277,31 @@
ETHTOOL_MODULE_POWER_MODE_LOW = 1,
ETHTOOL_MODULE_POWER_MODE_HIGH,
};
+enum ethtool_podl_pse_admin_state {
+ ETHTOOL_PODL_PSE_ADMIN_STATE_UNKNOWN = 1,
+ ETHTOOL_PODL_PSE_ADMIN_STATE_DISABLED,
+ ETHTOOL_PODL_PSE_ADMIN_STATE_ENABLED,
+};
+enum ethtool_podl_pse_pw_d_status {
+ ETHTOOL_PODL_PSE_PW_D_STATUS_UNKNOWN = 1,
+ ETHTOOL_PODL_PSE_PW_D_STATUS_DISABLED,
+ ETHTOOL_PODL_PSE_PW_D_STATUS_SEARCHING,
+ ETHTOOL_PODL_PSE_PW_D_STATUS_DELIVERING,
+ ETHTOOL_PODL_PSE_PW_D_STATUS_SLEEP,
+ ETHTOOL_PODL_PSE_PW_D_STATUS_IDLE,
+ ETHTOOL_PODL_PSE_PW_D_STATUS_ERROR,
+};
struct ethtool_gstrings {
__u32 cmd;
__u32 string_set;
__u32 len;
- __u8 data[0];
+ __u8 data[];
};
struct ethtool_sset_info {
__u32 cmd;
__u32 reserved;
__u64 sset_mask;
- __u32 data[0];
+ __u32 data[];
};
enum ethtool_test_flags {
ETH_TEST_FL_OFFLINE = (1 << 0),
@@ -300,17 +314,17 @@
__u32 flags;
__u32 reserved;
__u32 len;
- __u64 data[0];
+ __u64 data[];
};
struct ethtool_stats {
__u32 cmd;
__u32 n_stats;
- __u64 data[0];
+ __u64 data[];
};
struct ethtool_perm_addr {
__u32 cmd;
__u32 size;
- __u8 data[0];
+ __u8 data[];
};
enum ethtool_flags {
ETH_FLAG_TXVLAN = (1 << 7),
@@ -410,7 +424,7 @@
struct ethtool_rxfh_indir {
__u32 cmd;
__u32 size;
- __u32 ring_index[0];
+ __u32 ring_index[];
};
struct ethtool_rxfh {
__u32 cmd;
@@ -420,7 +434,7 @@
__u8 hfunc;
__u8 rsvd8[3];
__u32 rsvd32;
- __u32 rss_config[0];
+ __u32 rss_config[];
};
#define ETH_RXFH_CONTEXT_ALLOC 0xffffffff
#define ETH_RXFH_INDIR_NO_CHANGE 0xffffffff
@@ -462,7 +476,7 @@
__u32 version;
__u32 flag;
__u32 len;
- __u8 data[0];
+ __u8 data[];
};
#define ETH_FW_DUMP_DISABLE 0
struct ethtool_get_features_block {
@@ -474,7 +488,7 @@
struct ethtool_gfeatures {
__u32 cmd;
__u32 size;
- struct ethtool_get_features_block features[0];
+ struct ethtool_get_features_block features[];
};
struct ethtool_set_features_block {
__u32 valid;
@@ -483,7 +497,7 @@
struct ethtool_sfeatures {
__u32 cmd;
__u32 size;
- struct ethtool_set_features_block features[0];
+ struct ethtool_set_features_block features[];
};
struct ethtool_ts_info {
__u32 cmd;
@@ -800,6 +814,10 @@
#define MASTER_SLAVE_STATE_MASTER 2
#define MASTER_SLAVE_STATE_SLAVE 3
#define MASTER_SLAVE_STATE_ERR 4
+#define RATE_MATCH_NONE 0
+#define RATE_MATCH_PAUSE 1
+#define RATE_MATCH_CRS 2
+#define RATE_MATCH_OPEN_LOOP 3
#define PORT_TP 0x00
#define PORT_AUI 0x01
#define PORT_MII 0x02
@@ -901,8 +919,8 @@
__u8 transceiver;
__u8 master_slave_cfg;
__u8 master_slave_state;
- __u8 reserved1[1];
+ __u8 rate_matching;
__u32 reserved[7];
- __u32 link_mode_masks[0];
+ __u32 link_mode_masks[];
};
#endif
diff --git a/libc/kernel/uapi/linux/ethtool_netlink.h b/libc/kernel/uapi/linux/ethtool_netlink.h
index 85ce51b..08c6936 100644
--- a/libc/kernel/uapi/linux/ethtool_netlink.h
+++ b/libc/kernel/uapi/linux/ethtool_netlink.h
@@ -56,6 +56,8 @@
ETHTOOL_MSG_PHC_VCLOCKS_GET,
ETHTOOL_MSG_MODULE_GET,
ETHTOOL_MSG_MODULE_SET,
+ ETHTOOL_MSG_PSE_GET,
+ ETHTOOL_MSG_PSE_SET,
__ETHTOOL_MSG_USER_CNT,
ETHTOOL_MSG_USER_MAX = __ETHTOOL_MSG_USER_CNT - 1
};
@@ -97,6 +99,7 @@
ETHTOOL_MSG_PHC_VCLOCKS_GET_REPLY,
ETHTOOL_MSG_MODULE_GET_REPLY,
ETHTOOL_MSG_MODULE_NTF,
+ ETHTOOL_MSG_PSE_GET_REPLY,
__ETHTOOL_MSG_KERNEL_CNT,
ETHTOOL_MSG_KERNEL_MAX = __ETHTOOL_MSG_KERNEL_CNT - 1
};
@@ -193,6 +196,7 @@
ETHTOOL_A_LINKMODES_MASTER_SLAVE_CFG,
ETHTOOL_A_LINKMODES_MASTER_SLAVE_STATE,
ETHTOOL_A_LINKMODES_LANES,
+ ETHTOOL_A_LINKMODES_RATE_MATCHING,
__ETHTOOL_A_LINKMODES_CNT,
ETHTOOL_A_LINKMODES_MAX = __ETHTOOL_A_LINKMODES_CNT - 1
};
@@ -609,6 +613,15 @@
__ETHTOOL_A_MODULE_CNT,
ETHTOOL_A_MODULE_MAX = (__ETHTOOL_A_MODULE_CNT - 1)
};
+enum {
+ ETHTOOL_A_PSE_UNSPEC,
+ ETHTOOL_A_PSE_HEADER,
+ ETHTOOL_A_PODL_PSE_ADMIN_STATE,
+ ETHTOOL_A_PODL_PSE_ADMIN_CONTROL,
+ ETHTOOL_A_PODL_PSE_PW_D_STATUS,
+ __ETHTOOL_A_PSE_CNT,
+ ETHTOOL_A_PSE_MAX = (__ETHTOOL_A_PSE_CNT - 1)
+};
#define ETHTOOL_GENL_NAME "ethtool"
#define ETHTOOL_GENL_VERSION 1
#define ETHTOOL_MCGRP_MONITOR_NAME "monitor"
diff --git a/libc/kernel/uapi/linux/f2fs.h b/libc/kernel/uapi/linux/f2fs.h
index 76da8f6..3fcd444 100644
--- a/libc/kernel/uapi/linux/f2fs.h
+++ b/libc/kernel/uapi/linux/f2fs.h
@@ -25,7 +25,7 @@
#define F2FS_IOC_COMMIT_ATOMIC_WRITE _IO(F2FS_IOCTL_MAGIC, 2)
#define F2FS_IOC_START_VOLATILE_WRITE _IO(F2FS_IOCTL_MAGIC, 3)
#define F2FS_IOC_RELEASE_VOLATILE_WRITE _IO(F2FS_IOCTL_MAGIC, 4)
-#define F2FS_IOC_ABORT_VOLATILE_WRITE _IO(F2FS_IOCTL_MAGIC, 5)
+#define F2FS_IOC_ABORT_ATOMIC_WRITE _IO(F2FS_IOCTL_MAGIC, 5)
#define F2FS_IOC_GARBAGE_COLLECT _IOW(F2FS_IOCTL_MAGIC, 6, __u32)
#define F2FS_IOC_WRITE_CHECKPOINT _IO(F2FS_IOCTL_MAGIC, 7)
#define F2FS_IOC_DEFRAGMENT _IOWR(F2FS_IOCTL_MAGIC, 8, struct f2fs_defragment)
diff --git a/libc/kernel/uapi/linux/fanotify.h b/libc/kernel/uapi/linux/fanotify.h
index f4e2a2e..9815a64 100644
--- a/libc/kernel/uapi/linux/fanotify.h
+++ b/libc/kernel/uapi/linux/fanotify.h
@@ -68,9 +68,11 @@
#define FAN_MARK_IGNORED_SURV_MODIFY 0x00000040
#define FAN_MARK_FLUSH 0x00000080
#define FAN_MARK_EVICTABLE 0x00000200
+#define FAN_MARK_IGNORE 0x00000400
#define FAN_MARK_INODE 0x00000000
#define FAN_MARK_MOUNT 0x00000010
#define FAN_MARK_FILESYSTEM 0x00000100
+#define FAN_MARK_IGNORE_SURV (FAN_MARK_IGNORE | FAN_MARK_IGNORED_SURV_MODIFY)
#define FAN_ALL_MARK_FLAGS (FAN_MARK_ADD | FAN_MARK_REMOVE | FAN_MARK_DONT_FOLLOW | FAN_MARK_ONLYDIR | FAN_MARK_MOUNT | FAN_MARK_IGNORED_MASK | FAN_MARK_IGNORED_SURV_MODIFY | FAN_MARK_FLUSH)
#define FAN_ALL_EVENTS (FAN_ACCESS | FAN_MODIFY | FAN_CLOSE | FAN_OPEN)
#define FAN_ALL_PERM_EVENTS (FAN_OPEN_PERM | FAN_ACCESS_PERM)
@@ -100,7 +102,7 @@
struct fanotify_event_info_fid {
struct fanotify_event_info_header hdr;
__kernel_fsid_t fsid;
- unsigned char handle[0];
+ unsigned char handle[];
};
struct fanotify_event_info_pidfd {
struct fanotify_event_info_header hdr;
diff --git a/libc/kernel/uapi/linux/fiemap.h b/libc/kernel/uapi/linux/fiemap.h
index 4310786..a67a5fe 100644
--- a/libc/kernel/uapi/linux/fiemap.h
+++ b/libc/kernel/uapi/linux/fiemap.h
@@ -34,7 +34,7 @@
__u32 fm_mapped_extents;
__u32 fm_extent_count;
__u32 fm_reserved;
- struct fiemap_extent fm_extents[0];
+ struct fiemap_extent fm_extents[];
};
#define FIEMAP_MAX_OFFSET (~0ULL)
#define FIEMAP_FLAG_SYNC 0x00000001
diff --git a/libc/kernel/uapi/linux/firewire-cdev.h b/libc/kernel/uapi/linux/firewire-cdev.h
index 92957bc..a54191c 100644
--- a/libc/kernel/uapi/linux/firewire-cdev.h
+++ b/libc/kernel/uapi/linux/firewire-cdev.h
@@ -50,7 +50,7 @@
__u32 type;
__u32 rcode;
__u32 length;
- __u32 data[0];
+ __u32 data[];
};
struct fw_cdev_event_request {
__u64 closure;
@@ -59,7 +59,7 @@
__u64 offset;
__u32 handle;
__u32 length;
- __u32 data[0];
+ __u32 data[];
};
struct fw_cdev_event_request2 {
__u64 closure;
@@ -72,14 +72,14 @@
__u32 generation;
__u32 handle;
__u32 length;
- __u32 data[0];
+ __u32 data[];
};
struct fw_cdev_event_iso_interrupt {
__u64 closure;
__u32 type;
__u32 cycle;
__u32 header_length;
- __u32 header[0];
+ __u32 header[];
};
struct fw_cdev_event_iso_interrupt_mc {
__u64 closure;
@@ -98,7 +98,7 @@
__u32 type;
__u32 rcode;
__u32 length;
- __u32 data[0];
+ __u32 data[];
};
union fw_cdev_event {
struct fw_cdev_event_common common;
@@ -207,7 +207,7 @@
#define FW_CDEV_ISO_HEADER_LENGTH(v) ((v) << 24)
struct fw_cdev_iso_packet {
__u32 control;
- __u32 header[0];
+ __u32 header[];
};
struct fw_cdev_queue_iso {
__u64 packets;
diff --git a/libc/kernel/uapi/linux/fs.h b/libc/kernel/uapi/linux/fs.h
index 3bb4183..96f9181 100644
--- a/libc/kernel/uapi/linux/fs.h
+++ b/libc/kernel/uapi/linux/fs.h
@@ -63,7 +63,7 @@
__u16 dest_count;
__u16 reserved1;
__u32 reserved2;
- struct file_dedupe_range_info info[0];
+ struct file_dedupe_range_info info[];
};
struct files_stat_struct {
unsigned long nr_files;
diff --git a/libc/kernel/uapi/linux/fscrypt.h b/libc/kernel/uapi/linux/fscrypt.h
index ca42eb3..e6b5358 100644
--- a/libc/kernel/uapi/linux/fscrypt.h
+++ b/libc/kernel/uapi/linux/fscrypt.h
@@ -33,6 +33,7 @@
#define FSCRYPT_MODE_AES_128_CBC 5
#define FSCRYPT_MODE_AES_128_CTS 6
#define FSCRYPT_MODE_ADIANTUM 9
+#define FSCRYPT_MODE_AES_256_HCTR2 10
#define FSCRYPT_POLICY_V1 0
#define FSCRYPT_KEY_DESCRIPTOR_SIZE 8
struct fscrypt_policy_v1 {
diff --git a/libc/kernel/uapi/linux/fuse.h b/libc/kernel/uapi/linux/fuse.h
index 144e960..ae667eb 100644
--- a/libc/kernel/uapi/linux/fuse.h
+++ b/libc/kernel/uapi/linux/fuse.h
@@ -20,7 +20,7 @@
#define _LINUX_FUSE_H
#include <stdint.h>
#define FUSE_KERNEL_VERSION 7
-#define FUSE_KERNEL_MINOR_VERSION 36
+#define FUSE_KERNEL_MINOR_VERSION 37
#define FUSE_ROOT_ID 1
struct fuse_attr {
uint64_t ino;
@@ -187,6 +187,7 @@
FUSE_SETUPMAPPING = 48,
FUSE_REMOVEMAPPING = 49,
FUSE_SYNCFS = 50,
+ FUSE_TMPFILE = 51,
FUSE_CANONICAL_PATH = 2016,
CUSE_INIT = 4096,
CUSE_INIT_BSWAP_RESERVED = 1048576,
diff --git a/libc/kernel/uapi/linux/genetlink.h b/libc/kernel/uapi/linux/genetlink.h
index 2e2137d..0f86331 100644
--- a/libc/kernel/uapi/linux/genetlink.h
+++ b/libc/kernel/uapi/linux/genetlink.h
@@ -81,6 +81,7 @@
CTRL_ATTR_MCAST_GRP_ID,
__CTRL_ATTR_MCAST_GRP_MAX,
};
+#define CTRL_ATTR_MCAST_GRP_MAX (__CTRL_ATTR_MCAST_GRP_MAX - 1)
enum {
CTRL_ATTR_POLICY_UNSPEC,
CTRL_ATTR_POLICY_DO,
@@ -88,5 +89,5 @@
__CTRL_ATTR_POLICY_DUMP_MAX,
CTRL_ATTR_POLICY_DUMP_MAX = __CTRL_ATTR_POLICY_DUMP_MAX - 1
};
-#define CTRL_ATTR_MCAST_GRP_MAX (__CTRL_ATTR_MCAST_GRP_MAX - 1)
+#define CTRL_ATTR_POLICY_MAX (__CTRL_ATTR_POLICY_DUMP_MAX - 1)
#endif
diff --git a/libc/kernel/uapi/linux/hid.h b/libc/kernel/uapi/linux/hid.h
index ce93cd7..37ab462 100644
--- a/libc/kernel/uapi/linux/hid.h
+++ b/libc/kernel/uapi/linux/hid.h
@@ -22,12 +22,20 @@
#define USB_INTERFACE_SUBCLASS_BOOT 1
#define USB_INTERFACE_PROTOCOL_KEYBOARD 1
#define USB_INTERFACE_PROTOCOL_MOUSE 2
-#define HID_REQ_GET_REPORT 0x01
-#define HID_REQ_GET_IDLE 0x02
-#define HID_REQ_GET_PROTOCOL 0x03
-#define HID_REQ_SET_REPORT 0x09
-#define HID_REQ_SET_IDLE 0x0A
-#define HID_REQ_SET_PROTOCOL 0x0B
+enum hid_report_type {
+ HID_INPUT_REPORT = 0,
+ HID_OUTPUT_REPORT = 1,
+ HID_FEATURE_REPORT = 2,
+ HID_REPORT_TYPES,
+};
+enum hid_class_request {
+ HID_REQ_GET_REPORT = 0x01,
+ HID_REQ_GET_IDLE = 0x02,
+ HID_REQ_GET_PROTOCOL = 0x03,
+ HID_REQ_SET_REPORT = 0x09,
+ HID_REQ_SET_IDLE = 0x0A,
+ HID_REQ_SET_PROTOCOL = 0x0B,
+};
#define HID_DT_HID (USB_TYPE_CLASS | 0x01)
#define HID_DT_REPORT (USB_TYPE_CLASS | 0x02)
#define HID_DT_PHYSICAL (USB_TYPE_CLASS | 0x03)
diff --git a/libc/kernel/uapi/linux/idxd.h b/libc/kernel/uapi/linux/idxd.h
index 26f41ab..a456352 100644
--- a/libc/kernel/uapi/linux/idxd.h
+++ b/libc/kernel/uapi/linux/idxd.h
@@ -38,6 +38,7 @@
IDXD_SCMD_WQ_NO_SIZE = 0x800e0000,
IDXD_SCMD_WQ_NO_PRIV = 0x800f0000,
IDXD_SCMD_WQ_IRQ_ERR = 0x80100000,
+ IDXD_SCMD_WQ_USER_NO_IOMMU = 0x80110000,
};
#define IDXD_SCMD_SOFTERR_MASK 0x80000000
#define IDXD_SCMD_SOFTERR_SHIFT 16
@@ -90,14 +91,14 @@
IAX_OPCODE_CRC64,
IAX_OPCODE_ZERO_DECOMP_32 = 0x48,
IAX_OPCODE_ZERO_DECOMP_16,
- IAX_OPCODE_DECOMP_32 = 0x4c,
- IAX_OPCODE_DECOMP_16,
+ IAX_OPCODE_ZERO_COMP_32 = 0x4c,
+ IAX_OPCODE_ZERO_COMP_16,
IAX_OPCODE_SCAN = 0x50,
IAX_OPCODE_SET_MEMBER,
IAX_OPCODE_EXTRACT,
IAX_OPCODE_SELECT,
IAX_OPCODE_RLE_BURST,
- IAX_OPCDE_FIND_UNIQUE,
+ IAX_OPCODE_FIND_UNIQUE,
IAX_OPCODE_EXPAND,
};
enum dsa_completion_status {
diff --git a/libc/kernel/uapi/linux/if_alg.h b/libc/kernel/uapi/linux/if_alg.h
index 6530a16..237fe6e 100644
--- a/libc/kernel/uapi/linux/if_alg.h
+++ b/libc/kernel/uapi/linux/if_alg.h
@@ -35,7 +35,7 @@
};
struct af_alg_iv {
__u32 ivlen;
- __u8 iv[0];
+ __u8 iv[];
};
#define ALG_SET_KEY 1
#define ALG_SET_IV 2
diff --git a/libc/kernel/uapi/linux/if_arcnet.h b/libc/kernel/uapi/linux/if_arcnet.h
index 6aece37..65b07e1 100644
--- a/libc/kernel/uapi/linux/if_arcnet.h
+++ b/libc/kernel/uapi/linux/if_arcnet.h
@@ -40,18 +40,18 @@
__u8 proto;
__u8 split_flag;
__be16 sequence;
- __u8 payload[0];
+ __u8 payload[];
};
#define RFC1201_HDR_SIZE 4
struct arc_rfc1051 {
__u8 proto;
- __u8 payload[0];
+ __u8 payload[];
};
#define RFC1051_HDR_SIZE 1
struct arc_eth_encap {
__u8 proto;
struct ethhdr eth;
- __u8 payload[0];
+ __u8 payload[];
};
#define ETH_ENCAP_HDR_SIZE 14
struct arc_cap {
diff --git a/libc/kernel/uapi/linux/if_ether.h b/libc/kernel/uapi/linux/if_ether.h
index bd8e045..6043921 100644
--- a/libc/kernel/uapi/linux/if_ether.h
+++ b/libc/kernel/uapi/linux/if_ether.h
@@ -97,6 +97,7 @@
#define ETH_P_QINQ3 0x9300
#define ETH_P_EDSA 0xDADA
#define ETH_P_DSA_8021Q 0xDADB
+#define ETH_P_DSA_A5PSW 0xE001
#define ETH_P_IFE 0xED3E
#define ETH_P_AF_IUCV 0xFBFB
#define ETH_P_802_3_MIN 0x0600
@@ -111,6 +112,7 @@
#define ETH_P_LOCALTALK 0x0009
#define ETH_P_CAN 0x000C
#define ETH_P_CANFD 0x000D
+#define ETH_P_CANXL 0x000E
#define ETH_P_PPPTALK 0x0010
#define ETH_P_TR_802_2 0x0011
#define ETH_P_MOBITEX 0x0015
diff --git a/libc/kernel/uapi/linux/if_link.h b/libc/kernel/uapi/linux/if_link.h
index fbe384e..ebf403a 100644
--- a/libc/kernel/uapi/linux/if_link.h
+++ b/libc/kernel/uapi/linux/if_link.h
@@ -165,6 +165,7 @@
IFLA_GRO_MAX_SIZE,
IFLA_TSO_MAX_SIZE,
IFLA_TSO_MAX_SEGS,
+ IFLA_ALLMULTI,
__IFLA_MAX
};
#define IFLA_MAX (__IFLA_MAX - 1)
@@ -411,6 +412,7 @@
IFLA_XFRM_UNSPEC,
IFLA_XFRM_LINK,
IFLA_XFRM_IF_ID,
+ IFLA_XFRM_COLLECT_METADATA,
__IFLA_XFRM_MAX
};
#define IFLA_XFRM_MAX (__IFLA_XFRM_MAX - 1)
@@ -639,6 +641,7 @@
IFLA_BOND_SLAVE_AD_AGGREGATOR_ID,
IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE,
IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE,
+ IFLA_BOND_SLAVE_PRIO,
__IFLA_BOND_SLAVE_MAX,
};
#define IFLA_BOND_SLAVE_MAX (__IFLA_BOND_SLAVE_MAX - 1)
@@ -936,4 +939,10 @@
__IFLA_MCTP_MAX,
};
#define IFLA_MCTP_MAX (__IFLA_MCTP_MAX - 1)
+enum {
+ IFLA_DSA_UNSPEC,
+ IFLA_DSA_MASTER,
+ __IFLA_DSA_MAX,
+};
+#define IFLA_DSA_MAX (__IFLA_DSA_MAX - 1)
#endif
diff --git a/libc/kernel/uapi/linux/if_macsec.h b/libc/kernel/uapi/linux/if_macsec.h
index e60d767..7b51f80 100644
--- a/libc/kernel/uapi/linux/if_macsec.h
+++ b/libc/kernel/uapi/linux/if_macsec.h
@@ -23,6 +23,7 @@
#define MACSEC_GENL_VERSION 1
#define MACSEC_MAX_KEY_LEN 128
#define MACSEC_KEYID_LEN 16
+#define MACSEC_SALT_LEN 12
#define MACSEC_CIPHER_ID_GCM_AES_128 0x0080C20001000001ULL
#define MACSEC_CIPHER_ID_GCM_AES_256 0x0080C20001000002ULL
#define MACSEC_CIPHER_ID_GCM_AES_XPN_128 0x0080C20001000003ULL
diff --git a/libc/kernel/uapi/linux/if_pppox.h b/libc/kernel/uapi/linux/if_pppox.h
index 40d25e8..2acafdf 100644
--- a/libc/kernel/uapi/linux/if_pppox.h
+++ b/libc/kernel/uapi/linux/if_pppox.h
@@ -51,27 +51,27 @@
struct pppoe_addr pppoe;
struct pptp_addr pptp;
} sa_addr;
-} __packed;
+} __attribute__((__packed__));
struct sockaddr_pppol2tp {
__kernel_sa_family_t sa_family;
unsigned int sa_protocol;
struct pppol2tp_addr pppol2tp;
-} __packed;
+} __attribute__((__packed__));
struct sockaddr_pppol2tpin6 {
__kernel_sa_family_t sa_family;
unsigned int sa_protocol;
struct pppol2tpin6_addr pppol2tp;
-} __packed;
+} __attribute__((__packed__));
struct sockaddr_pppol2tpv3 {
__kernel_sa_family_t sa_family;
unsigned int sa_protocol;
struct pppol2tpv3_addr pppol2tp;
-} __packed;
+} __attribute__((__packed__));
struct sockaddr_pppol2tpv3in6 {
__kernel_sa_family_t sa_family;
unsigned int sa_protocol;
struct pppol2tpv3in6_addr pppol2tp;
-} __packed;
+} __attribute__((__packed__));
#define PPPOEIOCSFWD _IOW(0xB1, 0, size_t)
#define PPPOEIOCDFWD _IO(0xB1, 1)
#define PADI_CODE 0x09
@@ -82,7 +82,7 @@
struct pppoe_tag {
__be16 tag_type;
__be16 tag_len;
- char tag_data[0];
+ char tag_data[];
} __attribute__((packed));
#define PTT_EOL __cpu_to_be16(0x0000)
#define PTT_SRV_NAME __cpu_to_be16(0x0101)
@@ -107,7 +107,7 @@
__u8 code;
__be16 sid;
__be16 length;
- struct pppoe_tag tag[0];
-} __packed;
+ struct pppoe_tag tag[];
+} __attribute__((__packed__));
#define PPPOE_SES_HLEN 8
#endif
diff --git a/libc/kernel/uapi/linux/if_tun.h b/libc/kernel/uapi/linux/if_tun.h
index d1a8f9e..dda0830 100644
--- a/libc/kernel/uapi/linux/if_tun.h
+++ b/libc/kernel/uapi/linux/if_tun.h
@@ -57,6 +57,7 @@
#define IFF_TAP 0x0002
#define IFF_NAPI 0x0010
#define IFF_NAPI_FRAGS 0x0020
+#define IFF_NO_CARRIER 0x0040
#define IFF_NO_PI 0x1000
#define IFF_ONE_QUEUE 0x2000
#define IFF_VNET_HDR 0x4000
@@ -81,6 +82,6 @@
struct tun_filter {
__u16 flags;
__u16 count;
- __u8 addr[0][ETH_ALEN];
+ __u8 addr[][ETH_ALEN];
};
#endif
diff --git a/libc/kernel/uapi/linux/igmp.h b/libc/kernel/uapi/linux/igmp.h
index 885b0f8..71c2c8d 100644
--- a/libc/kernel/uapi/linux/igmp.h
+++ b/libc/kernel/uapi/linux/igmp.h
@@ -37,7 +37,7 @@
__u8 grec_auxwords;
__be16 grec_nsrcs;
__be32 grec_mca;
- __be32 grec_src[0];
+ __be32 grec_src[];
};
struct igmpv3_report {
__u8 type;
@@ -45,7 +45,7 @@
__sum16 csum;
__be16 resv2;
__be16 ngrec;
- struct igmpv3_grec grec[0];
+ struct igmpv3_grec grec[];
};
struct igmpv3_query {
__u8 type;
@@ -61,7 +61,7 @@
#endif
__u8 qqic;
__be16 nsrcs;
- __be32 srcs[0];
+ __be32 srcs[];
};
#define IGMP_HOST_MEMBERSHIP_QUERY 0x11
#define IGMP_HOST_MEMBERSHIP_REPORT 0x12
diff --git a/libc/kernel/uapi/linux/iio/types.h b/libc/kernel/uapi/linux/iio/types.h
index aa66d50..af7bdda 100644
--- a/libc/kernel/uapi/linux/iio/types.h
+++ b/libc/kernel/uapi/linux/iio/types.h
@@ -101,6 +101,12 @@
IIO_MOD_ETHANOL,
IIO_MOD_H2,
IIO_MOD_O2,
+ IIO_MOD_LINEAR_X,
+ IIO_MOD_LINEAR_Y,
+ IIO_MOD_LINEAR_Z,
+ IIO_MOD_PITCH,
+ IIO_MOD_YAW,
+ IIO_MOD_ROLL,
};
enum iio_event_type {
IIO_EV_TYPE_THRESH,
@@ -110,11 +116,14 @@
IIO_EV_TYPE_MAG_ADAPTIVE,
IIO_EV_TYPE_CHANGE,
IIO_EV_TYPE_MAG_REFERENCED,
+ IIO_EV_TYPE_GESTURE,
};
enum iio_event_direction {
IIO_EV_DIR_EITHER,
IIO_EV_DIR_RISING,
IIO_EV_DIR_FALLING,
IIO_EV_DIR_NONE,
+ IIO_EV_DIR_SINGLETAP,
+ IIO_EV_DIR_DOUBLETAP,
};
#endif
diff --git a/libc/kernel/uapi/linux/in.h b/libc/kernel/uapi/linux/in.h
index d4060e7..53d3074 100644
--- a/libc/kernel/uapi/linux/in.h
+++ b/libc/kernel/uapi/linux/in.h
@@ -22,6 +22,7 @@
#include <bits/ip_mreq_source.h>
#include <bits/in_addr.h>
#include <linux/types.h>
+#include <linux/stddef.h>
#include <linux/libc-compat.h>
#include <linux/socket.h>
#if __UAPI_DEF_IN_IPPROTO
@@ -68,6 +69,8 @@
#define IPPROTO_PIM IPPROTO_PIM
IPPROTO_COMP = 108,
#define IPPROTO_COMP IPPROTO_COMP
+ IPPROTO_L2TP = 115,
+#define IPPROTO_L2TP IPPROTO_L2TP
IPPROTO_SCTP = 132,
#define IPPROTO_SCTP IPPROTO_SCTP
IPPROTO_UDPLITE = 136,
diff --git a/libc/kernel/uapi/linux/inet_diag.h b/libc/kernel/uapi/linux/inet_diag.h
index 8656dd4..27f390b 100644
--- a/libc/kernel/uapi/linux/inet_diag.h
+++ b/libc/kernel/uapi/linux/inet_diag.h
@@ -89,7 +89,7 @@
__u8 family;
__u8 prefix_len;
int port;
- __be32 addr[0];
+ __be32 addr[];
};
struct inet_diag_markcond {
__u32 mark;
diff --git a/libc/kernel/uapi/linux/inotify.h b/libc/kernel/uapi/linux/inotify.h
index eb9ac3c..3b4b577 100644
--- a/libc/kernel/uapi/linux/inotify.h
+++ b/libc/kernel/uapi/linux/inotify.h
@@ -25,7 +25,7 @@
__u32 mask;
__u32 cookie;
__u32 len;
- char name[0];
+ char name[];
};
#define IN_ACCESS 0x00000001
#define IN_MODIFY 0x00000002
diff --git a/libc/kernel/uapi/linux/input-event-codes.h b/libc/kernel/uapi/linux/input-event-codes.h
index 4b251df..40827b5 100644
--- a/libc/kernel/uapi/linux/input-event-codes.h
+++ b/libc/kernel/uapi/linux/input-event-codes.h
@@ -720,6 +720,7 @@
#define ABS_TILT_Y 0x1b
#define ABS_TOOL_WIDTH 0x1c
#define ABS_VOLUME 0x20
+#define ABS_PROFILE 0x21
#define ABS_MISC 0x28
#define ABS_RESERVED 0x2e
#define ABS_MT_SLOT 0x2f
diff --git a/libc/kernel/uapi/linux/io_uring.h b/libc/kernel/uapi/linux/io_uring.h
index 5dda702..82dee97 100644
--- a/libc/kernel/uapi/linux/io_uring.h
+++ b/libc/kernel/uapi/linux/io_uring.h
@@ -20,6 +20,10 @@
#define LINUX_IO_URING_H
#include <linux/fs.h>
#include <linux/types.h>
+#include <linux/time_types.h>
+#ifdef __cplusplus
+extern "C" {
+#endif
struct io_uring_sqe {
__u8 opcode;
__u8 flags;
@@ -56,6 +60,8 @@
__u32 unlink_flags;
__u32 hardlink_flags;
__u32 xattr_flags;
+ __u32 msg_ring_flags;
+ __u32 uring_cmd_flags;
};
__u64 user_data;
union {
@@ -66,6 +72,10 @@
union {
__s32 splice_fd_in;
__u32 file_index;
+ struct {
+ __u16 addr_len;
+ __u16 __pad3[1];
+ };
};
union {
struct {
@@ -104,6 +114,8 @@
#define IORING_SETUP_TASKRUN_FLAG (1U << 9)
#define IORING_SETUP_SQE128 (1U << 10)
#define IORING_SETUP_CQE32 (1U << 11)
+#define IORING_SETUP_SINGLE_ISSUER (1U << 12)
+#define IORING_SETUP_DEFER_TASKRUN (1U << 13)
enum io_uring_op {
IORING_OP_NOP,
IORING_OP_READV,
@@ -152,8 +164,11 @@
IORING_OP_GETXATTR,
IORING_OP_SOCKET,
IORING_OP_URING_CMD,
+ IORING_OP_SEND_ZC,
+ IORING_OP_SENDMSG_ZC,
IORING_OP_LAST,
};
+#define IORING_URING_CMD_FIXED (1U << 0)
#define IORING_FSYNC_DATASYNC (1U << 0)
#define IORING_TIMEOUT_ABS (1U << 0)
#define IORING_TIMEOUT_UPDATE (1U << 1)
@@ -167,11 +182,20 @@
#define IORING_POLL_ADD_MULTI (1U << 0)
#define IORING_POLL_UPDATE_EVENTS (1U << 1)
#define IORING_POLL_UPDATE_USER_DATA (1U << 2)
+#define IORING_POLL_ADD_LEVEL (1U << 3)
#define IORING_ASYNC_CANCEL_ALL (1U << 0)
#define IORING_ASYNC_CANCEL_FD (1U << 1)
#define IORING_ASYNC_CANCEL_ANY (1U << 2)
+#define IORING_ASYNC_CANCEL_FD_FIXED (1U << 3)
#define IORING_RECVSEND_POLL_FIRST (1U << 0)
+#define IORING_RECV_MULTISHOT (1U << 1)
+#define IORING_RECVSEND_FIXED_BUF (1U << 2)
#define IORING_ACCEPT_MULTISHOT (1U << 0)
+enum {
+ IORING_MSG_DATA,
+ IORING_MSG_SEND_FD,
+};
+#define IORING_MSG_RING_CQE_SKIP (1U << 0)
struct io_uring_cqe {
__u64 user_data;
__s32 res;
@@ -181,6 +205,7 @@
#define IORING_CQE_F_BUFFER (1U << 0)
#define IORING_CQE_F_MORE (1U << 1)
#define IORING_CQE_F_SOCK_NONEMPTY (1U << 2)
+#define IORING_CQE_F_NOTIF (1U << 3)
enum {
IORING_CQE_BUFFER_SHIFT = 16,
};
@@ -268,6 +293,8 @@
IORING_UNREGISTER_RING_FDS = 21,
IORING_REGISTER_PBUF_RING = 22,
IORING_UNREGISTER_PBUF_RING = 23,
+ IORING_REGISTER_SYNC_CANCEL = 24,
+ IORING_REGISTER_FILE_ALLOC_RANGE = 25,
IORING_REGISTER_LAST
};
enum {
@@ -300,6 +327,17 @@
__u32 nr;
__u32 resv2;
};
+struct io_uring_notification_slot {
+ __u64 tag;
+ __u64 resv[3];
+};
+struct io_uring_notification_register {
+ __u32 nr_slots;
+ __u32 resv;
+ __u64 resv2;
+ __u64 data;
+ __u64 resv3;
+};
#define IORING_REGISTER_FILES_SKIP (- 2)
#define IO_URING_OP_SUPPORTED (1U << 0)
struct io_uring_probe_op {
@@ -313,7 +351,7 @@
__u8 ops_len;
__u16 resv;
__u32 resv2[3];
- struct io_uring_probe_op ops[0];
+ struct io_uring_probe_op ops[];
};
struct io_uring_restriction {
__u16 opcode;
@@ -362,4 +400,25 @@
__u32 pad;
__u64 ts;
};
+struct io_uring_sync_cancel_reg {
+ __u64 addr;
+ __s32 fd;
+ __u32 flags;
+ struct __kernel_timespec timeout;
+ __u64 pad[4];
+};
+struct io_uring_file_index_range {
+ __u32 off;
+ __u32 len;
+ __u64 resv;
+};
+struct io_uring_recvmsg_out {
+ __u32 namelen;
+ __u32 controllen;
+ __u32 payloadlen;
+ __u32 flags;
+};
+#ifdef __cplusplus
+}
+#endif
#endif
diff --git a/libc/kernel/uapi/linux/ip.h b/libc/kernel/uapi/linux/ip.h
index 9571cac..766a808 100644
--- a/libc/kernel/uapi/linux/ip.h
+++ b/libc/kernel/uapi/linux/ip.h
@@ -86,8 +86,9 @@
__u8 ttl;
__u8 protocol;
__sum16 check;
- __be32 saddr;
+ __struct_group(, addrs,, __be32 saddr;
__be32 daddr;
+ );
};
struct ip_auth_hdr {
__u8 nexthdr;
@@ -95,12 +96,12 @@
__be16 reserved;
__be32 spi;
__be32 seq_no;
- __u8 auth_data[0];
+ __u8 auth_data[];
};
struct ip_esp_hdr {
__be32 spi;
__be32 seq_no;
- __u8 enc_data[0];
+ __u8 enc_data[];
};
struct ip_comp_hdr {
__u8 nexthdr;
diff --git a/libc/kernel/uapi/linux/ip_vs.h b/libc/kernel/uapi/linux/ip_vs.h
index 6e3defe..916fcf0 100644
--- a/libc/kernel/uapi/linux/ip_vs.h
+++ b/libc/kernel/uapi/linux/ip_vs.h
@@ -159,11 +159,11 @@
__be16 port;
__u32 fwmark;
unsigned int num_dests;
- struct ip_vs_dest_entry entrytable[0];
+ struct ip_vs_dest_entry entrytable[];
};
struct ip_vs_get_services {
unsigned int num_services;
- struct ip_vs_service_entry entrytable[0];
+ struct ip_vs_service_entry entrytable[];
};
struct ip_vs_timeout_user {
int tcp_timeout;
diff --git a/libc/kernel/uapi/linux/ipv6.h b/libc/kernel/uapi/linux/ipv6.h
index 757cbda..2e57ed1 100644
--- a/libc/kernel/uapi/linux/ipv6.h
+++ b/libc/kernel/uapi/linux/ipv6.h
@@ -87,8 +87,9 @@
__be16 payload_len;
__u8 nexthdr;
__u8 hop_limit;
- struct in6_addr saddr;
+ __struct_group(, addrs,, struct in6_addr saddr;
struct in6_addr daddr;
+ );
};
enum {
DEVCONF_FORWARDING = 0,
diff --git a/libc/kernel/uapi/linux/iso_fs.h b/libc/kernel/uapi/linux/iso_fs.h
index 8227031..f9c4f48 100644
--- a/libc/kernel/uapi/linux/iso_fs.h
+++ b/libc/kernel/uapi/linux/iso_fs.h
@@ -132,7 +132,7 @@
__u8 name_len[2];
__u8 extent[4];
__u8 parent[2];
- char name[0];
+ char name[];
} __attribute__((packed));
struct iso_directory_record {
__u8 length[ISODCL(1, 1)];
@@ -145,7 +145,7 @@
__u8 interleave[ISODCL(28, 28)];
__u8 volume_sequence_number[ISODCL(29, 32)];
__u8 name_len[ISODCL(33, 33)];
- char name[0];
+ char name[];
} __attribute__((packed));
#define ISOFS_BLOCK_BITS 11
#define ISOFS_BLOCK_SIZE 2048
diff --git a/libc/kernel/uapi/linux/jffs2.h b/libc/kernel/uapi/linux/jffs2.h
index 698f953..643aa2e 100644
--- a/libc/kernel/uapi/linux/jffs2.h
+++ b/libc/kernel/uapi/linux/jffs2.h
@@ -86,7 +86,7 @@
__u8 unused[2];
jint32_t node_crc;
jint32_t name_crc;
- __u8 name[0];
+ __u8 name[];
};
struct jffs2_raw_inode {
jint16_t magic;
@@ -110,7 +110,7 @@
jint16_t flags;
jint32_t data_crc;
jint32_t node_crc;
- __u8 data[0];
+ __u8 data[];
};
struct jffs2_raw_xattr {
jint16_t magic;
@@ -124,7 +124,7 @@
jint16_t value_len;
jint32_t data_crc;
jint32_t node_crc;
- __u8 data[0];
+ __u8 data[];
} __attribute__((packed));
struct jffs2_raw_xref {
jint16_t magic;
@@ -146,7 +146,7 @@
jint32_t padded;
jint32_t sum_crc;
jint32_t node_crc;
- jint32_t sum[0];
+ jint32_t sum[];
};
union jffs2_node_union {
struct jffs2_raw_inode i;
diff --git a/libc/kernel/uapi/linux/kcov.h b/libc/kernel/uapi/linux/kcov.h
index cf2660b..5b6f6b1 100644
--- a/libc/kernel/uapi/linux/kcov.h
+++ b/libc/kernel/uapi/linux/kcov.h
@@ -24,7 +24,7 @@
__u32 area_size;
__u32 num_handles;
__aligned_u64 common_handle;
- __aligned_u64 handles[0];
+ __aligned_u64 handles[];
};
#define KCOV_REMOTE_MAX_HANDLES 0x100
#define KCOV_INIT_TRACE _IOR('c', 1, unsigned long)
diff --git a/libc/kernel/uapi/linux/kfd_ioctl.h b/libc/kernel/uapi/linux/kfd_ioctl.h
index 8ec47f4..d21e0fc 100644
--- a/libc/kernel/uapi/linux/kfd_ioctl.h
+++ b/libc/kernel/uapi/linux/kfd_ioctl.h
@@ -21,7 +21,7 @@
#include <drm/drm.h>
#include <linux/ioctl.h>
#define KFD_IOCTL_MAJOR_VERSION 1
-#define KFD_IOCTL_MINOR_VERSION 8
+#define KFD_IOCTL_MINOR_VERSION 11
struct kfd_ioctl_get_version_args {
__u32 major_version;
__u32 minor_version;
@@ -72,6 +72,11 @@
__u32 queue_id;
__u32 pad;
};
+struct kfd_ioctl_get_available_memory_args {
+ __u64 available;
+ __u32 gpu_id;
+ __u32 pad;
+};
#define KFD_IOC_CACHE_POLICY_COHERENT 0
#define KFD_IOC_CACHE_POLICY_NONCOHERENT 1
struct kfd_ioctl_set_memory_policy_args {
@@ -295,6 +300,33 @@
KFD_SMI_EVENT_THERMAL_THROTTLE = 2,
KFD_SMI_EVENT_GPU_PRE_RESET = 3,
KFD_SMI_EVENT_GPU_POST_RESET = 4,
+ KFD_SMI_EVENT_MIGRATE_START = 5,
+ KFD_SMI_EVENT_MIGRATE_END = 6,
+ KFD_SMI_EVENT_PAGE_FAULT_START = 7,
+ KFD_SMI_EVENT_PAGE_FAULT_END = 8,
+ KFD_SMI_EVENT_QUEUE_EVICTION = 9,
+ KFD_SMI_EVENT_QUEUE_RESTORE = 10,
+ KFD_SMI_EVENT_UNMAP_FROM_GPU = 11,
+ KFD_SMI_EVENT_ALL_PROCESS = 64
+};
+enum KFD_MIGRATE_TRIGGERS {
+ KFD_MIGRATE_TRIGGER_PREFETCH,
+ KFD_MIGRATE_TRIGGER_PAGEFAULT_GPU,
+ KFD_MIGRATE_TRIGGER_PAGEFAULT_CPU,
+ KFD_MIGRATE_TRIGGER_TTM_EVICTION
+};
+enum KFD_QUEUE_EVICTION_TRIGGERS {
+ KFD_QUEUE_EVICTION_TRIGGER_SVM,
+ KFD_QUEUE_EVICTION_TRIGGER_USERPTR,
+ KFD_QUEUE_EVICTION_TRIGGER_TTM,
+ KFD_QUEUE_EVICTION_TRIGGER_SUSPEND,
+ KFD_QUEUE_EVICTION_CRIU_CHECKPOINT,
+ KFD_QUEUE_EVICTION_CRIU_RESTORE
+};
+enum KFD_SVM_UNMAP_TRIGGERS {
+ KFD_SVM_UNMAP_TRIGGER_MMU_NOTIFY,
+ KFD_SVM_UNMAP_TRIGGER_MMU_NOTIFY_MIGRATE,
+ KFD_SVM_UNMAP_TRIGGER_UNMAP_FROM_CPU
};
#define KFD_SMI_EVENT_MASK_FROM_INDEX(i) (1ULL << ((i) - 1))
#define KFD_SMI_EVENT_MSG_SIZE 96
@@ -346,6 +378,7 @@
#define KFD_IOCTL_SVM_FLAG_GPU_RO 0x00000008
#define KFD_IOCTL_SVM_FLAG_GPU_EXEC 0x00000010
#define KFD_IOCTL_SVM_FLAG_GPU_READ_MOSTLY 0x00000020
+#define KFD_IOCTL_SVM_FLAG_GPU_ALWAYS_MAPPED 0x00000040
enum kfd_ioctl_svm_op {
KFD_IOCTL_SVM_OP_SET_ATTR,
KFD_IOCTL_SVM_OP_GET_ATTR
@@ -417,6 +450,7 @@
#define AMDKFD_IOC_SVM AMDKFD_IOWR(0x20, struct kfd_ioctl_svm_args)
#define AMDKFD_IOC_SET_XNACK_MODE AMDKFD_IOWR(0x21, struct kfd_ioctl_set_xnack_mode_args)
#define AMDKFD_IOC_CRIU_OP AMDKFD_IOWR(0x22, struct kfd_ioctl_criu_args)
+#define AMDKFD_IOC_AVAILABLE_MEMORY AMDKFD_IOWR(0x23, struct kfd_ioctl_get_available_memory_args)
#define AMDKFD_COMMAND_START 0x01
-#define AMDKFD_COMMAND_END 0x23
+#define AMDKFD_COMMAND_END 0x24
#endif
diff --git a/libc/kernel/uapi/linux/kvm.h b/libc/kernel/uapi/linux/kvm.h
index cc5495d..768f57e 100644
--- a/libc/kernel/uapi/linux/kvm.h
+++ b/libc/kernel/uapi/linux/kvm.h
@@ -216,6 +216,8 @@
#define KVM_EXIT_X86_BUS_LOCK 33
#define KVM_EXIT_XEN 34
#define KVM_EXIT_RISCV_SBI 35
+#define KVM_EXIT_RISCV_CSR 36
+#define KVM_EXIT_NOTIFY 37
#define KVM_INTERNAL_ERROR_EMULATION 1
#define KVM_INTERNAL_ERROR_SIMUL_EX 2
#define KVM_INTERNAL_ERROR_DELIVERY_EV 3
@@ -379,6 +381,16 @@
unsigned long args[6];
unsigned long ret[2];
} riscv_sbi;
+ struct {
+ unsigned long csr_num;
+ unsigned long new_value;
+ unsigned long write_mask;
+ unsigned long ret_value;
+ } riscv_csr;
+ struct {
+#define KVM_NOTIFY_CONTEXT_INVALID (1 << 0)
+ __u32 flags;
+ } notify;
char padding[256];
};
#define SYNC_REGS_SIZE_BYTES 2048
@@ -408,7 +420,7 @@
};
struct kvm_coalesced_mmio_ring {
__u32 first, last;
- struct kvm_coalesced_mmio coalesced_mmio[0];
+ struct kvm_coalesced_mmio coalesced_mmio[];
};
#define KVM_COALESCED_MMIO_MAX ((PAGE_SIZE - sizeof(struct kvm_coalesced_mmio_ring)) / sizeof(struct kvm_coalesced_mmio))
struct kvm_translation {
@@ -465,7 +477,7 @@
};
struct kvm_signal_mask {
__u32 len;
- __u8 sigset[0];
+ __u8 sigset[];
};
struct kvm_tpr_access_ctl {
__u32 enabled;
@@ -910,6 +922,13 @@
#define KVM_CAP_VM_TSC_CONTROL 214
#define KVM_CAP_SYSTEM_EVENT_DATA 215
#define KVM_CAP_ARM_SYSTEM_SUSPEND 216
+#define KVM_CAP_S390_PROTECTED_DUMP 217
+#define KVM_CAP_X86_TRIPLE_FAULT_EVENT 218
+#define KVM_CAP_X86_NOTIFY_VMEXIT 219
+#define KVM_CAP_VM_DISABLE_NX_HUGE_PAGES 220
+#define KVM_CAP_S390_ZPCI_OP 221
+#define KVM_CAP_S390_CPU_TOPOLOGY 222
+#define KVM_CAP_DIRTY_LOG_RING_ACQ_REL 223
#ifdef KVM_CAP_IRQ_ROUTING
struct kvm_irq_routing_irqchip {
__u32 irqchip;
@@ -963,7 +982,7 @@
struct kvm_irq_routing {
__u32 nr;
__u32 flags;
- struct kvm_irq_routing_entry entries[0];
+ struct kvm_irq_routing_entry entries[];
};
#endif
#ifdef KVM_CAP_MCE
@@ -1049,7 +1068,7 @@
#define KVM_REG_SIZE_U2048 0x0080000000000000ULL
struct kvm_reg_list {
__u64 n;
- __u64 reg[0];
+ __u64 reg[];
};
struct kvm_one_reg {
__u64 id;
@@ -1263,6 +1282,48 @@
__u64 size;
__u64 tweak;
};
+enum pv_cmd_dmp_id {
+ KVM_PV_DUMP_INIT,
+ KVM_PV_DUMP_CONFIG_STOR_STATE,
+ KVM_PV_DUMP_COMPLETE,
+ KVM_PV_DUMP_CPU,
+};
+struct kvm_s390_pv_dmp {
+ __u64 subcmd;
+ __u64 buff_addr;
+ __u64 buff_len;
+ __u64 gaddr;
+ __u64 reserved[4];
+};
+enum pv_cmd_info_id {
+ KVM_PV_INFO_VM,
+ KVM_PV_INFO_DUMP,
+};
+struct kvm_s390_pv_info_dump {
+ __u64 dump_cpu_buffer_len;
+ __u64 dump_config_mem_buffer_per_1m;
+ __u64 dump_config_finalize_len;
+};
+struct kvm_s390_pv_info_vm {
+ __u64 inst_calls_list[4];
+ __u64 max_cpus;
+ __u64 max_guests;
+ __u64 max_guest_addr;
+ __u64 feature_indication;
+};
+struct kvm_s390_pv_info_header {
+ __u32 id;
+ __u32 len_max;
+ __u32 len_written;
+ __u32 reserved;
+};
+struct kvm_s390_pv_info {
+ struct kvm_s390_pv_info_header header;
+ union {
+ struct kvm_s390_pv_info_dump dump;
+ struct kvm_s390_pv_info_vm vm;
+ };
+};
enum pv_cmd_id {
KVM_PV_ENABLE,
KVM_PV_DISABLE,
@@ -1271,6 +1332,8 @@
KVM_PV_VERIFY,
KVM_PV_PREP_RESET,
KVM_PV_UNSHARE_ALL,
+ KVM_PV_INFO,
+ KVM_PV_DUMP,
};
struct kvm_pv_cmd {
__u32 cmd;
@@ -1575,4 +1638,28 @@
};
#define KVM_GET_STATS_FD _IO(KVMIO, 0xce)
#define KVM_GET_XSAVE2 _IOR(KVMIO, 0xcf, struct kvm_xsave)
+#define KVM_S390_PV_CPU_COMMAND _IOWR(KVMIO, 0xd0, struct kvm_pv_cmd)
+#define KVM_X86_NOTIFY_VMEXIT_ENABLED (1ULL << 0)
+#define KVM_X86_NOTIFY_VMEXIT_USER (1ULL << 1)
+#define KVM_S390_ZPCI_OP _IOW(KVMIO, 0xd1, struct kvm_s390_zpci_op)
+struct kvm_s390_zpci_op {
+ __u32 fh;
+ __u8 op;
+ __u8 pad[3];
+ union {
+ struct {
+ __u64 ibv;
+ __u64 sb;
+ __u32 flags;
+ __u32 noi;
+ __u8 isc;
+ __u8 sbo;
+ __u16 pad;
+ } reg_aen;
+ __u64 reserved[8];
+ } u;
+};
+#define KVM_S390_ZPCIOP_REG_AEN 0
+#define KVM_S390_ZPCIOP_DEREG_AEN 1
+#define KVM_S390_ZPCIOP_REGAEN_HOST (1 << 0)
#endif
diff --git a/libc/kernel/uapi/linux/l2tp.h b/libc/kernel/uapi/linux/l2tp.h
index a054819..dee634e 100644
--- a/libc/kernel/uapi/linux/l2tp.h
+++ b/libc/kernel/uapi/linux/l2tp.h
@@ -22,7 +22,6 @@
#include <linux/socket.h>
#include <linux/in.h>
#include <linux/in6.h>
-#define IPPROTO_L2TP 115
#define __SOCK_SIZE__ 16
struct sockaddr_l2tpip {
__kernel_sa_family_t l2tp_family;
diff --git a/libc/kernel/uapi/linux/loadpin.h b/libc/kernel/uapi/linux/loadpin.h
new file mode 100644
index 0000000..2641939
--- /dev/null
+++ b/libc/kernel/uapi/linux/loadpin.h
@@ -0,0 +1,23 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ *** This header was automatically generated from a Linux kernel header
+ *** of the same name, to make information necessary for userspace to
+ *** call into the kernel available to libc. It contains only constants,
+ *** structures, and macros generated from the original header, and thus,
+ *** contains no copyrightable information.
+ ***
+ *** To edit the content of this header, modify the corresponding
+ *** source file (e.g. under external/kernel-headers/original/) then
+ *** run bionic/libc/kernel/tools/update_all.py
+ ***
+ *** Any manual change here will be lost the next time this script will
+ *** be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_LOOP_LOADPIN_H
+#define _UAPI_LINUX_LOOP_LOADPIN_H
+#define LOADPIN_IOC_MAGIC 'L'
+#define LOADPIN_IOC_SET_TRUSTED_VERITY_DIGESTS _IOW(LOADPIN_IOC_MAGIC, 0x00, unsigned int)
+#endif
diff --git a/libc/kernel/uapi/linux/lwtunnel.h b/libc/kernel/uapi/linux/lwtunnel.h
index e6fb536..94011dd 100644
--- a/libc/kernel/uapi/linux/lwtunnel.h
+++ b/libc/kernel/uapi/linux/lwtunnel.h
@@ -30,6 +30,7 @@
LWTUNNEL_ENCAP_SEG6_LOCAL,
LWTUNNEL_ENCAP_RPL,
LWTUNNEL_ENCAP_IOAM6,
+ LWTUNNEL_ENCAP_XFRM,
__LWTUNNEL_ENCAP_MAX,
};
#define LWTUNNEL_ENCAP_MAX (__LWTUNNEL_ENCAP_MAX - 1)
@@ -107,4 +108,11 @@
};
#define LWT_BPF_MAX (__LWT_BPF_MAX - 1)
#define LWT_BPF_MAX_HEADROOM 256
+enum {
+ LWT_XFRM_UNSPEC,
+ LWT_XFRM_IF_ID,
+ LWT_XFRM_LINK,
+ __LWT_XFRM_MAX,
+};
+#define LWT_XFRM_MAX (__LWT_XFRM_MAX - 1)
#endif
diff --git a/libc/kernel/uapi/linux/magic.h b/libc/kernel/uapi/linux/magic.h
index 6563411..ac2a0f3 100644
--- a/libc/kernel/uapi/linux/magic.h
+++ b/libc/kernel/uapi/linux/magic.h
@@ -99,11 +99,7 @@
#define AAFS_MAGIC 0x5a3c69f0
#define ZONEFS_MAGIC 0x5a4f4653
#define UDF_SUPER_MAGIC 0x15013346
-#define BALLOON_KVM_MAGIC 0x13661366
-#define ZSMALLOC_MAGIC 0x58295829
#define DMA_BUF_MAGIC 0x444d4142
#define DEVMEM_MAGIC 0x454d444d
-#define Z3FOLD_MAGIC 0x33
-#define PPC_CMM_MAGIC 0xc7571590
#define SECRETMEM_MAGIC 0x5345434d
#endif
diff --git a/libc/kernel/uapi/linux/media-bus-format.h b/libc/kernel/uapi/linux/media-bus-format.h
index 2542a32..4555de1 100644
--- a/libc/kernel/uapi/linux/media-bus-format.h
+++ b/libc/kernel/uapi/linux/media-bus-format.h
@@ -43,9 +43,13 @@
#define MEDIA_BUS_FMT_RGB888_3X8_DELTA 0x101d
#define MEDIA_BUS_FMT_RGB888_1X7X4_SPWG 0x1011
#define MEDIA_BUS_FMT_RGB888_1X7X4_JEIDA 0x1012
+#define MEDIA_BUS_FMT_RGB666_1X30_CPADLO 0x101e
+#define MEDIA_BUS_FMT_RGB888_1X30_CPADLO 0x101f
#define MEDIA_BUS_FMT_ARGB8888_1X32 0x100d
#define MEDIA_BUS_FMT_RGB888_1X32_PADHI 0x100f
#define MEDIA_BUS_FMT_RGB101010_1X30 0x1018
+#define MEDIA_BUS_FMT_RGB666_1X36_CPADLO 0x1020
+#define MEDIA_BUS_FMT_RGB888_1X36_CPADLO 0x1021
#define MEDIA_BUS_FMT_RGB121212_1X36 0x1019
#define MEDIA_BUS_FMT_RGB161616_1X48 0x101a
#define MEDIA_BUS_FMT_Y8_1X8 0x2001
diff --git a/libc/kernel/uapi/linux/minix_fs.h b/libc/kernel/uapi/linux/minix_fs.h
index b6f1c69..0878efe 100644
--- a/libc/kernel/uapi/linux/minix_fs.h
+++ b/libc/kernel/uapi/linux/minix_fs.h
@@ -77,10 +77,10 @@
};
struct minix_dir_entry {
__u16 inode;
- char name[0];
+ char name[];
};
struct minix3_dir_entry {
__u32 inode;
- char name[0];
+ char name[];
};
#endif
diff --git a/libc/kernel/uapi/linux/mmc/ioctl.h b/libc/kernel/uapi/linux/mmc/ioctl.h
index afea6a5..451134b 100644
--- a/libc/kernel/uapi/linux/mmc/ioctl.h
+++ b/libc/kernel/uapi/linux/mmc/ioctl.h
@@ -39,7 +39,7 @@
#define mmc_ioc_cmd_set_data(ic,ptr) ic.data_ptr = (__u64) (unsigned long) ptr
struct mmc_ioc_multi_cmd {
__u64 num_of_cmds;
- struct mmc_ioc_cmd cmds[0];
+ struct mmc_ioc_cmd cmds[];
};
#define MMC_IOC_CMD _IOWR(MMC_BLOCK_MAJOR, 0, struct mmc_ioc_cmd)
#define MMC_IOC_MULTI_CMD _IOWR(MMC_BLOCK_MAJOR, 1, struct mmc_ioc_multi_cmd)
diff --git a/libc/kernel/uapi/linux/ndctl.h b/libc/kernel/uapi/linux/ndctl.h
index 0fd3ac4..7e0d560 100644
--- a/libc/kernel/uapi/linux/ndctl.h
+++ b/libc/kernel/uapi/linux/ndctl.h
@@ -22,33 +22,33 @@
struct nd_cmd_dimm_flags {
__u32 status;
__u32 flags;
-} __packed;
+} __attribute__((__packed__));
struct nd_cmd_get_config_size {
__u32 status;
__u32 config_size;
__u32 max_xfer;
-} __packed;
+} __attribute__((__packed__));
struct nd_cmd_get_config_data_hdr {
__u32 in_offset;
__u32 in_length;
__u32 status;
- __u8 out_buf[0];
-} __packed;
+ __u8 out_buf[];
+} __attribute__((__packed__));
struct nd_cmd_set_config_hdr {
__u32 in_offset;
__u32 in_length;
- __u8 in_buf[0];
-} __packed;
+ __u8 in_buf[];
+} __attribute__((__packed__));
struct nd_cmd_vendor_hdr {
__u32 opcode;
__u32 in_length;
- __u8 in_buf[0];
-} __packed;
+ __u8 in_buf[];
+} __attribute__((__packed__));
struct nd_cmd_vendor_tail {
__u32 status;
__u32 out_length;
- __u8 out_buf[0];
-} __packed;
+ __u8 out_buf[];
+} __attribute__((__packed__));
struct nd_cmd_ars_cap {
__u64 address;
__u64 length;
@@ -57,7 +57,7 @@
__u32 clear_err_unit;
__u16 flags;
__u16 reserved;
-} __packed;
+} __attribute__((__packed__));
struct nd_cmd_ars_start {
__u64 address;
__u64 length;
@@ -66,7 +66,7 @@
__u8 reserved[5];
__u32 status;
__u32 scrub_time;
-} __packed;
+} __attribute__((__packed__));
struct nd_cmd_ars_status {
__u32 status;
__u32 out_length;
@@ -82,15 +82,15 @@
__u32 reserved;
__u64 err_address;
__u64 length;
- } __packed records[0];
-} __packed;
+ } __attribute__((__packed__)) records[];
+} __attribute__((__packed__));
struct nd_cmd_clear_error {
__u64 address;
__u64 length;
__u32 status;
__u8 reserved[4];
__u64 cleared;
-} __packed;
+} __attribute__((__packed__));
enum {
ND_CMD_IMPLEMENTED = 0,
ND_CMD_ARS_CAP = 1,
diff --git a/libc/kernel/uapi/linux/neighbour.h b/libc/kernel/uapi/linux/neighbour.h
index b5dcf2e..b86d2ae 100644
--- a/libc/kernel/uapi/linux/neighbour.h
+++ b/libc/kernel/uapi/linux/neighbour.h
@@ -108,6 +108,7 @@
NDTPA_QUEUE_LENBYTES,
NDTPA_MCAST_REPROBES,
NDTPA_PAD,
+ NDTPA_INTERVAL_PROBE_TIME_MS,
__NDTPA_MAX
};
#define NDTPA_MAX (__NDTPA_MAX - 1)
diff --git a/libc/kernel/uapi/linux/net_dropmon.h b/libc/kernel/uapi/linux/net_dropmon.h
index 35f70a5..4d2c336 100644
--- a/libc/kernel/uapi/linux/net_dropmon.h
+++ b/libc/kernel/uapi/linux/net_dropmon.h
@@ -36,11 +36,11 @@
};
struct net_dm_config_msg {
__u32 entries;
- struct net_dm_config_entry options[0];
+ struct net_dm_config_entry options[];
};
struct net_dm_alert_msg {
__u32 entries;
- struct net_dm_drop_point points[0];
+ struct net_dm_drop_point points[];
};
struct net_dm_user_msg {
union {
diff --git a/libc/kernel/uapi/linux/netfilter/x_tables.h b/libc/kernel/uapi/linux/netfilter/x_tables.h
index 46bde57..0993265 100644
--- a/libc/kernel/uapi/linux/netfilter/x_tables.h
+++ b/libc/kernel/uapi/linux/netfilter/x_tables.h
@@ -36,7 +36,7 @@
} kernel;
__u16 match_size;
} u;
- unsigned char data[0];
+ unsigned char data[];
};
struct xt_entry_target {
union {
@@ -87,7 +87,7 @@
struct xt_counters_info {
char name[XT_TABLE_MAXNAMELEN];
unsigned int num_counters;
- struct xt_counters counters[0];
+ struct xt_counters counters[];
};
#define XT_INV_PROTO 0x40
#define XT_MATCH_ITERATE(type,e,fn,args...) \
diff --git a/libc/kernel/uapi/linux/netfilter_arp/arp_tables.h b/libc/kernel/uapi/linux/netfilter_arp/arp_tables.h
index 340625f..862f514 100644
--- a/libc/kernel/uapi/linux/netfilter_arp/arp_tables.h
+++ b/libc/kernel/uapi/linux/netfilter_arp/arp_tables.h
@@ -72,7 +72,7 @@
__u16 next_offset;
unsigned int comefrom;
struct xt_counters counters;
- unsigned char elems[0];
+ unsigned char elems[];
};
#define ARPT_BASE_CTL 96
#define ARPT_SO_SET_REPLACE (ARPT_BASE_CTL)
@@ -99,11 +99,11 @@
unsigned int underflow[NF_ARP_NUMHOOKS];
unsigned int num_counters;
struct xt_counters __user * counters;
- struct arpt_entry entries[0];
+ struct arpt_entry entries[];
};
struct arpt_get_entries {
char name[XT_TABLE_MAXNAMELEN];
unsigned int size;
- struct arpt_entry entrytable[0];
+ struct arpt_entry entrytable[];
};
#endif
diff --git a/libc/kernel/uapi/linux/netfilter_bridge/ebt_among.h b/libc/kernel/uapi/linux/netfilter_bridge/ebt_among.h
index 74cd550..aa39c5b 100644
--- a/libc/kernel/uapi/linux/netfilter_bridge/ebt_among.h
+++ b/libc/kernel/uapi/linux/netfilter_bridge/ebt_among.h
@@ -28,7 +28,7 @@
struct ebt_mac_wormhash {
int table[257];
int poolsize;
- struct ebt_mac_wormhash_tuple pool[0];
+ struct ebt_mac_wormhash_tuple pool[];
};
#define ebt_mac_wormhash_size(x) ((x) ? sizeof(struct ebt_mac_wormhash) + (x)->poolsize * sizeof(struct ebt_mac_wormhash_tuple) : 0)
struct ebt_among_info {
diff --git a/libc/kernel/uapi/linux/netfilter_decnet.h b/libc/kernel/uapi/linux/netfilter_decnet.h
deleted file mode 100644
index c9c16ca..0000000
--- a/libc/kernel/uapi/linux/netfilter_decnet.h
+++ /dev/null
@@ -1,57 +0,0 @@
-/****************************************************************************
- ****************************************************************************
- ***
- *** This header was automatically generated from a Linux kernel header
- *** of the same name, to make information necessary for userspace to
- *** call into the kernel available to libc. It contains only constants,
- *** structures, and macros generated from the original header, and thus,
- *** contains no copyrightable information.
- ***
- *** To edit the content of this header, modify the corresponding
- *** source file (e.g. under external/kernel-headers/original/) then
- *** run bionic/libc/kernel/tools/update_all.py
- ***
- *** Any manual change here will be lost the next time this script will
- *** be run. You've been warned!
- ***
- ****************************************************************************
- ****************************************************************************/
-#ifndef __LINUX_DECNET_NETFILTER_H
-#define __LINUX_DECNET_NETFILTER_H
-#include <linux/netfilter.h>
-#include <limits.h>
-#define NF_DN_NUMHOOKS 7
-#define NF_DN_PRE_ROUTING 0
-#define NF_DN_LOCAL_IN 1
-#define NF_DN_FORWARD 2
-#define NF_DN_LOCAL_OUT 3
-#define NF_DN_POST_ROUTING 4
-#define NF_DN_HELLO 5
-#define NF_DN_ROUTE 6
-enum nf_dn_hook_priorities {
- NF_DN_PRI_FIRST = INT_MIN,
- NF_DN_PRI_CONNTRACK = - 200,
- NF_DN_PRI_MANGLE = - 150,
- NF_DN_PRI_NAT_DST = - 100,
- NF_DN_PRI_FILTER = 0,
- NF_DN_PRI_NAT_SRC = 100,
- NF_DN_PRI_DNRTMSG = 200,
- NF_DN_PRI_LAST = INT_MAX,
-};
-struct nf_dn_rtmsg {
- int nfdn_ifindex;
-};
-#define NFDN_RTMSG(r) ((unsigned char *) (r) + NLMSG_ALIGN(sizeof(struct nf_dn_rtmsg)))
-#define DNRMG_L1_GROUP 0x01
-#define DNRMG_L2_GROUP 0x02
-enum {
- DNRNG_NLGRP_NONE,
-#define DNRNG_NLGRP_NONE DNRNG_NLGRP_NONE
- DNRNG_NLGRP_L1,
-#define DNRNG_NLGRP_L1 DNRNG_NLGRP_L1
- DNRNG_NLGRP_L2,
-#define DNRNG_NLGRP_L2 DNRNG_NLGRP_L2
- __DNRNG_NLGRP_MAX
-};
-#define DNRNG_NLGRP_MAX (__DNRNG_NLGRP_MAX - 1)
-#endif
diff --git a/libc/kernel/uapi/linux/netfilter_ipv4/ip_tables.h b/libc/kernel/uapi/linux/netfilter_ipv4/ip_tables.h
index 033c519..14a65ad 100644
--- a/libc/kernel/uapi/linux/netfilter_ipv4/ip_tables.h
+++ b/libc/kernel/uapi/linux/netfilter_ipv4/ip_tables.h
@@ -79,7 +79,7 @@
__u16 next_offset;
unsigned int comefrom;
struct xt_counters counters;
- unsigned char elems[0];
+ unsigned char elems[];
};
#define IPT_BASE_CTL 64
#define IPT_SO_SET_REPLACE (IPT_BASE_CTL)
@@ -113,12 +113,12 @@
unsigned int underflow[NF_INET_NUMHOOKS];
unsigned int num_counters;
struct xt_counters __user * counters;
- struct ipt_entry entries[0];
+ struct ipt_entry entries[];
};
struct ipt_get_entries {
char name[XT_TABLE_MAXNAMELEN];
unsigned int size;
- struct ipt_entry entrytable[0];
+ struct ipt_entry entrytable[];
};
static __inline__ struct xt_entry_target * ipt_get_target(struct ipt_entry * e) {
return(struct xt_entry_target *) ((char *) e + e->target_offset);
diff --git a/libc/kernel/uapi/linux/netfilter_ipv6/ip6_tables.h b/libc/kernel/uapi/linux/netfilter_ipv6/ip6_tables.h
index b3f426d..22071db 100644
--- a/libc/kernel/uapi/linux/netfilter_ipv6/ip6_tables.h
+++ b/libc/kernel/uapi/linux/netfilter_ipv6/ip6_tables.h
@@ -133,12 +133,12 @@
unsigned int underflow[NF_INET_NUMHOOKS];
unsigned int num_counters;
struct xt_counters __user * counters;
- struct ip6t_entry entries[0];
+ struct ip6t_entry entries[];
};
struct ip6t_get_entries {
char name[XT_TABLE_MAXNAMELEN];
unsigned int size;
- struct ip6t_entry entrytable[0];
+ struct ip6t_entry entrytable[];
};
static __inline__ struct xt_entry_target * ip6t_get_target(struct ip6t_entry * e) {
return(struct xt_entry_target *) ((char *) e + e->target_offset);
diff --git a/libc/kernel/uapi/linux/netlink.h b/libc/kernel/uapi/linux/netlink.h
index bc3e749..17d5291 100644
--- a/libc/kernel/uapi/linux/netlink.h
+++ b/libc/kernel/uapi/linux/netlink.h
@@ -100,6 +100,8 @@
NLMSGERR_ATTR_OFFS,
NLMSGERR_ATTR_COOKIE,
NLMSGERR_ATTR_POLICY,
+ NLMSGERR_ATTR_MISS_TYPE,
+ NLMSGERR_ATTR_MISS_NEST,
__NLMSGERR_ATTR_MAX,
NLMSGERR_ATTR_MAX = __NLMSGERR_ATTR_MAX - 1
};
diff --git a/libc/kernel/uapi/linux/nl80211.h b/libc/kernel/uapi/linux/nl80211.h
index 8655d5f..faff80a 100644
--- a/libc/kernel/uapi/linux/nl80211.h
+++ b/libc/kernel/uapi/linux/nl80211.h
@@ -185,6 +185,11 @@
NL80211_CMD_COLOR_CHANGE_COMPLETED,
NL80211_CMD_SET_FILS_AAD,
NL80211_CMD_ASSOC_COMEBACK,
+ NL80211_CMD_ADD_LINK,
+ NL80211_CMD_REMOVE_LINK,
+ NL80211_CMD_ADD_LINK_STA,
+ NL80211_CMD_MODIFY_LINK_STA,
+ NL80211_CMD_REMOVE_LINK_STA,
__NL80211_CMD_AFTER_LAST,
NL80211_CMD_MAX = __NL80211_CMD_AFTER_LAST - 1
};
@@ -513,6 +518,15 @@
NL80211_ATTR_AP_SETTINGS_FLAGS,
NL80211_ATTR_EHT_CAPABILITY,
NL80211_ATTR_DISABLE_EHT,
+ NL80211_ATTR_MLO_LINKS,
+ NL80211_ATTR_MLO_LINK_ID,
+ NL80211_ATTR_MLD_ADDR,
+ NL80211_ATTR_MLO_SUPPORT,
+ NL80211_ATTR_MAX_NUM_AKM_SUITES,
+ NL80211_ATTR_EML_CAPABILITY,
+ NL80211_ATTR_MLD_CAPA_AND_OPS,
+ NL80211_ATTR_TX_HW_TIMESTAMP,
+ NL80211_ATTR_RX_HW_TIMESTAMP,
__NL80211_ATTR_AFTER_LAST,
NUM_NL80211_ATTR = __NL80211_ATTR_AFTER_LAST,
NL80211_ATTR_MAX = __NL80211_ATTR_AFTER_LAST - 1
@@ -1103,6 +1117,8 @@
NL80211_BSS_PARENT_BSSID,
NL80211_BSS_CHAIN_SIGNAL,
NL80211_BSS_FREQUENCY_OFFSET,
+ NL80211_BSS_MLO_LINK_ID,
+ NL80211_BSS_MLD_ADDR,
__NL80211_BSS_AFTER_LAST,
NL80211_BSS_MAX = __NL80211_BSS_AFTER_LAST - 1
};
@@ -1515,6 +1531,7 @@
NL80211_EXT_FEATURE_BSS_COLOR,
NL80211_EXT_FEATURE_FILS_CRYPTO_OFFLOAD,
NL80211_EXT_FEATURE_RADAR_BACKGROUND,
+ NL80211_EXT_FEATURE_POWERED_ADDR_CHANGE,
NUM_NL80211_EXT_FEATURES,
MAX_NL80211_EXT_FEATURES = NUM_NL80211_EXT_FEATURES - 1
};
diff --git a/libc/kernel/uapi/linux/openvswitch.h b/libc/kernel/uapi/linux/openvswitch.h
index c7d719c..c44e950 100644
--- a/libc/kernel/uapi/linux/openvswitch.h
+++ b/libc/kernel/uapi/linux/openvswitch.h
@@ -44,6 +44,7 @@
OVS_DP_ATTR_PAD,
OVS_DP_ATTR_MASKS_CACHE_SIZE,
OVS_DP_ATTR_PER_CPU_PIDS,
+ OVS_DP_ATTR_IFINDEX,
__OVS_DP_ATTR_MAX
};
#define OVS_DP_ATTR_MAX (__OVS_DP_ATTR_MAX - 1)
diff --git a/libc/kernel/uapi/linux/pci_regs.h b/libc/kernel/uapi/linux/pci_regs.h
index e1a38a8..87549aa 100644
--- a/libc/kernel/uapi/linux/pci_regs.h
+++ b/libc/kernel/uapi/linux/pci_regs.h
@@ -635,7 +635,8 @@
#define PCI_EXT_CAP_ID_DVSEC 0x23
#define PCI_EXT_CAP_ID_DLF 0x25
#define PCI_EXT_CAP_ID_PL_16GT 0x26
-#define PCI_EXT_CAP_ID_MAX PCI_EXT_CAP_ID_PL_16GT
+#define PCI_EXT_CAP_ID_DOE 0x2E
+#define PCI_EXT_CAP_ID_MAX PCI_EXT_CAP_ID_DOE
#define PCI_EXT_CAP_DSN_SIZEOF 12
#define PCI_EXT_CAP_MCAST_ENDPOINT_SIZEOF 40
#define PCI_ERR_UNCOR_STATUS 0x04
@@ -938,4 +939,25 @@
#define PCI_PL_16GT_LE_CTRL_DSP_TX_PRESET_MASK 0x0000000F
#define PCI_PL_16GT_LE_CTRL_USP_TX_PRESET_MASK 0x000000F0
#define PCI_PL_16GT_LE_CTRL_USP_TX_PRESET_SHIFT 4
+#define PCI_DOE_CAP 0x04
+#define PCI_DOE_CAP_INT_SUP 0x00000001
+#define PCI_DOE_CAP_INT_MSG_NUM 0x00000ffe
+#define PCI_DOE_CTRL 0x08
+#define PCI_DOE_CTRL_ABORT 0x00000001
+#define PCI_DOE_CTRL_INT_EN 0x00000002
+#define PCI_DOE_CTRL_GO 0x80000000
+#define PCI_DOE_STATUS 0x0c
+#define PCI_DOE_STATUS_BUSY 0x00000001
+#define PCI_DOE_STATUS_INT_STATUS 0x00000002
+#define PCI_DOE_STATUS_ERROR 0x00000004
+#define PCI_DOE_STATUS_DATA_OBJECT_READY 0x80000000
+#define PCI_DOE_WRITE 0x10
+#define PCI_DOE_READ 0x14
+#define PCI_DOE_DATA_OBJECT_HEADER_1_VID 0x0000ffff
+#define PCI_DOE_DATA_OBJECT_HEADER_1_TYPE 0x00ff0000
+#define PCI_DOE_DATA_OBJECT_HEADER_2_LENGTH 0x0003ffff
+#define PCI_DOE_DATA_OBJECT_DISC_REQ_3_INDEX 0x000000ff
+#define PCI_DOE_DATA_OBJECT_DISC_RSP_3_VID 0x0000ffff
+#define PCI_DOE_DATA_OBJECT_DISC_RSP_3_PROTOCOL 0x00ff0000
+#define PCI_DOE_DATA_OBJECT_DISC_RSP_3_NEXT_INDEX 0xff000000
#endif
diff --git a/libc/kernel/uapi/linux/perf_event.h b/libc/kernel/uapi/linux/perf_event.h
index bcc4e97..8f081ed 100644
--- a/libc/kernel/uapi/linux/perf_event.h
+++ b/libc/kernel/uapi/linux/perf_event.h
@@ -108,7 +108,6 @@
PERF_SAMPLE_CODE_PAGE_SIZE = 1U << 23,
PERF_SAMPLE_WEIGHT_STRUCT = 1U << 24,
PERF_SAMPLE_MAX = 1U << 25,
- __PERF_SAMPLE_CALLCHAIN_EARLY = 1ULL << 63,
};
#define PERF_SAMPLE_WEIGHT_TYPE (PERF_SAMPLE_WEIGHT | PERF_SAMPLE_WEIGHT_STRUCT)
enum perf_branch_sample_type_shift {
@@ -130,6 +129,7 @@
PERF_SAMPLE_BRANCH_NO_CYCLES_SHIFT = 15,
PERF_SAMPLE_BRANCH_TYPE_SAVE_SHIFT = 16,
PERF_SAMPLE_BRANCH_HW_INDEX_SHIFT = 17,
+ PERF_SAMPLE_BRANCH_PRIV_SAVE_SHIFT = 18,
PERF_SAMPLE_BRANCH_MAX_SHIFT
};
enum perf_branch_sample_type {
@@ -151,6 +151,7 @@
PERF_SAMPLE_BRANCH_NO_CYCLES = 1U << PERF_SAMPLE_BRANCH_NO_CYCLES_SHIFT,
PERF_SAMPLE_BRANCH_TYPE_SAVE = 1U << PERF_SAMPLE_BRANCH_TYPE_SAVE_SHIFT,
PERF_SAMPLE_BRANCH_HW_INDEX = 1U << PERF_SAMPLE_BRANCH_HW_INDEX_SHIFT,
+ PERF_SAMPLE_BRANCH_PRIV_SAVE = 1U << PERF_SAMPLE_BRANCH_PRIV_SAVE_SHIFT,
PERF_SAMPLE_BRANCH_MAX = 1U << PERF_SAMPLE_BRANCH_MAX_SHIFT,
};
enum {
@@ -167,8 +168,40 @@
PERF_BR_COND_RET = 10,
PERF_BR_ERET = 11,
PERF_BR_IRQ = 12,
+ PERF_BR_SERROR = 13,
+ PERF_BR_NO_TX = 14,
+ PERF_BR_EXTEND_ABI = 15,
PERF_BR_MAX,
};
+enum {
+ PERF_BR_SPEC_NA = 0,
+ PERF_BR_SPEC_WRONG_PATH = 1,
+ PERF_BR_NON_SPEC_CORRECT_PATH = 2,
+ PERF_BR_SPEC_CORRECT_PATH = 3,
+ PERF_BR_SPEC_MAX,
+};
+enum {
+ PERF_BR_NEW_FAULT_ALGN = 0,
+ PERF_BR_NEW_FAULT_DATA = 1,
+ PERF_BR_NEW_FAULT_INST = 2,
+ PERF_BR_NEW_ARCH_1 = 3,
+ PERF_BR_NEW_ARCH_2 = 4,
+ PERF_BR_NEW_ARCH_3 = 5,
+ PERF_BR_NEW_ARCH_4 = 6,
+ PERF_BR_NEW_ARCH_5 = 7,
+ PERF_BR_NEW_MAX,
+};
+enum {
+ PERF_BR_PRIV_UNKNOWN = 0,
+ PERF_BR_PRIV_USER = 1,
+ PERF_BR_PRIV_KERNEL = 2,
+ PERF_BR_PRIV_HV = 3,
+};
+#define PERF_BR_ARM64_FIQ PERF_BR_NEW_ARCH_1
+#define PERF_BR_ARM64_DEBUG_HALT PERF_BR_NEW_ARCH_2
+#define PERF_BR_ARM64_DEBUG_EXIT PERF_BR_NEW_ARCH_3
+#define PERF_BR_ARM64_DEBUG_INST PERF_BR_NEW_ARCH_4
+#define PERF_BR_ARM64_DEBUG_DATA PERF_BR_NEW_ARCH_5
#define PERF_SAMPLE_BRANCH_PLM_ALL (PERF_SAMPLE_BRANCH_USER | PERF_SAMPLE_BRANCH_KERNEL | PERF_SAMPLE_BRANCH_HV)
enum perf_sample_regs_abi {
PERF_SAMPLE_REGS_ABI_NONE = 0,
@@ -193,7 +226,8 @@
PERF_FORMAT_TOTAL_TIME_RUNNING = 1U << 1,
PERF_FORMAT_ID = 1U << 2,
PERF_FORMAT_GROUP = 1U << 3,
- PERF_FORMAT_MAX = 1U << 4,
+ PERF_FORMAT_LOST = 1U << 4,
+ PERF_FORMAT_MAX = 1U << 5,
};
#define PERF_ATTR_SIZE_VER0 64
#define PERF_ATTR_SIZE_VER1 72
@@ -246,7 +280,7 @@
struct perf_event_query_bpf {
__u32 ids_len;
__u32 prog_cnt;
- __u32 ids[0];
+ __u32 ids[];
};
#define PERF_EVENT_IOC_ENABLE _IO('$', 0)
#define PERF_EVENT_IOC_DISABLE _IO('$', 1)
@@ -434,6 +468,8 @@
#define PERF_MEM_LVLNUM_L2 0x02
#define PERF_MEM_LVLNUM_L3 0x03
#define PERF_MEM_LVLNUM_L4 0x04
+#define PERF_MEM_LVLNUM_CXL 0x09
+#define PERF_MEM_LVLNUM_IO 0x0a
#define PERF_MEM_LVLNUM_ANY_CACHE 0x0b
#define PERF_MEM_LVLNUM_LFB 0x0c
#define PERF_MEM_LVLNUM_RAM 0x0d
@@ -447,6 +483,7 @@
#define PERF_MEM_SNOOP_HITM 0x10
#define PERF_MEM_SNOOP_SHIFT 19
#define PERF_MEM_SNOOPX_FWD 0x01
+#define PERF_MEM_SNOOPX_PEER 0x02
#define PERF_MEM_SNOOPX_SHIFT 38
#define PERF_MEM_LOCK_NA 0x01
#define PERF_MEM_LOCK_LOCKED 0x02
@@ -472,7 +509,7 @@
struct perf_branch_entry {
__u64 from;
__u64 to;
- __u64 mispred : 1, predicted : 1, in_tx : 1, abort : 1, cycles : 16, type : 4, reserved : 40;
+ __u64 mispred : 1, predicted : 1, in_tx : 1, abort : 1, cycles : 16, type : 4, spec : 2, new_type : 4, priv : 3, reserved : 31;
};
union perf_sample_weight {
__u64 full;
diff --git a/libc/kernel/uapi/linux/pkt_cls.h b/libc/kernel/uapi/linux/pkt_cls.h
index 1db5d32..876cb73 100644
--- a/libc/kernel/uapi/linux/pkt_cls.h
+++ b/libc/kernel/uapi/linux/pkt_cls.h
@@ -199,7 +199,7 @@
short offoff;
short hoff;
__be32 hmask;
- struct tc_u32_key keys[0];
+ struct tc_u32_key keys[];
};
struct tc_u32_mark {
__u32 val;
@@ -209,7 +209,7 @@
struct tc_u32_pcnt {
__u64 rcnt;
__u64 rhit;
- __u64 kcnts[0];
+ __u64 kcnts[];
};
#define TC_U32_TERMINAL 1
#define TC_U32_OFFSET 2
@@ -460,6 +460,9 @@
TCA_FLOWER_KEY_HASH,
TCA_FLOWER_KEY_HASH_MASK,
TCA_FLOWER_KEY_NUM_OF_VLANS,
+ TCA_FLOWER_KEY_PPPOE_SID,
+ TCA_FLOWER_KEY_PPP_PROTO,
+ TCA_FLOWER_KEY_L2TPV3_SID,
__TCA_FLOWER_MAX,
};
#define TCA_FLOWER_MAX (__TCA_FLOWER_MAX - 1)
diff --git a/libc/kernel/uapi/linux/pkt_sched.h b/libc/kernel/uapi/linux/pkt_sched.h
index e298b74..c31b8bb 100644
--- a/libc/kernel/uapi/linux/pkt_sched.h
+++ b/libc/kernel/uapi/linux/pkt_sched.h
@@ -924,6 +924,13 @@
#define TCA_TAPRIO_ATTR_FLAG_TXTIME_ASSIST _BITUL(0)
#define TCA_TAPRIO_ATTR_FLAG_FULL_OFFLOAD _BITUL(1)
enum {
+ TCA_TAPRIO_TC_ENTRY_UNSPEC,
+ TCA_TAPRIO_TC_ENTRY_INDEX,
+ TCA_TAPRIO_TC_ENTRY_MAX_SDU,
+ __TCA_TAPRIO_TC_ENTRY_CNT,
+ TCA_TAPRIO_TC_ENTRY_MAX = (__TCA_TAPRIO_TC_ENTRY_CNT - 1)
+};
+enum {
TCA_TAPRIO_ATTR_UNSPEC,
TCA_TAPRIO_ATTR_PRIOMAP,
TCA_TAPRIO_ATTR_SCHED_ENTRY_LIST,
@@ -936,6 +943,7 @@
TCA_TAPRIO_ATTR_SCHED_CYCLE_TIME_EXTENSION,
TCA_TAPRIO_ATTR_FLAGS,
TCA_TAPRIO_ATTR_TXTIME_DELAY,
+ TCA_TAPRIO_ATTR_TC_ENTRY,
__TCA_TAPRIO_ATTR_MAX,
};
#define TCA_TAPRIO_ATTR_MAX (__TCA_TAPRIO_ATTR_MAX - 1)
diff --git a/libc/kernel/uapi/linux/psci.h b/libc/kernel/uapi/linux/psci.h
index 31e7465..4dead17 100644
--- a/libc/kernel/uapi/linux/psci.h
+++ b/libc/kernel/uapi/linux/psci.h
@@ -39,11 +39,23 @@
#define PSCI_0_2_FN64_MIGRATE PSCI_0_2_FN64(5)
#define PSCI_0_2_FN64_MIGRATE_INFO_UP_CPU PSCI_0_2_FN64(7)
#define PSCI_1_0_FN_PSCI_FEATURES PSCI_0_2_FN(10)
+#define PSCI_1_0_FN_CPU_FREEZE PSCI_0_2_FN(11)
+#define PSCI_1_0_FN_CPU_DEFAULT_SUSPEND PSCI_0_2_FN(12)
+#define PSCI_1_0_FN_NODE_HW_STATE PSCI_0_2_FN(13)
#define PSCI_1_0_FN_SYSTEM_SUSPEND PSCI_0_2_FN(14)
#define PSCI_1_0_FN_SET_SUSPEND_MODE PSCI_0_2_FN(15)
+#define PSCI_1_0_FN_STAT_RESIDENCY PSCI_0_2_FN(16)
+#define PSCI_1_0_FN_STAT_COUNT PSCI_0_2_FN(17)
#define PSCI_1_1_FN_SYSTEM_RESET2 PSCI_0_2_FN(18)
+#define PSCI_1_1_FN_MEM_PROTECT PSCI_0_2_FN(19)
+#define PSCI_1_1_FN_MEM_PROTECT_CHECK_RANGE PSCI_0_2_FN(19)
+#define PSCI_1_0_FN64_CPU_DEFAULT_SUSPEND PSCI_0_2_FN64(12)
+#define PSCI_1_0_FN64_NODE_HW_STATE PSCI_0_2_FN64(13)
#define PSCI_1_0_FN64_SYSTEM_SUSPEND PSCI_0_2_FN64(14)
+#define PSCI_1_0_FN64_STAT_RESIDENCY PSCI_0_2_FN64(16)
+#define PSCI_1_0_FN64_STAT_COUNT PSCI_0_2_FN64(17)
#define PSCI_1_1_FN64_SYSTEM_RESET2 PSCI_0_2_FN64(18)
+#define PSCI_1_1_FN64_MEM_PROTECT_CHECK_RANGE PSCI_0_2_FN64(19)
#define PSCI_0_2_POWER_STATE_ID_MASK 0xffff
#define PSCI_0_2_POWER_STATE_ID_SHIFT 0
#define PSCI_0_2_POWER_STATE_TYPE_SHIFT 16
diff --git a/libc/kernel/uapi/linux/psp-sev.h b/libc/kernel/uapi/linux/psp-sev.h
index 6c4f73d..8c9ec80 100644
--- a/libc/kernel/uapi/linux/psp-sev.h
+++ b/libc/kernel/uapi/linux/psp-sev.h
@@ -66,37 +66,37 @@
__u32 flags;
__u8 build;
__u32 guest_count;
-} __packed;
+} __attribute__((__packed__));
#define SEV_STATUS_FLAGS_CONFIG_ES 0x0100
struct sev_user_data_pek_csr {
__u64 address;
__u32 length;
-} __packed;
+} __attribute__((__packed__));
struct sev_user_data_pek_cert_import {
__u64 pek_cert_address;
__u32 pek_cert_len;
__u64 oca_cert_address;
__u32 oca_cert_len;
-} __packed;
+} __attribute__((__packed__));
struct sev_user_data_pdh_cert_export {
__u64 pdh_cert_address;
__u32 pdh_cert_len;
__u64 cert_chain_address;
__u32 cert_chain_len;
-} __packed;
+} __attribute__((__packed__));
struct sev_user_data_get_id {
__u8 socket1[64];
__u8 socket2[64];
-} __packed;
+} __attribute__((__packed__));
struct sev_user_data_get_id2 {
__u64 address;
__u32 length;
-} __packed;
+} __attribute__((__packed__));
struct sev_issue_cmd {
__u32 cmd;
__u64 data;
__u32 error;
-} __packed;
+} __attribute__((__packed__));
#define SEV_IOC_TYPE 'S'
#define SEV_ISSUE_CMD _IOWR(SEV_IOC_TYPE, 0x0, struct sev_issue_cmd)
#endif
diff --git a/libc/kernel/uapi/linux/qrtr.h b/libc/kernel/uapi/linux/qrtr.h
index c0a4c72..ee56aca 100644
--- a/libc/kernel/uapi/linux/qrtr.h
+++ b/libc/kernel/uapi/linux/qrtr.h
@@ -54,5 +54,5 @@
__le32 port;
} client;
};
-} __packed;
+} __attribute__((__packed__));
#endif
diff --git a/libc/kernel/uapi/linux/raid/md_p.h b/libc/kernel/uapi/linux/raid/md_p.h
index 4ad444a..dc3084a 100644
--- a/libc/kernel/uapi/linux/raid/md_p.h
+++ b/libc/kernel/uapi/linux/raid/md_p.h
@@ -168,7 +168,7 @@
__le32 sb_csum;
__le32 max_dev;
__u8 pad3[64 - 32];
- __le16 dev_roles[0];
+ __le16 dev_roles[];
};
#define MD_FEATURE_BITMAP_OFFSET 1
#define MD_FEATURE_RECOVERY_OFFSET 2
diff --git a/libc/kernel/uapi/linux/random.h b/libc/kernel/uapi/linux/random.h
index 2d3cfef..8df411b 100644
--- a/libc/kernel/uapi/linux/random.h
+++ b/libc/kernel/uapi/linux/random.h
@@ -31,7 +31,7 @@
struct rand_pool_info {
int entropy_count;
int buf_size;
- __u32 buf[0];
+ __u32 buf[];
};
#define GRND_NONBLOCK 0x0001
#define GRND_RANDOM 0x0002
diff --git a/libc/kernel/uapi/linux/rkisp1-config.h b/libc/kernel/uapi/linux/rkisp1-config.h
index cea14cd..7175c23 100644
--- a/libc/kernel/uapi/linux/rkisp1-config.h
+++ b/libc/kernel/uapi/linux/rkisp1-config.h
@@ -67,6 +67,37 @@
#define RKISP1_CIF_ISP_HISTOGRAM_WEIGHT_GRIDS_SIZE_V12 81
#define RKISP1_CIF_ISP_HISTOGRAM_WEIGHT_GRIDS_SIZE RKISP1_CIF_ISP_HISTOGRAM_WEIGHT_GRIDS_SIZE_V12
#define RKISP1_CIF_ISP_DPCC_METHODS_MAX 3
+#define RKISP1_CIF_ISP_DPCC_MODE_STAGE1_ENABLE (1U << 2)
+#define RKISP1_CIF_ISP_DPCC_OUTPUT_MODE_STAGE1_INCL_G_CENTER (1U << 0)
+#define RKISP1_CIF_ISP_DPCC_OUTPUT_MODE_STAGE1_INCL_RB_CENTER (1U << 1)
+#define RKISP1_CIF_ISP_DPCC_OUTPUT_MODE_STAGE1_G_3X3 (1U << 2)
+#define RKISP1_CIF_ISP_DPCC_OUTPUT_MODE_STAGE1_RB_3X3 (1U << 3)
+#define RKISP1_CIF_ISP_DPCC_SET_USE_STAGE1_USE_SET(n) ((n) << 0)
+#define RKISP1_CIF_ISP_DPCC_SET_USE_STAGE1_USE_FIX_SET (1U << 3)
+#define RKISP1_CIF_ISP_DPCC_METHODS_SET_PG_GREEN_ENABLE (1U << 0)
+#define RKISP1_CIF_ISP_DPCC_METHODS_SET_LC_GREEN_ENABLE (1U << 1)
+#define RKISP1_CIF_ISP_DPCC_METHODS_SET_RO_GREEN_ENABLE (1U << 2)
+#define RKISP1_CIF_ISP_DPCC_METHODS_SET_RND_GREEN_ENABLE (1U << 3)
+#define RKISP1_CIF_ISP_DPCC_METHODS_SET_RG_GREEN_ENABLE (1U << 4)
+#define RKISP1_CIF_ISP_DPCC_METHODS_SET_PG_RED_BLUE_ENABLE (1U << 8)
+#define RKISP1_CIF_ISP_DPCC_METHODS_SET_LC_RED_BLUE_ENABLE (1U << 9)
+#define RKISP1_CIF_ISP_DPCC_METHODS_SET_RO_RED_BLUE_ENABLE (1U << 10)
+#define RKISP1_CIF_ISP_DPCC_METHODS_SET_RND_RED_BLUE_ENABLE (1U << 11)
+#define RKISP1_CIF_ISP_DPCC_METHODS_SET_RG_RED_BLUE_ENABLE (1U << 12)
+#define RKISP1_CIF_ISP_DPCC_LINE_THRESH_G(v) ((v) << 0)
+#define RKISP1_CIF_ISP_DPCC_LINE_THRESH_RB(v) ((v) << 8)
+#define RKISP1_CIF_ISP_DPCC_LINE_MAD_FAC_G(v) ((v) << 0)
+#define RKISP1_CIF_ISP_DPCC_LINE_MAD_FAC_RB(v) ((v) << 8)
+#define RKISP1_CIF_ISP_DPCC_PG_FAC_G(v) ((v) << 0)
+#define RKISP1_CIF_ISP_DPCC_PG_FAC_RB(v) ((v) << 8)
+#define RKISP1_CIF_ISP_DPCC_RND_THRESH_G(v) ((v) << 0)
+#define RKISP1_CIF_ISP_DPCC_RND_THRESH_RB(v) ((v) << 8)
+#define RKISP1_CIF_ISP_DPCC_RG_FAC_G(v) ((v) << 0)
+#define RKISP1_CIF_ISP_DPCC_RG_FAC_RB(v) ((v) << 8)
+#define RKISP1_CIF_ISP_DPCC_RO_LIMITS_n_G(n,v) ((v) << ((n) * 4))
+#define RKISP1_CIF_ISP_DPCC_RO_LIMITS_n_RB(n,v) ((v) << ((n) * 4 + 2))
+#define RKISP1_CIF_ISP_DPCC_RND_OFFS_n_G(n,v) ((v) << ((n) * 4))
+#define RKISP1_CIF_ISP_DPCC_RND_OFFS_n_RB(n,v) ((v) << ((n) * 4 + 2))
#define RKISP1_CIF_ISP_DPF_MAX_NLF_COEFFS 17
#define RKISP1_CIF_ISP_DPF_MAX_SPATIAL_COEFFS 6
#define RKISP1_CIF_ISP_STAT_AWB (1U << 0)
diff --git a/libc/kernel/uapi/linux/romfs_fs.h b/libc/kernel/uapi/linux/romfs_fs.h
index 8e98714..bffbaf9 100644
--- a/libc/kernel/uapi/linux/romfs_fs.h
+++ b/libc/kernel/uapi/linux/romfs_fs.h
@@ -35,14 +35,14 @@
__be32 word1;
__be32 size;
__be32 checksum;
- char name[0];
+ char name[];
};
struct romfs_inode {
__be32 next;
__be32 spec;
__be32 size;
__be32 checksum;
- char name[0];
+ char name[];
};
#define ROMFH_TYPE 7
#define ROMFH_HRD 0
diff --git a/libc/kernel/uapi/linux/rtnetlink.h b/libc/kernel/uapi/linux/rtnetlink.h
index 321e487..7201827 100644
--- a/libc/kernel/uapi/linux/rtnetlink.h
+++ b/libc/kernel/uapi/linux/rtnetlink.h
@@ -323,7 +323,7 @@
#define RTNH_DATA(rtnh) ((struct rtattr *) (((char *) (rtnh)) + RTNH_LENGTH(0)))
struct rtvia {
__kernel_sa_family_t rtvia_family;
- __u8 rtvia_addr[0];
+ __u8 rtvia_addr[];
};
struct rta_cacheinfo {
__u32 rta_clntref;
diff --git a/libc/kernel/uapi/linux/sctp.h b/libc/kernel/uapi/linux/sctp.h
index 765d6c9..4bf2412 100644
--- a/libc/kernel/uapi/linux/sctp.h
+++ b/libc/kernel/uapi/linux/sctp.h
@@ -210,7 +210,7 @@
__u16 sac_outbound_streams;
__u16 sac_inbound_streams;
sctp_assoc_t sac_assoc_id;
- __u8 sac_info[0];
+ __u8 sac_info[];
};
enum sctp_sac_state {
SCTP_COMM_UP,
@@ -244,7 +244,7 @@
__u32 sre_length;
__be16 sre_error;
sctp_assoc_t sre_assoc_id;
- __u8 sre_data[0];
+ __u8 sre_data[];
};
struct sctp_send_failed {
__u16 ssf_type;
@@ -253,7 +253,7 @@
__u32 ssf_error;
struct sctp_sndrcvinfo ssf_info;
sctp_assoc_t ssf_assoc_id;
- __u8 ssf_data[0];
+ __u8 ssf_data[];
};
struct sctp_send_failed_event {
__u16 ssf_type;
@@ -262,7 +262,7 @@
__u32 ssf_error;
struct sctp_sndinfo ssfe_info;
sctp_assoc_t ssf_assoc_id;
- __u8 ssf_data[0];
+ __u8 ssf_data[];
};
enum sctp_ssf_flags {
SCTP_DATA_UNSENT,
@@ -570,7 +570,7 @@
struct sctp_getaddrs {
sctp_assoc_t assoc_id;
__u32 addr_num;
- __u8 addrs[0];
+ __u8 addrs[];
};
struct sctp_assoc_stats {
sctp_assoc_t sas_assoc_id;
diff --git a/libc/kernel/uapi/linux/sed-opal.h b/libc/kernel/uapi/linux/sed-opal.h
index a20197a..f7ac9bd 100644
--- a/libc/kernel/uapi/linux/sed-opal.h
+++ b/libc/kernel/uapi/linux/sed-opal.h
@@ -112,6 +112,16 @@
__u64 flags;
__u64 priv;
};
+#define OPAL_FL_SUPPORTED 0x00000001
+#define OPAL_FL_LOCKING_SUPPORTED 0x00000002
+#define OPAL_FL_LOCKING_ENABLED 0x00000004
+#define OPAL_FL_LOCKED 0x00000008
+#define OPAL_FL_MBR_ENABLED 0x00000010
+#define OPAL_FL_MBR_DONE 0x00000020
+struct opal_status {
+ __u32 flags;
+ __u32 reserved;
+};
#define IOC_OPAL_SAVE _IOW('p', 220, struct opal_lock_unlock)
#define IOC_OPAL_LOCK_UNLOCK _IOW('p', 221, struct opal_lock_unlock)
#define IOC_OPAL_TAKE_OWNERSHIP _IOW('p', 222, struct opal_key)
@@ -128,4 +138,5 @@
#define IOC_OPAL_MBR_DONE _IOW('p', 233, struct opal_mbr_done)
#define IOC_OPAL_WRITE_SHADOW_MBR _IOW('p', 234, struct opal_shadow_mbr)
#define IOC_OPAL_GENERIC_TABLE_RW _IOW('p', 235, struct opal_read_write_table)
+#define IOC_OPAL_GET_STATUS _IOR('p', 236, struct opal_status)
#endif
diff --git a/libc/kernel/uapi/linux/seg6.h b/libc/kernel/uapi/linux/seg6.h
index f180485..b8206cc 100644
--- a/libc/kernel/uapi/linux/seg6.h
+++ b/libc/kernel/uapi/linux/seg6.h
@@ -28,7 +28,7 @@
__u8 first_segment;
__u8 flags;
__u16 tag;
- struct in6_addr segments[0];
+ struct in6_addr segments[];
};
#define SR6_FLAG1_PROTECTED (1 << 6)
#define SR6_FLAG1_OAM (1 << 5)
diff --git a/libc/kernel/uapi/linux/seg6_iptunnel.h b/libc/kernel/uapi/linux/seg6_iptunnel.h
index 1c1ad83..19d8ba4 100644
--- a/libc/kernel/uapi/linux/seg6_iptunnel.h
+++ b/libc/kernel/uapi/linux/seg6_iptunnel.h
@@ -27,12 +27,14 @@
#define SEG6_IPTUNNEL_MAX (__SEG6_IPTUNNEL_MAX - 1)
struct seg6_iptunnel_encap {
int mode;
- struct ipv6_sr_hdr srh[0];
+ struct ipv6_sr_hdr srh[];
};
#define SEG6_IPTUN_ENCAP_SIZE(x) ((sizeof(* x)) + (((x)->srh->hdrlen + 1) << 3))
enum {
SEG6_IPTUN_MODE_INLINE,
SEG6_IPTUN_MODE_ENCAP,
SEG6_IPTUN_MODE_L2ENCAP,
+ SEG6_IPTUN_MODE_ENCAP_RED,
+ SEG6_IPTUN_MODE_L2ENCAP_RED,
};
#endif
diff --git a/libc/kernel/uapi/linux/seg6_local.h b/libc/kernel/uapi/linux/seg6_local.h
index 61a8d97..4d062e8 100644
--- a/libc/kernel/uapi/linux/seg6_local.h
+++ b/libc/kernel/uapi/linux/seg6_local.h
@@ -31,6 +31,7 @@
SEG6_LOCAL_BPF,
SEG6_LOCAL_VRFTABLE,
SEG6_LOCAL_COUNTERS,
+ SEG6_LOCAL_FLAVORS,
__SEG6_LOCAL_MAX,
};
#define SEG6_LOCAL_MAX (__SEG6_LOCAL_MAX - 1)
@@ -71,4 +72,21 @@
__SEG6_LOCAL_CNT_MAX,
};
#define SEG6_LOCAL_CNT_MAX (__SEG6_LOCAL_CNT_MAX - 1)
+enum {
+ SEG6_LOCAL_FLV_UNSPEC,
+ SEG6_LOCAL_FLV_OPERATION,
+ SEG6_LOCAL_FLV_LCBLOCK_BITS,
+ SEG6_LOCAL_FLV_LCNODE_FN_BITS,
+ __SEG6_LOCAL_FLV_MAX,
+};
+#define SEG6_LOCAL_FLV_MAX (__SEG6_LOCAL_FLV_MAX - 1)
+enum {
+ SEG6_LOCAL_FLV_OP_UNSPEC,
+ SEG6_LOCAL_FLV_OP_PSP,
+ SEG6_LOCAL_FLV_OP_USP,
+ SEG6_LOCAL_FLV_OP_USD,
+ SEG6_LOCAL_FLV_OP_NEXT_CSID,
+ __SEG6_LOCAL_FLV_OP_MAX
+};
+#define SEG6_LOCAL_FLV_OP_MAX (__SEG6_LOCAL_FLV_OP_MAX - 1)
#endif
diff --git a/libc/kernel/uapi/linux/serial.h b/libc/kernel/uapi/linux/serial.h
index e4e903d..5a83c62 100644
--- a/libc/kernel/uapi/linux/serial.h
+++ b/libc/kernel/uapi/linux/serial.h
@@ -96,9 +96,20 @@
#define SER_RS485_RTS_AFTER_SEND (1 << 2)
#define SER_RS485_RX_DURING_TX (1 << 4)
#define SER_RS485_TERMINATE_BUS (1 << 5)
+#define SER_RS485_ADDRB (1 << 6)
+#define SER_RS485_ADDR_RECV (1 << 7)
+#define SER_RS485_ADDR_DEST (1 << 8)
__u32 delay_rts_before_send;
__u32 delay_rts_after_send;
- __u32 padding[5];
+ union {
+ __u32 padding[5];
+ struct {
+ __u8 addr_recv;
+ __u8 addr_dest;
+ __u8 padding0[2];
+ __u32 padding1[4];
+ };
+ };
};
struct serial_iso7816 {
__u32 flags;
diff --git a/libc/kernel/uapi/linux/serial_core.h b/libc/kernel/uapi/linux/serial_core.h
index b99c7d4..1e04429 100644
--- a/libc/kernel/uapi/linux/serial_core.h
+++ b/libc/kernel/uapi/linux/serial_core.h
@@ -69,8 +69,6 @@
#define PORT_IMX 62
#define PORT_MPSC 63
#define PORT_TXX9 64
-#define PORT_VR41XX_SIU 65
-#define PORT_VR41XX_DSIU 66
#define PORT_S3C2400 67
#define PORT_M32R_SIO 68
#define PORT_JSM 69
diff --git a/libc/kernel/uapi/linux/serial_reg.h b/libc/kernel/uapi/linux/serial_reg.h
index b6648f8..e41e649 100644
--- a/libc/kernel/uapi/linux/serial_reg.h
+++ b/libc/kernel/uapi/linux/serial_reg.h
@@ -99,7 +99,7 @@
#define UART_LSR_PE 0x04
#define UART_LSR_OE 0x02
#define UART_LSR_DR 0x01
-#define UART_LSR_BRK_ERROR_BITS 0x1E
+#define UART_LSR_BRK_ERROR_BITS (UART_LSR_BI | UART_LSR_FE | UART_LSR_PE | UART_LSR_OE)
#define UART_MSR 6
#define UART_MSR_DCD 0x80
#define UART_MSR_RI 0x40
@@ -109,7 +109,7 @@
#define UART_MSR_TERI 0x04
#define UART_MSR_DDSR 0x02
#define UART_MSR_DCTS 0x01
-#define UART_MSR_ANY_DELTA 0x0F
+#define UART_MSR_ANY_DELTA (UART_MSR_DDCD | UART_MSR_TERI | UART_MSR_DDSR | UART_MSR_DCTS)
#define UART_SCR 7
#define UART_DLL 0
#define UART_DLM 1
diff --git a/libc/kernel/uapi/linux/smc.h b/libc/kernel/uapi/linux/smc.h
index be6b71f..200c9b6 100644
--- a/libc/kernel/uapi/linux/smc.h
+++ b/libc/kernel/uapi/linux/smc.h
@@ -112,6 +112,7 @@
SMC_NLA_LGR_R_V2,
SMC_NLA_LGR_R_NET_COOKIE,
SMC_NLA_LGR_R_PAD,
+ SMC_NLA_LGR_R_BUF_TYPE,
__SMC_NLA_LGR_R_MAX,
SMC_NLA_LGR_R_MAX = __SMC_NLA_LGR_R_MAX - 1
};
diff --git a/libc/kernel/uapi/linux/snmp.h b/libc/kernel/uapi/linux/snmp.h
index a503a7e..d98f39e 100644
--- a/libc/kernel/uapi/linux/snmp.h
+++ b/libc/kernel/uapi/linux/snmp.h
@@ -305,6 +305,8 @@
LINUX_MIB_TLSRXDEVICE,
LINUX_MIB_TLSDECRYPTERROR,
LINUX_MIB_TLSRXDEVICERESYNC,
+ LINUX_MIB_TLSDECRYPTRETRY,
+ LINUX_MIB_TLSRXNOPADVIOL,
__LINUX_MIB_TLSMAX
};
#endif
diff --git a/libc/kernel/uapi/linux/stat.h b/libc/kernel/uapi/linux/stat.h
index a15b9b5..89304ce 100644
--- a/libc/kernel/uapi/linux/stat.h
+++ b/libc/kernel/uapi/linux/stat.h
@@ -78,7 +78,8 @@
__u32 stx_dev_major;
__u32 stx_dev_minor;
__u64 stx_mnt_id;
- __u64 __spare2;
+ __u32 stx_dio_mem_align;
+ __u32 stx_dio_offset_align;
__u64 __spare3[12];
};
#define STATX_TYPE 0x00000001U
@@ -95,6 +96,7 @@
#define STATX_BASIC_STATS 0x000007ffU
#define STATX_BTIME 0x00000800U
#define STATX_MNT_ID 0x00001000U
+#define STATX_DIOALIGN 0x00002000U
#define STATX__RESERVED 0x80000000U
#define STATX_ALL 0x00000fffU
#define STATX_ATTR_COMPRESSED 0x00000004
diff --git a/libc/kernel/uapi/linux/stm.h b/libc/kernel/uapi/linux/stm.h
index 1c7f7f3..b1453f7 100644
--- a/libc/kernel/uapi/linux/stm.h
+++ b/libc/kernel/uapi/linux/stm.h
@@ -28,7 +28,7 @@
__u16 width;
__u16 __reserved_0;
__u32 __reserved_1;
- char id[0];
+ char id[];
};
#define STP_POLICY_ID_SET _IOWR('%', 0, struct stp_policy_id)
#define STP_POLICY_ID_GET _IOR('%', 1, struct stp_policy_id)
diff --git a/libc/kernel/uapi/linux/sysctl.h b/libc/kernel/uapi/linux/sysctl.h
index ae9c2ba..ff17f7c 100644
--- a/libc/kernel/uapi/linux/sysctl.h
+++ b/libc/kernel/uapi/linux/sysctl.h
@@ -516,6 +516,7 @@
NET_NEIGH_GC_THRESH3 = 16,
NET_NEIGH_RETRANS_TIME_MS = 17,
NET_NEIGH_REACHABLE_TIME_MS = 18,
+ NET_NEIGH_INTERVAL_PROBE_TIME_MS = 19,
};
enum {
NET_DCCP_DEFAULT = 1,
diff --git a/libc/kernel/uapi/linux/target_core_user.h b/libc/kernel/uapi/linux/target_core_user.h
index dcba00e..83e155e 100644
--- a/libc/kernel/uapi/linux/target_core_user.h
+++ b/libc/kernel/uapi/linux/target_core_user.h
@@ -34,7 +34,7 @@
__u32 cmdr_size;
__u32 cmd_head;
__u32 cmd_tail __attribute__((__aligned__(ALIGN_SIZE)));
-} __packed;
+} __attribute__((__packed__));
enum tcmu_opcode {
TCMU_OP_PAD = 0,
TCMU_OP_CMD,
@@ -48,7 +48,7 @@
#define TCMU_UFLAG_READ_LEN 0x2
#define TCMU_UFLAG_KEEP_BUF 0x4
__u8 uflags;
-} __packed;
+} __attribute__((__packed__));
#define TCMU_OP_MASK 0x7
#define TCMU_SENSE_BUFFERSIZE 96
struct tcmu_cmd_entry {
@@ -71,7 +71,7 @@
char sense_buffer[TCMU_SENSE_BUFFERSIZE];
} rsp;
};
-} __packed;
+} __attribute__((__packed__));
struct tcmu_tmr_entry {
struct tcmu_cmd_entry_hdr hdr;
#define TCMU_TMR_UNKNOWN 0
@@ -89,8 +89,8 @@
__u32 cmd_cnt;
__u64 __pad3;
__u64 __pad4;
- __u16 cmd_ids[0];
-} __packed;
+ __u16 cmd_ids[];
+} __attribute__((__packed__));
#define TCMU_OP_ALIGN_SIZE sizeof(__u64)
enum tcmu_genl_cmd {
TCMU_CMD_UNSPEC,
diff --git a/libc/kernel/uapi/linux/tls.h b/libc/kernel/uapi/linux/tls.h
index 4501cda..fcab74b 100644
--- a/libc/kernel/uapi/linux/tls.h
+++ b/libc/kernel/uapi/linux/tls.h
@@ -22,6 +22,7 @@
#define TLS_TX 1
#define TLS_RX 2
#define TLS_TX_ZEROCOPY_RO 3
+#define TLS_RX_EXPECT_NO_PAD 4
#define TLS_VERSION_MINOR(ver) ((ver) & 0xFF)
#define TLS_VERSION_MAJOR(ver) (((ver) >> 8) & 0xFF)
#define TLS_VERSION_NUMBER(id) ((((id ##_VERSION_MAJOR) & 0xFF) << 8) | ((id ##_VERSION_MINOR) & 0xFF))
@@ -67,6 +68,18 @@
#define TLS_CIPHER_SM4_CCM_SALT_SIZE 4
#define TLS_CIPHER_SM4_CCM_TAG_SIZE 16
#define TLS_CIPHER_SM4_CCM_REC_SEQ_SIZE 8
+#define TLS_CIPHER_ARIA_GCM_128 57
+#define TLS_CIPHER_ARIA_GCM_128_IV_SIZE 8
+#define TLS_CIPHER_ARIA_GCM_128_KEY_SIZE 16
+#define TLS_CIPHER_ARIA_GCM_128_SALT_SIZE 4
+#define TLS_CIPHER_ARIA_GCM_128_TAG_SIZE 16
+#define TLS_CIPHER_ARIA_GCM_128_REC_SEQ_SIZE 8
+#define TLS_CIPHER_ARIA_GCM_256 58
+#define TLS_CIPHER_ARIA_GCM_256_IV_SIZE 8
+#define TLS_CIPHER_ARIA_GCM_256_KEY_SIZE 32
+#define TLS_CIPHER_ARIA_GCM_256_SALT_SIZE 4
+#define TLS_CIPHER_ARIA_GCM_256_TAG_SIZE 16
+#define TLS_CIPHER_ARIA_GCM_256_REC_SEQ_SIZE 8
#define TLS_SET_RECORD_TYPE 1
#define TLS_GET_RECORD_TYPE 2
struct tls_crypto_info {
@@ -115,6 +128,20 @@
unsigned char salt[TLS_CIPHER_SM4_CCM_SALT_SIZE];
unsigned char rec_seq[TLS_CIPHER_SM4_CCM_REC_SEQ_SIZE];
};
+struct tls12_crypto_info_aria_gcm_128 {
+ struct tls_crypto_info info;
+ unsigned char iv[TLS_CIPHER_ARIA_GCM_128_IV_SIZE];
+ unsigned char key[TLS_CIPHER_ARIA_GCM_128_KEY_SIZE];
+ unsigned char salt[TLS_CIPHER_ARIA_GCM_128_SALT_SIZE];
+ unsigned char rec_seq[TLS_CIPHER_ARIA_GCM_128_REC_SEQ_SIZE];
+};
+struct tls12_crypto_info_aria_gcm_256 {
+ struct tls_crypto_info info;
+ unsigned char iv[TLS_CIPHER_ARIA_GCM_256_IV_SIZE];
+ unsigned char key[TLS_CIPHER_ARIA_GCM_256_KEY_SIZE];
+ unsigned char salt[TLS_CIPHER_ARIA_GCM_256_SALT_SIZE];
+ unsigned char rec_seq[TLS_CIPHER_ARIA_GCM_256_REC_SEQ_SIZE];
+};
enum {
TLS_INFO_UNSPEC,
TLS_INFO_VERSION,
@@ -122,6 +149,7 @@
TLS_INFO_TXCONF,
TLS_INFO_RXCONF,
TLS_INFO_ZC_RO_TX,
+ TLS_INFO_RX_NO_PAD,
__TLS_INFO_MAX,
};
#define TLS_INFO_MAX (__TLS_INFO_MAX - 1)
diff --git a/libc/kernel/uapi/linux/ublk_cmd.h b/libc/kernel/uapi/linux/ublk_cmd.h
new file mode 100644
index 0000000..8c9cbeb
--- /dev/null
+++ b/libc/kernel/uapi/linux/ublk_cmd.h
@@ -0,0 +1,127 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ *** This header was automatically generated from a Linux kernel header
+ *** of the same name, to make information necessary for userspace to
+ *** call into the kernel available to libc. It contains only constants,
+ *** structures, and macros generated from the original header, and thus,
+ *** contains no copyrightable information.
+ ***
+ *** To edit the content of this header, modify the corresponding
+ *** source file (e.g. under external/kernel-headers/original/) then
+ *** run bionic/libc/kernel/tools/update_all.py
+ ***
+ *** Any manual change here will be lost the next time this script will
+ *** be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef USER_BLK_DRV_CMD_INC_H
+#define USER_BLK_DRV_CMD_INC_H
+#include <linux/types.h>
+#define UBLK_CMD_GET_QUEUE_AFFINITY 0x01
+#define UBLK_CMD_GET_DEV_INFO 0x02
+#define UBLK_CMD_ADD_DEV 0x04
+#define UBLK_CMD_DEL_DEV 0x05
+#define UBLK_CMD_START_DEV 0x06
+#define UBLK_CMD_STOP_DEV 0x07
+#define UBLK_CMD_SET_PARAMS 0x08
+#define UBLK_CMD_GET_PARAMS 0x09
+#define UBLK_CMD_START_USER_RECOVERY 0x10
+#define UBLK_CMD_END_USER_RECOVERY 0x11
+#define UBLK_IO_FETCH_REQ 0x20
+#define UBLK_IO_COMMIT_AND_FETCH_REQ 0x21
+#define UBLK_IO_NEED_GET_DATA 0x22
+#define UBLK_IO_RES_OK 0
+#define UBLK_IO_RES_NEED_GET_DATA 1
+#define UBLK_IO_RES_ABORT (- ENODEV)
+#define UBLKSRV_CMD_BUF_OFFSET 0
+#define UBLKSRV_IO_BUF_OFFSET 0x80000000
+#define UBLK_MAX_QUEUE_DEPTH 4096
+#define UBLK_F_SUPPORT_ZERO_COPY (1ULL << 0)
+#define UBLK_F_URING_CMD_COMP_IN_TASK (1ULL << 1)
+#define UBLK_F_NEED_GET_DATA (1UL << 2)
+#define UBLK_F_USER_RECOVERY (1UL << 3)
+#define UBLK_F_USER_RECOVERY_REISSUE (1UL << 4)
+#define UBLK_S_DEV_DEAD 0
+#define UBLK_S_DEV_LIVE 1
+#define UBLK_S_DEV_QUIESCED 2
+struct ublksrv_ctrl_cmd {
+ __u32 dev_id;
+ __u16 queue_id;
+ __u16 len;
+ __u64 addr;
+ __u64 data[2];
+};
+struct ublksrv_ctrl_dev_info {
+ __u16 nr_hw_queues;
+ __u16 queue_depth;
+ __u16 state;
+ __u16 pad0;
+ __u32 max_io_buf_bytes;
+ __u32 dev_id;
+ __s32 ublksrv_pid;
+ __u32 pad1;
+ __u64 flags;
+ __u64 ublksrv_flags;
+ __u64 reserved0;
+ __u64 reserved1;
+ __u64 reserved2;
+};
+#define UBLK_IO_OP_READ 0
+#define UBLK_IO_OP_WRITE 1
+#define UBLK_IO_OP_FLUSH 2
+#define UBLK_IO_OP_DISCARD 3
+#define UBLK_IO_OP_WRITE_SAME 4
+#define UBLK_IO_OP_WRITE_ZEROES 5
+#define UBLK_IO_F_FAILFAST_DEV (1U << 8)
+#define UBLK_IO_F_FAILFAST_TRANSPORT (1U << 9)
+#define UBLK_IO_F_FAILFAST_DRIVER (1U << 10)
+#define UBLK_IO_F_META (1U << 11)
+#define UBLK_IO_F_FUA (1U << 13)
+#define UBLK_IO_F_NOUNMAP (1U << 15)
+#define UBLK_IO_F_SWAP (1U << 16)
+struct ublksrv_io_desc {
+ __u32 op_flags;
+ __u32 nr_sectors;
+ __u64 start_sector;
+ __u64 addr;
+};
+struct ublksrv_io_cmd {
+ __u16 q_id;
+ __u16 tag;
+ __s32 result;
+ __u64 addr;
+};
+struct ublk_param_basic {
+#define UBLK_ATTR_READ_ONLY (1 << 0)
+#define UBLK_ATTR_ROTATIONAL (1 << 1)
+#define UBLK_ATTR_VOLATILE_CACHE (1 << 2)
+#define UBLK_ATTR_FUA (1 << 3)
+ __u32 attrs;
+ __u8 logical_bs_shift;
+ __u8 physical_bs_shift;
+ __u8 io_opt_shift;
+ __u8 io_min_shift;
+ __u32 max_sectors;
+ __u32 chunk_sectors;
+ __u64 dev_sectors;
+ __u64 virt_boundary_mask;
+};
+struct ublk_param_discard {
+ __u32 discard_alignment;
+ __u32 discard_granularity;
+ __u32 max_discard_sectors;
+ __u32 max_write_zeroes_sectors;
+ __u16 max_discard_segments;
+ __u16 reserved0;
+};
+struct ublk_params {
+ __u32 len;
+#define UBLK_PARAM_TYPE_BASIC (1 << 0)
+#define UBLK_PARAM_TYPE_DISCARD (1 << 1)
+ __u32 types;
+ struct ublk_param_basic basic;
+ struct ublk_param_discard discard;
+};
+#endif
diff --git a/libc/kernel/uapi/linux/usb/audio.h b/libc/kernel/uapi/linux/usb/audio.h
index 7d36157..bfda540 100644
--- a/libc/kernel/uapi/linux/usb/audio.h
+++ b/libc/kernel/uapi/linux/usb/audio.h
@@ -186,7 +186,7 @@
__u8 bUnitID;
__u8 bSourceID;
__u8 bControlSize;
- __u8 bmaControls[0];
+ __u8 bmaControls[];
} __attribute__((packed));
struct uac_processing_unit_descriptor {
__u8 bLength;
diff --git a/libc/kernel/uapi/linux/usb/cdc.h b/libc/kernel/uapi/linux/usb/cdc.h
index 59c9488..bbfc4db 100644
--- a/libc/kernel/uapi/linux/usb/cdc.h
+++ b/libc/kernel/uapi/linux/usb/cdc.h
@@ -131,7 +131,7 @@
__u8 bDescriptorType;
__u8 bDescriptorSubType;
__u8 bGuidDescriptorType;
- __u8 bDetailData[0];
+ __u8 bDetailData[];
} __attribute__((packed));
struct usb_cdc_obex_desc {
__u8 bLength;
@@ -201,6 +201,8 @@
#define USB_CDC_SPACE_PARITY 4
__u8 bDataBits;
} __attribute__((packed));
+#define USB_CDC_CTRL_DTR (1 << 0)
+#define USB_CDC_CTRL_RTS (1 << 1)
#define USB_CDC_PACKET_TYPE_PROMISCUOUS (1 << 0)
#define USB_CDC_PACKET_TYPE_ALL_MULTICAST (1 << 1)
#define USB_CDC_PACKET_TYPE_DIRECTED (1 << 2)
@@ -217,6 +219,13 @@
__le16 wIndex;
__le16 wLength;
} __attribute__((packed));
+#define USB_CDC_SERIAL_STATE_DCD (1 << 0)
+#define USB_CDC_SERIAL_STATE_DSR (1 << 1)
+#define USB_CDC_SERIAL_STATE_BREAK (1 << 2)
+#define USB_CDC_SERIAL_STATE_RING_SIGNAL (1 << 3)
+#define USB_CDC_SERIAL_STATE_FRAMING (1 << 4)
+#define USB_CDC_SERIAL_STATE_PARITY (1 << 5)
+#define USB_CDC_SERIAL_STATE_OVERRUN (1 << 6)
struct usb_cdc_speed_change {
__le32 DLBitRRate;
__le32 ULBitRate;
@@ -267,7 +276,7 @@
__le32 dwSignature;
__le16 wLength;
__le16 wNextNdpIndex;
- struct usb_cdc_ncm_dpe16 dpe16[0];
+ struct usb_cdc_ncm_dpe16 dpe16[];
} __attribute__((packed));
struct usb_cdc_ncm_dpe32 {
__le32 dwDatagramIndex;
@@ -279,7 +288,7 @@
__le16 wReserved6;
__le32 dwNextNdpIndex;
__le32 dwReserved12;
- struct usb_cdc_ncm_dpe32 dpe32[0];
+ struct usb_cdc_ncm_dpe32 dpe32[];
} __attribute__((packed));
#define USB_CDC_NCM_NDP16_INDEX_MIN 0x000C
#define USB_CDC_NCM_NDP32_INDEX_MIN 0x0010
diff --git a/libc/kernel/uapi/linux/usb/ch9.h b/libc/kernel/uapi/linux/usb/ch9.h
index f1dade9..49eb5fa 100644
--- a/libc/kernel/uapi/linux/usb/ch9.h
+++ b/libc/kernel/uapi/linux/usb/ch9.h
@@ -324,7 +324,7 @@
__u8 bDescriptorType;
__u8 tTKID[3];
__u8 bReserved;
- __u8 bKeyData[0];
+ __u8 bKeyData[];
} __attribute__((packed));
struct usb_encryption_descriptor {
__u8 bLength;
diff --git a/libc/kernel/uapi/linux/usb/raw_gadget.h b/libc/kernel/uapi/linux/usb/raw_gadget.h
index 70d5a26..8b60c8d 100644
--- a/libc/kernel/uapi/linux/usb/raw_gadget.h
+++ b/libc/kernel/uapi/linux/usb/raw_gadget.h
@@ -35,7 +35,7 @@
struct usb_raw_event {
__u32 type;
__u32 length;
- __u8 data[0];
+ __u8 data[];
};
#define USB_RAW_IO_FLAGS_ZERO 0x0001
#define USB_RAW_IO_FLAGS_MASK 0x0001
@@ -43,7 +43,7 @@
__u16 ep;
__u16 flags;
__u32 length;
- __u8 data[0];
+ __u8 data[];
};
#define USB_RAW_EPS_NUM_MAX 30
#define USB_RAW_EP_NAME_MAX 16
diff --git a/libc/kernel/uapi/linux/usbdevice_fs.h b/libc/kernel/uapi/linux/usbdevice_fs.h
index 7936ad9..5fef522 100644
--- a/libc/kernel/uapi/linux/usbdevice_fs.h
+++ b/libc/kernel/uapi/linux/usbdevice_fs.h
@@ -91,7 +91,7 @@
int error_count;
unsigned int signr;
void __user * usercontext;
- struct usbdevfs_iso_packet_desc iso_frame_desc[0];
+ struct usbdevfs_iso_packet_desc iso_frame_desc[];
};
struct usbdevfs_ioctl {
int ifno;
@@ -121,7 +121,7 @@
struct usbdevfs_streams {
unsigned int num_streams;
unsigned int num_eps;
- unsigned char eps[0];
+ unsigned char eps[];
};
#define USBDEVFS_CONTROL _IOWR('U', 0, struct usbdevfs_ctrltransfer)
#define USBDEVFS_CONTROL32 _IOWR('U', 0, struct usbdevfs_ctrltransfer32)
diff --git a/libc/kernel/uapi/linux/usbip.h b/libc/kernel/uapi/linux/usbip.h
index ae18347..b0c1067 100644
--- a/libc/kernel/uapi/linux/usbip.h
+++ b/libc/kernel/uapi/linux/usbip.h
@@ -27,4 +27,21 @@
VDEV_ST_USED,
VDEV_ST_ERROR
};
+#define USBIP_URB_SHORT_NOT_OK 0x0001
+#define USBIP_URB_ISO_ASAP 0x0002
+#define USBIP_URB_NO_TRANSFER_DMA_MAP 0x0004
+#define USBIP_URB_ZERO_PACKET 0x0040
+#define USBIP_URB_NO_INTERRUPT 0x0080
+#define USBIP_URB_FREE_BUFFER 0x0100
+#define USBIP_URB_DIR_IN 0x0200
+#define USBIP_URB_DIR_OUT 0
+#define USBIP_URB_DIR_MASK USBIP_URB_DIR_IN
+#define USBIP_URB_DMA_MAP_SINGLE 0x00010000
+#define USBIP_URB_DMA_MAP_PAGE 0x00020000
+#define USBIP_URB_DMA_MAP_SG 0x00040000
+#define USBIP_URB_MAP_LOCAL 0x00080000
+#define USBIP_URB_SETUP_MAP_SINGLE 0x00100000
+#define USBIP_URB_SETUP_MAP_LOCAL 0x00200000
+#define USBIP_URB_DMA_SG_COMBINED 0x00400000
+#define USBIP_URB_ALIGNED_TEMP_BUFFER 0x00800000
#endif
diff --git a/libc/kernel/uapi/linux/userfaultfd.h b/libc/kernel/uapi/linux/userfaultfd.h
index 46d7472..09e0d80 100644
--- a/libc/kernel/uapi/linux/userfaultfd.h
+++ b/libc/kernel/uapi/linux/userfaultfd.h
@@ -19,6 +19,8 @@
#ifndef _LINUX_USERFAULTFD_H
#define _LINUX_USERFAULTFD_H
#include <linux/types.h>
+#define USERFAULTFD_IOC 0xAA
+#define USERFAULTFD_IOC_NEW _IO(USERFAULTFD_IOC, 0x00)
#define UFFD_API ((__u64) 0xAA)
#define UFFD_API_REGISTER_MODES (UFFDIO_REGISTER_MODE_MISSING | UFFDIO_REGISTER_MODE_WP | UFFDIO_REGISTER_MODE_MINOR)
#define UFFD_API_FEATURES (UFFD_FEATURE_PAGEFAULT_FLAG_WP | UFFD_FEATURE_EVENT_FORK | UFFD_FEATURE_EVENT_REMAP | UFFD_FEATURE_EVENT_REMOVE | UFFD_FEATURE_EVENT_UNMAP | UFFD_FEATURE_MISSING_HUGETLBFS | UFFD_FEATURE_MISSING_SHMEM | UFFD_FEATURE_SIGBUS | UFFD_FEATURE_THREAD_ID | UFFD_FEATURE_MINOR_HUGETLBFS | UFFD_FEATURE_MINOR_SHMEM | UFFD_FEATURE_EXACT_ADDRESS | UFFD_FEATURE_WP_HUGETLBFS_SHMEM)
@@ -73,7 +75,7 @@
__u64 reserved3;
} reserved;
} arg;
-} __packed;
+} __attribute__((__packed__));
#define UFFD_EVENT_PAGEFAULT 0x12
#define UFFD_EVENT_FORK 0x13
#define UFFD_EVENT_REMAP 0x14
diff --git a/libc/kernel/uapi/linux/uvcvideo.h b/libc/kernel/uapi/linux/uvcvideo.h
index 719147a..46528a9 100644
--- a/libc/kernel/uapi/linux/uvcvideo.h
+++ b/libc/kernel/uapi/linux/uvcvideo.h
@@ -68,5 +68,5 @@
__u8 length;
__u8 flags;
__u8 buf[];
-} __packed;
+} __attribute__((__packed__));
#endif
diff --git a/libc/kernel/uapi/linux/v4l2-controls.h b/libc/kernel/uapi/linux/v4l2-controls.h
index 30a0553..276ecaa 100644
--- a/libc/kernel/uapi/linux/v4l2-controls.h
+++ b/libc/kernel/uapi/linux/v4l2-controls.h
@@ -120,6 +120,7 @@
#define V4L2_CID_USER_CCS_BASE (V4L2_CID_USER_BASE + 0x10f0)
#define V4L2_CID_USER_ALLEGRO_BASE (V4L2_CID_USER_BASE + 0x1170)
#define V4L2_CID_USER_ISL7998X_BASE (V4L2_CID_USER_BASE + 0x1180)
+#define V4L2_CID_USER_DW100_BASE (V4L2_CID_USER_BASE + 0x1190)
#define V4L2_CID_CODEC_BASE (V4L2_CTRL_CLASS_CODEC | 0x900)
#define V4L2_CID_CODEC_CLASS (V4L2_CTRL_CLASS_CODEC | 1)
#define V4L2_CID_MPEG_STREAM_TYPE (V4L2_CID_CODEC_BASE + 0)
@@ -1331,6 +1332,204 @@
__u8 chroma_intra_quantiser_matrix[64];
__u8 chroma_non_intra_quantiser_matrix[64];
};
+#define V4L2_CID_STATELESS_HEVC_SPS (V4L2_CID_CODEC_STATELESS_BASE + 400)
+#define V4L2_CID_STATELESS_HEVC_PPS (V4L2_CID_CODEC_STATELESS_BASE + 401)
+#define V4L2_CID_STATELESS_HEVC_SLICE_PARAMS (V4L2_CID_CODEC_STATELESS_BASE + 402)
+#define V4L2_CID_STATELESS_HEVC_SCALING_MATRIX (V4L2_CID_CODEC_STATELESS_BASE + 403)
+#define V4L2_CID_STATELESS_HEVC_DECODE_PARAMS (V4L2_CID_CODEC_STATELESS_BASE + 404)
+#define V4L2_CID_STATELESS_HEVC_DECODE_MODE (V4L2_CID_CODEC_STATELESS_BASE + 405)
+#define V4L2_CID_STATELESS_HEVC_START_CODE (V4L2_CID_CODEC_STATELESS_BASE + 406)
+#define V4L2_CID_STATELESS_HEVC_ENTRY_POINT_OFFSETS (V4L2_CID_CODEC_STATELESS_BASE + 407)
+enum v4l2_stateless_hevc_decode_mode {
+ V4L2_STATELESS_HEVC_DECODE_MODE_SLICE_BASED,
+ V4L2_STATELESS_HEVC_DECODE_MODE_FRAME_BASED,
+};
+enum v4l2_stateless_hevc_start_code {
+ V4L2_STATELESS_HEVC_START_CODE_NONE,
+ V4L2_STATELESS_HEVC_START_CODE_ANNEX_B,
+};
+#define V4L2_HEVC_SLICE_TYPE_B 0
+#define V4L2_HEVC_SLICE_TYPE_P 1
+#define V4L2_HEVC_SLICE_TYPE_I 2
+#define V4L2_HEVC_SPS_FLAG_SEPARATE_COLOUR_PLANE (1ULL << 0)
+#define V4L2_HEVC_SPS_FLAG_SCALING_LIST_ENABLED (1ULL << 1)
+#define V4L2_HEVC_SPS_FLAG_AMP_ENABLED (1ULL << 2)
+#define V4L2_HEVC_SPS_FLAG_SAMPLE_ADAPTIVE_OFFSET (1ULL << 3)
+#define V4L2_HEVC_SPS_FLAG_PCM_ENABLED (1ULL << 4)
+#define V4L2_HEVC_SPS_FLAG_PCM_LOOP_FILTER_DISABLED (1ULL << 5)
+#define V4L2_HEVC_SPS_FLAG_LONG_TERM_REF_PICS_PRESENT (1ULL << 6)
+#define V4L2_HEVC_SPS_FLAG_SPS_TEMPORAL_MVP_ENABLED (1ULL << 7)
+#define V4L2_HEVC_SPS_FLAG_STRONG_INTRA_SMOOTHING_ENABLED (1ULL << 8)
+struct v4l2_ctrl_hevc_sps {
+ __u8 video_parameter_set_id;
+ __u8 seq_parameter_set_id;
+ __u16 pic_width_in_luma_samples;
+ __u16 pic_height_in_luma_samples;
+ __u8 bit_depth_luma_minus8;
+ __u8 bit_depth_chroma_minus8;
+ __u8 log2_max_pic_order_cnt_lsb_minus4;
+ __u8 sps_max_dec_pic_buffering_minus1;
+ __u8 sps_max_num_reorder_pics;
+ __u8 sps_max_latency_increase_plus1;
+ __u8 log2_min_luma_coding_block_size_minus3;
+ __u8 log2_diff_max_min_luma_coding_block_size;
+ __u8 log2_min_luma_transform_block_size_minus2;
+ __u8 log2_diff_max_min_luma_transform_block_size;
+ __u8 max_transform_hierarchy_depth_inter;
+ __u8 max_transform_hierarchy_depth_intra;
+ __u8 pcm_sample_bit_depth_luma_minus1;
+ __u8 pcm_sample_bit_depth_chroma_minus1;
+ __u8 log2_min_pcm_luma_coding_block_size_minus3;
+ __u8 log2_diff_max_min_pcm_luma_coding_block_size;
+ __u8 num_short_term_ref_pic_sets;
+ __u8 num_long_term_ref_pics_sps;
+ __u8 chroma_format_idc;
+ __u8 sps_max_sub_layers_minus1;
+ __u8 reserved[6];
+ __u64 flags;
+};
+#define V4L2_HEVC_PPS_FLAG_DEPENDENT_SLICE_SEGMENT_ENABLED (1ULL << 0)
+#define V4L2_HEVC_PPS_FLAG_OUTPUT_FLAG_PRESENT (1ULL << 1)
+#define V4L2_HEVC_PPS_FLAG_SIGN_DATA_HIDING_ENABLED (1ULL << 2)
+#define V4L2_HEVC_PPS_FLAG_CABAC_INIT_PRESENT (1ULL << 3)
+#define V4L2_HEVC_PPS_FLAG_CONSTRAINED_INTRA_PRED (1ULL << 4)
+#define V4L2_HEVC_PPS_FLAG_TRANSFORM_SKIP_ENABLED (1ULL << 5)
+#define V4L2_HEVC_PPS_FLAG_CU_QP_DELTA_ENABLED (1ULL << 6)
+#define V4L2_HEVC_PPS_FLAG_PPS_SLICE_CHROMA_QP_OFFSETS_PRESENT (1ULL << 7)
+#define V4L2_HEVC_PPS_FLAG_WEIGHTED_PRED (1ULL << 8)
+#define V4L2_HEVC_PPS_FLAG_WEIGHTED_BIPRED (1ULL << 9)
+#define V4L2_HEVC_PPS_FLAG_TRANSQUANT_BYPASS_ENABLED (1ULL << 10)
+#define V4L2_HEVC_PPS_FLAG_TILES_ENABLED (1ULL << 11)
+#define V4L2_HEVC_PPS_FLAG_ENTROPY_CODING_SYNC_ENABLED (1ULL << 12)
+#define V4L2_HEVC_PPS_FLAG_LOOP_FILTER_ACROSS_TILES_ENABLED (1ULL << 13)
+#define V4L2_HEVC_PPS_FLAG_PPS_LOOP_FILTER_ACROSS_SLICES_ENABLED (1ULL << 14)
+#define V4L2_HEVC_PPS_FLAG_DEBLOCKING_FILTER_OVERRIDE_ENABLED (1ULL << 15)
+#define V4L2_HEVC_PPS_FLAG_PPS_DISABLE_DEBLOCKING_FILTER (1ULL << 16)
+#define V4L2_HEVC_PPS_FLAG_LISTS_MODIFICATION_PRESENT (1ULL << 17)
+#define V4L2_HEVC_PPS_FLAG_SLICE_SEGMENT_HEADER_EXTENSION_PRESENT (1ULL << 18)
+#define V4L2_HEVC_PPS_FLAG_DEBLOCKING_FILTER_CONTROL_PRESENT (1ULL << 19)
+#define V4L2_HEVC_PPS_FLAG_UNIFORM_SPACING (1ULL << 20)
+struct v4l2_ctrl_hevc_pps {
+ __u8 pic_parameter_set_id;
+ __u8 num_extra_slice_header_bits;
+ __u8 num_ref_idx_l0_default_active_minus1;
+ __u8 num_ref_idx_l1_default_active_minus1;
+ __s8 init_qp_minus26;
+ __u8 diff_cu_qp_delta_depth;
+ __s8 pps_cb_qp_offset;
+ __s8 pps_cr_qp_offset;
+ __u8 num_tile_columns_minus1;
+ __u8 num_tile_rows_minus1;
+ __u8 column_width_minus1[20];
+ __u8 row_height_minus1[22];
+ __s8 pps_beta_offset_div2;
+ __s8 pps_tc_offset_div2;
+ __u8 log2_parallel_merge_level_minus2;
+ __u8 reserved;
+ __u64 flags;
+};
+#define V4L2_HEVC_DPB_ENTRY_LONG_TERM_REFERENCE 0x01
+#define V4L2_HEVC_SEI_PIC_STRUCT_FRAME 0
+#define V4L2_HEVC_SEI_PIC_STRUCT_TOP_FIELD 1
+#define V4L2_HEVC_SEI_PIC_STRUCT_BOTTOM_FIELD 2
+#define V4L2_HEVC_SEI_PIC_STRUCT_TOP_BOTTOM 3
+#define V4L2_HEVC_SEI_PIC_STRUCT_BOTTOM_TOP 4
+#define V4L2_HEVC_SEI_PIC_STRUCT_TOP_BOTTOM_TOP 5
+#define V4L2_HEVC_SEI_PIC_STRUCT_BOTTOM_TOP_BOTTOM 6
+#define V4L2_HEVC_SEI_PIC_STRUCT_FRAME_DOUBLING 7
+#define V4L2_HEVC_SEI_PIC_STRUCT_FRAME_TRIPLING 8
+#define V4L2_HEVC_SEI_PIC_STRUCT_TOP_PAIRED_PREVIOUS_BOTTOM 9
+#define V4L2_HEVC_SEI_PIC_STRUCT_BOTTOM_PAIRED_PREVIOUS_TOP 10
+#define V4L2_HEVC_SEI_PIC_STRUCT_TOP_PAIRED_NEXT_BOTTOM 11
+#define V4L2_HEVC_SEI_PIC_STRUCT_BOTTOM_PAIRED_NEXT_TOP 12
+#define V4L2_HEVC_DPB_ENTRIES_NUM_MAX 16
+struct v4l2_hevc_dpb_entry {
+ __u64 timestamp;
+ __u8 flags;
+ __u8 field_pic;
+ __u16 reserved;
+ __s32 pic_order_cnt_val;
+};
+struct v4l2_hevc_pred_weight_table {
+ __s8 delta_luma_weight_l0[V4L2_HEVC_DPB_ENTRIES_NUM_MAX];
+ __s8 luma_offset_l0[V4L2_HEVC_DPB_ENTRIES_NUM_MAX];
+ __s8 delta_chroma_weight_l0[V4L2_HEVC_DPB_ENTRIES_NUM_MAX][2];
+ __s8 chroma_offset_l0[V4L2_HEVC_DPB_ENTRIES_NUM_MAX][2];
+ __s8 delta_luma_weight_l1[V4L2_HEVC_DPB_ENTRIES_NUM_MAX];
+ __s8 luma_offset_l1[V4L2_HEVC_DPB_ENTRIES_NUM_MAX];
+ __s8 delta_chroma_weight_l1[V4L2_HEVC_DPB_ENTRIES_NUM_MAX][2];
+ __s8 chroma_offset_l1[V4L2_HEVC_DPB_ENTRIES_NUM_MAX][2];
+ __u8 luma_log2_weight_denom;
+ __s8 delta_chroma_log2_weight_denom;
+};
+#define V4L2_HEVC_SLICE_PARAMS_FLAG_SLICE_SAO_LUMA (1ULL << 0)
+#define V4L2_HEVC_SLICE_PARAMS_FLAG_SLICE_SAO_CHROMA (1ULL << 1)
+#define V4L2_HEVC_SLICE_PARAMS_FLAG_SLICE_TEMPORAL_MVP_ENABLED (1ULL << 2)
+#define V4L2_HEVC_SLICE_PARAMS_FLAG_MVD_L1_ZERO (1ULL << 3)
+#define V4L2_HEVC_SLICE_PARAMS_FLAG_CABAC_INIT (1ULL << 4)
+#define V4L2_HEVC_SLICE_PARAMS_FLAG_COLLOCATED_FROM_L0 (1ULL << 5)
+#define V4L2_HEVC_SLICE_PARAMS_FLAG_USE_INTEGER_MV (1ULL << 6)
+#define V4L2_HEVC_SLICE_PARAMS_FLAG_SLICE_DEBLOCKING_FILTER_DISABLED (1ULL << 7)
+#define V4L2_HEVC_SLICE_PARAMS_FLAG_SLICE_LOOP_FILTER_ACROSS_SLICES_ENABLED (1ULL << 8)
+#define V4L2_HEVC_SLICE_PARAMS_FLAG_DEPENDENT_SLICE_SEGMENT (1ULL << 9)
+struct v4l2_ctrl_hevc_slice_params {
+ __u32 bit_size;
+ __u32 data_byte_offset;
+ __u32 num_entry_point_offsets;
+ __u8 nal_unit_type;
+ __u8 nuh_temporal_id_plus1;
+ __u8 slice_type;
+ __u8 colour_plane_id;
+ __s32 slice_pic_order_cnt;
+ __u8 num_ref_idx_l0_active_minus1;
+ __u8 num_ref_idx_l1_active_minus1;
+ __u8 collocated_ref_idx;
+ __u8 five_minus_max_num_merge_cand;
+ __s8 slice_qp_delta;
+ __s8 slice_cb_qp_offset;
+ __s8 slice_cr_qp_offset;
+ __s8 slice_act_y_qp_offset;
+ __s8 slice_act_cb_qp_offset;
+ __s8 slice_act_cr_qp_offset;
+ __s8 slice_beta_offset_div2;
+ __s8 slice_tc_offset_div2;
+ __u8 pic_struct;
+ __u8 reserved0[3];
+ __u32 slice_segment_addr;
+ __u8 ref_idx_l0[V4L2_HEVC_DPB_ENTRIES_NUM_MAX];
+ __u8 ref_idx_l1[V4L2_HEVC_DPB_ENTRIES_NUM_MAX];
+ __u16 short_term_ref_pic_set_size;
+ __u16 long_term_ref_pic_set_size;
+ struct v4l2_hevc_pred_weight_table pred_weight_table;
+ __u8 reserved1[2];
+ __u64 flags;
+};
+#define V4L2_HEVC_DECODE_PARAM_FLAG_IRAP_PIC 0x1
+#define V4L2_HEVC_DECODE_PARAM_FLAG_IDR_PIC 0x2
+#define V4L2_HEVC_DECODE_PARAM_FLAG_NO_OUTPUT_OF_PRIOR 0x4
+struct v4l2_ctrl_hevc_decode_params {
+ __s32 pic_order_cnt_val;
+ __u16 short_term_ref_pic_set_size;
+ __u16 long_term_ref_pic_set_size;
+ __u8 num_active_dpb_entries;
+ __u8 num_poc_st_curr_before;
+ __u8 num_poc_st_curr_after;
+ __u8 num_poc_lt_curr;
+ __u8 poc_st_curr_before[V4L2_HEVC_DPB_ENTRIES_NUM_MAX];
+ __u8 poc_st_curr_after[V4L2_HEVC_DPB_ENTRIES_NUM_MAX];
+ __u8 poc_lt_curr[V4L2_HEVC_DPB_ENTRIES_NUM_MAX];
+ __u8 reserved[4];
+ struct v4l2_hevc_dpb_entry dpb[V4L2_HEVC_DPB_ENTRIES_NUM_MAX];
+ __u64 flags;
+};
+struct v4l2_ctrl_hevc_scaling_matrix {
+ __u8 scaling_list_4x4[6][16];
+ __u8 scaling_list_8x8[6][64];
+ __u8 scaling_list_16x16[6][64];
+ __u8 scaling_list_32x32[2][64];
+ __u8 scaling_list_dc_coef_16x16[6];
+ __u8 scaling_list_dc_coef_32x32[2];
+};
#define V4L2_CID_COLORIMETRY_CLASS_BASE (V4L2_CTRL_CLASS_COLORIMETRY | 0x900)
#define V4L2_CID_COLORIMETRY_CLASS (V4L2_CTRL_CLASS_COLORIMETRY | 1)
#define V4L2_CID_COLORIMETRY_HDR10_CLL_INFO (V4L2_CID_COLORIMETRY_CLASS_BASE + 0)
diff --git a/libc/kernel/uapi/linux/vbox_vmmdev_types.h b/libc/kernel/uapi/linux/vbox_vmmdev_types.h
index 009f9a6..777a2bb 100644
--- a/libc/kernel/uapi/linux/vbox_vmmdev_types.h
+++ b/libc/kernel/uapi/linux/vbox_vmmdev_types.h
@@ -157,7 +157,7 @@
__u32 offset;
} page_list;
} u;
-} __packed;
+} __attribute__((__packed__));
struct vmmdev_hgcm_function_parameter64 {
enum vmmdev_hgcm_function_parameter_type type;
union {
@@ -169,13 +169,13 @@
__u64 phys_addr;
__u64 linear_addr;
} u;
- } __packed pointer;
+ } __attribute__((__packed__)) pointer;
struct {
__u32 size;
__u32 offset;
} page_list;
- } __packed u;
-} __packed;
+ } __attribute__((__packed__)) u;
+} __attribute__((__packed__));
#if __BITS_PER_LONG == 64
#define vmmdev_hgcm_function_parameter vmmdev_hgcm_function_parameter64
#else
diff --git a/libc/kernel/uapi/linux/vdpa.h b/libc/kernel/uapi/linux/vdpa.h
index 8b3be00..ed61cdd 100644
--- a/libc/kernel/uapi/linux/vdpa.h
+++ b/libc/kernel/uapi/linux/vdpa.h
@@ -52,6 +52,8 @@
VDPA_ATTR_DEV_QUEUE_INDEX,
VDPA_ATTR_DEV_VENDOR_ATTR_NAME,
VDPA_ATTR_DEV_VENDOR_ATTR_VALUE,
+ VDPA_ATTR_DEV_FEATURES,
+ VDPA_ATTR_VDPA_DEV_SUPPORTED_FEATURES,
VDPA_ATTR_MAX,
};
#endif
diff --git a/libc/kernel/uapi/linux/vduse.h b/libc/kernel/uapi/linux/vduse.h
index 2dc8c82..f0b6d6b 100644
--- a/libc/kernel/uapi/linux/vduse.h
+++ b/libc/kernel/uapi/linux/vduse.h
@@ -90,6 +90,22 @@
};
#define VDUSE_VQ_SETUP_KICKFD _IOW(VDUSE_BASE, 0x16, struct vduse_vq_eventfd)
#define VDUSE_VQ_INJECT_IRQ _IOW(VDUSE_BASE, 0x17, __u32)
+struct vduse_iova_umem {
+ __u64 uaddr;
+ __u64 iova;
+ __u64 size;
+ __u64 reserved[3];
+};
+#define VDUSE_IOTLB_REG_UMEM _IOW(VDUSE_BASE, 0x18, struct vduse_iova_umem)
+#define VDUSE_IOTLB_DEREG_UMEM _IOW(VDUSE_BASE, 0x19, struct vduse_iova_umem)
+struct vduse_iova_info {
+ __u64 start;
+ __u64 last;
+#define VDUSE_IOVA_CAP_UMEM (1 << 0)
+ __u64 capability;
+ __u64 reserved[3];
+};
+#define VDUSE_IOTLB_GET_INFO _IOWR(VDUSE_BASE, 0x1a, struct vduse_iova_info)
enum vduse_req_type {
VDUSE_GET_VQ_STATE,
VDUSE_SET_STATUS,
diff --git a/libc/kernel/uapi/linux/version.h b/libc/kernel/uapi/linux/version.h
index 62874da..ab95caf 100644
--- a/libc/kernel/uapi/linux/version.h
+++ b/libc/kernel/uapi/linux/version.h
@@ -16,8 +16,8 @@
***
****************************************************************************
****************************************************************************/
-#define LINUX_VERSION_CODE 332544
+#define LINUX_VERSION_CODE 393472
#define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + ((c) > 255 ? 255 : (c)))
-#define LINUX_VERSION_MAJOR 5
-#define LINUX_VERSION_PATCHLEVEL 19
+#define LINUX_VERSION_MAJOR 6
+#define LINUX_VERSION_PATCHLEVEL 1
#define LINUX_VERSION_SUBLEVEL 0
diff --git a/libc/kernel/uapi/linux/vfio.h b/libc/kernel/uapi/linux/vfio.h
index 8075408..dffa136 100644
--- a/libc/kernel/uapi/linux/vfio.h
+++ b/libc/kernel/uapi/linux/vfio.h
@@ -304,6 +304,32 @@
VFIO_DEVICE_STATE_RESUMING = 4,
VFIO_DEVICE_STATE_RUNNING_P2P = 5,
};
+#define VFIO_DEVICE_FEATURE_LOW_POWER_ENTRY 3
+struct vfio_device_low_power_entry_with_wakeup {
+ __s32 wakeup_eventfd;
+ __u32 reserved;
+};
+#define VFIO_DEVICE_FEATURE_LOW_POWER_ENTRY_WITH_WAKEUP 4
+#define VFIO_DEVICE_FEATURE_LOW_POWER_EXIT 5
+struct vfio_device_feature_dma_logging_control {
+ __aligned_u64 page_size;
+ __u32 num_ranges;
+ __u32 __reserved;
+ __aligned_u64 ranges;
+};
+struct vfio_device_feature_dma_logging_range {
+ __aligned_u64 iova;
+ __aligned_u64 length;
+};
+#define VFIO_DEVICE_FEATURE_DMA_LOGGING_START 6
+#define VFIO_DEVICE_FEATURE_DMA_LOGGING_STOP 7
+struct vfio_device_feature_dma_logging_report {
+ __aligned_u64 iova;
+ __aligned_u64 length;
+ __aligned_u64 page_size;
+ __aligned_u64 bitmap;
+};
+#define VFIO_DEVICE_FEATURE_DMA_LOGGING_REPORT 8
struct vfio_iommu_type1_info {
__u32 argsz;
__u32 flags;
diff --git a/libc/kernel/uapi/linux/vfio_ccw.h b/libc/kernel/uapi/linux/vfio_ccw.h
index a6defc5..7bf08f5 100644
--- a/libc/kernel/uapi/linux/vfio_ccw.h
+++ b/libc/kernel/uapi/linux/vfio_ccw.h
@@ -27,19 +27,19 @@
#define IRB_AREA_SIZE 96
__u8 irb_area[IRB_AREA_SIZE];
__u32 ret_code;
-} __packed;
+} __attribute__((__packed__));
#define VFIO_CCW_ASYNC_CMD_HSCH (1 << 0)
#define VFIO_CCW_ASYNC_CMD_CSCH (1 << 1)
struct ccw_cmd_region {
__u32 command;
__u32 ret_code;
-} __packed;
+} __attribute__((__packed__));
struct ccw_schib_region {
#define SCHIB_AREA_SIZE 52
__u8 schib_area[SCHIB_AREA_SIZE];
-} __packed;
+} __attribute__((__packed__));
struct ccw_crw_region {
__u32 crw;
__u32 pad;
-} __packed;
+} __attribute__((__packed__));
#endif
diff --git a/libc/kernel/uapi/linux/vfio_zdev.h b/libc/kernel/uapi/linux/vfio_zdev.h
index c678e9a..1c3a943 100644
--- a/libc/kernel/uapi/linux/vfio_zdev.h
+++ b/libc/kernel/uapi/linux/vfio_zdev.h
@@ -29,6 +29,7 @@
__u16 fmb_length;
__u8 pft;
__u8 gid;
+ __u32 fh;
};
struct vfio_device_info_cap_zpci_group {
struct vfio_info_cap_header header;
@@ -40,6 +41,8 @@
__u16 noi;
__u16 maxstbl;
__u8 version;
+ __u8 reserved;
+ __u16 imaxstbl;
};
struct vfio_device_info_cap_zpci_util {
struct vfio_info_cap_header header;
diff --git a/libc/kernel/uapi/linux/vhost.h b/libc/kernel/uapi/linux/vhost.h
index 3bf1372..e5b1327 100644
--- a/libc/kernel/uapi/linux/vhost.h
+++ b/libc/kernel/uapi/linux/vhost.h
@@ -68,4 +68,5 @@
#define VHOST_VDPA_GET_AS_NUM _IOR(VHOST_VIRTIO, 0x7A, unsigned int)
#define VHOST_VDPA_GET_VRING_GROUP _IOWR(VHOST_VIRTIO, 0x7B, struct vhost_vring_state)
#define VHOST_VDPA_SET_GROUP_ASID _IOW(VHOST_VIRTIO, 0x7C, struct vhost_vring_state)
+#define VHOST_VDPA_SUSPEND _IO(VHOST_VIRTIO, 0x7D)
#endif
diff --git a/libc/kernel/uapi/linux/vhost_types.h b/libc/kernel/uapi/linux/vhost_types.h
index 772a1cc..32efa85 100644
--- a/libc/kernel/uapi/linux/vhost_types.h
+++ b/libc/kernel/uapi/linux/vhost_types.h
@@ -82,7 +82,7 @@
struct vhost_memory {
__u32 nregions;
__u32 padding;
- struct vhost_memory_region regions[0];
+ struct vhost_memory_region regions[];
};
#define VHOST_SCSI_ABI_VERSION 1
struct vhost_scsi_target {
@@ -94,7 +94,7 @@
struct vhost_vdpa_config {
__u32 off;
__u32 len;
- __u8 buf[0];
+ __u8 buf[];
};
struct vhost_vdpa_iova_range {
__u64 first;
@@ -105,4 +105,5 @@
#define VHOST_BACKEND_F_IOTLB_MSG_V2 0x1
#define VHOST_BACKEND_F_IOTLB_BATCH 0x2
#define VHOST_BACKEND_F_IOTLB_ASID 0x3
+#define VHOST_BACKEND_F_SUSPEND 0x4
#endif
diff --git a/libc/kernel/uapi/linux/videodev2.h b/libc/kernel/uapi/linux/videodev2.h
index d4107bc..3d8dd72 100644
--- a/libc/kernel/uapi/linux/videodev2.h
+++ b/libc/kernel/uapi/linux/videodev2.h
@@ -185,7 +185,6 @@
#define V4L2_CAP_SDR_OUTPUT 0x00400000
#define V4L2_CAP_META_CAPTURE 0x00800000
#define V4L2_CAP_READWRITE 0x01000000
-#define V4L2_CAP_ASYNCIO 0x02000000
#define V4L2_CAP_STREAMING 0x04000000
#define V4L2_CAP_META_OUTPUT 0x08000000
#define V4L2_CAP_TOUCH 0x10000000
@@ -273,6 +272,8 @@
#define V4L2_PIX_FMT_XYUV32 v4l2_fourcc('X', 'Y', 'U', 'V')
#define V4L2_PIX_FMT_VUYA32 v4l2_fourcc('V', 'U', 'Y', 'A')
#define V4L2_PIX_FMT_VUYX32 v4l2_fourcc('V', 'U', 'Y', 'X')
+#define V4L2_PIX_FMT_YUVA32 v4l2_fourcc('Y', 'U', 'V', 'A')
+#define V4L2_PIX_FMT_YUVX32 v4l2_fourcc('Y', 'U', 'V', 'X')
#define V4L2_PIX_FMT_M420 v4l2_fourcc('M', '4', '2', '0')
#define V4L2_PIX_FMT_NV12 v4l2_fourcc('N', 'V', '1', '2')
#define V4L2_PIX_FMT_NV21 v4l2_fourcc('N', 'V', '2', '1')
@@ -280,6 +281,7 @@
#define V4L2_PIX_FMT_NV61 v4l2_fourcc('N', 'V', '6', '1')
#define V4L2_PIX_FMT_NV24 v4l2_fourcc('N', 'V', '2', '4')
#define V4L2_PIX_FMT_NV42 v4l2_fourcc('N', 'V', '4', '2')
+#define V4L2_PIX_FMT_P010 v4l2_fourcc('P', '0', '1', '0')
#define V4L2_PIX_FMT_NV12M v4l2_fourcc('N', 'M', '1', '2')
#define V4L2_PIX_FMT_NV21M v4l2_fourcc('N', 'M', '2', '1')
#define V4L2_PIX_FMT_NV16M v4l2_fourcc('N', 'M', '1', '6')
@@ -299,6 +301,7 @@
#define V4L2_PIX_FMT_NV12_4L4 v4l2_fourcc('V', 'T', '1', '2')
#define V4L2_PIX_FMT_NV12_16L16 v4l2_fourcc('H', 'M', '1', '2')
#define V4L2_PIX_FMT_NV12_32L32 v4l2_fourcc('S', 'T', '1', '2')
+#define V4L2_PIX_FMT_P010_4L4 v4l2_fourcc('T', '0', '1', '0')
#define V4L2_PIX_FMT_NV12MT v4l2_fourcc('T', 'M', '1', '2')
#define V4L2_PIX_FMT_NV12MT_16X16 v4l2_fourcc('V', 'M', '1', '2')
#define V4L2_PIX_FMT_NV12M_8L128 v4l2_fourcc('N', 'A', '1', '2')
@@ -368,6 +371,7 @@
#define V4L2_PIX_FMT_FWHT v4l2_fourcc('F', 'W', 'H', 'T')
#define V4L2_PIX_FMT_FWHT_STATELESS v4l2_fourcc('S', 'F', 'W', 'H')
#define V4L2_PIX_FMT_H264_SLICE v4l2_fourcc('S', '2', '6', '4')
+#define V4L2_PIX_FMT_HEVC_SLICE v4l2_fourcc('S', '2', '6', '5')
#define V4L2_PIX_FMT_CPIA1 v4l2_fourcc('C', 'P', 'I', 'A')
#define V4L2_PIX_FMT_WNVA v4l2_fourcc('W', 'N', 'V', 'A')
#define V4L2_PIX_FMT_SN9C10X v4l2_fourcc('S', '9', '1', '0')
@@ -787,7 +791,7 @@
#define V4L2_DV_FL_CAN_DETECT_REDUCED_FPS (1 << 9)
#define V4L2_DV_BT_BLANKING_WIDTH(bt) ((bt)->hfrontporch + (bt)->hsync + (bt)->hbackporch)
#define V4L2_DV_BT_FRAME_WIDTH(bt) ((bt)->width + V4L2_DV_BT_BLANKING_WIDTH(bt))
-#define V4L2_DV_BT_BLANKING_HEIGHT(bt) ((bt)->vfrontporch + (bt)->vsync + (bt)->vbackporch + (bt)->il_vfrontporch + (bt)->il_vsync + (bt)->il_vbackporch)
+#define V4L2_DV_BT_BLANKING_HEIGHT(bt) ((bt)->vfrontporch + (bt)->vsync + (bt)->vbackporch + ((bt)->interlaced ? ((bt)->il_vfrontporch + (bt)->il_vsync + (bt)->il_vbackporch) : 0))
#define V4L2_DV_BT_FRAME_HEIGHT(bt) ((bt)->height + V4L2_DV_BT_BLANKING_HEIGHT(bt))
struct v4l2_dv_timings {
__u32 type;
@@ -906,6 +910,11 @@
struct v4l2_ctrl_mpeg2_quantisation __user * p_mpeg2_quantisation;
struct v4l2_ctrl_vp9_compressed_hdr __user * p_vp9_compressed_hdr_probs;
struct v4l2_ctrl_vp9_frame __user * p_vp9_frame;
+ struct v4l2_ctrl_hevc_sps __user * p_hevc_sps;
+ struct v4l2_ctrl_hevc_pps __user * p_hevc_pps;
+ struct v4l2_ctrl_hevc_slice_params __user * p_hevc_slice_params;
+ struct v4l2_ctrl_hevc_scaling_matrix __user * p_hevc_scaling_matrix;
+ struct v4l2_ctrl_hevc_decode_params __user * p_hevc_decode_params;
void __user * ptr;
};
} __attribute__((packed));
@@ -958,6 +967,11 @@
V4L2_CTRL_TYPE_MPEG2_PICTURE = 0x0252,
V4L2_CTRL_TYPE_VP9_COMPRESSED_HDR = 0x0260,
V4L2_CTRL_TYPE_VP9_FRAME = 0x0261,
+ V4L2_CTRL_TYPE_HEVC_SPS = 0x0270,
+ V4L2_CTRL_TYPE_HEVC_PPS = 0x0271,
+ V4L2_CTRL_TYPE_HEVC_SLICE_PARAMS = 0x0272,
+ V4L2_CTRL_TYPE_HEVC_SCALING_MATRIX = 0x0273,
+ V4L2_CTRL_TYPE_HEVC_DECODE_PARAMS = 0x0274,
};
struct v4l2_queryctrl {
__u32 id;
@@ -1005,6 +1019,7 @@
#define V4L2_CTRL_FLAG_HAS_PAYLOAD 0x0100
#define V4L2_CTRL_FLAG_EXECUTE_ON_WRITE 0x0200
#define V4L2_CTRL_FLAG_MODIFY_LAYOUT 0x0400
+#define V4L2_CTRL_FLAG_DYNAMIC_ARRAY 0x0800
#define V4L2_CTRL_FLAG_NEXT_CTRL 0x80000000
#define V4L2_CTRL_FLAG_NEXT_COMPOUND 0x40000000
#define V4L2_CID_MAX_CTRLS 1024
@@ -1308,6 +1323,7 @@
#define V4L2_EVENT_CTRL_CH_VALUE (1 << 0)
#define V4L2_EVENT_CTRL_CH_FLAGS (1 << 1)
#define V4L2_EVENT_CTRL_CH_RANGE (1 << 2)
+#define V4L2_EVENT_CTRL_CH_DIMENSIONS (1 << 3)
struct v4l2_event_ctrl {
__u32 changes;
__u32 type;
@@ -1479,4 +1495,5 @@
#define BASE_VIDIOC_PRIVATE 192
#define V4L2_PIX_FMT_HM12 V4L2_PIX_FMT_NV12_16L16
#define V4L2_PIX_FMT_SUNXI_TILED_NV12 V4L2_PIX_FMT_NV12_32L32
+#define V4L2_CAP_ASYNCIO 0x02000000
#endif
diff --git a/libc/kernel/uapi/linux/virtio_9p.h b/libc/kernel/uapi/linux/virtio_9p.h
index 1d9dfb1..2e05786 100644
--- a/libc/kernel/uapi/linux/virtio_9p.h
+++ b/libc/kernel/uapi/linux/virtio_9p.h
@@ -24,6 +24,6 @@
#define VIRTIO_9P_MOUNT_TAG 0
struct virtio_9p_config {
__virtio16 tag_len;
- __u8 tag[0];
+ __u8 tag[];
} __attribute__((packed));
#endif
diff --git a/libc/kernel/uapi/linux/virtio_blk.h b/libc/kernel/uapi/linux/virtio_blk.h
index f2f0381..0dd08c5 100644
--- a/libc/kernel/uapi/linux/virtio_blk.h
+++ b/libc/kernel/uapi/linux/virtio_blk.h
@@ -31,6 +31,7 @@
#define VIRTIO_BLK_F_MQ 12
#define VIRTIO_BLK_F_DISCARD 13
#define VIRTIO_BLK_F_WRITE_ZEROES 14
+#define VIRTIO_BLK_F_SECURE_ERASE 16
#ifndef VIRTIO_BLK_NO_LEGACY
#define VIRTIO_BLK_F_BARRIER 0
#define VIRTIO_BLK_F_SCSI 7
@@ -63,6 +64,9 @@
__virtio32 max_write_zeroes_seg;
__u8 write_zeroes_may_unmap;
__u8 unused1[3];
+ __virtio32 max_secure_erase_sectors;
+ __virtio32 max_secure_erase_seg;
+ __virtio32 secure_erase_sector_alignment;
} __attribute__((packed));
#define VIRTIO_BLK_T_IN 0
#define VIRTIO_BLK_T_OUT 1
@@ -73,6 +77,7 @@
#define VIRTIO_BLK_T_GET_ID 8
#define VIRTIO_BLK_T_DISCARD 11
#define VIRTIO_BLK_T_WRITE_ZEROES 13
+#define VIRTIO_BLK_T_SECURE_ERASE 14
#ifndef VIRTIO_BLK_NO_LEGACY
#define VIRTIO_BLK_T_BARRIER 0x80000000
#endif
diff --git a/libc/kernel/uapi/linux/virtio_config.h b/libc/kernel/uapi/linux/virtio_config.h
index 30e552b..bdd2e73 100644
--- a/libc/kernel/uapi/linux/virtio_config.h
+++ b/libc/kernel/uapi/linux/virtio_config.h
@@ -26,7 +26,7 @@
#define VIRTIO_CONFIG_S_NEEDS_RESET 0x40
#define VIRTIO_CONFIG_S_FAILED 0x80
#define VIRTIO_TRANSPORT_F_START 28
-#define VIRTIO_TRANSPORT_F_END 38
+#define VIRTIO_TRANSPORT_F_END 41
#ifndef VIRTIO_CONFIG_NO_LEGACY
#define VIRTIO_F_NOTIFY_ON_EMPTY 24
#define VIRTIO_F_ANY_LAYOUT 27
@@ -38,4 +38,5 @@
#define VIRTIO_F_IN_ORDER 35
#define VIRTIO_F_ORDER_PLATFORM 36
#define VIRTIO_F_SR_IOV 37
+#define VIRTIO_F_RING_RESET 40
#endif
diff --git a/libc/kernel/uapi/linux/virtio_net.h b/libc/kernel/uapi/linux/virtio_net.h
index 2d92904..6fe90aa 100644
--- a/libc/kernel/uapi/linux/virtio_net.h
+++ b/libc/kernel/uapi/linux/virtio_net.h
@@ -45,6 +45,7 @@
#define VIRTIO_NET_F_GUEST_ANNOUNCE 21
#define VIRTIO_NET_F_MQ 22
#define VIRTIO_NET_F_CTRL_MAC_ADDR 23
+#define VIRTIO_NET_F_NOTF_COAL 53
#define VIRTIO_NET_F_HASH_REPORT 57
#define VIRTIO_NET_F_RSS 60
#define VIRTIO_NET_F_RSC_EXT 61
@@ -186,4 +187,15 @@
#define VIRTIO_NET_CTRL_MQ_HASH_CONFIG 2
#define VIRTIO_NET_CTRL_GUEST_OFFLOADS 5
#define VIRTIO_NET_CTRL_GUEST_OFFLOADS_SET 0
+#define VIRTIO_NET_CTRL_NOTF_COAL 6
+struct virtio_net_ctrl_coal_tx {
+ __le32 tx_max_packets;
+ __le32 tx_usecs;
+};
+#define VIRTIO_NET_CTRL_NOTF_COAL_TX_SET 0
+struct virtio_net_ctrl_coal_rx {
+ __le32 rx_max_packets;
+ __le32 rx_usecs;
+};
+#define VIRTIO_NET_CTRL_NOTF_COAL_RX_SET 1
#endif
diff --git a/libc/kernel/uapi/linux/virtio_pci.h b/libc/kernel/uapi/linux/virtio_pci.h
index e6d2731..94ca0a2 100644
--- a/libc/kernel/uapi/linux/virtio_pci.h
+++ b/libc/kernel/uapi/linux/virtio_pci.h
@@ -117,5 +117,7 @@
#define VIRTIO_PCI_COMMON_Q_AVAILHI 44
#define VIRTIO_PCI_COMMON_Q_USEDLO 48
#define VIRTIO_PCI_COMMON_Q_USEDHI 52
+#define VIRTIO_PCI_COMMON_Q_NDATA 56
+#define VIRTIO_PCI_COMMON_Q_RESET 58
#endif
#endif
diff --git a/libc/kernel/uapi/linux/wmi.h b/libc/kernel/uapi/linux/wmi.h
index 26f54d9..7b72056 100644
--- a/libc/kernel/uapi/linux/wmi.h
+++ b/libc/kernel/uapi/linux/wmi.h
@@ -30,17 +30,17 @@
__u16 cmd_select;
volatile __u32 input[4];
volatile __u32 output[4];
-} __packed;
+} __attribute__((__packed__));
struct dell_wmi_extensions {
__u32 argattrib;
__u32 blength;
__u8 data[];
-} __packed;
+} __attribute__((__packed__));
struct dell_wmi_smbios_buffer {
__u64 length;
struct calling_interface_buffer std;
struct dell_wmi_extensions ext;
-} __packed;
+} __attribute__((__packed__));
#define CLASS_TOKEN_READ 0
#define CLASS_TOKEN_WRITE 1
#define SELECT_TOKEN_STD 0
diff --git a/libc/kernel/uapi/linux/xfrm.h b/libc/kernel/uapi/linux/xfrm.h
index f4df95f..77ded42 100644
--- a/libc/kernel/uapi/linux/xfrm.h
+++ b/libc/kernel/uapi/linux/xfrm.h
@@ -35,7 +35,7 @@
__u8 ctx_alg;
__u16 ctx_len;
__u32 ctx_sid;
- char ctx_str[0];
+ char ctx_str[];
};
#define XFRM_SC_DOI_RESERVED 0
#define XFRM_SC_DOI_LSM 1
@@ -85,24 +85,24 @@
__u32 oseq_hi;
__u32 seq_hi;
__u32 replay_window;
- __u32 bmp[0];
+ __u32 bmp[];
};
struct xfrm_algo {
char alg_name[64];
unsigned int alg_key_len;
- char alg_key[0];
+ char alg_key[];
};
struct xfrm_algo_auth {
char alg_name[64];
unsigned int alg_key_len;
unsigned int alg_trunc_len;
- char alg_key[0];
+ char alg_key[];
};
struct xfrm_algo_aead {
char alg_name[64];
unsigned int alg_key_len;
unsigned int alg_icv_len;
- char alg_key[0];
+ char alg_key[];
};
struct xfrm_stats {
__u32 replay_window;
diff --git a/libc/kernel/uapi/linux/zorro.h b/libc/kernel/uapi/linux/zorro.h
index f8e47a1..86320aa 100644
--- a/libc/kernel/uapi/linux/zorro.h
+++ b/libc/kernel/uapi/linux/zorro.h
@@ -42,7 +42,7 @@
__u8 ln_Type;
__s8 ln_Pri;
__be32 ln_Name;
-} __packed;
+} __attribute__((__packed__));
struct ExpansionRom {
__u8 er_Type;
__u8 er_Product;
@@ -55,7 +55,7 @@
__u8 er_Reserved0d;
__u8 er_Reserved0e;
__u8 er_Reserved0f;
-} __packed;
+} __attribute__((__packed__));
#define ERT_TYPEMASK 0xc0
#define ERT_ZORROII 0xc0
#define ERT_ZORROIII 0x80
@@ -73,6 +73,6 @@
__be32 cd_Driver;
__be32 cd_NextCD;
__be32 cd_Unused[4];
-} __packed;
+} __attribute__((__packed__));
#define ZORRO_NUM_AUTO 16
#endif
diff --git a/libc/kernel/uapi/misc/habanalabs.h b/libc/kernel/uapi/misc/habanalabs.h
index 2d18d7e..b6140bc 100644
--- a/libc/kernel/uapi/misc/habanalabs.h
+++ b/libc/kernel/uapi/misc/habanalabs.h
@@ -159,6 +159,270 @@
GAUDI_QUEUE_ID_NIC_9_3 = 112,
GAUDI_QUEUE_ID_SIZE
};
+enum gaudi2_queue_id {
+ GAUDI2_QUEUE_ID_PDMA_0_0 = 0,
+ GAUDI2_QUEUE_ID_PDMA_0_1 = 1,
+ GAUDI2_QUEUE_ID_PDMA_0_2 = 2,
+ GAUDI2_QUEUE_ID_PDMA_0_3 = 3,
+ GAUDI2_QUEUE_ID_PDMA_1_0 = 4,
+ GAUDI2_QUEUE_ID_PDMA_1_1 = 5,
+ GAUDI2_QUEUE_ID_PDMA_1_2 = 6,
+ GAUDI2_QUEUE_ID_PDMA_1_3 = 7,
+ GAUDI2_QUEUE_ID_DCORE0_EDMA_0_0 = 8,
+ GAUDI2_QUEUE_ID_DCORE0_EDMA_0_1 = 9,
+ GAUDI2_QUEUE_ID_DCORE0_EDMA_0_2 = 10,
+ GAUDI2_QUEUE_ID_DCORE0_EDMA_0_3 = 11,
+ GAUDI2_QUEUE_ID_DCORE0_EDMA_1_0 = 12,
+ GAUDI2_QUEUE_ID_DCORE0_EDMA_1_1 = 13,
+ GAUDI2_QUEUE_ID_DCORE0_EDMA_1_2 = 14,
+ GAUDI2_QUEUE_ID_DCORE0_EDMA_1_3 = 15,
+ GAUDI2_QUEUE_ID_DCORE0_MME_0_0 = 16,
+ GAUDI2_QUEUE_ID_DCORE0_MME_0_1 = 17,
+ GAUDI2_QUEUE_ID_DCORE0_MME_0_2 = 18,
+ GAUDI2_QUEUE_ID_DCORE0_MME_0_3 = 19,
+ GAUDI2_QUEUE_ID_DCORE0_TPC_0_0 = 20,
+ GAUDI2_QUEUE_ID_DCORE0_TPC_0_1 = 21,
+ GAUDI2_QUEUE_ID_DCORE0_TPC_0_2 = 22,
+ GAUDI2_QUEUE_ID_DCORE0_TPC_0_3 = 23,
+ GAUDI2_QUEUE_ID_DCORE0_TPC_1_0 = 24,
+ GAUDI2_QUEUE_ID_DCORE0_TPC_1_1 = 25,
+ GAUDI2_QUEUE_ID_DCORE0_TPC_1_2 = 26,
+ GAUDI2_QUEUE_ID_DCORE0_TPC_1_3 = 27,
+ GAUDI2_QUEUE_ID_DCORE0_TPC_2_0 = 28,
+ GAUDI2_QUEUE_ID_DCORE0_TPC_2_1 = 29,
+ GAUDI2_QUEUE_ID_DCORE0_TPC_2_2 = 30,
+ GAUDI2_QUEUE_ID_DCORE0_TPC_2_3 = 31,
+ GAUDI2_QUEUE_ID_DCORE0_TPC_3_0 = 32,
+ GAUDI2_QUEUE_ID_DCORE0_TPC_3_1 = 33,
+ GAUDI2_QUEUE_ID_DCORE0_TPC_3_2 = 34,
+ GAUDI2_QUEUE_ID_DCORE0_TPC_3_3 = 35,
+ GAUDI2_QUEUE_ID_DCORE0_TPC_4_0 = 36,
+ GAUDI2_QUEUE_ID_DCORE0_TPC_4_1 = 37,
+ GAUDI2_QUEUE_ID_DCORE0_TPC_4_2 = 38,
+ GAUDI2_QUEUE_ID_DCORE0_TPC_4_3 = 39,
+ GAUDI2_QUEUE_ID_DCORE0_TPC_5_0 = 40,
+ GAUDI2_QUEUE_ID_DCORE0_TPC_5_1 = 41,
+ GAUDI2_QUEUE_ID_DCORE0_TPC_5_2 = 42,
+ GAUDI2_QUEUE_ID_DCORE0_TPC_5_3 = 43,
+ GAUDI2_QUEUE_ID_DCORE0_TPC_6_0 = 44,
+ GAUDI2_QUEUE_ID_DCORE0_TPC_6_1 = 45,
+ GAUDI2_QUEUE_ID_DCORE0_TPC_6_2 = 46,
+ GAUDI2_QUEUE_ID_DCORE0_TPC_6_3 = 47,
+ GAUDI2_QUEUE_ID_DCORE1_EDMA_0_0 = 48,
+ GAUDI2_QUEUE_ID_DCORE1_EDMA_0_1 = 49,
+ GAUDI2_QUEUE_ID_DCORE1_EDMA_0_2 = 50,
+ GAUDI2_QUEUE_ID_DCORE1_EDMA_0_3 = 51,
+ GAUDI2_QUEUE_ID_DCORE1_EDMA_1_0 = 52,
+ GAUDI2_QUEUE_ID_DCORE1_EDMA_1_1 = 53,
+ GAUDI2_QUEUE_ID_DCORE1_EDMA_1_2 = 54,
+ GAUDI2_QUEUE_ID_DCORE1_EDMA_1_3 = 55,
+ GAUDI2_QUEUE_ID_DCORE1_MME_0_0 = 56,
+ GAUDI2_QUEUE_ID_DCORE1_MME_0_1 = 57,
+ GAUDI2_QUEUE_ID_DCORE1_MME_0_2 = 58,
+ GAUDI2_QUEUE_ID_DCORE1_MME_0_3 = 59,
+ GAUDI2_QUEUE_ID_DCORE1_TPC_0_0 = 60,
+ GAUDI2_QUEUE_ID_DCORE1_TPC_0_1 = 61,
+ GAUDI2_QUEUE_ID_DCORE1_TPC_0_2 = 62,
+ GAUDI2_QUEUE_ID_DCORE1_TPC_0_3 = 63,
+ GAUDI2_QUEUE_ID_DCORE1_TPC_1_0 = 64,
+ GAUDI2_QUEUE_ID_DCORE1_TPC_1_1 = 65,
+ GAUDI2_QUEUE_ID_DCORE1_TPC_1_2 = 66,
+ GAUDI2_QUEUE_ID_DCORE1_TPC_1_3 = 67,
+ GAUDI2_QUEUE_ID_DCORE1_TPC_2_0 = 68,
+ GAUDI2_QUEUE_ID_DCORE1_TPC_2_1 = 69,
+ GAUDI2_QUEUE_ID_DCORE1_TPC_2_2 = 70,
+ GAUDI2_QUEUE_ID_DCORE1_TPC_2_3 = 71,
+ GAUDI2_QUEUE_ID_DCORE1_TPC_3_0 = 72,
+ GAUDI2_QUEUE_ID_DCORE1_TPC_3_1 = 73,
+ GAUDI2_QUEUE_ID_DCORE1_TPC_3_2 = 74,
+ GAUDI2_QUEUE_ID_DCORE1_TPC_3_3 = 75,
+ GAUDI2_QUEUE_ID_DCORE1_TPC_4_0 = 76,
+ GAUDI2_QUEUE_ID_DCORE1_TPC_4_1 = 77,
+ GAUDI2_QUEUE_ID_DCORE1_TPC_4_2 = 78,
+ GAUDI2_QUEUE_ID_DCORE1_TPC_4_3 = 79,
+ GAUDI2_QUEUE_ID_DCORE1_TPC_5_0 = 80,
+ GAUDI2_QUEUE_ID_DCORE1_TPC_5_1 = 81,
+ GAUDI2_QUEUE_ID_DCORE1_TPC_5_2 = 82,
+ GAUDI2_QUEUE_ID_DCORE1_TPC_5_3 = 83,
+ GAUDI2_QUEUE_ID_DCORE2_EDMA_0_0 = 84,
+ GAUDI2_QUEUE_ID_DCORE2_EDMA_0_1 = 85,
+ GAUDI2_QUEUE_ID_DCORE2_EDMA_0_2 = 86,
+ GAUDI2_QUEUE_ID_DCORE2_EDMA_0_3 = 87,
+ GAUDI2_QUEUE_ID_DCORE2_EDMA_1_0 = 88,
+ GAUDI2_QUEUE_ID_DCORE2_EDMA_1_1 = 89,
+ GAUDI2_QUEUE_ID_DCORE2_EDMA_1_2 = 90,
+ GAUDI2_QUEUE_ID_DCORE2_EDMA_1_3 = 91,
+ GAUDI2_QUEUE_ID_DCORE2_MME_0_0 = 92,
+ GAUDI2_QUEUE_ID_DCORE2_MME_0_1 = 93,
+ GAUDI2_QUEUE_ID_DCORE2_MME_0_2 = 94,
+ GAUDI2_QUEUE_ID_DCORE2_MME_0_3 = 95,
+ GAUDI2_QUEUE_ID_DCORE2_TPC_0_0 = 96,
+ GAUDI2_QUEUE_ID_DCORE2_TPC_0_1 = 97,
+ GAUDI2_QUEUE_ID_DCORE2_TPC_0_2 = 98,
+ GAUDI2_QUEUE_ID_DCORE2_TPC_0_3 = 99,
+ GAUDI2_QUEUE_ID_DCORE2_TPC_1_0 = 100,
+ GAUDI2_QUEUE_ID_DCORE2_TPC_1_1 = 101,
+ GAUDI2_QUEUE_ID_DCORE2_TPC_1_2 = 102,
+ GAUDI2_QUEUE_ID_DCORE2_TPC_1_3 = 103,
+ GAUDI2_QUEUE_ID_DCORE2_TPC_2_0 = 104,
+ GAUDI2_QUEUE_ID_DCORE2_TPC_2_1 = 105,
+ GAUDI2_QUEUE_ID_DCORE2_TPC_2_2 = 106,
+ GAUDI2_QUEUE_ID_DCORE2_TPC_2_3 = 107,
+ GAUDI2_QUEUE_ID_DCORE2_TPC_3_0 = 108,
+ GAUDI2_QUEUE_ID_DCORE2_TPC_3_1 = 109,
+ GAUDI2_QUEUE_ID_DCORE2_TPC_3_2 = 110,
+ GAUDI2_QUEUE_ID_DCORE2_TPC_3_3 = 111,
+ GAUDI2_QUEUE_ID_DCORE2_TPC_4_0 = 112,
+ GAUDI2_QUEUE_ID_DCORE2_TPC_4_1 = 113,
+ GAUDI2_QUEUE_ID_DCORE2_TPC_4_2 = 114,
+ GAUDI2_QUEUE_ID_DCORE2_TPC_4_3 = 115,
+ GAUDI2_QUEUE_ID_DCORE2_TPC_5_0 = 116,
+ GAUDI2_QUEUE_ID_DCORE2_TPC_5_1 = 117,
+ GAUDI2_QUEUE_ID_DCORE2_TPC_5_2 = 118,
+ GAUDI2_QUEUE_ID_DCORE2_TPC_5_3 = 119,
+ GAUDI2_QUEUE_ID_DCORE3_EDMA_0_0 = 120,
+ GAUDI2_QUEUE_ID_DCORE3_EDMA_0_1 = 121,
+ GAUDI2_QUEUE_ID_DCORE3_EDMA_0_2 = 122,
+ GAUDI2_QUEUE_ID_DCORE3_EDMA_0_3 = 123,
+ GAUDI2_QUEUE_ID_DCORE3_EDMA_1_0 = 124,
+ GAUDI2_QUEUE_ID_DCORE3_EDMA_1_1 = 125,
+ GAUDI2_QUEUE_ID_DCORE3_EDMA_1_2 = 126,
+ GAUDI2_QUEUE_ID_DCORE3_EDMA_1_3 = 127,
+ GAUDI2_QUEUE_ID_DCORE3_MME_0_0 = 128,
+ GAUDI2_QUEUE_ID_DCORE3_MME_0_1 = 129,
+ GAUDI2_QUEUE_ID_DCORE3_MME_0_2 = 130,
+ GAUDI2_QUEUE_ID_DCORE3_MME_0_3 = 131,
+ GAUDI2_QUEUE_ID_DCORE3_TPC_0_0 = 132,
+ GAUDI2_QUEUE_ID_DCORE3_TPC_0_1 = 133,
+ GAUDI2_QUEUE_ID_DCORE3_TPC_0_2 = 134,
+ GAUDI2_QUEUE_ID_DCORE3_TPC_0_3 = 135,
+ GAUDI2_QUEUE_ID_DCORE3_TPC_1_0 = 136,
+ GAUDI2_QUEUE_ID_DCORE3_TPC_1_1 = 137,
+ GAUDI2_QUEUE_ID_DCORE3_TPC_1_2 = 138,
+ GAUDI2_QUEUE_ID_DCORE3_TPC_1_3 = 139,
+ GAUDI2_QUEUE_ID_DCORE3_TPC_2_0 = 140,
+ GAUDI2_QUEUE_ID_DCORE3_TPC_2_1 = 141,
+ GAUDI2_QUEUE_ID_DCORE3_TPC_2_2 = 142,
+ GAUDI2_QUEUE_ID_DCORE3_TPC_2_3 = 143,
+ GAUDI2_QUEUE_ID_DCORE3_TPC_3_0 = 144,
+ GAUDI2_QUEUE_ID_DCORE3_TPC_3_1 = 145,
+ GAUDI2_QUEUE_ID_DCORE3_TPC_3_2 = 146,
+ GAUDI2_QUEUE_ID_DCORE3_TPC_3_3 = 147,
+ GAUDI2_QUEUE_ID_DCORE3_TPC_4_0 = 148,
+ GAUDI2_QUEUE_ID_DCORE3_TPC_4_1 = 149,
+ GAUDI2_QUEUE_ID_DCORE3_TPC_4_2 = 150,
+ GAUDI2_QUEUE_ID_DCORE3_TPC_4_3 = 151,
+ GAUDI2_QUEUE_ID_DCORE3_TPC_5_0 = 152,
+ GAUDI2_QUEUE_ID_DCORE3_TPC_5_1 = 153,
+ GAUDI2_QUEUE_ID_DCORE3_TPC_5_2 = 154,
+ GAUDI2_QUEUE_ID_DCORE3_TPC_5_3 = 155,
+ GAUDI2_QUEUE_ID_NIC_0_0 = 156,
+ GAUDI2_QUEUE_ID_NIC_0_1 = 157,
+ GAUDI2_QUEUE_ID_NIC_0_2 = 158,
+ GAUDI2_QUEUE_ID_NIC_0_3 = 159,
+ GAUDI2_QUEUE_ID_NIC_1_0 = 160,
+ GAUDI2_QUEUE_ID_NIC_1_1 = 161,
+ GAUDI2_QUEUE_ID_NIC_1_2 = 162,
+ GAUDI2_QUEUE_ID_NIC_1_3 = 163,
+ GAUDI2_QUEUE_ID_NIC_2_0 = 164,
+ GAUDI2_QUEUE_ID_NIC_2_1 = 165,
+ GAUDI2_QUEUE_ID_NIC_2_2 = 166,
+ GAUDI2_QUEUE_ID_NIC_2_3 = 167,
+ GAUDI2_QUEUE_ID_NIC_3_0 = 168,
+ GAUDI2_QUEUE_ID_NIC_3_1 = 169,
+ GAUDI2_QUEUE_ID_NIC_3_2 = 170,
+ GAUDI2_QUEUE_ID_NIC_3_3 = 171,
+ GAUDI2_QUEUE_ID_NIC_4_0 = 172,
+ GAUDI2_QUEUE_ID_NIC_4_1 = 173,
+ GAUDI2_QUEUE_ID_NIC_4_2 = 174,
+ GAUDI2_QUEUE_ID_NIC_4_3 = 175,
+ GAUDI2_QUEUE_ID_NIC_5_0 = 176,
+ GAUDI2_QUEUE_ID_NIC_5_1 = 177,
+ GAUDI2_QUEUE_ID_NIC_5_2 = 178,
+ GAUDI2_QUEUE_ID_NIC_5_3 = 179,
+ GAUDI2_QUEUE_ID_NIC_6_0 = 180,
+ GAUDI2_QUEUE_ID_NIC_6_1 = 181,
+ GAUDI2_QUEUE_ID_NIC_6_2 = 182,
+ GAUDI2_QUEUE_ID_NIC_6_3 = 183,
+ GAUDI2_QUEUE_ID_NIC_7_0 = 184,
+ GAUDI2_QUEUE_ID_NIC_7_1 = 185,
+ GAUDI2_QUEUE_ID_NIC_7_2 = 186,
+ GAUDI2_QUEUE_ID_NIC_7_3 = 187,
+ GAUDI2_QUEUE_ID_NIC_8_0 = 188,
+ GAUDI2_QUEUE_ID_NIC_8_1 = 189,
+ GAUDI2_QUEUE_ID_NIC_8_2 = 190,
+ GAUDI2_QUEUE_ID_NIC_8_3 = 191,
+ GAUDI2_QUEUE_ID_NIC_9_0 = 192,
+ GAUDI2_QUEUE_ID_NIC_9_1 = 193,
+ GAUDI2_QUEUE_ID_NIC_9_2 = 194,
+ GAUDI2_QUEUE_ID_NIC_9_3 = 195,
+ GAUDI2_QUEUE_ID_NIC_10_0 = 196,
+ GAUDI2_QUEUE_ID_NIC_10_1 = 197,
+ GAUDI2_QUEUE_ID_NIC_10_2 = 198,
+ GAUDI2_QUEUE_ID_NIC_10_3 = 199,
+ GAUDI2_QUEUE_ID_NIC_11_0 = 200,
+ GAUDI2_QUEUE_ID_NIC_11_1 = 201,
+ GAUDI2_QUEUE_ID_NIC_11_2 = 202,
+ GAUDI2_QUEUE_ID_NIC_11_3 = 203,
+ GAUDI2_QUEUE_ID_NIC_12_0 = 204,
+ GAUDI2_QUEUE_ID_NIC_12_1 = 205,
+ GAUDI2_QUEUE_ID_NIC_12_2 = 206,
+ GAUDI2_QUEUE_ID_NIC_12_3 = 207,
+ GAUDI2_QUEUE_ID_NIC_13_0 = 208,
+ GAUDI2_QUEUE_ID_NIC_13_1 = 209,
+ GAUDI2_QUEUE_ID_NIC_13_2 = 210,
+ GAUDI2_QUEUE_ID_NIC_13_3 = 211,
+ GAUDI2_QUEUE_ID_NIC_14_0 = 212,
+ GAUDI2_QUEUE_ID_NIC_14_1 = 213,
+ GAUDI2_QUEUE_ID_NIC_14_2 = 214,
+ GAUDI2_QUEUE_ID_NIC_14_3 = 215,
+ GAUDI2_QUEUE_ID_NIC_15_0 = 216,
+ GAUDI2_QUEUE_ID_NIC_15_1 = 217,
+ GAUDI2_QUEUE_ID_NIC_15_2 = 218,
+ GAUDI2_QUEUE_ID_NIC_15_3 = 219,
+ GAUDI2_QUEUE_ID_NIC_16_0 = 220,
+ GAUDI2_QUEUE_ID_NIC_16_1 = 221,
+ GAUDI2_QUEUE_ID_NIC_16_2 = 222,
+ GAUDI2_QUEUE_ID_NIC_16_3 = 223,
+ GAUDI2_QUEUE_ID_NIC_17_0 = 224,
+ GAUDI2_QUEUE_ID_NIC_17_1 = 225,
+ GAUDI2_QUEUE_ID_NIC_17_2 = 226,
+ GAUDI2_QUEUE_ID_NIC_17_3 = 227,
+ GAUDI2_QUEUE_ID_NIC_18_0 = 228,
+ GAUDI2_QUEUE_ID_NIC_18_1 = 229,
+ GAUDI2_QUEUE_ID_NIC_18_2 = 230,
+ GAUDI2_QUEUE_ID_NIC_18_3 = 231,
+ GAUDI2_QUEUE_ID_NIC_19_0 = 232,
+ GAUDI2_QUEUE_ID_NIC_19_1 = 233,
+ GAUDI2_QUEUE_ID_NIC_19_2 = 234,
+ GAUDI2_QUEUE_ID_NIC_19_3 = 235,
+ GAUDI2_QUEUE_ID_NIC_20_0 = 236,
+ GAUDI2_QUEUE_ID_NIC_20_1 = 237,
+ GAUDI2_QUEUE_ID_NIC_20_2 = 238,
+ GAUDI2_QUEUE_ID_NIC_20_3 = 239,
+ GAUDI2_QUEUE_ID_NIC_21_0 = 240,
+ GAUDI2_QUEUE_ID_NIC_21_1 = 241,
+ GAUDI2_QUEUE_ID_NIC_21_2 = 242,
+ GAUDI2_QUEUE_ID_NIC_21_3 = 243,
+ GAUDI2_QUEUE_ID_NIC_22_0 = 244,
+ GAUDI2_QUEUE_ID_NIC_22_1 = 245,
+ GAUDI2_QUEUE_ID_NIC_22_2 = 246,
+ GAUDI2_QUEUE_ID_NIC_22_3 = 247,
+ GAUDI2_QUEUE_ID_NIC_23_0 = 248,
+ GAUDI2_QUEUE_ID_NIC_23_1 = 249,
+ GAUDI2_QUEUE_ID_NIC_23_2 = 250,
+ GAUDI2_QUEUE_ID_NIC_23_3 = 251,
+ GAUDI2_QUEUE_ID_ROT_0_0 = 252,
+ GAUDI2_QUEUE_ID_ROT_0_1 = 253,
+ GAUDI2_QUEUE_ID_ROT_0_2 = 254,
+ GAUDI2_QUEUE_ID_ROT_0_3 = 255,
+ GAUDI2_QUEUE_ID_ROT_1_0 = 256,
+ GAUDI2_QUEUE_ID_ROT_1_1 = 257,
+ GAUDI2_QUEUE_ID_ROT_1_2 = 258,
+ GAUDI2_QUEUE_ID_ROT_1_3 = 259,
+ GAUDI2_QUEUE_ID_CPU_PQ = 260,
+ GAUDI2_QUEUE_ID_SIZE
+};
enum goya_engine_id {
GOYA_ENGINE_ID_DMA_0 = 0,
GOYA_ENGINE_ID_DMA_1,
@@ -209,6 +473,84 @@
GAUDI_ENGINE_ID_NIC_9,
GAUDI_ENGINE_ID_SIZE
};
+enum gaudi2_engine_id {
+ GAUDI2_DCORE0_ENGINE_ID_EDMA_0 = 0,
+ GAUDI2_DCORE0_ENGINE_ID_EDMA_1,
+ GAUDI2_DCORE0_ENGINE_ID_MME,
+ GAUDI2_DCORE0_ENGINE_ID_TPC_0,
+ GAUDI2_DCORE0_ENGINE_ID_TPC_1,
+ GAUDI2_DCORE0_ENGINE_ID_TPC_2,
+ GAUDI2_DCORE0_ENGINE_ID_TPC_3,
+ GAUDI2_DCORE0_ENGINE_ID_TPC_4,
+ GAUDI2_DCORE0_ENGINE_ID_TPC_5,
+ GAUDI2_DCORE0_ENGINE_ID_DEC_0,
+ GAUDI2_DCORE0_ENGINE_ID_DEC_1,
+ GAUDI2_DCORE1_ENGINE_ID_EDMA_0,
+ GAUDI2_DCORE1_ENGINE_ID_EDMA_1,
+ GAUDI2_DCORE1_ENGINE_ID_MME,
+ GAUDI2_DCORE1_ENGINE_ID_TPC_0,
+ GAUDI2_DCORE1_ENGINE_ID_TPC_1,
+ GAUDI2_DCORE1_ENGINE_ID_TPC_2,
+ GAUDI2_DCORE1_ENGINE_ID_TPC_3,
+ GAUDI2_DCORE1_ENGINE_ID_TPC_4,
+ GAUDI2_DCORE1_ENGINE_ID_TPC_5,
+ GAUDI2_DCORE1_ENGINE_ID_DEC_0,
+ GAUDI2_DCORE1_ENGINE_ID_DEC_1,
+ GAUDI2_DCORE2_ENGINE_ID_EDMA_0,
+ GAUDI2_DCORE2_ENGINE_ID_EDMA_1,
+ GAUDI2_DCORE2_ENGINE_ID_MME,
+ GAUDI2_DCORE2_ENGINE_ID_TPC_0,
+ GAUDI2_DCORE2_ENGINE_ID_TPC_1,
+ GAUDI2_DCORE2_ENGINE_ID_TPC_2,
+ GAUDI2_DCORE2_ENGINE_ID_TPC_3,
+ GAUDI2_DCORE2_ENGINE_ID_TPC_4,
+ GAUDI2_DCORE2_ENGINE_ID_TPC_5,
+ GAUDI2_DCORE2_ENGINE_ID_DEC_0,
+ GAUDI2_DCORE2_ENGINE_ID_DEC_1,
+ GAUDI2_DCORE3_ENGINE_ID_EDMA_0,
+ GAUDI2_DCORE3_ENGINE_ID_EDMA_1,
+ GAUDI2_DCORE3_ENGINE_ID_MME,
+ GAUDI2_DCORE3_ENGINE_ID_TPC_0,
+ GAUDI2_DCORE3_ENGINE_ID_TPC_1,
+ GAUDI2_DCORE3_ENGINE_ID_TPC_2,
+ GAUDI2_DCORE3_ENGINE_ID_TPC_3,
+ GAUDI2_DCORE3_ENGINE_ID_TPC_4,
+ GAUDI2_DCORE3_ENGINE_ID_TPC_5,
+ GAUDI2_DCORE3_ENGINE_ID_DEC_0,
+ GAUDI2_DCORE3_ENGINE_ID_DEC_1,
+ GAUDI2_DCORE0_ENGINE_ID_TPC_6,
+ GAUDI2_ENGINE_ID_PDMA_0,
+ GAUDI2_ENGINE_ID_PDMA_1,
+ GAUDI2_ENGINE_ID_ROT_0,
+ GAUDI2_ENGINE_ID_ROT_1,
+ GAUDI2_PCIE_ENGINE_ID_DEC_0,
+ GAUDI2_PCIE_ENGINE_ID_DEC_1,
+ GAUDI2_ENGINE_ID_NIC0_0,
+ GAUDI2_ENGINE_ID_NIC0_1,
+ GAUDI2_ENGINE_ID_NIC1_0,
+ GAUDI2_ENGINE_ID_NIC1_1,
+ GAUDI2_ENGINE_ID_NIC2_0,
+ GAUDI2_ENGINE_ID_NIC2_1,
+ GAUDI2_ENGINE_ID_NIC3_0,
+ GAUDI2_ENGINE_ID_NIC3_1,
+ GAUDI2_ENGINE_ID_NIC4_0,
+ GAUDI2_ENGINE_ID_NIC4_1,
+ GAUDI2_ENGINE_ID_NIC5_0,
+ GAUDI2_ENGINE_ID_NIC5_1,
+ GAUDI2_ENGINE_ID_NIC6_0,
+ GAUDI2_ENGINE_ID_NIC6_1,
+ GAUDI2_ENGINE_ID_NIC7_0,
+ GAUDI2_ENGINE_ID_NIC7_1,
+ GAUDI2_ENGINE_ID_NIC8_0,
+ GAUDI2_ENGINE_ID_NIC8_1,
+ GAUDI2_ENGINE_ID_NIC9_0,
+ GAUDI2_ENGINE_ID_NIC9_1,
+ GAUDI2_ENGINE_ID_NIC10_0,
+ GAUDI2_ENGINE_ID_NIC10_1,
+ GAUDI2_ENGINE_ID_NIC11_0,
+ GAUDI2_ENGINE_ID_NIC11_1,
+ GAUDI2_ENGINE_ID_SIZE
+};
enum hl_goya_pll_index {
HL_GOYA_CPU_PLL = 0,
HL_GOYA_IC_PLL,
@@ -232,21 +574,56 @@
HL_GAUDI_IF_PLL,
HL_GAUDI_PLL_MAX
};
+enum hl_gaudi2_pll_index {
+ HL_GAUDI2_CPU_PLL = 0,
+ HL_GAUDI2_PCI_PLL,
+ HL_GAUDI2_SRAM_PLL,
+ HL_GAUDI2_HBM_PLL,
+ HL_GAUDI2_NIC_PLL,
+ HL_GAUDI2_DMA_PLL,
+ HL_GAUDI2_MESH_PLL,
+ HL_GAUDI2_MME_PLL,
+ HL_GAUDI2_TPC_PLL,
+ HL_GAUDI2_IF_PLL,
+ HL_GAUDI2_VID_PLL,
+ HL_GAUDI2_MSS_PLL,
+ HL_GAUDI2_PLL_MAX
+};
+enum hl_goya_dma_direction {
+ HL_DMA_HOST_TO_DRAM,
+ HL_DMA_HOST_TO_SRAM,
+ HL_DMA_DRAM_TO_SRAM,
+ HL_DMA_SRAM_TO_DRAM,
+ HL_DMA_SRAM_TO_HOST,
+ HL_DMA_DRAM_TO_HOST,
+ HL_DMA_DRAM_TO_DRAM,
+ HL_DMA_SRAM_TO_SRAM,
+ HL_DMA_ENUM_MAX
+};
enum hl_device_status {
HL_DEVICE_STATUS_OPERATIONAL,
HL_DEVICE_STATUS_IN_RESET,
HL_DEVICE_STATUS_MALFUNCTION,
HL_DEVICE_STATUS_NEEDS_RESET,
HL_DEVICE_STATUS_IN_DEVICE_CREATION,
- HL_DEVICE_STATUS_LAST = HL_DEVICE_STATUS_IN_DEVICE_CREATION
+ HL_DEVICE_STATUS_IN_RESET_AFTER_DEVICE_RELEASE,
+ HL_DEVICE_STATUS_LAST = HL_DEVICE_STATUS_IN_RESET_AFTER_DEVICE_RELEASE
};
enum hl_server_type {
HL_SERVER_TYPE_UNKNOWN = 0,
HL_SERVER_GAUDI_HLS1 = 1,
HL_SERVER_GAUDI_HLS1H = 2,
HL_SERVER_GAUDI_TYPE1 = 3,
- HL_SERVER_GAUDI_TYPE2 = 4
+ HL_SERVER_GAUDI_TYPE2 = 4,
+ HL_SERVER_GAUDI2_HLS2 = 5
};
+#define HL_NOTIFIER_EVENT_TPC_ASSERT (1ULL << 0)
+#define HL_NOTIFIER_EVENT_UNDEFINED_OPCODE (1ULL << 1)
+#define HL_NOTIFIER_EVENT_DEVICE_RESET (1ULL << 2)
+#define HL_NOTIFIER_EVENT_CS_TIMEOUT (1ULL << 3)
+#define HL_NOTIFIER_EVENT_DEVICE_UNAVAILABLE (1ULL << 4)
+#define HL_NOTIFIER_EVENT_USER_ENGINE_ERR (1ULL << 5)
+#define HL_NOTIFIER_EVENT_GENERAL_HW_ERR (1ULL << 6)
#define HL_INFO_HW_IP_INFO 0
#define HL_INFO_HW_EVENTS 1
#define HL_INFO_DRAM_USAGE 2
@@ -271,11 +648,15 @@
#define HL_INFO_CS_TIMEOUT_EVENT 24
#define HL_INFO_RAZWI_EVENT 25
#define HL_INFO_DEV_MEM_ALLOC_PAGE_SIZES 26
+#define HL_INFO_SECURED_ATTESTATION 27
#define HL_INFO_REGISTER_EVENTFD 28
#define HL_INFO_UNREGISTER_EVENTFD 29
#define HL_INFO_GET_EVENTS 30
+#define HL_INFO_UNDEFINED_OPCODE_EVENT 31
+#define HL_INFO_ENGINE_STATUS 32
#define HL_INFO_VERSION_MAX_LEN 128
#define HL_INFO_CARD_NAME_MAX_LEN 16
+#define HL_ENGINES_DATA_MAX_SIZE SZ_1M
struct hl_info_hw_ip_info {
__u64 sram_base_address;
__u64 dram_base_address;
@@ -284,7 +665,7 @@
__u32 num_of_events;
__u32 device_id;
__u32 module_id;
- __u32 reserved;
+ __u32 decoder_enabled_mask;
__u16 first_available_interrupt_id;
__u16 server_type;
__u32 cpld_version;
@@ -294,12 +675,13 @@
__u32 psoc_pci_pll_div_factor;
__u8 tpc_enabled_mask;
__u8 dram_enabled;
- __u8 pad[2];
+ __u8 security_enabled;
+ __u8 mme_master_slave_mode;
__u8 cpucp_version[HL_INFO_VERSION_MAX_LEN];
__u8 card_name[HL_INFO_CARD_NAME_MAX_LEN];
- __u64 reserved2;
+ __u64 tpc_enabled_mask_ext;
__u64 dram_page_size;
- __u32 reserved3;
+ __u32 edma_enabled_mask;
__u16 number_of_user_interrupts;
__u16 pad2;
__u64 reserved4;
@@ -408,9 +790,40 @@
__u8 error_type;
__u8 pad[2];
};
+#define MAX_QMAN_STREAMS_INFO 4
+#define OPCODE_INFO_MAX_ADDR_SIZE 8
+struct hl_info_undefined_opcode_event {
+ __s64 timestamp;
+ __u64 cb_addr_streams[MAX_QMAN_STREAMS_INFO][OPCODE_INFO_MAX_ADDR_SIZE];
+ __u64 cq_addr;
+ __u32 cq_size;
+ __u32 cb_addr_streams_len;
+ __u32 engine_id;
+ __u32 stream_id;
+};
struct hl_info_dev_memalloc_page_sizes {
__u64 page_order_bitmask;
};
+#define SEC_PCR_DATA_BUF_SZ 256
+#define SEC_PCR_QUOTE_BUF_SZ 510
+#define SEC_SIGNATURE_BUF_SZ 255
+#define SEC_PUB_DATA_BUF_SZ 510
+#define SEC_CERTIFICATE_BUF_SZ 2046
+struct hl_info_sec_attest {
+ __u32 nonce;
+ __u16 pcr_quote_len;
+ __u16 pub_data_len;
+ __u16 certificate_len;
+ __u8 pcr_num_reg;
+ __u8 pcr_reg_len;
+ __u8 quote_sig_len;
+ __u8 pcr_data[SEC_PCR_DATA_BUF_SZ];
+ __u8 pcr_quote[SEC_PCR_QUOTE_BUF_SZ];
+ __u8 quote_sig[SEC_SIGNATURE_BUF_SZ];
+ __u8 public_data[SEC_PUB_DATA_BUF_SZ];
+ __u8 certificate[SEC_CERTIFICATE_BUF_SZ];
+ __u8 pad0[2];
+};
enum gaudi_dcores {
HL_GAUDI_WS_DCORE,
HL_GAUDI_WN_DCORE,
@@ -427,6 +840,8 @@
__u32 period_ms;
__u32 pll_index;
__u32 eventfd;
+ __u32 user_buffer_actual_size;
+ __u32 sec_attest_nonce;
};
__u32 pad;
};
@@ -489,11 +904,23 @@
#define HL_CS_FLAGS_ENCAP_SIGNALS 0x800
#define HL_CS_FLAGS_RESERVE_SIGNALS_ONLY 0x1000
#define HL_CS_FLAGS_UNRESERVE_SIGNALS_ONLY 0x2000
+#define HL_CS_FLAGS_ENGINE_CORE_COMMAND 0x4000
#define HL_CS_STATUS_SUCCESS 0
#define HL_MAX_JOBS_PER_CS 512
+#define HL_ENGINE_CORE_HALT (1 << 0)
+#define HL_ENGINE_CORE_RUN (1 << 1)
struct hl_cs_in {
- __u64 chunks_restore;
- __u64 chunks_execute;
+ union {
+ struct {
+ __u64 chunks_restore;
+ __u64 chunks_execute;
+ };
+ struct {
+ __u64 engine_cores;
+ __u32 num_engine_cores;
+ __u32 core_command;
+ };
+ };
union {
__u64 seq;
__u32 encaps_sig_handle_id;
@@ -507,6 +934,7 @@
__u32 timeout;
__u32 cs_flags;
__u32 ctx_id;
+ __u8 pad[4];
};
struct hl_cs_out {
union {
@@ -527,6 +955,8 @@
};
#define HL_WAIT_CS_FLAGS_INTERRUPT 0x2
#define HL_WAIT_CS_FLAGS_INTERRUPT_MASK 0xFFF00000
+#define HL_WAIT_CS_FLAGS_ANY_CQ_INTERRUPT 0xFFF00000
+#define HL_WAIT_CS_FLAGS_ANY_DEC_INTERRUPT 0xFFE00000
#define HL_WAIT_CS_FLAGS_MULTI_CS 0x4
#define HL_WAIT_CS_FLAGS_INTERRUPT_KERNEL_CQ 0x10
#define HL_WAIT_CS_FLAGS_REGISTER_INTERRUPT 0x20
@@ -664,12 +1094,18 @@
__u32 bw_win;
__u32 win_capture;
__u32 id;
- __u32 pad;
+ __u32 control;
+ __u64 start_addr2;
+ __u64 end_addr2;
+ __u64 start_addr3;
+ __u64 end_addr3;
};
struct hl_debug_params_spmu {
__u64 event_types[HL_DEBUG_MAX_AUX_VALUES];
__u32 event_types_num;
- __u32 pad;
+ __u32 pmtrc_val;
+ __u32 trc_ctrl_host_val;
+ __u32 trc_en_host_val;
};
#define HL_DEBUG_OP_ETR 0
#define HL_DEBUG_OP_ETF 1
@@ -689,7 +1125,6 @@
__u32 enable;
__u32 ctx_id;
};
-#define HL_NOTIFIER_EVENT_TPC_ASSERT (1 << 0)
#define HL_IOCTL_INFO _IOWR('H', 0x01, struct hl_info_args)
#define HL_IOCTL_CB _IOWR('H', 0x02, union hl_cb_args)
#define HL_IOCTL_CS _IOWR('H', 0x03, union hl_cs_args)
diff --git a/libc/kernel/uapi/misc/uacce/hisi_qm.h b/libc/kernel/uapi/misc/uacce/hisi_qm.h
index 87757a9..d2509d0 100644
--- a/libc/kernel/uapi/misc/uacce/hisi_qm.h
+++ b/libc/kernel/uapi/misc/uacce/hisi_qm.h
@@ -23,8 +23,15 @@
__u16 id;
__u16 qc_type;
};
+struct hisi_qp_info {
+ __u32 sqe_size;
+ __u16 sq_depth;
+ __u16 cq_depth;
+ __u64 reserved;
+};
#define HISI_QM_API_VER_BASE "hisi_qm_v1"
#define HISI_QM_API_VER2_BASE "hisi_qm_v2"
#define HISI_QM_API_VER3_BASE "hisi_qm_v3"
#define UACCE_CMD_QM_SET_QP_CTX _IOWR('H', 10, struct hisi_qp_ctx)
+#define UACCE_CMD_QM_SET_QP_INFO _IOWR('H', 11, struct hisi_qp_info)
#endif
diff --git a/libc/kernel/uapi/mtd/mtd-abi.h b/libc/kernel/uapi/mtd/mtd-abi.h
index 50ae565..6e26cae 100644
--- a/libc/kernel/uapi/mtd/mtd-abi.h
+++ b/libc/kernel/uapi/mtd/mtd-abi.h
@@ -52,6 +52,21 @@
__u8 mode;
__u8 padding[7];
};
+struct mtd_read_req_ecc_stats {
+ __u32 uncorrectable_errors;
+ __u32 corrected_bitflips;
+ __u32 max_bitflips;
+};
+struct mtd_read_req {
+ __u64 start;
+ __u64 len;
+ __u64 ooblen;
+ __u64 usr_data;
+ __u64 usr_oob;
+ __u8 mode;
+ __u8 padding[7];
+ struct mtd_read_req_ecc_stats ecc_stats;
+};
#define MTD_ABSENT 0
#define MTD_RAM 1
#define MTD_ROM 2
@@ -122,6 +137,7 @@
#define MEMISLOCKED _IOR('M', 23, struct erase_info_user)
#define MEMWRITE _IOWR('M', 24, struct mtd_write_req)
#define OTPERASE _IOW('M', 25, struct otp_info)
+#define MEMREAD _IOWR('M', 26, struct mtd_read_req)
struct nand_oobinfo {
__u32 useecc;
__u32 eccbytes;
diff --git a/libc/kernel/uapi/mtd/ubi-user.h b/libc/kernel/uapi/mtd/ubi-user.h
index 866fbd2..db203d5 100644
--- a/libc/kernel/uapi/mtd/ubi-user.h
+++ b/libc/kernel/uapi/mtd/ubi-user.h
@@ -56,7 +56,8 @@
__s32 mtd_num;
__s32 vid_hdr_offset;
__s16 max_beb_per1024;
- __s8 padding[10];
+ __s8 disable_fm;
+ __s8 padding[9];
};
enum {
UBI_VOL_SKIP_CRC_CHECK_FLG = 0x1,
@@ -71,11 +72,11 @@
__s16 name_len;
__s8 padding2[4];
char name[UBI_MAX_VOLUME_NAME + 1];
-} __packed;
+} __attribute__((__packed__));
struct ubi_rsvol_req {
__s64 bytes;
__s32 vol_id;
-} __packed;
+} __attribute__((__packed__));
struct ubi_rnvol_req {
__s32 count;
__s8 padding1[12];
@@ -85,24 +86,24 @@
__s8 padding2[2];
char name[UBI_MAX_VOLUME_NAME + 1];
} ents[UBI_MAX_RNVOL];
-} __packed;
+} __attribute__((__packed__));
struct ubi_leb_change_req {
__s32 lnum;
__s32 bytes;
__s8 dtype;
__s8 padding[7];
-} __packed;
+} __attribute__((__packed__));
struct ubi_map_req {
__s32 lnum;
__s8 dtype;
__s8 padding[3];
-} __packed;
+} __attribute__((__packed__));
struct ubi_set_vol_prop_req {
__u8 property;
__u8 padding[7];
__u64 value;
-} __packed;
+} __attribute__((__packed__));
struct ubi_blkcreate_req {
__s8 padding[128];
-} __packed;
+} __attribute__((__packed__));
#endif
diff --git a/libc/kernel/uapi/rdma/efa-abi.h b/libc/kernel/uapi/rdma/efa-abi.h
index 4b6842b..bfb3f18 100644
--- a/libc/kernel/uapi/rdma/efa-abi.h
+++ b/libc/kernel/uapi/rdma/efa-abi.h
@@ -49,6 +49,7 @@
};
enum {
EFA_CREATE_CQ_WITH_COMPLETION_CHANNEL = 1 << 0,
+ EFA_CREATE_CQ_WITH_SGID = 1 << 1,
};
struct efa_ibv_create_cq {
__u32 comp_mask;
@@ -102,6 +103,7 @@
EFA_QUERY_DEVICE_CAPS_RDMA_READ = 1 << 0,
EFA_QUERY_DEVICE_CAPS_RNR_RETRY = 1 << 1,
EFA_QUERY_DEVICE_CAPS_CQ_NOTIFICATIONS = 1 << 2,
+ EFA_QUERY_DEVICE_CAPS_CQ_WITH_SGID = 1 << 3,
};
struct efa_ibv_ex_query_device_resp {
__u32 comp_mask;
diff --git a/libc/kernel/uapi/rdma/erdma-abi.h b/libc/kernel/uapi/rdma/erdma-abi.h
new file mode 100644
index 0000000..4df1757
--- /dev/null
+++ b/libc/kernel/uapi/rdma/erdma-abi.h
@@ -0,0 +1,54 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ *** This header was automatically generated from a Linux kernel header
+ *** of the same name, to make information necessary for userspace to
+ *** call into the kernel available to libc. It contains only constants,
+ *** structures, and macros generated from the original header, and thus,
+ *** contains no copyrightable information.
+ ***
+ *** To edit the content of this header, modify the corresponding
+ *** source file (e.g. under external/kernel-headers/original/) then
+ *** run bionic/libc/kernel/tools/update_all.py
+ ***
+ *** Any manual change here will be lost the next time this script will
+ *** be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __ERDMA_USER_H__
+#define __ERDMA_USER_H__
+#include <linux/types.h>
+#define ERDMA_ABI_VERSION 1
+struct erdma_ureq_create_cq {
+ __aligned_u64 db_record_va;
+ __aligned_u64 qbuf_va;
+ __u32 qbuf_len;
+ __u32 rsvd0;
+};
+struct erdma_uresp_create_cq {
+ __u32 cq_id;
+ __u32 num_cqe;
+};
+struct erdma_ureq_create_qp {
+ __aligned_u64 db_record_va;
+ __aligned_u64 qbuf_va;
+ __u32 qbuf_len;
+ __u32 rsvd0;
+};
+struct erdma_uresp_create_qp {
+ __u32 qp_id;
+ __u32 num_sqe;
+ __u32 num_rqe;
+ __u32 rq_offset;
+};
+struct erdma_uresp_alloc_ctx {
+ __u32 dev_id;
+ __u32 pad;
+ __u32 sdb_type;
+ __u32 sdb_offset;
+ __aligned_u64 sdb;
+ __aligned_u64 rdb;
+ __aligned_u64 cdb;
+};
+#endif
diff --git a/libc/kernel/uapi/rdma/hfi/hfi1_user.h b/libc/kernel/uapi/rdma/hfi/hfi1_user.h
index 3352907..6d58600 100644
--- a/libc/kernel/uapi/rdma/hfi/hfi1_user.h
+++ b/libc/kernel/uapi/rdma/hfi/hfi1_user.h
@@ -80,7 +80,7 @@
struct hfi1_status {
__aligned_u64 dev;
__aligned_u64 port;
- char freezemsg[0];
+ char freezemsg[];
};
enum sdma_req_opcode {
EXPECTED = 0,
diff --git a/libc/kernel/uapi/rdma/ib_user_ioctl_verbs.h b/libc/kernel/uapi/rdma/ib_user_ioctl_verbs.h
index 3b94907..766d5be 100644
--- a/libc/kernel/uapi/rdma/ib_user_ioctl_verbs.h
+++ b/libc/kernel/uapi/rdma/ib_user_ioctl_verbs.h
@@ -191,6 +191,7 @@
RDMA_DRIVER_QIB,
RDMA_DRIVER_EFA,
RDMA_DRIVER_SIW,
+ RDMA_DRIVER_ERDMA,
};
enum ib_uverbs_gid_type {
IB_UVERBS_GID_TYPE_IB,
diff --git a/libc/kernel/uapi/rdma/ib_user_verbs.h b/libc/kernel/uapi/rdma/ib_user_verbs.h
index e24410e..552c80a 100644
--- a/libc/kernel/uapi/rdma/ib_user_verbs.h
+++ b/libc/kernel/uapi/rdma/ib_user_verbs.h
@@ -106,16 +106,16 @@
};
struct ib_uverbs_get_context {
__aligned_u64 response;
- __aligned_u64 driver_data[0];
+ __aligned_u64 driver_data[];
};
struct ib_uverbs_get_context_resp {
__u32 async_fd;
__u32 num_comp_vectors;
- __aligned_u64 driver_data[0];
+ __aligned_u64 driver_data[];
};
struct ib_uverbs_query_device {
__aligned_u64 response;
- __aligned_u64 driver_data[0];
+ __aligned_u64 driver_data[];
};
struct ib_uverbs_query_device_resp {
__aligned_u64 fw_ver;
@@ -208,7 +208,7 @@
__aligned_u64 response;
__u8 port_num;
__u8 reserved[7];
- __aligned_u64 driver_data[0];
+ __aligned_u64 driver_data[];
};
struct ib_uverbs_query_port_resp {
__u32 port_cap_flags;
@@ -236,11 +236,11 @@
};
struct ib_uverbs_alloc_pd {
__aligned_u64 response;
- __aligned_u64 driver_data[0];
+ __aligned_u64 driver_data[];
};
struct ib_uverbs_alloc_pd_resp {
__u32 pd_handle;
- __u32 driver_data[0];
+ __u32 driver_data[];
};
struct ib_uverbs_dealloc_pd {
__u32 pd_handle;
@@ -249,11 +249,11 @@
__aligned_u64 response;
__u32 fd;
__u32 oflags;
- __aligned_u64 driver_data[0];
+ __aligned_u64 driver_data[];
};
struct ib_uverbs_open_xrcd_resp {
__u32 xrcd_handle;
- __u32 driver_data[0];
+ __u32 driver_data[];
};
struct ib_uverbs_close_xrcd {
__u32 xrcd_handle;
@@ -265,13 +265,13 @@
__aligned_u64 hca_va;
__u32 pd_handle;
__u32 access_flags;
- __aligned_u64 driver_data[0];
+ __aligned_u64 driver_data[];
};
struct ib_uverbs_reg_mr_resp {
__u32 mr_handle;
__u32 lkey;
__u32 rkey;
- __u32 driver_data[0];
+ __u32 driver_data[];
};
struct ib_uverbs_rereg_mr {
__aligned_u64 response;
@@ -282,12 +282,12 @@
__aligned_u64 hca_va;
__u32 pd_handle;
__u32 access_flags;
- __aligned_u64 driver_data[0];
+ __aligned_u64 driver_data[];
};
struct ib_uverbs_rereg_mr_resp {
__u32 lkey;
__u32 rkey;
- __aligned_u64 driver_data[0];
+ __aligned_u64 driver_data[];
};
struct ib_uverbs_dereg_mr {
__u32 mr_handle;
@@ -297,12 +297,12 @@
__u32 pd_handle;
__u8 mw_type;
__u8 reserved[3];
- __aligned_u64 driver_data[0];
+ __aligned_u64 driver_data[];
};
struct ib_uverbs_alloc_mw_resp {
__u32 mw_handle;
__u32 rkey;
- __aligned_u64 driver_data[0];
+ __aligned_u64 driver_data[];
};
struct ib_uverbs_dealloc_mw {
__u32 mw_handle;
@@ -320,7 +320,7 @@
__u32 comp_vector;
__s32 comp_channel;
__u32 reserved;
- __aligned_u64 driver_data[0];
+ __aligned_u64 driver_data[];
};
enum ib_uverbs_ex_create_cq_flags {
IB_UVERBS_CQ_FLAGS_TIMESTAMP_COMPLETION = 1 << 0,
@@ -349,12 +349,12 @@
__aligned_u64 response;
__u32 cq_handle;
__u32 cqe;
- __aligned_u64 driver_data[0];
+ __aligned_u64 driver_data[];
};
struct ib_uverbs_resize_cq_resp {
__u32 cqe;
__u32 reserved;
- __aligned_u64 driver_data[0];
+ __aligned_u64 driver_data[];
};
struct ib_uverbs_poll_cq {
__aligned_u64 response;
@@ -394,7 +394,7 @@
struct ib_uverbs_poll_cq_resp {
__u32 count;
__u32 reserved;
- struct ib_uverbs_wc wc[0];
+ struct ib_uverbs_wc wc[];
};
struct ib_uverbs_req_notify_cq {
__u32 cq_handle;
@@ -476,7 +476,7 @@
__u8 qp_type;
__u8 is_srq;
__u8 reserved;
- __aligned_u64 driver_data[0];
+ __aligned_u64 driver_data[];
};
enum ib_uverbs_create_qp_mask {
IB_UVERBS_CREATE_QP_MASK_IND_TABLE = 1UL << 0,
@@ -511,7 +511,7 @@
__u32 qpn;
__u8 qp_type;
__u8 reserved[7];
- __aligned_u64 driver_data[0];
+ __aligned_u64 driver_data[];
};
struct ib_uverbs_create_qp_resp {
__u32 qp_handle;
@@ -547,7 +547,7 @@
__aligned_u64 response;
__u32 qp_handle;
__u32 attr_mask;
- __aligned_u64 driver_data[0];
+ __aligned_u64 driver_data[];
};
struct ib_uverbs_query_qp_resp {
struct ib_uverbs_qp_dest dest;
@@ -580,7 +580,7 @@
__u8 alt_timeout;
__u8 sq_sig_all;
__u8 reserved[5];
- __aligned_u64 driver_data[0];
+ __aligned_u64 driver_data[];
};
struct ib_uverbs_modify_qp {
struct ib_uverbs_qp_dest dest;
@@ -685,7 +685,7 @@
__u32 wr_count;
__u32 sge_count;
__u32 wqe_size;
- struct ib_uverbs_send_wr send_wr[0];
+ struct ib_uverbs_send_wr send_wr[];
};
struct ib_uverbs_post_send_resp {
__u32 bad_wr;
@@ -701,7 +701,7 @@
__u32 wr_count;
__u32 sge_count;
__u32 wqe_size;
- struct ib_uverbs_recv_wr recv_wr[0];
+ struct ib_uverbs_recv_wr recv_wr[];
};
struct ib_uverbs_post_recv_resp {
__u32 bad_wr;
@@ -712,7 +712,7 @@
__u32 wr_count;
__u32 sge_count;
__u32 wqe_size;
- struct ib_uverbs_recv_wr recv[0];
+ struct ib_uverbs_recv_wr recv[];
};
struct ib_uverbs_post_srq_recv_resp {
__u32 bad_wr;
@@ -723,11 +723,11 @@
__u32 pd_handle;
__u32 reserved;
struct ib_uverbs_ah_attr attr;
- __aligned_u64 driver_data[0];
+ __aligned_u64 driver_data[];
};
struct ib_uverbs_create_ah_resp {
__u32 ah_handle;
- __u32 driver_data[0];
+ __u32 driver_data[];
};
struct ib_uverbs_destroy_ah {
__u32 ah_handle;
@@ -737,14 +737,14 @@
__u32 qp_handle;
__u16 mlid;
__u16 reserved;
- __aligned_u64 driver_data[0];
+ __aligned_u64 driver_data[];
};
struct ib_uverbs_detach_mcast {
__u8 gid[16];
__u32 qp_handle;
__u16 mlid;
__u16 reserved;
- __aligned_u64 driver_data[0];
+ __aligned_u64 driver_data[];
};
struct ib_uverbs_flow_spec_hdr {
__u32 type;
@@ -944,7 +944,7 @@
__u8 reserved[2];
__u8 port;
__u32 flags;
- struct ib_uverbs_flow_spec_hdr flow_specs[0];
+ struct ib_uverbs_flow_spec_hdr flow_specs[];
};
struct ib_uverbs_create_flow {
__u32 comp_mask;
@@ -966,7 +966,7 @@
__u32 max_wr;
__u32 max_sge;
__u32 srq_limit;
- __aligned_u64 driver_data[0];
+ __aligned_u64 driver_data[];
};
struct ib_uverbs_create_xsrq {
__aligned_u64 response;
@@ -979,27 +979,27 @@
__u32 max_num_tags;
__u32 xrcd_handle;
__u32 cq_handle;
- __aligned_u64 driver_data[0];
+ __aligned_u64 driver_data[];
};
struct ib_uverbs_create_srq_resp {
__u32 srq_handle;
__u32 max_wr;
__u32 max_sge;
__u32 srqn;
- __u32 driver_data[0];
+ __u32 driver_data[];
};
struct ib_uverbs_modify_srq {
__u32 srq_handle;
__u32 attr_mask;
__u32 max_wr;
__u32 srq_limit;
- __aligned_u64 driver_data[0];
+ __aligned_u64 driver_data[];
};
struct ib_uverbs_query_srq {
__aligned_u64 response;
__u32 srq_handle;
__u32 reserved;
- __aligned_u64 driver_data[0];
+ __aligned_u64 driver_data[];
};
struct ib_uverbs_query_srq_resp {
__u32 max_wr;
@@ -1056,7 +1056,7 @@
struct ib_uverbs_ex_create_rwq_ind_table {
__u32 comp_mask;
__u32 log_ind_tbl_size;
- __u32 wq_handles[0];
+ __u32 wq_handles[];
};
struct ib_uverbs_ex_create_rwq_ind_table_resp {
__u32 comp_mask;
diff --git a/libc/kernel/uapi/rdma/mlx5-abi.h b/libc/kernel/uapi/rdma/mlx5-abi.h
index aadb20e..f41c887 100644
--- a/libc/kernel/uapi/rdma/mlx5-abi.h
+++ b/libc/kernel/uapi/rdma/mlx5-abi.h
@@ -70,6 +70,7 @@
MLX5_IB_ALLOC_UCONTEXT_RESP_MASK_ECE = 1UL << 2,
MLX5_IB_ALLOC_UCONTEXT_RESP_MASK_SQD2RTS = 1UL << 3,
MLX5_IB_ALLOC_UCONTEXT_RESP_MASK_REAL_TIME_TS = 1UL << 4,
+ MLX5_IB_ALLOC_UCONTEXT_RESP_MASK_MKEY_UPDATE_TAG = 1UL << 5,
};
enum mlx5_user_cmds_supp_uhw {
MLX5_USER_CMDS_SUPP_UHW_QUERY_DEVICE = 1 << 0,
diff --git a/libc/kernel/uapi/rdma/mlx5_user_ioctl_cmds.h b/libc/kernel/uapi/rdma/mlx5_user_ioctl_cmds.h
index 862abcb..c060482 100644
--- a/libc/kernel/uapi/rdma/mlx5_user_ioctl_cmds.h
+++ b/libc/kernel/uapi/rdma/mlx5_user_ioctl_cmds.h
@@ -135,6 +135,7 @@
MLX5_IB_ATTR_DEVX_UMEM_REG_ACCESS,
MLX5_IB_ATTR_DEVX_UMEM_REG_OUT_ID,
MLX5_IB_ATTR_DEVX_UMEM_REG_PGSZ_BITMAP,
+ MLX5_IB_ATTR_DEVX_UMEM_REG_DMABUF_FD,
};
enum mlx5_ib_devx_umem_dereg_attrs {
MLX5_IB_ATTR_DEVX_UMEM_DEREG_HANDLE = (1U << UVERBS_ID_NS_SHIFT),
@@ -179,6 +180,7 @@
MLX5_IB_OBJECT_VAR,
MLX5_IB_OBJECT_PP,
MLX5_IB_OBJECT_UAR,
+ MLX5_IB_OBJECT_STEERING_ANCHOR,
};
enum mlx5_ib_flow_matcher_create_attrs {
MLX5_IB_ATTR_FLOW_MATCHER_CREATE_HANDLE = (1U << UVERBS_ID_NS_SHIFT),
@@ -195,6 +197,19 @@
MLX5_IB_METHOD_FLOW_MATCHER_CREATE = (1U << UVERBS_ID_NS_SHIFT),
MLX5_IB_METHOD_FLOW_MATCHER_DESTROY,
};
+enum mlx5_ib_flow_steering_anchor_create_attrs {
+ MLX5_IB_ATTR_STEERING_ANCHOR_CREATE_HANDLE = (1U << UVERBS_ID_NS_SHIFT),
+ MLX5_IB_ATTR_STEERING_ANCHOR_FT_TYPE,
+ MLX5_IB_ATTR_STEERING_ANCHOR_PRIORITY,
+ MLX5_IB_ATTR_STEERING_ANCHOR_FT_ID,
+};
+enum mlx5_ib_flow_steering_anchor_destroy_attrs {
+ MLX5_IB_ATTR_STEERING_ANCHOR_DESTROY_HANDLE = (1U << UVERBS_ID_NS_SHIFT),
+};
+enum mlx5_ib_steering_anchor_methods {
+ MLX5_IB_METHOD_STEERING_ANCHOR_CREATE = (1U << UVERBS_ID_NS_SHIFT),
+ MLX5_IB_METHOD_STEERING_ANCHOR_DESTROY,
+};
enum mlx5_ib_device_query_context_attrs {
MLX5_IB_ATTR_QUERY_CONTEXT_RESP_UCTX = (1U << UVERBS_ID_NS_SHIFT),
};
diff --git a/libc/kernel/uapi/rdma/mlx5_user_ioctl_verbs.h b/libc/kernel/uapi/rdma/mlx5_user_ioctl_verbs.h
index c3c3f89..f68c0b3 100644
--- a/libc/kernel/uapi/rdma/mlx5_user_ioctl_verbs.h
+++ b/libc/kernel/uapi/rdma/mlx5_user_ioctl_verbs.h
@@ -43,6 +43,7 @@
MLX5_IB_UAPI_DM_TYPE_MEMIC,
MLX5_IB_UAPI_DM_TYPE_STEERING_SW_ICM,
MLX5_IB_UAPI_DM_TYPE_HEADER_MODIFY_SW_ICM,
+ MLX5_IB_UAPI_DM_TYPE_HEADER_MODIFY_PATTERN_SW_ICM,
};
enum mlx5_ib_uapi_devx_create_event_channel_flags {
MLX5_IB_UAPI_DEVX_CR_EV_CH_FLAGS_OMIT_DATA = 1 << 0,
diff --git a/libc/kernel/uapi/rdma/rdma_user_cm.h b/libc/kernel/uapi/rdma/rdma_user_cm.h
index 7b1f7ee..37927f8 100644
--- a/libc/kernel/uapi/rdma/rdma_user_cm.h
+++ b/libc/kernel/uapi/rdma/rdma_user_cm.h
@@ -145,7 +145,7 @@
struct rdma_ucm_query_path_resp {
__u32 num_paths;
__u32 reserved;
- struct ib_path_rec_data path_data[0];
+ struct ib_path_rec_data path_data[];
};
struct rdma_ucm_conn_param {
__u32 qp_num;
diff --git a/libc/kernel/uapi/rdma/rdma_user_ioctl_cmds.h b/libc/kernel/uapi/rdma/rdma_user_ioctl_cmds.h
index 22adfaa..dbaf9ed 100644
--- a/libc/kernel/uapi/rdma/rdma_user_ioctl_cmds.h
+++ b/libc/kernel/uapi/rdma/rdma_user_ioctl_cmds.h
@@ -50,6 +50,6 @@
__aligned_u64 reserved1;
__u32 driver_id;
__u32 reserved2;
- struct ib_uverbs_attr attrs[0];
+ struct ib_uverbs_attr attrs[];
};
#endif
diff --git a/libc/kernel/uapi/rdma/rdma_user_rxe.h b/libc/kernel/uapi/rdma/rdma_user_rxe.h
index cdb00c7..2476699 100644
--- a/libc/kernel/uapi/rdma/rdma_user_rxe.h
+++ b/libc/kernel/uapi/rdma/rdma_user_rxe.h
@@ -52,7 +52,7 @@
};
struct rxe_send_wr {
__aligned_u64 wr_id;
- __u32 num_sge;
+ __u32 reserved;
__u32 opcode;
__u32 send_flags;
union {
@@ -128,7 +128,7 @@
};
struct rxe_recv_wqe {
__aligned_u64 wr_id;
- __u32 num_sge;
+ __u32 reserved;
__u32 padding;
struct rxe_dma_info dma;
};
diff --git a/libc/kernel/uapi/scsi/fc/fc_els.h b/libc/kernel/uapi/scsi/fc/fc_els.h
index 04ae5b8..d29287d 100644
--- a/libc/kernel/uapi/scsi/fc/fc_els.h
+++ b/libc/kernel/uapi/scsi/fc/fc_els.h
@@ -142,7 +142,7 @@
struct fc_tlv_desc {
__be32 desc_tag;
__be32 desc_len;
- __u8 desc_value[0];
+ __u8 desc_value[];
};
#define FC_TLV_DESC_HDR_SZ sizeof(struct fc_tlv_desc)
#define FC_TLV_DESC_LENGTH_FROM_SZ(desc) (sizeof(desc) - FC_TLV_DESC_HDR_SZ)
@@ -618,7 +618,7 @@
__be32 event_threshold;
__be32 event_count;
__be32 pname_count;
- __be64 pname_list[0];
+ __be64 pname_list[];
};
struct fc_fn_deli_desc {
__be32 desc_tag;
@@ -636,7 +636,7 @@
__be16 event_modifier;
__be32 event_period;
__be32 pname_count;
- __be64 pname_list[0];
+ __be64 pname_list[];
};
struct fc_fn_congn_desc {
__be32 desc_tag;
@@ -651,25 +651,25 @@
__u8 fpin_cmd;
__u8 fpin_zero[3];
__be32 desc_len;
- struct fc_tlv_desc fpin_desc[0];
+ struct fc_tlv_desc fpin_desc[];
};
struct fc_df_desc_fpin_reg {
__be32 desc_tag;
__be32 desc_len;
__be32 count;
- __be32 desc_tags[0];
+ __be32 desc_tags[];
};
struct fc_els_rdf {
__u8 fpin_cmd;
__u8 fpin_zero[3];
__be32 desc_len;
- struct fc_tlv_desc desc[0];
+ struct fc_tlv_desc desc[];
};
struct fc_els_rdf_resp {
struct fc_els_ls_acc acc_hdr;
__be32 desc_list_len;
struct fc_els_lsri_desc lsri;
- struct fc_tlv_desc desc[0];
+ struct fc_tlv_desc desc[];
};
struct fc_diag_lnkflt_desc {
__be32 desc_tag;
@@ -707,12 +707,12 @@
__u8 edc_cmd;
__u8 edc_zero[3];
__be32 desc_len;
- struct fc_tlv_desc desc[0];
+ struct fc_tlv_desc desc[];
};
struct fc_els_edc_resp {
struct fc_els_ls_acc acc_hdr;
__be32 desc_list_len;
struct fc_els_lsri_desc lsri;
- struct fc_tlv_desc desc[0];
+ struct fc_tlv_desc desc[];
};
#endif
diff --git a/libc/kernel/uapi/scsi/scsi_bsg_fc.h b/libc/kernel/uapi/scsi/scsi_bsg_fc.h
index 8966f61..2647249 100644
--- a/libc/kernel/uapi/scsi/scsi_bsg_fc.h
+++ b/libc/kernel/uapi/scsi/scsi_bsg_fc.h
@@ -66,7 +66,7 @@
};
struct fc_bsg_host_vendor {
__u64 vendor_id;
- __u32 vendor_cmd[0];
+ __u32 vendor_cmd[];
};
struct fc_bsg_host_vendor_reply {
__u32 vendor_rsp[0];
diff --git a/libc/kernel/uapi/scsi/scsi_netlink_fc.h b/libc/kernel/uapi/scsi/scsi_netlink_fc.h
index ff92877..6eeb866 100644
--- a/libc/kernel/uapi/scsi/scsi_netlink_fc.h
+++ b/libc/kernel/uapi/scsi/scsi_netlink_fc.h
@@ -30,6 +30,9 @@
__u16 event_datalen;
__u32 event_num;
__u32 event_code;
- __u32 event_data;
+ union {
+ __u32 event_data;
+ __DECLARE_FLEX_ARRAY(__u8, event_data_flex);
+ };
} __attribute__((aligned(sizeof(__u64))));
#endif
diff --git a/libc/kernel/uapi/sound/asoc.h b/libc/kernel/uapi/sound/asoc.h
index eeb12b0..1940e5d 100644
--- a/libc/kernel/uapi/sound/asoc.h
+++ b/libc/kernel/uapi/sound/asoc.h
@@ -356,7 +356,7 @@
__le32 pcm_elems;
__le32 dai_link_elems;
struct snd_soc_tplg_private priv;
-} __packed;
+} __attribute__((__packed__));
struct snd_soc_tplg_stream_caps_v4 {
__le32 size;
char name[SNDRV_CTL_ELEM_ID_NAME_MAXLEN];
@@ -372,7 +372,7 @@
__le32 period_size_max;
__le32 buffer_size_min;
__le32 buffer_size_max;
-} __packed;
+} __attribute__((__packed__));
struct snd_soc_tplg_pcm_v4 {
__le32 size;
char pcm_name[SNDRV_CTL_ELEM_ID_NAME_MAXLEN];
@@ -385,11 +385,11 @@
struct snd_soc_tplg_stream stream[SND_SOC_TPLG_STREAM_CONFIG_MAX];
__le32 num_streams;
struct snd_soc_tplg_stream_caps_v4 caps[2];
-} __packed;
+} __attribute__((__packed__));
struct snd_soc_tplg_link_config_v4 {
__le32 size;
__le32 id;
struct snd_soc_tplg_stream stream[SND_SOC_TPLG_STREAM_CONFIG_MAX];
__le32 num_streams;
-} __packed;
+} __attribute__((__packed__));
#endif
diff --git a/libc/kernel/uapi/sound/asound.h b/libc/kernel/uapi/sound/asound.h
index b0e47c1..6e325e9 100644
--- a/libc/kernel/uapi/sound/asound.h
+++ b/libc/kernel/uapi/sound/asound.h
@@ -605,7 +605,7 @@
__u32 tv_nsec;
__u64 tv_sec;
__u8 data[SNDRV_RAWMIDI_FRAMING_DATA_LENGTH];
-} __packed;
+} __attribute__((__packed__));
struct snd_rawmidi_params {
int stream;
size_t buffer_size;
@@ -884,7 +884,7 @@
struct snd_ctl_tlv {
unsigned int numid;
unsigned int length;
- unsigned int tlv[0];
+ unsigned int tlv[];
};
#define SNDRV_CTL_IOCTL_PVERSION _IOR('U', 0x00, int)
#define SNDRV_CTL_IOCTL_CARD_INFO _IOR('U', 0x01, struct snd_ctl_card_info)
diff --git a/libc/kernel/uapi/sound/firewire.h b/libc/kernel/uapi/sound/firewire.h
index 198a8f4..d26d722 100644
--- a/libc/kernel/uapi/sound/firewire.h
+++ b/libc/kernel/uapi/sound/firewire.h
@@ -46,11 +46,11 @@
__be32 category;
__be32 command;
__be32 status;
- __be32 params[0];
+ __be32 params[];
};
struct snd_firewire_event_efw_response {
unsigned int type;
- __be32 response[0];
+ __be32 response[];
};
struct snd_firewire_event_digi00x_message {
unsigned int type;
@@ -67,7 +67,7 @@
};
struct snd_firewire_event_tascam_control {
unsigned int type;
- struct snd_firewire_tascam_change changes[0];
+ struct snd_firewire_tascam_change changes[];
};
struct snd_firewire_event_motu_register_dsp_change {
unsigned int type;
diff --git a/libc/kernel/uapi/sound/skl-tplg-interface.h b/libc/kernel/uapi/sound/skl-tplg-interface.h
index b516a08..6dd9655 100644
--- a/libc/kernel/uapi/sound/skl-tplg-interface.h
+++ b/libc/kernel/uapi/sound/skl-tplg-interface.h
@@ -110,8 +110,8 @@
__u32 rsvd : 30;
__u32 param_id;
__u32 max;
- char params[0];
-} __packed;
+ char params[];
+} __attribute__((__packed__));
enum skl_tkn_dir {
SKL_DIR_IN,
SKL_DIR_OUT
@@ -123,7 +123,7 @@
struct skl_dfw_v4_module_pin {
__u16 module_id;
__u16 instance_id;
-} __packed;
+} __attribute__((__packed__));
struct skl_dfw_v4_module_fmt {
__u32 channels;
__u32 freq;
@@ -133,21 +133,21 @@
__u32 interleaving_style;
__u32 sample_type;
__u32 ch_map;
-} __packed;
+} __attribute__((__packed__));
struct skl_dfw_v4_module_caps {
__u32 set_params : 2;
__u32 rsvd : 30;
__u32 param_id;
__u32 caps_size;
__u32 caps[HDA_SST_CFG_MAX];
-} __packed;
+} __attribute__((__packed__));
struct skl_dfw_v4_pipe {
__u8 pipe_id;
__u8 pipe_priority;
__u16 conn_type : 4;
__u16 rsvd : 4;
__u16 memory_pages : 8;
-} __packed;
+} __attribute__((__packed__));
struct skl_dfw_v4_module {
char uuid[SKL_UUID_STR_SZ];
__u16 module_id;
@@ -181,5 +181,5 @@
struct skl_dfw_v4_module_pin in_pin[MAX_IN_QUEUE];
struct skl_dfw_v4_module_pin out_pin[MAX_OUT_QUEUE];
struct skl_dfw_v4_module_caps caps;
-} __packed;
+} __attribute__((__packed__));
#endif
diff --git a/libc/kernel/uapi/sound/sof/abi.h b/libc/kernel/uapi/sound/sof/abi.h
index 091c8ed..dc4e525 100644
--- a/libc/kernel/uapi/sound/sof/abi.h
+++ b/libc/kernel/uapi/sound/sof/abi.h
@@ -18,8 +18,9 @@
****************************************************************************/
#ifndef __INCLUDE_UAPI_SOUND_SOF_ABI_H__
#define __INCLUDE_UAPI_SOUND_SOF_ABI_H__
+#include <linux/types.h>
#define SOF_ABI_MAJOR 3
-#define SOF_ABI_MINOR 21
+#define SOF_ABI_MINOR 23
#define SOF_ABI_PATCH 0
#define SOF_ABI_MAJOR_SHIFT 24
#define SOF_ABI_MAJOR_MASK 0xff
diff --git a/libc/kernel/uapi/sound/sof/fw.h b/libc/kernel/uapi/sound/sof/fw.h
index c36c2b9..97b7de3 100644
--- a/libc/kernel/uapi/sound/sof/fw.h
+++ b/libc/kernel/uapi/sound/sof/fw.h
@@ -46,7 +46,7 @@
enum snd_sof_fw_blk_type type;
__u32 size;
__u32 offset;
-} __packed;
+} __attribute__((__packed__));
enum snd_sof_fw_mod_type {
SOF_FW_BASE = 0,
SOF_FW_MODULE = 1,
@@ -55,11 +55,11 @@
enum snd_sof_fw_mod_type type;
__u32 size;
__u32 num_blocks;
-} __packed;
+} __attribute__((__packed__));
struct snd_sof_fw_header {
unsigned char sig[SND_SOF_FW_SIG_SIZE];
__u32 file_size;
__u32 num_modules;
__u32 abi;
-} __packed;
+} __attribute__((__packed__));
#endif
diff --git a/libc/kernel/uapi/sound/sof/header.h b/libc/kernel/uapi/sound/sof/header.h
index 3fbd4a4..7514550 100644
--- a/libc/kernel/uapi/sound/sof/header.h
+++ b/libc/kernel/uapi/sound/sof/header.h
@@ -25,6 +25,19 @@
__u32 size;
__u32 abi;
__u32 reserved[4];
- __u32 data[0];
-} __packed;
+ __u32 data[];
+} __attribute__((__packed__));
+#define SOF_MANIFEST_DATA_TYPE_NHLT 1
+struct sof_manifest_tlv {
+ __le32 type;
+ __le32 size;
+ __u8 data[];
+};
+struct sof_manifest {
+ __le16 abi_major;
+ __le16 abi_minor;
+ __le16 abi_patch;
+ __le16 count;
+ struct sof_manifest_tlv items[];
+};
#endif
diff --git a/libc/kernel/uapi/sound/sof/tokens.h b/libc/kernel/uapi/sound/sof/tokens.h
index 856281a..b07ed42 100644
--- a/libc/kernel/uapi/sound/sof/tokens.h
+++ b/libc/kernel/uapi/sound/sof/tokens.h
@@ -37,8 +37,13 @@
#define SOF_TKN_SCHED_FRAMES 204
#define SOF_TKN_SCHED_TIME_DOMAIN 205
#define SOF_TKN_SCHED_DYNAMIC_PIPELINE 206
+#define SOF_TKN_SCHED_LP_MODE 207
+#define SOF_TKN_SCHED_MEM_USAGE 208
#define SOF_TKN_VOLUME_RAMP_STEP_TYPE 250
#define SOF_TKN_VOLUME_RAMP_STEP_MS 251
+#define SOF_TKN_GAIN_RAMP_TYPE 260
+#define SOF_TKN_GAIN_RAMP_DURATION 261
+#define SOF_TKN_GAIN_VAL 262
#define SOF_TKN_SRC_RATE_IN 300
#define SOF_TKN_SRC_RATE_OUT 301
#define SOF_TKN_ASRC_RATE_IN 320
@@ -51,6 +56,9 @@
#define SOF_TKN_COMP_FORMAT 402
#define SOF_TKN_COMP_CORE_ID 404
#define SOF_TKN_COMP_UUID 405
+#define SOF_TKN_COMP_CPC 406
+#define SOF_TKN_COMP_IS_PAGES 409
+#define SOF_TKN_COMP_NUM_AUDIO_FORMATS 410
#define SOF_TKN_INTEL_SSP_CLKS_CONTROL 500
#define SOF_TKN_INTEL_SSP_MCLK_ID 501
#define SOF_TKN_INTEL_SSP_SAMPLE_BITS 502
@@ -90,4 +98,29 @@
#define SOF_TKN_MEDIATEK_AFE_RATE 1600
#define SOF_TKN_MEDIATEK_AFE_CH 1601
#define SOF_TKN_MEDIATEK_AFE_FORMAT 1602
+#define SOF_TKN_MIXER_TYPE 1700
+#define SOF_TKN_AMD_ACPDMIC_RATE 1800
+#define SOF_TKN_AMD_ACPDMIC_CH 1801
+#define SOF_TKN_CAVS_AUDIO_FORMAT_IN_RATE 1900
+#define SOF_TKN_CAVS_AUDIO_FORMAT_IN_BIT_DEPTH 1901
+#define SOF_TKN_CAVS_AUDIO_FORMAT_IN_VALID_BIT 1902
+#define SOF_TKN_CAVS_AUDIO_FORMAT_IN_CHANNELS 1903
+#define SOF_TKN_CAVS_AUDIO_FORMAT_IN_CH_MAP 1904
+#define SOF_TKN_CAVS_AUDIO_FORMAT_IN_CH_CFG 1905
+#define SOF_TKN_CAVS_AUDIO_FORMAT_IN_INTERLEAVING_STYLE 1906
+#define SOF_TKN_CAVS_AUDIO_FORMAT_IN_FMT_CFG 1907
+#define SOF_TKN_CAVS_AUDIO_FORMAT_IN_SAMPLE_TYPE 1908
+#define SOF_TKN_CAVS_AUDIO_FORMAT_OUT_RATE 1930
+#define SOF_TKN_CAVS_AUDIO_FORMAT_OUT_BIT_DEPTH 1931
+#define SOF_TKN_CAVS_AUDIO_FORMAT_OUT_VALID_BIT 1932
+#define SOF_TKN_CAVS_AUDIO_FORMAT_OUT_CHANNELS 1933
+#define SOF_TKN_CAVS_AUDIO_FORMAT_OUT_CH_MAP 1934
+#define SOF_TKN_CAVS_AUDIO_FORMAT_OUT_CH_CFG 1935
+#define SOF_TKN_CAVS_AUDIO_FORMAT_OUT_INTERLEAVING_STYLE 1936
+#define SOF_TKN_CAVS_AUDIO_FORMAT_OUT_FMT_CFG 1937
+#define SOF_TKN_CAVS_AUDIO_FORMAT_OUT_SAMPLE_TYPE 1938
+#define SOF_TKN_CAVS_AUDIO_FORMAT_IBS 1970
+#define SOF_TKN_CAVS_AUDIO_FORMAT_OBS 1971
+#define SOF_TKN_CAVS_AUDIO_FORMAT_DMA_BUFFER_SIZE 1972
+#define SOF_TKN_INTEL_COPIER_NODE_TYPE 1980
#endif
diff --git a/libc/kernel/uapi/sound/usb_stream.h b/libc/kernel/uapi/sound/usb_stream.h
index bb7fe80..ac87c31 100644
--- a/libc/kernel/uapi/sound/usb_stream.h
+++ b/libc/kernel/uapi/sound/usb_stream.h
@@ -49,7 +49,7 @@
unsigned inpacket_split_at;
unsigned next_inpacket_split;
unsigned next_inpacket_split_at;
- struct usb_stream_packet inpacket[0];
+ struct usb_stream_packet inpacket[];
};
enum usb_stream_state {
usb_stream_invalid,
diff --git a/libc/libc.map.txt b/libc/libc.map.txt
index dc1b6f6..4a4e607 100644
--- a/libc/libc.map.txt
+++ b/libc/libc.map.txt
@@ -1037,12 +1037,10 @@
strtold_l; # introduced=21
strtoll;
strtoll_l; # introduced=21
- strtoq; # introduced=21
strtoul;
strtoull;
strtoull_l; # introduced=21
strtoumax;
- strtouq; # introduced=21
strxfrm;
strxfrm_l; # introduced=21
swapoff; # introduced-arm=19 introduced-arm64=21 introduced-x86=19 introduced-x86_64=21
@@ -1520,34 +1518,34 @@
tss_set;
# Unwinder implementation
- __aeabi_unwind_cpp_pr0; # apex llndk arm
- __aeabi_unwind_cpp_pr1; # apex llndk arm
- __aeabi_unwind_cpp_pr2; # apex llndk arm
- __deregister_frame; # apex llndk arm64 x86 x86_64
- __gnu_unwind_frame; # apex llndk arm
- __register_frame; # apex llndk arm64 x86 x86_64
- _Unwind_Backtrace; # apex llndk
- _Unwind_Complete; # apex llndk arm
- _Unwind_DeleteException; # apex llndk
- _Unwind_Find_FDE; # apex llndk
- _Unwind_FindEnclosingFunction; # apex llndk
- _Unwind_ForcedUnwind; # apex llndk arm64 x86 x86_64
- _Unwind_GetCFA; # apex llndk
- _Unwind_GetDataRelBase; # apex llndk
- _Unwind_GetGR; # apex llndk
- _Unwind_GetIP; # apex llndk
- _Unwind_GetIPInfo; # apex llndk
- _Unwind_GetLanguageSpecificData; # apex llndk
- _Unwind_GetRegionStart; # apex llndk
- _Unwind_GetTextRelBase; # apex llndk
- _Unwind_RaiseException; # apex llndk
- _Unwind_Resume; # apex llndk
- _Unwind_Resume_or_Rethrow; # apex llndk
- _Unwind_SetGR; # apex llndk
- _Unwind_SetIP; # apex llndk
- _Unwind_VRS_Get; # apex llndk arm
- _Unwind_VRS_Pop; # apex llndk arm
- _Unwind_VRS_Set; # apex llndk arm
+ __aeabi_unwind_cpp_pr0; # arm
+ __aeabi_unwind_cpp_pr1; # arm
+ __aeabi_unwind_cpp_pr2; # arm
+ __deregister_frame; # arm64 x86 x86_64
+ __gnu_unwind_frame; # arm
+ __register_frame; # arm64 x86 x86_64
+ _Unwind_Backtrace;
+ _Unwind_Complete; # arm
+ _Unwind_DeleteException;
+ _Unwind_Find_FDE;
+ _Unwind_FindEnclosingFunction;
+ _Unwind_ForcedUnwind; # arm64 x86 x86_64
+ _Unwind_GetCFA;
+ _Unwind_GetDataRelBase;
+ _Unwind_GetGR;
+ _Unwind_GetIP;
+ _Unwind_GetIPInfo;
+ _Unwind_GetLanguageSpecificData;
+ _Unwind_GetRegionStart;
+ _Unwind_GetTextRelBase;
+ _Unwind_RaiseException;
+ _Unwind_Resume;
+ _Unwind_Resume_or_Rethrow;
+ _Unwind_SetGR;
+ _Unwind_SetIP;
+ _Unwind_VRS_Get; # arm
+ _Unwind_VRS_Pop; # arm
+ _Unwind_VRS_Set; # arm
} LIBC_Q;
LIBC_S { # introduced=S
diff --git a/libc/malloc_debug/PointerData.cpp b/libc/malloc_debug/PointerData.cpp
index 5ab2232..e3a35a6 100644
--- a/libc/malloc_debug/PointerData.cpp
+++ b/libc/malloc_debug/PointerData.cpp
@@ -26,6 +26,7 @@
* SUCH DAMAGE.
*/
+#include <cxxabi.h>
#include <errno.h>
#include <inttypes.h>
#include <signal.h>
@@ -54,8 +55,6 @@
#include "malloc_debug.h"
#include "UnwindBacktrace.h"
-extern "C" char* __cxa_demangle(const char*, char*, size_t*, int*);
-
std::atomic_uint8_t PointerData::backtrace_enabled_;
std::atomic_bool PointerData::backtrace_dump_;
@@ -617,8 +616,8 @@
if (frame.function_name.empty()) {
dprintf(fd, " \"\" 0}");
} else {
- char* demangled_name = __cxa_demangle(frame.function_name.c_str(), nullptr, nullptr,
- nullptr);
+ char* demangled_name =
+ abi::__cxa_demangle(frame.function_name.c_str(), nullptr, nullptr, nullptr);
const char* name;
if (demangled_name != nullptr) {
name = demangled_name;
diff --git a/libc/malloc_debug/UnwindBacktrace.cpp b/libc/malloc_debug/UnwindBacktrace.cpp
index c892a39..8a6ff7b 100644
--- a/libc/malloc_debug/UnwindBacktrace.cpp
+++ b/libc/malloc_debug/UnwindBacktrace.cpp
@@ -26,6 +26,7 @@
* SUCH DAMAGE.
*/
+#include <cxxabi.h>
#include <inttypes.h>
#include <pthread.h>
#include <stdint.h>
@@ -48,8 +49,6 @@
#define PAD_PTR "08" PRIx64
#endif
-extern "C" char* __cxa_demangle(const char*, char*, size_t*, int*);
-
bool Unwind(std::vector<uintptr_t>* frames, std::vector<unwindstack::FrameData>* frame_info,
size_t max_frames) {
[[clang::no_destroy]] static unwindstack::AndroidLocalUnwinder unwinder(
@@ -89,7 +88,8 @@
if (!info->function_name.empty()) {
line += " (";
- char* demangled_name = __cxa_demangle(info->function_name.c_str(), nullptr, nullptr, nullptr);
+ char* demangled_name =
+ abi::__cxa_demangle(info->function_name.c_str(), nullptr, nullptr, nullptr);
if (demangled_name != nullptr) {
line += demangled_name;
free(demangled_name);
diff --git a/libc/malloc_debug/backtrace.cpp b/libc/malloc_debug/backtrace.cpp
index ab5c505..ecb3a80 100644
--- a/libc/malloc_debug/backtrace.cpp
+++ b/libc/malloc_debug/backtrace.cpp
@@ -26,6 +26,7 @@
* SUCH DAMAGE.
*/
+#include <cxxabi.h>
#include <dlfcn.h>
#include <errno.h>
#include <inttypes.h>
@@ -48,8 +49,6 @@
typedef struct _Unwind_Context __unwind_context;
-extern "C" char* __cxa_demangle(const char*, char*, size_t*, int*);
-
static MapData g_map_data;
static const MapEntry* g_current_code_map = nullptr;
@@ -83,41 +82,24 @@
uintptr_t ip = _Unwind_GetIP(context);
- // The instruction pointer is pointing at the instruction after the return
- // call on all architectures.
- // Modify the pc to point at the real function.
- if (ip != 0) {
-#if defined(__arm__)
- // If the ip is suspiciously low, do nothing to avoid a segfault trying
- // to access this memory.
- if (ip >= 4096) {
- // Check bits [15:11] of the first halfword assuming the instruction
- // is 32 bits long. If the bits are any of these values, then our
- // assumption was correct:
- // b11101
- // b11110
- // b11111
- // Otherwise, this is a 16 bit instruction.
- uint16_t value = (*reinterpret_cast<uint16_t*>(ip - 2)) >> 11;
- if (value == 0x1f || value == 0x1e || value == 0x1d) {
- ip -= 4;
- } else {
- ip -= 2;
- }
- }
-#elif defined(__aarch64__)
- // All instructions are 4 bytes long, skip back one instruction.
- ip -= 4;
+ // `ip` is the address of the instruction *after* the call site in
+ // `context`, so we want to back up by one instruction. This is hard for
+ // every architecture except arm64, so we just make sure we're *inside*
+ // that instruction, not necessarily at the start of it. (If the value
+ // is too low to be valid, we just leave it alone.)
+ if (ip >= 4096) {
+#if defined(__aarch64__)
+ ip -= 4; // Exactly.
+#elif defined(__arm__) || defined(__riscv)
+ ip -= 2; // At least.
#elif defined(__i386__) || defined(__x86_64__)
- // It's difficult to decode exactly where the previous instruction is,
- // so subtract 1 to estimate where the instruction lives.
- ip--;
+ ip -= 1; // At least.
#endif
+ }
- // Do not record the frames that fall in our own shared library.
- if (g_current_code_map && (ip >= g_current_code_map->start) && ip < g_current_code_map->end) {
- return _URC_NO_REASON;
- }
+ // Do not record the frames that fall in our own shared library.
+ if (g_current_code_map && (ip >= g_current_code_map->start) && ip < g_current_code_map->end) {
+ return _URC_NO_REASON;
}
state->frames[state->cur_frame++] = ip;
@@ -162,7 +144,7 @@
char buf[1024];
if (symbol != nullptr) {
- char* demangled_name = __cxa_demangle(symbol, nullptr, nullptr, nullptr);
+ char* demangled_name = abi::__cxa_demangle(symbol, nullptr, nullptr, nullptr);
const char* name;
if (demangled_name != nullptr) {
name = demangled_name;
diff --git a/libc/tools/gensyscalls.py b/libc/tools/gensyscalls.py
index d3e6ef4..a525a98 100755
--- a/libc/tools/gensyscalls.py
+++ b/libc/tools/gensyscalls.py
@@ -333,10 +333,12 @@
class SysCallsTxtParser:
def __init__(self):
self.syscalls = []
- self.lineno = 0
+ self.lineno = 0
+ self.errors = False
def E(self, msg):
print("%d: %s" % (self.lineno, msg))
+ self.errors = True
def parse_line(self, line):
""" parse a syscall spec line.
@@ -443,6 +445,8 @@
if not line: continue
if line[0] == '#': continue
self.parse_line(line)
+ if self.errors:
+ sys.exit(1)
def parse_file(self, file_path):
with open(file_path) as fp:
diff --git a/libc/upstream-netbsd/android/include/netbsd-compat.h b/libc/upstream-netbsd/android/include/netbsd-compat.h
index 5dd086e..a625f06 100644
--- a/libc/upstream-netbsd/android/include/netbsd-compat.h
+++ b/libc/upstream-netbsd/android/include/netbsd-compat.h
@@ -43,6 +43,8 @@
#include <stddef.h>
int reallocarr(void*, size_t, size_t);
+#define __arraycount(a) (sizeof(a) / sizeof(a[0]))
+
/* Use appropriate shell depending on process's executable. */
__LIBC_HIDDEN__ extern const char* __bionic_get_shell_path();
#define _PATH_BSHELL __bionic_get_shell_path()
diff --git a/libc/upstream-netbsd/lib/libc/include/isc/list.h b/libc/upstream-netbsd/lib/libc/include/isc/list.h
index 46f2e79..76dc097 100644
--- a/libc/upstream-netbsd/lib/libc/include/isc/list.h
+++ b/libc/upstream-netbsd/lib/libc/include/isc/list.h
@@ -1,4 +1,4 @@
-/* $NetBSD: list.h,v 1.5 2009/04/12 17:07:16 christos Exp $ */
+/* $NetBSD: list.h,v 1.6 2022/04/19 20:32:15 rillig Exp $ */
/*
* Copyright (c) 2004 by Internet Systems Consortium, Inc. ("ISC")
@@ -23,14 +23,14 @@
#define LIST(type) struct { type *head, *tail; }
#define INIT_LIST(list) \
- do { (list).head = NULL; (list).tail = NULL; } while (/*CONSTCOND*/0)
+ do { (list).head = NULL; (list).tail = NULL; } while (0)
#define LINK(type) struct { type *prev, *next; }
#define INIT_LINK_TYPE(elt, link, type) \
do { \
(elt)->link.prev = (type *)(-1); \
(elt)->link.next = (type *)(-1); \
- } while (/*CONSTCOND*/0)
+ } while (0)
#define INIT_LINK(elt, link) \
INIT_LINK_TYPE(elt, link, void)
#define LINKED(elt, link) ((void *)((elt)->link.prev) != (void *)(-1) && \
@@ -50,7 +50,7 @@
(elt)->link.prev = NULL; \
(elt)->link.next = (list).head; \
(list).head = (elt); \
- } while (/*CONSTCOND*/0)
+ } while (0)
#define APPEND(list, elt, link) \
do { \
@@ -62,7 +62,7 @@
(elt)->link.prev = (list).tail; \
(elt)->link.next = NULL; \
(list).tail = (elt); \
- } while (/*CONSTCOND*/0)
+ } while (0)
#define UNLINK_TYPE(list, elt, link, type) \
do { \
@@ -80,7 +80,7 @@
(list).head = (elt)->link.next; \
} \
INIT_LINK_TYPE(elt, link, type); \
- } while (/*CONSTCOND*/0)
+ } while (0)
#define UNLINK(list, elt, link) \
UNLINK_TYPE(list, elt, link, void)
@@ -98,7 +98,7 @@
(elt)->link.prev->link.next = (elt); \
(elt)->link.next = (before); \
} \
- } while (/*CONSTCOND*/0)
+ } while (0)
#define INSERT_AFTER(list, after, elt, link) \
do { \
@@ -111,7 +111,7 @@
(elt)->link.next->link.prev = (elt); \
(elt)->link.prev = (after); \
} \
- } while (/*CONSTCOND*/0)
+ } while (0)
#define ENQUEUE(list, elt, link) APPEND(list, elt, link)
#define DEQUEUE(list, elt, link) UNLINK(list, elt, link)
diff --git a/libc/upstream-netbsd/lib/libc/regex/cclass.h b/libc/upstream-netbsd/lib/libc/regex/cclass.h
deleted file mode 100644
index 3ab2ccb..0000000
--- a/libc/upstream-netbsd/lib/libc/regex/cclass.h
+++ /dev/null
@@ -1,104 +0,0 @@
-/* $NetBSD: cclass.h,v 1.7 2003/08/07 16:43:19 agc Exp $ */
-
-/*-
- * Copyright (c) 1992, 1993, 1994
- * The Regents of the University of California. All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Henry Spencer.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * @(#)cclass.h 8.3 (Berkeley) 3/20/94
- */
-
-/*-
- * Copyright (c) 1992, 1993, 1994 Henry Spencer.
- *
- * This code is derived from software contributed to Berkeley by
- * Henry Spencer.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * @(#)cclass.h 8.3 (Berkeley) 3/20/94
- */
-
-/* character-class table */
-static const struct cclass {
- const char *name;
- const char *chars;
- const char *multis;
-} cclasses[] = {
- { "alnum", "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz\
-0123456789", "" },
- { "alpha", "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",
- "" },
- { "blank", " \t", "" },
- { "cntrl", "\007\b\t\n\v\f\r\1\2\3\4\5\6\16\17\20\21\22\23\24\
-\25\26\27\30\31\32\33\34\35\36\37\177", "" },
- { "digit", "0123456789", "" },
- { "graph", "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz\
-0123456789!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~",
- "" },
- { "lower", "abcdefghijklmnopqrstuvwxyz",
- "" },
- { "print", "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz\
-0123456789!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~ ",
- "" },
- { "punct", "!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~",
- "" },
- { "space", "\t\n\v\f\r ", "" },
- { "upper", "ABCDEFGHIJKLMNOPQRSTUVWXYZ",
- "" },
- { "xdigit", "0123456789ABCDEFabcdef",
- "" },
- { NULL, 0, "" }
-};
diff --git a/libc/upstream-netbsd/lib/libc/regex/cname.h b/libc/upstream-netbsd/lib/libc/regex/cname.h
index 4b9ef39..47e57ac 100644
--- a/libc/upstream-netbsd/lib/libc/regex/cname.h
+++ b/libc/upstream-netbsd/lib/libc/regex/cname.h
@@ -1,6 +1,9 @@
-/* $NetBSD: cname.h,v 1.7 2003/08/07 16:43:19 agc Exp $ */
+/* $NetBSD: cname.h,v 1.8 2021/02/23 22:14:59 christos Exp $ */
/*-
+ * SPDX-License-Identifier: BSD-3-Clause
+ *
+ * Copyright (c) 1992, 1993, 1994 Henry Spencer.
* Copyright (c) 1992, 1993, 1994
* The Regents of the University of California. All rights reserved.
*
@@ -32,144 +35,108 @@
* SUCH DAMAGE.
*
* @(#)cname.h 8.3 (Berkeley) 3/20/94
- */
-
-/*-
- * Copyright (c) 1992, 1993, 1994 Henry Spencer.
- *
- * This code is derived from software contributed to Berkeley by
- * Henry Spencer.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * @(#)cname.h 8.3 (Berkeley) 3/20/94
+ * $FreeBSD: head/lib/libc/regex/cname.h 326025 2017-11-20 19:49:47Z pfg $
*/
/* character-name table */
-static const struct cname {
+static struct cname {
const char *name;
char code;
} cnames[] = {
- { "NUL", '\0' },
- { "SOH", '\001' },
- { "STX", '\002' },
- { "ETX", '\003' },
- { "EOT", '\004' },
- { "ENQ", '\005' },
- { "ACK", '\006' },
- { "BEL", '\007' },
- { "alert", '\007' },
- { "BS", '\010' },
- { "backspace", '\b' },
- { "HT", '\011' },
- { "tab", '\t' },
- { "LF", '\012' },
- { "newline", '\n' },
- { "VT", '\013' },
- { "vertical-tab", '\v' },
- { "FF", '\014' },
- { "form-feed", '\f' },
- { "CR", '\015' },
- { "carriage-return", '\r' },
- { "SO", '\016' },
- { "SI", '\017' },
- { "DLE", '\020' },
- { "DC1", '\021' },
- { "DC2", '\022' },
- { "DC3", '\023' },
- { "DC4", '\024' },
- { "NAK", '\025' },
- { "SYN", '\026' },
- { "ETB", '\027' },
- { "CAN", '\030' },
- { "EM", '\031' },
- { "SUB", '\032' },
- { "ESC", '\033' },
- { "IS4", '\034' },
- { "FS", '\034' },
- { "IS3", '\035' },
- { "GS", '\035' },
- { "IS2", '\036' },
- { "RS", '\036' },
- { "IS1", '\037' },
- { "US", '\037' },
- { "space", ' ' },
- { "exclamation-mark", '!' },
- { "quotation-mark", '"' },
- { "number-sign", '#' },
- { "dollar-sign", '$' },
- { "percent-sign", '%' },
- { "ampersand", '&' },
- { "apostrophe", '\'' },
- { "left-parenthesis", '(' },
- { "right-parenthesis", ')' },
- { "asterisk", '*' },
- { "plus-sign", '+' },
- { "comma", ',' },
- { "hyphen", '-' },
- { "hyphen-minus", '-' },
- { "period", '.' },
- { "full-stop", '.' },
- { "slash", '/' },
- { "solidus", '/' },
- { "zero", '0' },
- { "one", '1' },
- { "two", '2' },
- { "three", '3' },
- { "four", '4' },
- { "five", '5' },
- { "six", '6' },
- { "seven", '7' },
- { "eight", '8' },
- { "nine", '9' },
- { "colon", ':' },
- { "semicolon", ';' },
- { "less-than-sign", '<' },
- { "equals-sign", '=' },
- { "greater-than-sign", '>' },
- { "question-mark", '?' },
- { "commercial-at", '@' },
- { "left-square-bracket", '[' },
- { "backslash", '\\' },
- { "reverse-solidus", '\\' },
- { "right-square-bracket", ']' },
- { "circumflex", '^' },
- { "circumflex-accent", '^' },
- { "underscore", '_' },
- { "low-line", '_' },
- { "grave-accent", '`' },
- { "left-brace", '{' },
- { "left-curly-bracket", '{' },
- { "vertical-line", '|' },
- { "right-brace", '}' },
- { "right-curly-bracket", '}' },
- { "tilde", '~' },
- { "DEL", '\177' },
- { NULL, 0 },
+ {"NUL", '\0'},
+ {"SOH", '\001'},
+ {"STX", '\002'},
+ {"ETX", '\003'},
+ {"EOT", '\004'},
+ {"ENQ", '\005'},
+ {"ACK", '\006'},
+ {"BEL", '\007'},
+ {"alert", '\007'},
+ {"BS", '\010'},
+ {"backspace", '\b'},
+ {"HT", '\011'},
+ {"tab", '\t'},
+ {"LF", '\012'},
+ {"newline", '\n'},
+ {"VT", '\013'},
+ {"vertical-tab", '\v'},
+ {"FF", '\014'},
+ {"form-feed", '\f'},
+ {"CR", '\015'},
+ {"carriage-return", '\r'},
+ {"SO", '\016'},
+ {"SI", '\017'},
+ {"DLE", '\020'},
+ {"DC1", '\021'},
+ {"DC2", '\022'},
+ {"DC3", '\023'},
+ {"DC4", '\024'},
+ {"NAK", '\025'},
+ {"SYN", '\026'},
+ {"ETB", '\027'},
+ {"CAN", '\030'},
+ {"EM", '\031'},
+ {"SUB", '\032'},
+ {"ESC", '\033'},
+ {"IS4", '\034'},
+ {"FS", '\034'},
+ {"IS3", '\035'},
+ {"GS", '\035'},
+ {"IS2", '\036'},
+ {"RS", '\036'},
+ {"IS1", '\037'},
+ {"US", '\037'},
+ {"space", ' '},
+ {"exclamation-mark", '!'},
+ {"quotation-mark", '"'},
+ {"number-sign", '#'},
+ {"dollar-sign", '$'},
+ {"percent-sign", '%'},
+ {"ampersand", '&'},
+ {"apostrophe", '\''},
+ {"left-parenthesis", '('},
+ {"right-parenthesis", ')'},
+ {"asterisk", '*'},
+ {"plus-sign", '+'},
+ {"comma", ','},
+ {"hyphen", '-'},
+ {"hyphen-minus", '-'},
+ {"period", '.'},
+ {"full-stop", '.'},
+ {"slash", '/'},
+ {"solidus", '/'},
+ {"zero", '0'},
+ {"one", '1'},
+ {"two", '2'},
+ {"three", '3'},
+ {"four", '4'},
+ {"five", '5'},
+ {"six", '6'},
+ {"seven", '7'},
+ {"eight", '8'},
+ {"nine", '9'},
+ {"colon", ':'},
+ {"semicolon", ';'},
+ {"less-than-sign", '<'},
+ {"equals-sign", '='},
+ {"greater-than-sign", '>'},
+ {"question-mark", '?'},
+ {"commercial-at", '@'},
+ {"left-square-bracket", '['},
+ {"backslash", '\\'},
+ {"reverse-solidus", '\\'},
+ {"right-square-bracket",']'},
+ {"circumflex", '^'},
+ {"circumflex-accent", '^'},
+ {"underscore", '_'},
+ {"low-line", '_'},
+ {"grave-accent", '`'},
+ {"left-brace", '{'},
+ {"left-curly-bracket", '{'},
+ {"vertical-line", '|'},
+ {"right-brace", '}'},
+ {"right-curly-bracket", '}'},
+ {"tilde", '~'},
+ {"DEL", '\177'},
+ {NULL, 0}
};
diff --git a/libc/upstream-netbsd/lib/libc/regex/engine.c b/libc/upstream-netbsd/lib/libc/regex/engine.c
index 2a800d4..ca8b24d 100644
--- a/libc/upstream-netbsd/lib/libc/regex/engine.c
+++ b/libc/upstream-netbsd/lib/libc/regex/engine.c
@@ -1,6 +1,9 @@
-/* $NetBSD: engine.c,v 1.24 2012/03/13 21:13:42 christos Exp $ */
+/* $NetBSD: engine.c,v 1.29 2021/02/25 21:47:46 christos Exp $ */
/*-
+ * SPDX-License-Identifier: BSD-3-Clause
+ *
+ * Copyright (c) 1992, 1993, 1994 Henry Spencer.
* Copyright (c) 1992, 1993, 1994
* The Regents of the University of California. All rights reserved.
*
@@ -34,42 +37,13 @@
* @(#)engine.c 8.5 (Berkeley) 3/20/94
*/
-/*-
- * Copyright (c) 1992, 1993, 1994 Henry Spencer.
- *
- * This code is derived from software contributed to Berkeley by
- * Henry Spencer.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * @(#)engine.c 8.5 (Berkeley) 3/20/94
- */
+#include <sys/cdefs.h>
+#ifdef __FBSDID
+__FBSDID("$FreeBSD: head/lib/libc/regex/engine.c 368358 2020-12-05 03:16:05Z kevans $");
+#endif
+__RCSID("$NetBSD: engine.c,v 1.29 2021/02/25 21:47:46 christos Exp $");
+
+#include <stdbool.h>
/*
* The matching engine and friends. This file is #included by regexec.c
@@ -79,28 +53,37 @@
*/
#ifdef SNAMES
+#define stepback sstepback
#define matcher smatcher
-#define fast sfast
-#define slow sslow
+#define walk swalk
#define dissect sdissect
#define backref sbackref
#define step sstep
#define print sprint
#define at sat
#define match smat
-#define nope snope
#endif
#ifdef LNAMES
+#define stepback lstepback
#define matcher lmatcher
-#define fast lfast
-#define slow lslow
+#define walk lwalk
#define dissect ldissect
#define backref lbackref
#define step lstep
#define print lprint
#define at lat
#define match lmat
-#define nope lnope
+#endif
+#ifdef MNAMES
+#define stepback mstepback
+#define matcher mmatcher
+#define walk mwalk
+#define dissect mdissect
+#define backref mbackref
+#define step mstep
+#define print mprint
+#define at mat
+#define match mmat
#endif
/* another structure passed up and down to avoid zillions of parameters */
@@ -118,6 +101,7 @@
states fresh; /* states for a fresh start */
states tmp; /* temporary */
states empty; /* empty set of states */
+ mbstate_t mbs; /* multibyte conversion state */
};
/* ========= begin header generated by ./mkh ========= */
@@ -128,27 +112,31 @@
/* === engine.c === */
static int matcher(struct re_guts *g, const char *string, size_t nmatch, regmatch_t pmatch[], int eflags);
static const char *dissect(struct match *m, const char *start, const char *stop, sopno startst, sopno stopst);
-static const char *backref(struct match *m, const char *start, const char *stop, sopno startst, sopno stopst, sopno lev);
-static const char *fast(struct match *m, const char *start, const char *stop, sopno startst, sopno stopst);
-static const char *slow(struct match *m, const char *start, const char *stop, sopno startst, sopno stopst);
-static states step(struct re_guts *g, sopno start, sopno stop, states bef, int ch, states aft);
-#define BOL (OUT+1)
-#define EOL (BOL+1)
-#define BOLEOL (BOL+2)
-#define NOTHING (BOL+3)
-#define BOW (BOL+4)
-#define EOW (BOL+5)
-#define CODEMAX (BOL+5) /* highest code used */
-#define NONCHAR(c) ((c) > CHAR_MAX)
-#define NNONCHAR (CODEMAX-CHAR_MAX)
+static const char *backref(struct match *m, const char *start, const char *stop, sopno startst, sopno stopst, sopno lev, int);
+static const char *walk(struct match *m, const char *start, const char *stop, sopno startst, sopno stopst, bool fast);
+static states step(struct re_guts *g, sopno start, sopno stop, states bef, wint_t ch, states aft, int sflags);
+#define MAX_RECURSION 100
+#define BOL (OUT-1)
+#define EOL (BOL-1)
+#define BOLEOL (BOL-2)
+#define NOTHING (BOL-3)
+#define BOW (BOL-4)
+#define EOW (BOL-5)
+#define BADCHAR (BOL-6)
+#define NWBND (BOL-7)
+#define NONCHAR(c) ((c) <= OUT)
+/* sflags */
+#define SBOS 0x0001
+#define SEOS 0x0002
+
#ifdef REDEBUG
-static void print(struct match *m, char *caption, states st, int ch, FILE *d);
+static void print(struct match *m, const char *caption, states st, int ch, FILE *d);
#endif
#ifdef REDEBUG
-static void at(struct match *m, char *title, char *start, char *stop, sopno startst, sopno stopst);
+static void at(struct match *m, const char *title, const char *start, const char *stop, sopno startst, sopno stopst);
#endif
#ifdef REDEBUG
-static char *pchar(int ch);
+static const char *pchar(int ch);
#endif
#ifdef __cplusplus
@@ -160,7 +148,6 @@
#define SP(t, s, c) print(m, t, s, c, stdout)
#define AT(t, p1, p2, s1, s2) at(m, t, p1, p2, s1, s2)
#define NOTE(str) { if (m->eflags®_TRACE) printf("=%s\n", (str)); }
-static int nope = 0;
#else
#define SP(t, s, c) /* nothing */
#define AT(t, p1, p2, s1, s2) /* nothing */
@@ -168,27 +155,70 @@
#endif
/*
+ * Given a multibyte string pointed to by start, step back nchar characters
+ * from current position pointed to by cur.
+ */
+static const char *
+stepback(const char *start, const char *cur, int nchar)
+{
+#ifdef NLS
+ const char *ret;
+ size_t wc, mbc;
+ mbstate_t mbs;
+ size_t clen;
+
+ if (MB_CUR_MAX == 1)
+ goto out;
+
+ ret = cur;
+ for (wc = nchar; wc > 0; wc--) {
+ for (mbc = 1; mbc <= MB_CUR_MAX; mbc++) {
+ if ((ret - mbc) < start)
+ return (NULL);
+ memset(&mbs, 0, sizeof(mbs));
+ clen = mbrtowc(NULL, ret - mbc, mbc, &mbs);
+ if (clen != (size_t)-1 && clen != (size_t)-2)
+ break;
+ }
+ if (mbc > MB_CUR_MAX)
+ return (NULL);
+ ret -= mbc;
+ }
+
+ return (ret);
+out:
+#endif
+ return (cur - nchar) > start ? cur - nchar : NULL;
+}
+
+/*
- matcher - the actual matching engine
- == static int matcher(struct re_guts *g, char *string, \
+ == static int matcher(struct re_guts *g, const char *string, \
== size_t nmatch, regmatch_t pmatch[], int eflags);
*/
static int /* 0 success, REG_NOMATCH failure */
-matcher(
- struct re_guts *g,
- const char *string,
- size_t nmatch,
- regmatch_t pmatch[],
- int eflags)
+matcher(struct re_guts *g,
+ const char *string,
+ size_t nmatch,
+ regmatch_t pmatch[],
+ int eflags)
{
const char *endp;
size_t i;
struct match mv;
struct match *m = &mv;
- const char *dp;
+ const char *dp = NULL;
const sopno gf = g->firststate+1; /* +1 for OEND */
const sopno gl = g->laststate;
const char *start;
const char *stop;
+ /* Boyer-Moore algorithms variables */
+ const char *pp;
+ size_t cj, mj;
+ const char *mustfirst;
+ const char *mustlast;
+ size_t *matchjump;
+ size_t *charjump;
int error = 0;
_DIAGASSERT(g != NULL);
@@ -211,12 +241,46 @@
/* prescreening; this does wonders for this rather slow code */
if (g->must != NULL) {
- for (dp = start; dp < stop; dp++)
- if (*dp == g->must[0] && (size_t)(stop - dp) >= g->mlen &&
- memcmp(dp, g->must, g->mlen) == 0)
- break;
- if (dp == stop) /* we didn't find g->must */
- return(REG_NOMATCH);
+ if (g->charjump != NULL && g->matchjump != NULL) {
+ mustfirst = g->must;
+ mustlast = g->must + g->mlen - 1;
+ charjump = g->charjump;
+ matchjump = g->matchjump;
+ pp = mustlast;
+ for (dp = start+g->mlen-1; dp < stop;) {
+ /* Fast skip non-matches */
+ while (dp < stop && charjump[(int)*dp])
+ dp += charjump[(int)*dp];
+
+ if (dp >= stop)
+ break;
+
+ /* Greedy matcher */
+ /* We depend on not being used for
+ * for strings of length 1
+ */
+ while (*--dp == *--pp && pp != mustfirst);
+
+ if (*dp == *pp)
+ break;
+
+ /* Jump to next possible match */
+ mj = matchjump[pp - mustfirst];
+ cj = charjump[(int)*dp];
+ dp += (cj < mj ? mj : cj);
+ pp = mustlast;
+ }
+ if (pp != mustfirst)
+ return(REG_NOMATCH);
+ } else {
+ for (dp = start; dp < stop; dp++)
+ if (*dp == g->must[0] &&
+ (size_t)(stop - dp) >= g->mlen &&
+ memcmp(dp, g->must, (size_t)g->mlen) == 0)
+ break;
+ if (dp == stop) /* we didn't find g->must */
+ return(REG_NOMATCH);
+ }
}
/* match struct setup */
@@ -233,10 +297,22 @@
SETUP(m->tmp);
SETUP(m->empty);
CLEAR(m->empty);
+ ZAPSTATE(&m->mbs);
+
+ /* Adjust start according to moffset, to speed things up */
+ if (dp != NULL && g->moffset > -1) {
+ const char *nstart;
+
+ nstart = stepback(start, dp, g->moffset);
+ if (nstart != NULL)
+ start = nstart;
+ }
+
+ SP("mloop", m->st, *start);
/* this loop does only one repetition except for backrefs */
for (;;) {
- endp = fast(m, start, stop, gf, gl);
+ endp = walk(m, start, stop, gf, gl, true);
if (endp == NULL) { /* a miss */
error = REG_NOMATCH;
goto done;
@@ -248,11 +324,12 @@
assert(m->coldp != NULL);
for (;;) {
NOTE("finding start");
- endp = slow(m, m->coldp, stop, gf, gl);
+ endp = walk(m, m->coldp, stop, gf, gl, false);
if (endp != NULL)
break;
assert(m->coldp < m->endp);
- m->coldp++;
+ m->coldp += XMBRTOWC(NULL, m->coldp,
+ (size_t)(m->endp - m->coldp), &m->mbs, 0);
}
if (nmatch == 1 && !g->backrefs)
break; /* no further info needed */
@@ -266,20 +343,20 @@
goto done;
}
for (i = 1; i <= m->g->nsub; i++)
- m->pmatch[i].rm_so = m->pmatch[i].rm_eo = (regoff_t)-1;
+ m->pmatch[i].rm_so = m->pmatch[i].rm_eo = -1;
if (!g->backrefs && !(m->eflags®_BACKR)) {
NOTE("dissecting");
dp = dissect(m, m->coldp, endp, gf, gl);
} else {
if (g->nplus > 0 && m->lastpos == NULL)
m->lastpos = malloc((g->nplus+1) *
- sizeof(const char *));
+ sizeof(const char *));
if (g->nplus > 0 && m->lastpos == NULL) {
error = REG_ESPACE;
goto done;
}
NOTE("backref dissect");
- dp = backref(m, m->coldp, endp, gf, gl, (sopno)0);
+ dp = backref(m, m->coldp, endp, gf, gl, (sopno)0, 0);
}
if (dp != NULL)
break;
@@ -291,7 +368,7 @@
if (dp != NULL || endp <= m->coldp)
break; /* defeat */
NOTE("backoff");
- endp = slow(m, m->coldp, endp-1, gf, gl);
+ endp = walk(m, m->coldp, endp-1, gf, gl, false);
if (endp == NULL)
break; /* defeat */
/* try it on a shorter possibility */
@@ -302,7 +379,7 @@
}
#endif
NOTE("backoff dissect");
- dp = backref(m, m->coldp, endp, gf, gl, (sopno)0);
+ dp = backref(m, m->coldp, endp, gf, gl, (sopno)0, 0);
}
assert(dp == NULL || dp == endp);
if (dp != NULL) /* found a shorter one */
@@ -310,7 +387,9 @@
/* despite initial appearances, there is no match here */
NOTE("false alarm");
- start = m->coldp + 1; /* recycle starting later */
+ /* recycle starting later */
+ start = m->coldp + XMBRTOWC(NULL, m->coldp,
+ (size_t)(stop - m->coldp), &m->mbs, 0);
assert(start <= stop);
}
@@ -337,7 +416,7 @@
m->pmatch = NULL;
}
if (m->lastpos != NULL) {
- free(m->lastpos);
+ free(__UNCONST(m->lastpos));
m->lastpos = NULL;
}
STATETEARDOWN(m);
@@ -349,29 +428,27 @@
== static const char *dissect(struct match *m, const char *start, \
== const char *stop, sopno startst, sopno stopst);
*/
-static const char * /* == stop (success) always */
+static const char * /* == stop (success) always */
dissect(
- struct match *m,
- const char *start,
- const char *stop,
- sopno startst,
- sopno stopst)
+ struct match *m,
+ const char *start,
+ const char *stop,
+ sopno startst,
+ sopno stopst)
{
int i;
- sopno ss; /* start sop of current subRE */
- sopno es; /* end sop of current subRE */
- const char *sp; /* start of string matched by it */
- const char *stp; /* string matched by it cannot pass here */
- const char *rest; /* start of rest of string */
- const char *tail; /* string unmatched by rest of RE */
- sopno ssub; /* start sop of subsubRE */
- sopno esub; /* end sop of subsubRE */
- const char *ssp; /* start of string matched by subsubRE */
- const char *sep; /* end of string matched by subsubRE */
- const char *oldssp; /* previous ssp */
-#ifndef NDEBUG
- const char *dp;
-#endif
+ sopno ss; /* start sop of current subRE */
+ sopno es; /* end sop of current subRE */
+ const char *sp; /* start of string matched by it */
+ const char *stp; /* string matched by it cannot pass here */
+ const char *rest; /* start of rest of string */
+ const char *tail; /* string unmatched by rest of RE */
+ sopno ssub; /* start sop of subsubRE */
+ sopno esub; /* end sop of subsubRE */
+ const char *ssp; /* start of string matched by subsubRE */
+ const char *sep; /* end of string matched by subsubRE */
+ const char *oldssp; /* previous ssp */
+ const char *dp __unused;
_DIAGASSERT(m != NULL);
_DIAGASSERT(start != NULL);
@@ -400,16 +477,22 @@
assert(nope);
break;
case OCHAR:
- sp++;
+ sp += XMBRTOWC(NULL, sp, (size_t)(stop - start),
+ &m->mbs, 0);
break;
case OBOL:
case OEOL:
case OBOW:
case OEOW:
+ case OBOS:
+ case OEOS:
+ case OWBND:
+ case ONWBND:
break;
case OANY:
case OANYOF:
- sp++;
+ sp += XMBRTOWC(NULL, sp, (size_t)(stop - start),
+ &m->mbs, 0);
break;
case OBACK_:
case O_BACK:
@@ -420,10 +503,10 @@
stp = stop;
for (;;) {
/* how long could this one be? */
- rest = slow(m, sp, stp, ss, es);
+ rest = walk(m, sp, stp, ss, es, false);
assert(rest != NULL); /* it did match */
/* could the rest match the rest? */
- tail = slow(m, rest, stop, es, stopst);
+ tail = walk(m, rest, stop, es, stopst, false);
if (tail == stop)
break; /* yes! */
/* no -- try a shorter match for this one */
@@ -433,13 +516,8 @@
ssub = ss + 1;
esub = es - 1;
/* did innards match? */
- if (slow(m, sp, rest, ssub, esub) != NULL) {
-#ifdef NDEBUG
- (void)
-#else
- dp =
-#endif
- dissect(m, sp, rest, ssub, esub);
+ if (walk(m, sp, rest, ssub, esub, false) != NULL) {
+ dp = dissect(m, sp, rest, ssub, esub);
assert(dp == rest);
} else /* no */
assert(sp == rest);
@@ -449,10 +527,10 @@
stp = stop;
for (;;) {
/* how long could this one be? */
- rest = slow(m, sp, stp, ss, es);
+ rest = walk(m, sp, stp, ss, es, false);
assert(rest != NULL); /* it did match */
/* could the rest match the rest? */
- tail = slow(m, rest, stop, es, stopst);
+ tail = walk(m, rest, stop, es, stopst, false);
if (tail == stop)
break; /* yes! */
/* no -- try a shorter match for this one */
@@ -464,7 +542,7 @@
ssp = sp;
oldssp = ssp;
for (;;) { /* find last match of innards */
- sep = slow(m, ssp, rest, ssub, esub);
+ sep = walk(m, ssp, rest, ssub, esub, false);
if (sep == NULL || sep == ssp)
break; /* failed or matched null */
oldssp = ssp; /* on to next try */
@@ -476,13 +554,8 @@
ssp = oldssp;
}
assert(sep == rest); /* must exhaust substring */
- assert(slow(m, ssp, sep, ssub, esub) == rest);
-#ifdef NDEBUG
- (void)
-#else
- dp =
-#endif
- dissect(m, ssp, sep, ssub, esub);
+ assert(walk(m, ssp, sep, ssub, esub, false) == rest);
+ dp = dissect(m, ssp, sep, ssub, esub);
assert(dp == sep);
sp = rest;
break;
@@ -490,10 +563,10 @@
stp = stop;
for (;;) {
/* how long could this one be? */
- rest = slow(m, sp, stp, ss, es);
+ rest = walk(m, sp, stp, ss, es, false);
assert(rest != NULL); /* it did match */
/* could the rest match the rest? */
- tail = slow(m, rest, stop, es, stopst);
+ tail = walk(m, rest, stop, es, stopst, false);
if (tail == stop)
break; /* yes! */
/* no -- try a shorter match for this one */
@@ -504,7 +577,7 @@
esub = ss + OPND(m->g->strip[ss]) - 1;
assert(OP(m->g->strip[esub]) == OOR1);
for (;;) { /* find first matching branch */
- if (slow(m, sp, rest, ssub, esub) == rest)
+ if (walk(m, sp, rest, ssub, esub, false) == rest)
break; /* it matched all of it */
/* that one missed, try next one */
assert(OP(m->g->strip[esub]) == OOR1);
@@ -517,12 +590,7 @@
else
assert(OP(m->g->strip[esub]) == O_CH);
}
-#ifdef NDEBUG
- (void)
-#else
- dp =
-#endif
- dissect(m, sp, rest, ssub, esub);
+ dp = dissect(m, sp, rest, ssub, esub);
assert(dp == rest);
sp = rest;
break;
@@ -553,6 +621,17 @@
return(sp);
}
+#define ISBOW(m, sp) \
+ (sp < m->endp && ISWORD(*sp) && \
+ ((sp == m->beginp && !(m->eflags®_NOTBOL)) || \
+ (sp > m->offp && !ISWORD(*(sp-1)))))
+#define ISEOW(m, sp) \
+ (((sp == m->endp && !(m->eflags®_NOTEOL)) || \
+ (sp < m->endp && *sp == '\n' && \
+ (m->g->cflags®_NEWLINE)) || \
+ (sp < m->endp && !ISWORD(*sp)) ) && \
+ (sp > m->beginp && ISWORD(*(sp-1)))) \
+
/*
- backref - figure out what matched what, figuring in back references
== static const char *backref(struct match *m, const char *start, \
@@ -560,25 +639,27 @@
*/
static const char * /* == stop (success) or NULL (failure) */
backref(
- struct match *m,
- const char *start,
- const char *stop,
- sopno startst,
- sopno stopst,
- sopno lev) /* PLUS nesting level */
+ struct match *m,
+ const char *start,
+ const char *stop,
+ sopno startst,
+ sopno stopst,
+ sopno lev, /* PLUS nesting level */
+ int rec)
{
int i;
- sopno ss; /* start sop of current subRE */
- const char *sp; /* start of string matched by it */
- sopno ssub; /* start sop of subsubRE */
- sopno esub; /* end sop of subsubRE */
- const char *ssp; /* start of string matched by subsubRE */
+ sopno ss; /* start sop of current subRE */
+ const char *sp; /* start of string matched by it */
+ sopno ssub; /* start sop of subsubRE */
+ sopno esub; /* end sop of subsubRE */
+ const char *ssp; /* start of string matched by subsubRE */
const char *dp;
size_t len;
int hard;
sop s;
regoff_t offsave;
cset *cs;
+ wint_t wc;
_DIAGASSERT(m != NULL);
_DIAGASSERT(start != NULL);
@@ -592,23 +673,46 @@
for (ss = startst; !hard && ss < stopst; ss++)
switch (OP(s = m->g->strip[ss])) {
case OCHAR:
- if (sp == stop || *sp++ != (char)OPND(s))
+ if (sp == stop)
+ return(NULL);
+ sp += XMBRTOWC(&wc, sp, (size_t)(stop - sp),
+ &m->mbs, BADCHAR);
+ if (wc != (wint_t)OPND(s))
return(NULL);
break;
case OANY:
if (sp == stop)
return(NULL);
- sp++;
+ sp += XMBRTOWC(&wc, sp, (size_t)(stop - sp),
+ &m->mbs, BADCHAR);
+ if (wc == BADCHAR)
+ return (NULL);
break;
case OANYOF:
+ if (sp == stop)
+ return (NULL);
cs = &m->g->sets[OPND(s)];
- if (sp == stop || !CHIN(cs, *sp++))
+ sp += XMBRTOWC(&wc, sp, (size_t)(stop - sp),
+ &m->mbs, BADCHAR);
+ if (wc == BADCHAR || !CHIN(cs, wc))
+ return(NULL);
+ break;
+ case OBOS:
+ if (sp == m->beginp && (m->eflags & REG_NOTBOL) == 0)
+ { /* yes */ }
+ else
+ return(NULL);
+ break;
+ case OEOS:
+ if (sp == m->endp && (m->eflags & REG_NOTEOL) == 0)
+ { /* yes */ }
+ else
return(NULL);
break;
case OBOL:
- if ( (sp == m->beginp && !(m->eflags®_NOTBOL)) ||
- (sp < m->endp && *(sp-1) == '\n' &&
- (m->g->cflags®_NEWLINE)) )
+ if ((sp == m->beginp && !(m->eflags®_NOTBOL)) ||
+ (sp > m->offp && sp < m->endp &&
+ *(sp-1) == '\n' && (m->g->cflags®_NEWLINE)))
{ /* yes */ }
else
return(NULL);
@@ -621,23 +725,29 @@
else
return(NULL);
break;
+ case OWBND:
+ if (ISBOW(m, sp) || ISEOW(m, sp))
+ { /* yes */ }
+ else
+ return(NULL);
+ break;
+ case ONWBND:
+ if (((sp == m->beginp) && !ISWORD(*sp)) ||
+ (sp == m->endp && !ISWORD(*(sp - 1))))
+ { /* yes, beginning/end of subject */ }
+ else if (ISWORD(*(sp - 1)) == ISWORD(*sp))
+ { /* yes, beginning/end of subject */ }
+ else
+ return(NULL);
+ break;
case OBOW:
- if (( (sp == m->beginp && !(m->eflags®_NOTBOL)) ||
- (sp < m->endp && *(sp-1) == '\n' &&
- (m->g->cflags®_NEWLINE)) ||
- (sp > m->beginp &&
- !ISWORD(*(sp-1))) ) &&
- (sp < m->endp && ISWORD(*sp)) )
+ if (ISBOW(m, sp))
{ /* yes */ }
else
return(NULL);
break;
case OEOW:
- if (( (sp == m->endp && !(m->eflags®_NOTEOL)) ||
- (sp < m->endp && *sp == '\n' &&
- (m->g->cflags®_NEWLINE)) ||
- (sp < m->endp && !ISWORD(*sp)) ) &&
- (sp > m->beginp && ISWORD(*(sp-1))) )
+ if (ISEOW(m, sp))
{ /* yes */ }
else
return(NULL);
@@ -671,50 +781,47 @@
case OBACK_: /* the vilest depths */
i = OPND(s);
assert(0 < i && i <= m->g->nsub);
- if (m->pmatch[i].rm_eo == (regoff_t)-1)
+ if (m->pmatch[i].rm_eo == -1)
return(NULL);
- assert(m->pmatch[i].rm_so != (regoff_t)-1);
- len = (size_t)(m->pmatch[i].rm_eo - m->pmatch[i].rm_so);
- if (len == 0)
+ assert(m->pmatch[i].rm_so != -1);
+ len = m->pmatch[i].rm_eo - m->pmatch[i].rm_so;
+ if (len == 0 && rec++ > MAX_RECURSION)
return(NULL);
assert(stop - m->beginp >= len);
if (sp > stop - len)
return(NULL); /* not enough left to match */
- ssp = m->offp + (size_t)m->pmatch[i].rm_so;
+ ssp = m->offp + m->pmatch[i].rm_so;
if (memcmp(sp, ssp, len) != 0)
return(NULL);
while (m->g->strip[ss] != SOP(O_BACK, i))
ss++;
- return(backref(m, sp+len, stop, ss+1, stopst, lev));
-
+ return(backref(m, sp+len, stop, ss+1, stopst, lev, rec));
case OQUEST_: /* to null or not */
- dp = backref(m, sp, stop, ss+1, stopst, lev);
+ dp = backref(m, sp, stop, ss+1, stopst, lev, rec);
if (dp != NULL)
return(dp); /* not */
- return(backref(m, sp, stop, ss+OPND(s)+1, stopst, lev));
-
+ return(backref(m, sp, stop, ss+OPND(s)+1, stopst, lev, rec));
case OPLUS_:
assert(m->lastpos != NULL);
assert(lev+1 <= m->g->nplus);
m->lastpos[lev+1] = sp;
- return(backref(m, sp, stop, ss+1, stopst, lev+1));
-
+ return(backref(m, sp, stop, ss+1, stopst, lev+1, rec));
case O_PLUS:
if (sp == m->lastpos[lev]) /* last pass matched null */
- return(backref(m, sp, stop, ss+1, stopst, lev-1));
+ return(backref(m, sp, stop, ss+1, stopst, lev-1, rec));
/* try another pass */
m->lastpos[lev] = sp;
- dp = backref(m, sp, stop, ss-OPND(s)+1, stopst, lev);
+ dp = backref(m, sp, stop, ss-OPND(s)+1, stopst, lev, rec);
if (dp == NULL)
- dp = backref(m, sp, stop, ss+1, stopst, lev-1);
- return(dp);
-
+ return(backref(m, sp, stop, ss+1, stopst, lev-1, rec));
+ else
+ return(dp);
case OCH_: /* find the right one, if any */
ssub = ss + 1;
esub = ss + OPND(s) - 1;
assert(OP(m->g->strip[esub]) == OOR1);
for (;;) { /* find first matching branch */
- dp = backref(m, sp, stop, ssub, esub, lev);
+ dp = backref(m, sp, stop, ssub, esub, lev, rec);
if (dp != NULL)
return(dp);
/* that one missed, try next one */
@@ -729,29 +836,28 @@
else
assert(OP(m->g->strip[esub]) == O_CH);
}
-
+ /* NOTREACHED */
+ break;
case OLPAREN: /* must undo assignment if rest fails */
i = OPND(s);
assert(0 < i && i <= m->g->nsub);
offsave = m->pmatch[i].rm_so;
m->pmatch[i].rm_so = sp - m->offp;
- dp = backref(m, sp, stop, ss+1, stopst, lev);
+ dp = backref(m, sp, stop, ss+1, stopst, lev, rec);
if (dp != NULL)
return(dp);
m->pmatch[i].rm_so = offsave;
return(NULL);
-
case ORPAREN: /* must undo assignment if rest fails */
i = OPND(s);
assert(0 < i && i <= m->g->nsub);
offsave = m->pmatch[i].rm_eo;
m->pmatch[i].rm_eo = sp - m->offp;
- dp = backref(m, sp, stop, ss+1, stopst, lev);
+ dp = backref(m, sp, stop, ss+1, stopst, lev, rec);
if (dp != NULL)
return(dp);
m->pmatch[i].rm_eo = offsave;
return(NULL);
-
default: /* uh oh */
assert(nope);
break;
@@ -760,141 +866,66 @@
/* "can't happen" */
assert(nope);
/* NOTREACHED */
- return NULL;
+ return "shut up gcc";
}
/*
- - fast - step through the string at top speed
- == static const char *fast(struct match *m, const char *start, \
- == const char *stop, sopno startst, sopno stopst);
+ - walk - step through the string either quickly or slowly
+ == static const char *walk(struct match *m, const char *start, \
+ == const char *stop, sopno startst, sopno stopst, bool fast);
*/
-static const char * /* where tentative match ended, or NULL */
-fast(
- struct match *m,
- const char *start,
- const char *stop,
- sopno startst,
- sopno stopst)
+static const char * /* where it ended, or NULL */
+walk(struct match *m, const char *start, const char *stop, sopno startst,
+ sopno stopst, bool fast)
{
states st = m->st;
states fresh = m->fresh;
- states tmp = m->tmp;
- const char *p = start;
- int c = (start == m->beginp) ? OUT : *(start-1);
- int lastc; /* previous c */
- int flagch;
- size_t i;
- const char *coldp; /* last p after which no match was underway */
-
- _DIAGASSERT(m != NULL);
- _DIAGASSERT(start != NULL);
- _DIAGASSERT(stop != NULL);
-
- CLEAR(st);
- SET1(st, startst);
- st = step(m->g, startst, stopst, st, NOTHING, st);
- ASSIGN(fresh, st);
- SP("start", st, *p);
- coldp = NULL;
- for (;;) {
- /* next character */
- lastc = c;
- c = (p == m->endp) ? OUT : *p;
- if (EQ(st, fresh))
- coldp = p;
-
- /* is there an EOL and/or BOL between lastc and c? */
- flagch = '\0';
- i = 0;
- if ( (lastc == '\n' && m->g->cflags®_NEWLINE) ||
- (lastc == OUT && !(m->eflags®_NOTBOL)) ) {
- flagch = BOL;
- i = m->g->nbol;
- }
- if ( (c == '\n' && m->g->cflags®_NEWLINE) ||
- (c == OUT && !(m->eflags®_NOTEOL)) ) {
- flagch = (flagch == BOL) ? BOLEOL : EOL;
- i += m->g->neol;
- }
- if (i != 0) {
- for (; i > 0; i--)
- st = step(m->g, startst, stopst, st, flagch, st);
- SP("boleol", st, c);
- }
-
- /* how about a word boundary? */
- if ( (flagch == BOL || (lastc != OUT && !ISWORD(lastc))) &&
- (c != OUT && ISWORD(c)) ) {
- flagch = BOW;
- }
- if ( (lastc != OUT && ISWORD(lastc)) &&
- (flagch == EOL || (c != OUT && !ISWORD(c))) ) {
- flagch = EOW;
- }
- if (flagch == BOW || flagch == EOW) {
- st = step(m->g, startst, stopst, st, flagch, st);
- SP("boweow", st, c);
- }
-
- /* are we done? */
- if (ISSET(st, stopst) || p == stop)
- break; /* NOTE BREAK OUT */
-
- /* no, we must deal with this character */
- ASSIGN(tmp, st);
- ASSIGN(st, fresh);
- assert(c != OUT);
- st = step(m->g, startst, stopst, tmp, c, st);
- SP("aft", st, c);
- assert(EQ(step(m->g, startst, stopst, st, NOTHING, st), st));
- p++;
- }
-
- assert(coldp != NULL);
- m->coldp = coldp;
- if (ISSET(st, stopst))
- return(p+1);
- else
- return(NULL);
-}
-
-/*
- - slow - step through the string more deliberately
- == static const char *slow(struct match *m, const char *start, \
- == const char *stop, sopno startst, sopno stopst);
- */
-static const char * /* where it ended */
-slow(
- struct match *m,
- const char *start,
- const char *stop,
- sopno startst,
- sopno stopst)
-{
- states st = m->st;
states empty = m->empty;
states tmp = m->tmp;
const char *p = start;
- int c = (start == m->beginp) ? OUT : *(start-1);
- int lastc; /* previous c */
- int flagch;
- size_t i;
+ wint_t c;
+ wint_t lastc; /* previous c */
+ wint_t flagch;
+ int sflags;
const char *matchp; /* last p at which a match ended */
+ size_t i, clen;
_DIAGASSERT(m != NULL);
_DIAGASSERT(start != NULL);
_DIAGASSERT(stop != NULL);
- AT("slow", start, stop, startst, stopst);
+ sflags = 0;
+ AT("walk", start, stop, startst, stopst);
CLEAR(st);
SET1(st, startst);
SP("sstart", st, *p);
- st = step(m->g, startst, stopst, st, NOTHING, st);
+ st = step(m->g, startst, stopst, st, NOTHING, st, sflags);
+ if (fast)
+ ASSIGN(fresh, st);
matchp = NULL;
+ if (start == m->offp || (start == m->beginp && !(m->eflags®_NOTBOL)))
+ c = OUT;
+ else {
+ /*
+ * XXX Wrong if the previous character was multi-byte.
+ * Newline never is (in encodings supported by FreeBSD),
+ * so this only breaks the ISWORD tests below.
+ */
+ c = (uch)*(start - 1);
+ }
for (;;) {
/* next character */
lastc = c;
- c = (p == m->endp) ? OUT : *p;
+ sflags = 0;
+ if (p == m->endp) {
+ c = OUT;
+ clen = 0;
+ } else
+ clen = XMBRTOWC(&c, p, (size_t)(m->endp - p),
+ &m->mbs, BADCHAR);
+
+ if (fast && EQ(st, fresh))
+ matchp = p;
/* is there an EOL and/or BOL between lastc and c? */
flagch = '\0';
@@ -909,9 +940,20 @@
flagch = (flagch == BOL) ? BOLEOL : EOL;
i += m->g->neol;
}
+ if (lastc == OUT && (m->eflags & REG_NOTBOL) == 0) {
+ sflags |= SBOS;
+ /* Step one more for BOS. */
+ i++;
+ }
+ if (c == OUT && (m->eflags & REG_NOTEOL) == 0) {
+ sflags |= SEOS;
+ /* Step one more for EOS. */
+ i++;
+ }
if (i != 0) {
for (; i > 0; i--)
- st = step(m->g, startst, stopst, st, flagch, st);
+ st = step(m->g, startst, stopst, st, flagch, st,
+ sflags);
SP("sboleol", st, c);
}
@@ -925,52 +967,78 @@
flagch = EOW;
}
if (flagch == BOW || flagch == EOW) {
- st = step(m->g, startst, stopst, st, flagch, st);
+ st = step(m->g, startst, stopst, st, flagch, st, sflags);
SP("sboweow", st, c);
}
+ if (lastc != OUT && c != OUT &&
+ ISWORD(lastc) == ISWORD(c)) {
+ flagch = NWBND;
+ } else if ((lastc == OUT && !ISWORD(c)) ||
+ (c == OUT && !ISWORD(lastc))) {
+ flagch = NWBND;
+ }
+ if (flagch == NWBND) {
+ st = step(m->g, startst, stopst, st, flagch, st, sflags);
+ SP("snwbnd", st, c);
+ }
/* are we done? */
- if (ISSET(st, stopst))
- matchp = p;
- if (EQ(st, empty) || p == stop)
+ if (ISSET(st, stopst)) {
+ if (fast)
+ break;
+ else
+ matchp = p;
+ }
+ if (EQ(st, empty) || p == stop || clen > (size_t)(stop - p))
break; /* NOTE BREAK OUT */
/* no, we must deal with this character */
ASSIGN(tmp, st);
- ASSIGN(st, empty);
+ if (fast)
+ ASSIGN(st, fresh);
+ else
+ ASSIGN(st, empty);
assert(c != OUT);
- st = step(m->g, startst, stopst, tmp, c, st);
+ st = step(m->g, startst, stopst, tmp, c, st, sflags);
SP("saft", st, c);
- assert(EQ(step(m->g, startst, stopst, st, NOTHING, st), st));
- p++;
+ assert(EQ(step(m->g, startst, stopst, st, NOTHING, st, sflags),
+ st));
+ p += clen;
}
- return(matchp);
+ if (fast) {
+ assert(matchp != NULL);
+ m->coldp = matchp;
+ if (ISSET(st, stopst))
+ return (p + XMBRTOWC(NULL, p, (size_t)(stop - p),
+ &m->mbs, 0));
+ else
+ return (NULL);
+ } else
+ return (matchp);
}
-
/*
- step - map set of states reachable before char to set reachable after
== static states step(struct re_guts *g, sopno start, sopno stop, \
== states bef, int ch, states aft);
- == #define BOL (OUT+1)
- == #define EOL (BOL+1)
- == #define BOLEOL (BOL+2)
- == #define NOTHING (BOL+3)
- == #define BOW (BOL+4)
- == #define EOW (BOL+5)
- == #define CODEMAX (BOL+5) // highest code used
- == #define NONCHAR(c) ((c) > CHAR_MAX)
- == #define NNONCHAR (CODEMAX-CHAR_MAX)
+ == #define BOL (OUT-1)
+ == #define EOL (BOL-1)
+ == #define BOLEOL (BOL-2)
+ == #define NOTHING (BOL-3)
+ == #define BOW (BOL-4)
+ == #define EOW (BOL-5)
+ == #define BADCHAR (BOL-6)
+ == #define NONCHAR(c) ((c) <= OUT)
*/
static states
-step(
- struct re_guts *g,
- sopno start, /* start state within strip */
- sopno stop, /* state after stop state within strip */
- states bef, /* states reachable before */
- int ch, /* character or NONCHAR code */
- states aft) /* states already known reachable after */
+step(struct re_guts *g,
+ sopno start, /* start state within strip */
+ sopno stop, /* state after stop state within strip */
+ states bef, /* states reachable before */
+ wint_t ch, /* character or NONCHAR code */
+ states aft, /* states already known reachable after */
+ int sflags) /* state flags */
{
cset *cs;
sop s;
@@ -989,8 +1057,16 @@
break;
case OCHAR:
/* only characters can match */
- assert(!NONCHAR(ch) || ch != (char)OPND(s));
- if (ch == (char)OPND(s))
+ assert(!NONCHAR(ch) || ch != OPND(s));
+ if (ch == (wint_t)OPND(s))
+ FWD(aft, bef, 1);
+ break;
+ case OBOS:
+ if ((ch == BOL || ch == BOLEOL) && (sflags & SBOS) != 0)
+ FWD(aft, bef, 1);
+ break;
+ case OEOS:
+ if ((ch == EOL || ch == BOLEOL) && (sflags & SEOS) != 0)
FWD(aft, bef, 1);
break;
case OBOL:
@@ -1009,6 +1085,14 @@
if (ch == EOW)
FWD(aft, bef, 1);
break;
+ case OWBND:
+ if (ch == BOW || ch == EOW)
+ FWD(aft, bef, 1);
+ break;
+ case ONWBND:
+ if (ch == NWBND)
+ FWD(aft, aft, 1);
+ break;
case OANY:
if (!NONCHAR(ch))
FWD(aft, bef, 1);
@@ -1054,10 +1138,10 @@
case OOR1: /* done a branch, find the O_CH */
if (ISSTATEIN(aft, here)) {
for (look = 1;
- OP(s = g->strip[pc+look]) != O_CH;
- look += OPND(s))
+ OP(s = g->strip[pc+look]) != O_CH;
+ look += OPND(s))
assert(OP(s) == OOR2);
- FWD(aft, aft, look);
+ FWD(aft, aft, look + 1);
}
break;
case OOR2: /* propagate OCH_'s marking */
@@ -1083,20 +1167,19 @@
/*
- print - print a set of states
== #ifdef REDEBUG
- == static void print(struct match *m, char *caption, states st, \
+ == static void print(struct match *m, const char *caption, states st, \
== int ch, FILE *d);
== #endif
*/
static void
-print(
- struct match *m,
- char *caption,
- states st,
- int ch,
- FILE *d)
+print(struct match *m,
+ const char *caption,
+ states st,
+ int ch,
+ FILE *d)
{
struct re_guts *g = m->g;
- int i;
+ sopno i;
int first = 1;
_DIAGASSERT(m != NULL);
@@ -1112,27 +1195,26 @@
fprintf(d, " %s", pchar(ch));
for (i = 0; i < g->nstates; i++)
if (ISSET(st, i)) {
- fprintf(d, "%s%d", (first) ? "\t" : ", ", i);
+ fprintf(d, "%s%lu", (first) ? "\t" : ", ", i);
first = 0;
}
fprintf(d, "\n");
}
-/*
+/*
- at - print current situation
== #ifdef REDEBUG
- == static void at(struct match *m, char *title, char *start, char *stop, \
- == sopno startst, sopno stopst);
+ == static void at(struct match *m, const char *title, const char *start, \
+ == const char *stop, sopno startst, sopno stopst);
== #endif
*/
static void
-at(
- struct match *m,
- char *title,
- char *start,
- char *stop,
- sopno startst,
- sopno stopst)
+at( struct match *m,
+ const char *title,
+ const char *start,
+ const char *stop,
+ sopno startst,
+ sopno stopst)
{
_DIAGASSERT(m != NULL);
@@ -1153,7 +1235,7 @@
/*
- pchar - make a character printable
== #ifdef REDEBUG
- == static char *pchar(int ch);
+ == static const char *pchar(int ch);
== #endif
*
* Is this identical to regchar() over in debug.c? Well, yes. But a
@@ -1161,28 +1243,26 @@
* a matching debug.o, and this is convenient. It all disappears in
* the non-debug compilation anyway, so it doesn't matter much.
*/
-static char * /* -> representation */
-pchar(
- int ch)
+static const char * /* -> representation */
+pchar(int ch)
{
static char pbuf[10];
- if (isprint(ch) || ch == ' ')
- (void)snprintf(pbuf, sizeof pbuf, "%c", ch);
+ if (isprint((uch)ch) || ch == ' ')
+ snprintf(pbuf, sizeof(pbuf), "%c", ch);
else
- (void)snprintf(pbuf, sizeof pbuf, "\\%o", ch);
+ snprintf(pbuf, sizeof(pbuf), "\\%o", ch);
return(pbuf);
}
#endif
#endif
+#undef stepback
#undef matcher
-#undef fast
-#undef slow
+#undef walk
#undef dissect
#undef backref
#undef step
#undef print
#undef at
#undef match
-#undef nope
diff --git a/libc/upstream-netbsd/lib/libc/regex/regcomp.c b/libc/upstream-netbsd/lib/libc/regex/regcomp.c
index 4a0d99a..957f8ac 100644
--- a/libc/upstream-netbsd/lib/libc/regex/regcomp.c
+++ b/libc/upstream-netbsd/lib/libc/regex/regcomp.c
@@ -1,9 +1,17 @@
-/* $NetBSD: regcomp.c,v 1.38 2019/02/07 22:22:31 christos Exp $ */
+/* $NetBSD: regcomp.c,v 1.46 2021/03/11 15:00:29 christos Exp $ */
/*-
+ * SPDX-License-Identifier: BSD-3-Clause
+ *
+ * Copyright (c) 1992, 1993, 1994 Henry Spencer.
* Copyright (c) 1992, 1993, 1994
* The Regents of the University of California. All rights reserved.
*
+ * Copyright (c) 2011 The FreeBSD Foundation
+ * All rights reserved.
+ * Portions of this software were developed by David Chisnall
+ * under sponsorship from the FreeBSD Foundation.
+ *
* This code is derived from software contributed to Berkeley by
* Henry Spencer.
*
@@ -34,74 +42,65 @@
* @(#)regcomp.c 8.5 (Berkeley) 3/20/94
*/
-/*-
- * Copyright (c) 1992, 1993, 1994 Henry Spencer.
- *
- * This code is derived from software contributed to Berkeley by
- * Henry Spencer.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * @(#)regcomp.c 8.5 (Berkeley) 3/20/94
- */
+#if HAVE_NBTOOL_CONFIG_H
+#include "nbtool_config.h"
+#endif
#include <sys/cdefs.h>
-#if defined(LIBC_SCCS) && !defined(lint)
#if 0
static char sccsid[] = "@(#)regcomp.c 8.5 (Berkeley) 3/20/94";
-#else
-__RCSID("$NetBSD: regcomp.c,v 1.38 2019/02/07 22:22:31 christos Exp $");
+__FBSDID("$FreeBSD: head/lib/libc/regex/regcomp.c 368359 2020-12-05 03:18:48Z kevans $");
#endif
-#endif /* LIBC_SCCS and not lint */
+__RCSID("$NetBSD: regcomp.c,v 1.46 2021/03/11 15:00:29 christos Exp $");
+
+#define _OPENBSD_SOURCE
+
+#ifndef LIBHACK
+#define REGEX_GNU_EXTENSIONS
#include "namespace.h"
+#endif
#include <sys/types.h>
-
-#include <assert.h>
+#include <stdio.h>
+#include <string.h>
#include <ctype.h>
#include <limits.h>
-#include <stdio.h>
#include <stdlib.h>
-#include <string.h>
#include <regex.h>
+#include <stdbool.h>
-#ifdef __weak_alias
+#if defined(__weak_alias) && !defined(LIBHACK)
__weak_alias(regcomp,_regcomp)
#endif
+#ifdef REGEX_LIBC_COLLATE
+#include "collate.h"
+#endif
+
#include "utils.h"
#include "regex2.h"
-#include "cclass.h"
#include "cname.h"
/*
+ * Branching context, used to keep track of branch state for all of the branch-
+ * aware functions. In addition to keeping track of branch positions for the
+ * p_branch_* functions, we use this to simplify some clumsiness in BREs for
+ * detection of whether ^ is acting as an anchor or being used erroneously and
+ * also for whether we're in a sub-expression or not.
+ */
+struct branchc {
+ sopno start;
+ sopno back;
+ sopno fwd;
+
+ int nbranch;
+ int nchain;
+ bool outer;
+ bool terminate;
+};
+
+/*
* parse structure, passed up and down to avoid global variables and
* other clumsinesses
*/
@@ -109,6 +108,7 @@
const char *next; /* next character in RE */
const char *end; /* end of string (-> NUL normally) */
int error; /* has an error been seen? */
+ int gnuext;
sop *strip; /* malloced strip */
sopno ssize; /* malloced strip size (allocated) */
sopno slen; /* malloced strip length (used) */
@@ -117,56 +117,70 @@
# define NPAREN 10 /* we need to remember () 1-9 for back refs */
sopno pbegin[NPAREN]; /* -> ( ([0] unused) */
sopno pend[NPAREN]; /* -> ) ([0] unused) */
+ bool allowbranch; /* can this expression branch? */
+ bool bre; /* convenience; is this a BRE? */
+ int pflags; /* other parsing flags -- legacy escapes? */
+ bool (*parse_expr)(struct parse *, struct branchc *);
+ void (*pre_parse)(struct parse *, struct branchc *);
+ void (*post_parse)(struct parse *, struct branchc *);
};
+#define PFLAG_LEGACY_ESC 0x00000001
+
/* ========= begin header generated by ./mkh ========= */
#ifdef __cplusplus
extern "C" {
#endif
/* === regcomp.c === */
-static void p_ere(struct parse *p, int stop, size_t reclimit);
-static void p_ere_exp(struct parse *p, size_t reclimit);
+static bool p_ere_exp(struct parse *p, struct branchc *bc);
static void p_str(struct parse *p);
-static void p_bre(struct parse *p, int end1, int end2, size_t reclimit);
-static int p_simp_re(struct parse *p, int starordinary, size_t reclimit);
+static int p_branch_eat_delim(struct parse *p, struct branchc *bc);
+static void p_branch_ins_offset(struct parse *p, struct branchc *bc);
+static void p_branch_fix_tail(struct parse *p, struct branchc *bc);
+static bool p_branch_empty(struct parse *p, struct branchc *bc);
+static bool p_branch_do(struct parse *p, struct branchc *bc);
+static void p_bre_pre_parse(struct parse *p, struct branchc *bc);
+static void p_bre_post_parse(struct parse *p, struct branchc *bc);
+static void p_re(struct parse *p, int end1, int end2);
+static bool p_simp_re(struct parse *p, struct branchc *bc);
static int p_count(struct parse *p);
static void p_bracket(struct parse *p);
+static int p_range_cmp(wchar_t c1, wchar_t c2);
static void p_b_term(struct parse *p, cset *cs);
+#ifdef REGEX_GNU_EXTENSIONS
+static int p_b_pseudoclass(struct parse *p, char c);
+#endif
static void p_b_cclass(struct parse *p, cset *cs);
+static void p_b_cclass_named(struct parse *p, cset *cs, const char[]);
static void p_b_eclass(struct parse *p, cset *cs);
-static char p_b_symbol(struct parse *p);
-static char p_b_coll_elem(struct parse *p, int endc);
-static int othercase(int ch);
-static void bothcases(struct parse *p, int ch);
-static void ordinary(struct parse *p, int ch);
+static wint_t p_b_symbol(struct parse *p);
+static wint_t p_b_coll_elem(struct parse *p, wint_t endc);
+static bool may_escape(struct parse *p, const wint_t ch);
+static wint_t othercase(wint_t ch);
+static void bothcases(struct parse *p, wint_t ch);
+static void ordinary(struct parse *p, wint_t ch);
static void nonnewline(struct parse *p);
-static void repeat(struct parse *p, sopno start, int from, int to, size_t reclimit);
+static void repeat(struct parse *p, sopno start, int from, int to);
static int seterr(struct parse *p, int e);
static cset *allocset(struct parse *p);
static void freeset(struct parse *p, cset *cs);
-static sopno freezeset(struct parse *p, cset *cs);
-static int firstch(struct parse *p, cset *cs);
-static int nch(struct parse *p, cset *cs);
-static void mcadd(struct parse *p, cset *cs, const char *cp);
-#if 0
-static void mcsub(cset *cs, char *cp);
-static int mcin(cset *cs, char *cp);
-static char *mcfind(cset *cs, char *cp);
-#endif
-static void mcinvert(struct parse *p, cset *cs);
-static void mccase(struct parse *p, cset *cs);
-static int isinsets(struct re_guts *g, int c);
-static int samesets(struct re_guts *g, int c1, int c2);
-static void categorize(struct parse *p, struct re_guts *g);
+static void CHadd(struct parse *p, cset *cs, wint_t ch);
+static void CHaddrange(struct parse *p, cset *cs, wint_t min, wint_t max);
+static void CHaddtype(struct parse *p, cset *cs, wctype_t wct);
+static wint_t singleton(cset *cs);
static sopno dupl(struct parse *p, sopno start, sopno finish);
-static void doemit(struct parse *p, sop op, sopno opnd);
-static void doinsert(struct parse *p, sop op, sopno opnd, sopno pos);
-static void dofwd(struct parse *p, sopno pos, sopno value);
+static void doemit(struct parse *p, sop op, size_t opnd);
+static void doinsert(struct parse *p, sop op, size_t opnd, sopno pos);
+static void dofwd(struct parse *p, sopno pos, sop value);
static int enlarge(struct parse *p, sopno size);
static void stripsnug(struct parse *p, struct re_guts *g);
static void findmust(struct parse *p, struct re_guts *g);
+static int altoffset(sop *scan, int offset);
+static void computejumps(struct parse *p, struct re_guts *g);
+static void computematchjumps(struct parse *p, struct re_guts *g);
static sopno pluscount(struct parse *p, struct re_guts *g);
+static wint_t wgetnext(struct parse *p);
#ifdef __cplusplus
}
@@ -185,19 +199,22 @@
#define MORE2() (p->next+1 < p->end)
#define SEE(c) (MORE() && PEEK() == (c))
#define SEETWO(a, b) (MORE() && MORE2() && PEEK() == (a) && PEEK2() == (b))
+#define SEESPEC(a) (p->bre ? SEETWO('\\', a) : SEE(a))
#define EAT(c) ((SEE(c)) ? (NEXT(), 1) : 0)
#define EATTWO(a, b) ((SEETWO(a, b)) ? (NEXT2(), 1) : 0)
+#define EATSPEC(a) (p->bre ? EATTWO('\\', a) : EAT(a))
#define NEXT() (p->next++)
#define NEXT2() (p->next += 2)
#define NEXTn(n) (p->next += (n))
#define GETNEXT() (*p->next++)
+#define WGETNEXT() wgetnext(p)
#define SETERROR(e) seterr(p, (e))
-#define REQUIRE(co, e) (void) ((co) || SETERROR(e))
+#define REQUIRE(co, e) ((co) || SETERROR(e))
#define MUSTSEE(c, e) (REQUIRE(MORE() && PEEK() == (c), e))
-#define MUSTEAT(c, e) (void) (REQUIRE(MORE() && GETNEXT() == (c), e))
+#define MUSTEAT(c, e) (REQUIRE(MORE() && GETNEXT() == (c), e))
#define MUSTNOTSEE(c, e) (REQUIRE(!MORE() || PEEK() != (c), e))
-#define EMIT(op, sopnd) doemit(p, (sop)(op), sopnd)
-#define INSERT(op, pos) doinsert(p, (sop)(op), HERE()-(pos)+1, pos)
+#define EMIT(op, sopnd) doemit(p, (op), (sopnd))
+#define INSERT(op, pos) doinsert(p, (op), HERE()-(pos)+1, pos)
#define AHEAD(pos) dofwd(p, pos, HERE()-(pos))
#define ASTERN(sop, pos) EMIT(sop, HERE()-pos)
#define HERE() (p->slen)
@@ -205,42 +222,62 @@
#define THERETHERE() (p->slen - 2)
#define DROP(n) (p->slen -= (n))
-#ifndef NDEBUG
-static int never = 0; /* for use in asserts; shuts lint up */
-#else
-#define never 0 /* some <assert.h>s have bugs too */
+/* Macro used by computejump()/computematchjump() */
+#ifndef MIN
+#define MIN(a,b) ((a)<(b)?(a):(b))
#endif
-#define MEMLIMIT 0x8000000
-#define MEMSIZE(p) \
- ((p)->ncsalloc / CHAR_BIT * (p)->g->csetsize + \
- (p)->ncsalloc * sizeof(cset) + \
- (p)->ssize * sizeof(sop))
-#define RECLIMIT 256
+#ifndef NLS
+static const struct {
+ const char *name;
+ int (*func)(int);
+} wctypes[] = {
+#define ADD(x) { .name = # x, .func = is ## x }
+ ADD(alnum),
+ ADD(alpha),
+ ADD(blank),
+ ADD(cntrl),
+ ADD(digit),
+ ADD(graph),
+ ADD(lower),
+ ADD(print),
+ ADD(punct),
+ ADD(space),
+ ADD(upper),
+ ADD(xdigit),
+#undef ADD
+};
-/*
- - regcomp - interface for parser and compilation
- = extern int regcomp(regex_t *, const char *, int);
- = #define REG_BASIC 0000
- = #define REG_EXTENDED 0001
- = #define REG_ICASE 0002
- = #define REG_NOSUB 0004
- = #define REG_NEWLINE 0010
- = #define REG_NOSPEC 0020
- = #define REG_PEND 0040
- = #define REG_DUMP 0200
- */
-int /* 0 success, otherwise REG_something */
-regcomp(
- regex_t *preg,
- const char *pattern,
- int cflags)
+wctype_t
+__regex_wctype(const char *str)
+{
+ for (size_t i = 0; i < __arraycount(wctypes); i++) {
+ if (strcmp(wctypes[i].name, str) == 0)
+ return (wctype_t)(i + 1);
+ }
+ return (wctype_t)0;
+}
+
+int
+__regex_iswctype(wint_t c, wctype_t ct)
+{
+ if (ct == 0)
+ return 0;
+ return (*wctypes[ct - 1].func)(c);
+}
+#endif
+
+static int /* 0 success, otherwise REG_something */
+regcomp_internal(regex_t * __restrict preg,
+ const char * __restrict pattern,
+ int cflags, int pflags)
{
struct parse pa;
struct re_guts *g;
struct parse *p = &pa;
int i;
size_t len;
+ size_t maxlen;
#ifdef REDEBUG
# define GOODFLAGS(f) (f)
#else
@@ -262,11 +299,27 @@
len = strlen(pattern);
/* do the mallocs early so failure handling is easy */
- g = malloc(sizeof(struct re_guts) + (NC - 1) * sizeof(cat_t));
+ g = malloc(sizeof(*g));
if (g == NULL)
return(REG_ESPACE);
- p->ssize = len/(size_t)2*(size_t)3 + (size_t)1; /* ugh */
- p->strip = calloc(p->ssize, sizeof(sop));
+ /*
+ * Limit the pattern space to avoid a 32-bit overflow on buffer
+ * extension. Also avoid any signed overflow in case of conversion
+ * so make the real limit based on a 31-bit overflow.
+ *
+ * Likely not applicable on 64-bit systems but handle the case
+ * generically (who are we to stop people from using ~715MB+
+ * patterns?).
+ */
+ maxlen = ((size_t)-1 >> 1) / sizeof(*p->strip) * 2 / 3;
+ if (len >= maxlen) {
+ free(g);
+ return(REG_ESPACE);
+ }
+ p->ssize = (sopno)(len / 2 * 3 + 1); /* ugh */
+ assert(p->ssize >= len);
+
+ p->strip = calloc(p->ssize, sizeof(*p->strip));
p->slen = 0;
if (p->strip == NULL) {
free(g);
@@ -275,46 +328,74 @@
/* set things up */
p->g = g;
- p->next = pattern;
+ p->next = pattern; /* convenience; we do not modify it */
p->end = p->next + len;
p->error = 0;
p->ncsalloc = 0;
+ p->pflags = pflags;
for (i = 0; i < NPAREN; i++) {
p->pbegin[i] = 0;
p->pend[i] = 0;
}
- g->csetsize = NC;
+#ifdef REGEX_GNU_EXTENSIONS
+ if ((cflags & REG_GNU) == 0) {
+ p->gnuext = false;
+ p->allowbranch = (cflags & REG_EXTENDED) != 0;
+ } else
+ p->gnuext = p->allowbranch = true;
+#else
+ p->gnuext = false;
+ p->allowbranch = (cflags & REG_EXTENDED) != 0;
+#endif
+ if (cflags & REG_EXTENDED) {
+ p->bre = false;
+ p->parse_expr = p_ere_exp;
+ p->pre_parse = NULL;
+ p->post_parse = NULL;
+ } else {
+ p->bre = true;
+ p->parse_expr = p_simp_re;
+ p->pre_parse = p_bre_pre_parse;
+ p->post_parse = p_bre_post_parse;
+ }
g->sets = NULL;
- g->setbits = NULL;
g->ncsets = 0;
g->cflags = cflags;
g->iflags = 0;
g->nbol = 0;
g->neol = 0;
g->must = NULL;
+ g->moffset = -1;
+ g->charjump = NULL;
+ g->matchjump = NULL;
g->mlen = 0;
g->nsub = 0;
- g->ncategories = 1; /* category 0 is "everything else" */
- g->categories = &g->catspace[-(CHAR_MIN)];
- (void) memset((char *)g->catspace, 0, NC*sizeof(cat_t));
g->backrefs = 0;
/* do it */
EMIT(OEND, 0);
g->firststate = THERE();
- if (cflags®_EXTENDED)
- p_ere(p, OUT, 0);
- else if (cflags®_NOSPEC)
+ if (cflags & REG_NOSPEC)
p_str(p);
else
- p_bre(p, OUT, OUT, 0);
+ p_re(p, OUT, OUT);
EMIT(OEND, 0);
g->laststate = THERE();
/* tidy up loose ends and fill things in */
- categorize(p, g);
stripsnug(p, g);
findmust(p, g);
+ /* only use Boyer-Moore algorithm if the pattern is bigger
+ * than three characters
+ */
+ if(g->mlen > 3) {
+ computejumps(p, g);
+ computematchjumps(p, g);
+ if(g->matchjump == NULL && g->charjump != NULL) {
+ free(g->charjump);
+ g->charjump = NULL;
+ }
+ }
g->nplus = pluscount(p, g);
g->magic = MAGIC2;
preg->re_nsub = g->nsub;
@@ -333,97 +414,72 @@
}
/*
- - p_ere - ERE parser top level, concatenation and alternation
- == static void p_ere(struct parse *p, int stop, size_t reclimit);
+ - regcomp - interface for parser and compilation
+ = extern int regcomp(regex_t *, const char *, int);
+ = #define REG_BASIC 0000
+ = #define REG_EXTENDED 0001
+ = #define REG_ICASE 0002
+ = #define REG_NOSUB 0004
+ = #define REG_NEWLINE 0010
+ = #define REG_NOSPEC 0020
+ = #define REG_PEND 0040
+ = #define REG_DUMP 0200
*/
-static void
-p_ere(
- struct parse *p,
- int stop, /* character this ERE should end at */
- size_t reclimit)
+int /* 0 success, otherwise REG_something */
+regcomp(regex_t * __restrict preg,
+ const char * __restrict pattern,
+ int cflags)
{
- char c;
- sopno prevback = 0; /* pacify gcc */
- sopno prevfwd = 0; /* pacify gcc */
- sopno conc;
- int first = 1; /* is this the first alternative? */
- _DIAGASSERT(p != NULL);
-
- if (reclimit++ > RECLIMIT || p->error == REG_ESPACE) {
- p->error = REG_ESPACE;
- return;
- }
-
- for (;;) {
- /* do a bunch of concatenated expressions */
- conc = HERE();
- while (MORE() && (c = PEEK()) != '|' && c != stop)
- p_ere_exp(p, reclimit);
- REQUIRE(HERE() != conc, REG_EMPTY); /* require nonempty */
-
- if (!EAT('|'))
- break; /* NOTE BREAK OUT */
-
- if (first) {
- INSERT(OCH_, conc); /* offset is wrong */
- prevfwd = conc;
- prevback = conc;
- first = 0;
- }
- ASTERN(OOR1, prevback);
- prevback = THERE();
- AHEAD(prevfwd); /* fix previous offset */
- prevfwd = HERE();
- EMIT(OOR2, 0); /* offset is very wrong */
- }
-
- if (!first) { /* tail-end fixups */
- AHEAD(prevfwd);
- ASTERN(O_CH, prevback);
- }
-
- assert(!MORE() || SEE(stop));
+ return (regcomp_internal(preg, pattern, cflags, 0));
}
/*
- - p_ere_exp - parse one subERE, an atom possibly followed by a repetition op
- == static void p_ere_exp(struct parse *p, size_t reclimit);
+ - p_ere_exp - parse one subERE, an atom possibly followed by a repetition op,
+ - return whether we should terminate or not
+ == static bool p_ere_exp(struct parse *p);
*/
-static void
-p_ere_exp(
- struct parse *p,
- size_t reclimit)
+static bool
+p_ere_exp(struct parse *p, struct branchc *bc)
{
char c;
+ wint_t wc;
sopno pos;
int count;
int count2;
+#ifdef REGEX_GNU_EXTENSIONS
+ size_t i;
+ int handled;
+#endif
sopno subno;
int wascaret = 0;
_DIAGASSERT(p != NULL);
+ (void)bc;
assert(MORE()); /* caller should have ensured this */
c = GETNEXT();
+#ifdef REGEX_GNU_EXTENSIONS
+ handled = 0;
+#endif
pos = HERE();
switch (c) {
case '(':
- REQUIRE(MORE(), REG_EPAREN);
+ (void)REQUIRE(MORE(), REG_EPAREN);
p->g->nsub++;
- subno = p->g->nsub;
+ subno = (sopno)p->g->nsub;
if (subno < NPAREN)
p->pbegin[subno] = HERE();
EMIT(OLPAREN, subno);
if (!SEE(')'))
- p_ere(p, ')', reclimit);
+ p_re(p, ')', IGN);
if (subno < NPAREN) {
p->pend[subno] = HERE();
assert(p->pend[subno] != 0);
}
EMIT(ORPAREN, subno);
- MUSTEAT(')', REG_EPAREN);
+ (void)MUSTEAT(')', REG_EPAREN);
break;
#ifndef POSIX_MISTAKE
case ')': /* happens only if no current unmatched ( */
@@ -454,6 +510,7 @@
case '*':
case '+':
case '?':
+ case '{':
SETERROR(REG_BADRPT);
break;
case '.':
@@ -466,30 +523,118 @@
p_bracket(p);
break;
case '\\':
- REQUIRE(MORE(), REG_EESCAPE);
- c = GETNEXT();
- ordinary(p, c);
+ (void)REQUIRE(MORE(), REG_EESCAPE);
+ wc = WGETNEXT();
+#ifdef REGEX_GNU_EXTENSIONS
+ if (p->gnuext) {
+ handled = 1;
+ switch (wc) {
+ case '`':
+ EMIT(OBOS, 0);
+ break;
+ case '\'':
+ EMIT(OEOS, 0);
+ break;
+ case 'B':
+ EMIT(ONWBND, 0);
+ break;
+ case 'b':
+ EMIT(OWBND, 0);
+ break;
+ case 'W':
+ case 'w':
+ case 'S':
+ case 's':
+ p_b_pseudoclass(p, wc);
+ break;
+ case 'a':
+ ordinary(p, '\a');
+ break;
+ case 'e':
+ ordinary(p, '\e');
+ break;
+ case 'f':
+ ordinary(p, '\f');
+ break;
+ case 'n':
+ ordinary(p, '\n');
+ break;
+ case 'r':
+ ordinary(p, '\r');
+ break;
+ case 't':
+ ordinary(p, '\t');
+ break;
+ case 'v':
+ ordinary(p, '\v');
+ break;
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9':
+ i = wc - '0';
+ assert(i < NPAREN);
+ if (p->pend[i] != 0) {
+ assert(i <= p->g->nsub);
+ EMIT(OBACK_, i);
+ assert(p->pbegin[i] != 0);
+ assert(OP(p->strip[p->pbegin[i]]) == OLPAREN);
+ assert(OP(p->strip[p->pend[i]]) == ORPAREN);
+ (void) dupl(p, p->pbegin[i]+1, p->pend[i]);
+ EMIT(O_BACK, i);
+ } else
+ SETERROR(REG_ESUBREG);
+ p->g->backrefs = 1;
+ break;
+ default:
+ handled = 0;
+ }
+ /* Don't proceed to the POSIX bits if we've already handled it */
+ if (handled)
+ break;
+ }
+#endif
+ switch (wc) {
+ case '<':
+ EMIT(OBOW, 0);
+ break;
+ case '>':
+ EMIT(OEOW, 0);
+ break;
+ default:
+ if (may_escape(p, wc))
+ ordinary(p, wc);
+ else
+ SETERROR(REG_EESCAPE);
+ break;
+ }
break;
- case '{': /* okay as ordinary except if digit follows */
- REQUIRE(!MORE() || !isdigit((unsigned char)PEEK()), REG_BADRPT);
- /* FALLTHROUGH */
default:
if (p->error != 0)
- return;
- ordinary(p, c);
+ return (false);
+ p->next--;
+ wc = WGETNEXT();
+ ordinary(p, wc);
break;
}
if (!MORE())
- return;
+ return (false);
c = PEEK();
/* we call { a repetition if followed by a digit */
- if (!( c == '*' || c == '+' || c == '?' ||
- (c == '{' && MORE2() && isdigit((unsigned char)PEEK2())) ))
- return; /* no repetition, we're done */
+ if (!( c == '*' || c == '+' || c == '?' || c == '{'))
+ return (false); /* no repetition, we're done */
+ else if (c == '{')
+ (void)REQUIRE(MORE2() && \
+ (isdigit((uch)PEEK2()) || PEEK2() == ','), REG_BADRPT);
NEXT();
- REQUIRE(!wascaret, REG_BADRPT);
+ (void)REQUIRE(!wascaret, REG_BADRPT);
switch (c) {
case '*': /* implemented as +? */
/* this case does not require the (y|) trick, noKLUDGE */
@@ -514,30 +659,31 @@
case '{':
count = p_count(p);
if (EAT(',')) {
- if (isdigit((unsigned char)PEEK())) {
+ if (isdigit((uch)PEEK())) {
count2 = p_count(p);
- REQUIRE(count <= count2, REG_BADBR);
+ (void)REQUIRE(count <= count2, REG_BADBR);
} else /* single number with comma */
count2 = INFINITY;
} else /* just a single number */
count2 = count;
- repeat(p, pos, count, count2, 0);
+ repeat(p, pos, count, count2);
if (!EAT('}')) { /* error heuristics */
while (MORE() && PEEK() != '}')
NEXT();
- REQUIRE(MORE(), REG_EBRACE);
+ (void)REQUIRE(MORE(), REG_EBRACE);
SETERROR(REG_BADBR);
}
break;
}
if (!MORE())
- return;
+ return (false);
c = PEEK();
if (!( c == '*' || c == '+' || c == '?' ||
- (c == '{' && MORE2() && isdigit((unsigned char)PEEK2())) ) )
- return;
+ (c == '{' && MORE2() && isdigit((uch)PEEK2())) ) )
+ return (false);
SETERROR(REG_BADRPT);
+ return (false);
}
/*
@@ -545,159 +691,350 @@
== static void p_str(struct parse *p);
*/
static void
-p_str(
- struct parse *p)
+p_str(struct parse *p)
{
-
- _DIAGASSERT(p != NULL);
-
- REQUIRE(MORE(), REG_EMPTY);
+ (void)REQUIRE(MORE(), REG_EMPTY);
while (MORE())
- ordinary(p, GETNEXT());
+ ordinary(p, WGETNEXT());
}
/*
- - p_bre - BRE parser top level, anchoring and concatenation
- == static void p_bre(struct parse *p, int end1, \
- == int end2, size_t reclimit);
- * Giving end1 as OUT essentially eliminates the end1/end2 check.
- *
- * This implementation is a bit of a kludge, in that a trailing $ is first
- * taken as an ordinary character and then revised to be an anchor. The
- * only undesirable side effect is that '$' gets included as a character
- * category in such cases. This is fairly harmless; not worth fixing.
- * The amount of lookahead needed to avoid this kludge is excessive.
+ * Eat consecutive branch delimiters for the kind of expression that we are
+ * parsing, return the number of delimiters that we ate.
+ */
+static int
+p_branch_eat_delim(struct parse *p, struct branchc *bc)
+{
+ int nskip;
+
+ (void)bc;
+ nskip = 0;
+ while (EATSPEC('|'))
+ ++nskip;
+ return (nskip);
+}
+
+/*
+ * Insert necessary branch book-keeping operations. This emits a
+ * bogus 'next' offset, since we still have more to parse
*/
static void
-p_bre(
- struct parse *p,
- int end1, /* first terminating character */
- int end2, /* second terminating character */
- size_t reclimit)
+p_branch_ins_offset(struct parse *p, struct branchc *bc)
{
- sopno start;
- int first = 1; /* first subexpression? */
- int wasdollar = 0;
- _DIAGASSERT(p != NULL);
-
- if (reclimit++ > RECLIMIT || p->error == REG_ESPACE) {
- p->error = REG_ESPACE;
- return;
+ if (bc->nbranch == 0) {
+ INSERT(OCH_, bc->start); /* offset is wrong */
+ bc->fwd = bc->start;
+ bc->back = bc->start;
}
- start = HERE();
+ ASTERN(OOR1, bc->back);
+ bc->back = THERE();
+ AHEAD(bc->fwd); /* fix previous offset */
+ bc->fwd = HERE();
+ EMIT(OOR2, 0); /* offset is very wrong */
+ ++bc->nbranch;
+}
+/*
+ * Fix the offset of the tail branch, if we actually had any branches.
+ * This is to correct the bogus placeholder offset that we use.
+ */
+static void
+p_branch_fix_tail(struct parse *p, struct branchc *bc)
+{
+
+ /* Fix bogus offset at the tail if we actually have branches */
+ if (bc->nbranch > 0) {
+ AHEAD(bc->fwd);
+ ASTERN(O_CH, bc->back);
+ }
+}
+
+/*
+ * Signal to the parser that an empty branch has been encountered; this will,
+ * in the future, be used to allow for more permissive behavior with empty
+ * branches. The return value should indicate whether parsing may continue
+ * or not.
+ */
+static bool
+p_branch_empty(struct parse *p, struct branchc *bc)
+{
+
+ (void)bc;
+ SETERROR(REG_EMPTY);
+ return (false);
+}
+
+/*
+ * Take care of any branching requirements. This includes inserting the
+ * appropriate branching instructions as well as eating all of the branch
+ * delimiters until we either run out of pattern or need to parse more pattern.
+ */
+static bool
+p_branch_do(struct parse *p, struct branchc *bc)
+{
+ int ate = 0;
+
+ ate = p_branch_eat_delim(p, bc);
+ if (ate == 0)
+ return (false);
+ else if ((ate > 1 || (bc->outer && !MORE())) && !p_branch_empty(p, bc))
+ /*
+ * Halt parsing only if we have an empty branch and p_branch_empty
+ * indicates that we must not continue. In the future, this will not
+ * necessarily be an error.
+ */
+ return (false);
+ p_branch_ins_offset(p, bc);
+
+ return (true);
+}
+
+static void
+p_bre_pre_parse(struct parse *p, struct branchc *bc)
+{
+
+ (void)bc;
+ /*
+ * Does not move cleanly into expression parser because of
+ * ordinary interpration of * at the beginning position of
+ * an expression.
+ */
if (EAT('^')) {
EMIT(OBOL, 0);
p->g->iflags |= USEBOL;
p->g->nbol++;
}
- while (MORE() && !SEETWO(end1, end2)) {
- wasdollar = p_simp_re(p, first, reclimit);
- first = 0;
- }
- if (wasdollar) { /* oops, that was a trailing anchor */
+}
+
+static void
+p_bre_post_parse(struct parse *p, struct branchc *bc)
+{
+
+ /* Expression is terminating due to EOL token */
+ if (bc->terminate) {
DROP(1);
EMIT(OEOL, 0);
p->g->iflags |= USEEOL;
p->g->neol++;
}
+}
- REQUIRE(HERE() != start, REG_EMPTY); /* require nonempty */
+/*
+ - p_re - Top level parser, concatenation and BRE anchoring
+ == static void p_re(struct parse *p, int end1, int end2);
+ * Giving end1 as OUT essentially eliminates the end1/end2 check.
+ *
+ * This implementation is a bit of a kludge, in that a trailing $ is first
+ * taken as an ordinary character and then revised to be an anchor.
+ * The amount of lookahead needed to avoid this kludge is excessive.
+ */
+static void
+p_re(struct parse *p,
+ int end1, /* first terminating character */
+ int end2) /* second terminating character; ignored for EREs */
+{
+ struct branchc bc;
+
+ bc.nbranch = 0;
+ if (end1 == OUT && end2 == OUT)
+ bc.outer = true;
+ else
+ bc.outer = false;
+#define SEEEND() (!p->bre ? SEE(end1) : SEETWO(end1, end2))
+ for (;;) {
+ bc.start = HERE();
+ bc.nchain = 0;
+ bc.terminate = false;
+ if (p->pre_parse != NULL)
+ p->pre_parse(p, &bc);
+ while (MORE() && (!p->allowbranch || !SEESPEC('|')) && !SEEEND()) {
+ bc.terminate = p->parse_expr(p, &bc);
+ ++bc.nchain;
+ }
+ if (p->post_parse != NULL)
+ p->post_parse(p, &bc);
+ (void) REQUIRE(p->gnuext || HERE() != bc.start, REG_EMPTY);
+#ifdef REGEX_GNU_EXTENSIONS
+ if (p->gnuext && HERE() == bc.start && !p_branch_empty(p, &bc))
+ break;
+#endif
+ if (!p->allowbranch)
+ break;
+ /*
+ * p_branch_do's return value indicates whether we should
+ * continue parsing or not. This is both for correctness and
+ * a slight optimization, because it will check if we've
+ * encountered an empty branch or the end of the string
+ * immediately following a branch delimiter.
+ */
+ if (!p_branch_do(p, &bc))
+ break;
+ }
+#undef SEE_END
+ if (p->allowbranch)
+ p_branch_fix_tail(p, &bc);
+ assert(!MORE() || SEE(end1));
}
/*
- p_simp_re - parse a simple RE, an atom possibly followed by a repetition
- == static int p_simp_re(struct parse *p, int starordinary, size_t reclimit);
+ == static bool p_simp_re(struct parse *p, struct branchc *bc);
*/
-static int /* was the simple RE an unbackslashed $? */
-p_simp_re(
- struct parse *p,
- int starordinary, /* is a leading * an ordinary character? */
- size_t reclimit)
+static bool /* was the simple RE an unbackslashed $? */
+p_simp_re(struct parse *p, struct branchc *bc)
{
int c;
+ int cc; /* convenient/control character */
int count;
int count2;
- sopno pos, i;
+ sopno pos;
+ bool handled;
+ size_t i;
+ wint_t wc;
sopno subno;
# define BACKSL (1<<CHAR_BIT)
- _DIAGASSERT(p != NULL);
-
- pos = HERE(); /* repetion op, if any, covers from here */
+ pos = HERE(); /* repetition op, if any, covers from here */
+ handled = false;
assert(MORE()); /* caller should have ensured this */
c = GETNEXT();
if (c == '\\') {
- REQUIRE(MORE(), REG_EESCAPE);
- c = BACKSL | (unsigned char)GETNEXT();
- }
- switch (c) {
- case '.':
- if (p->g->cflags®_NEWLINE)
- nonnewline(p);
- else
- EMIT(OANY, 0);
- break;
- case '[':
- p_bracket(p);
- break;
- case BACKSL|'{':
- SETERROR(REG_BADRPT);
- break;
- case BACKSL|'(':
- p->g->nsub++;
- subno = p->g->nsub;
- if (subno < NPAREN)
- p->pbegin[subno] = HERE();
- EMIT(OLPAREN, subno);
- /* the MORE here is an error heuristic */
- if (MORE() && !SEETWO('\\', ')'))
- p_bre(p, '\\', ')', reclimit);
- if (subno < NPAREN) {
- p->pend[subno] = HERE();
- assert(p->pend[subno] != 0);
+ (void)REQUIRE(MORE(), REG_EESCAPE);
+ cc = GETNEXT();
+ c = BACKSL | cc;
+#ifdef REGEX_GNU_EXTENSIONS
+ if (p->gnuext) {
+ handled = true;
+ switch (c) {
+ case BACKSL|'`':
+ EMIT(OBOS, 0);
+ break;
+ case BACKSL|'\'':
+ EMIT(OEOS, 0);
+ break;
+ case BACKSL|'B':
+ EMIT(ONWBND, 0);
+ break;
+ case BACKSL|'b':
+ EMIT(OWBND, 0);
+ break;
+ case BACKSL|'W':
+ case BACKSL|'w':
+ case BACKSL|'S':
+ case BACKSL|'s':
+ p_b_pseudoclass(p, cc);
+ break;
+ case BACKSL|'a':
+ ordinary(p, '\a');
+ break;
+ case BACKSL|'e':
+ ordinary(p, '\e');
+ break;
+ case BACKSL|'f':
+ ordinary(p, '\f');
+ break;
+ case BACKSL|'n':
+ ordinary(p, '\n');
+ break;
+ case BACKSL|'r':
+ ordinary(p, '\r');
+ break;
+ case BACKSL|'t':
+ ordinary(p, '\t');
+ break;
+ case BACKSL|'v':
+ ordinary(p, '\v');
+ break;
+ default:
+ handled = false;
+ }
}
- EMIT(ORPAREN, subno);
- REQUIRE(EATTWO('\\', ')'), REG_EPAREN);
- break;
- case BACKSL|')': /* should not get here -- must be user */
- case BACKSL|'}':
- SETERROR(REG_EPAREN);
- break;
- case BACKSL|'1':
- case BACKSL|'2':
- case BACKSL|'3':
- case BACKSL|'4':
- case BACKSL|'5':
- case BACKSL|'6':
- case BACKSL|'7':
- case BACKSL|'8':
- case BACKSL|'9':
- i = (c&~BACKSL) - '0';
- assert(i < NPAREN);
- if (p->pend[i] != 0) {
- assert(i <= p->g->nsub);
- EMIT(OBACK_, i);
- assert(p->pbegin[i] != 0);
- assert(OP(p->strip[p->pbegin[i]]) == OLPAREN);
- assert(OP(p->strip[p->pend[i]]) == ORPAREN);
- (void) dupl(p, p->pbegin[i]+1, p->pend[i]);
- EMIT(O_BACK, i);
- } else
- SETERROR(REG_ESUBREG);
- p->g->backrefs = 1;
- break;
- case '*':
- REQUIRE(starordinary, REG_BADRPT);
- /* FALLTHROUGH */
- default:
- if (p->error != 0)
- return(0);
- ordinary(p, c &~ BACKSL);
- break;
+#endif
+ }
+ if (!handled) {
+ switch (c) {
+ case '.':
+ if (p->g->cflags®_NEWLINE)
+ nonnewline(p);
+ else
+ EMIT(OANY, 0);
+ break;
+ case '[':
+ p_bracket(p);
+ break;
+ case BACKSL|'<':
+ EMIT(OBOW, 0);
+ break;
+ case BACKSL|'>':
+ EMIT(OEOW, 0);
+ break;
+ case BACKSL|'{':
+ SETERROR(REG_BADRPT);
+ break;
+ case BACKSL|'(':
+ p->g->nsub++;
+ subno = (sopno)p->g->nsub;
+ if (subno < NPAREN)
+ p->pbegin[subno] = HERE();
+ EMIT(OLPAREN, subno);
+ /* the MORE here is an error heuristic */
+ if (MORE() && !SEETWO('\\', ')'))
+ p_re(p, '\\', ')');
+ if (subno < NPAREN) {
+ p->pend[subno] = HERE();
+ assert(p->pend[subno] != 0);
+ }
+ EMIT(ORPAREN, subno);
+ (void)REQUIRE(EATTWO('\\', ')'), REG_EPAREN);
+ break;
+ case BACKSL|')': /* should not get here -- must be user */
+ SETERROR(REG_EPAREN);
+ break;
+ case BACKSL|'1':
+ case BACKSL|'2':
+ case BACKSL|'3':
+ case BACKSL|'4':
+ case BACKSL|'5':
+ case BACKSL|'6':
+ case BACKSL|'7':
+ case BACKSL|'8':
+ case BACKSL|'9':
+ i = (c&~BACKSL) - '0';
+ assert(i < NPAREN);
+ if (p->pend[i] != 0) {
+ assert(i <= p->g->nsub);
+ EMIT(OBACK_, i);
+ assert(p->pbegin[i] != 0);
+ assert(OP(p->strip[p->pbegin[i]]) == OLPAREN);
+ assert(OP(p->strip[p->pend[i]]) == ORPAREN);
+ (void) dupl(p, p->pbegin[i]+1, p->pend[i]);
+ EMIT(O_BACK, i);
+ } else
+ SETERROR(REG_ESUBREG);
+ p->g->backrefs = 1;
+ break;
+ case '*':
+ /*
+ * Ordinary if used as the first character beyond BOL anchor of
+ * a (sub-)expression, counts as a bad repetition operator if it
+ * appears otherwise.
+ */
+ (void)REQUIRE(bc->nchain == 0, REG_BADRPT);
+ /* FALLTHROUGH */
+ default:
+ if (p->error != 0)
+ return (false); /* Definitely not $... */
+ p->next--;
+ wc = WGETNEXT();
+ if ((c & BACKSL) == 0 || may_escape(p, wc))
+ ordinary(p, wc);
+ else
+ SETERROR(REG_EESCAPE);
+ break;
+ }
}
if (EAT('*')) { /* implemented as +? */
@@ -706,27 +1043,35 @@
ASTERN(O_PLUS, pos);
INSERT(OQUEST_, pos);
ASTERN(O_QUEST, pos);
+#ifdef REGEX_GNU_EXTENSIONS
+ } else if (p->gnuext && EATTWO('\\', '?')) {
+ INSERT(OQUEST_, pos);
+ ASTERN(O_QUEST, pos);
+ } else if (p->gnuext && EATTWO('\\', '+')) {
+ INSERT(OPLUS_, pos);
+ ASTERN(O_PLUS, pos);
+#endif
} else if (EATTWO('\\', '{')) {
count = p_count(p);
if (EAT(',')) {
- if (MORE() && isdigit((unsigned char)PEEK())) {
+ if (MORE() && isdigit((uch)PEEK())) {
count2 = p_count(p);
- REQUIRE(count <= count2, REG_BADBR);
+ (void)REQUIRE(count <= count2, REG_BADBR);
} else /* single number with comma */
count2 = INFINITY;
} else /* just a single number */
count2 = count;
- repeat(p, pos, count, count2, 0);
+ repeat(p, pos, count, count2);
if (!EATTWO('\\', '}')) { /* error heuristics */
while (MORE() && !SEETWO('\\', '}'))
NEXT();
- REQUIRE(MORE(), REG_EBRACE);
+ (void)REQUIRE(MORE(), REG_EBRACE);
SETERROR(REG_BADBR);
}
- } else if (c == (unsigned char)'$') /* $ (but not \$) ends it */
- return(1);
+ } else if (c == '$') /* $ (but not \$) ends it */
+ return (true);
- return(0);
+ return (false);
}
/*
@@ -734,105 +1079,95 @@
== static int p_count(struct parse *p);
*/
static int /* the value */
-p_count(
- struct parse *p)
+p_count(struct parse *p)
{
int count = 0;
int ndigits = 0;
- _DIAGASSERT(p != NULL);
-
- while (MORE() && isdigit((unsigned char)PEEK()) && count <= DUPMAX) {
+ while (MORE() && isdigit((uch)PEEK()) && count <= DUPMAX) {
count = count*10 + (GETNEXT() - '0');
ndigits++;
}
- REQUIRE(ndigits > 0 && count <= DUPMAX, REG_BADBR);
+ (void)REQUIRE(ndigits > 0 && count <= DUPMAX, REG_BADBR);
return(count);
}
/*
- p_bracket - parse a bracketed character list
== static void p_bracket(struct parse *p);
- *
- * Note a significant property of this code: if the allocset() did SETERROR,
- * no set operations are done.
*/
static void
-p_bracket(
- struct parse *p)
+p_bracket(struct parse *p)
{
cset *cs;
- int invert = 0;
- _DIAGASSERT(p != NULL);
-
- cs = allocset(p);
- if (cs == NULL)
- return;
+ wint_t ch;
/* Dept of Truly Sickening Special-Case Kludges */
- if (p->next + 5 < p->end && strncmp(p->next, "[:<:]]",
- (size_t)6) == 0) {
+ if (p->next + 5 < p->end && strncmp(p->next, "[:<:]]", 6) == 0) {
EMIT(OBOW, 0);
NEXTn(6);
return;
}
- if (p->next + 5 < p->end && strncmp(p->next, "[:>:]]",
- (size_t)6) == 0) {
+ if (p->next + 5 < p->end && strncmp(p->next, "[:>:]]", 6) == 0) {
EMIT(OEOW, 0);
NEXTn(6);
return;
}
+ if ((cs = allocset(p)) == NULL)
+ return;
+
+ if (p->g->cflags®_ICASE)
+ cs->icase = 1;
if (EAT('^'))
- invert++; /* make note to invert set at end */
+ cs->invert = 1;
if (EAT(']'))
- CHadd(cs, ']');
+ CHadd(p, cs, ']');
else if (EAT('-'))
- CHadd(cs, '-');
+ CHadd(p, cs, '-');
while (MORE() && PEEK() != ']' && !SEETWO('-', ']'))
p_b_term(p, cs);
if (EAT('-'))
- CHadd(cs, '-');
- MUSTEAT(']', REG_EBRACK);
+ CHadd(p, cs, '-');
+ (void)MUSTEAT(']', REG_EBRACK);
if (p->error != 0) /* don't mess things up further */
return;
- if (p->g->cflags®_ICASE) {
- ssize_t i;
- int ci;
+ if (cs->invert && p->g->cflags®_NEWLINE)
+ cs->bmp['\n' >> 3] |= 1 << ('\n' & 7);
- for (i = p->g->csetsize - 1; i >= 0; i--)
- if (CHIN(cs, i) && isalpha(i)) {
- ci = othercase((int)i);
- if (ci != i)
- CHadd(cs, ci);
- }
- if (cs->multis != NULL)
- mccase(p, cs);
- }
- if (invert) {
- ssize_t i;
-
- for (i = p->g->csetsize - 1; i >= 0; i--)
- if (CHIN(cs, i))
- CHsub(cs, (int)i);
- else
- CHadd(cs, (int)i);
- if (p->g->cflags®_NEWLINE)
- CHsub(cs, '\n');
- if (cs->multis != NULL)
- mcinvert(p, cs);
- }
-
- assert(cs->multis == NULL); /* xxx */
-
- if (nch(p, cs) == 1) { /* optimize singleton sets */
- ordinary(p, firstch(p, cs));
+ if ((ch = singleton(cs)) != OUT) { /* optimize singleton sets */
+ ordinary(p, ch);
freeset(p, cs);
} else
- EMIT(OANYOF, freezeset(p, cs));
+ EMIT(OANYOF, (size_t)(cs - p->g->sets));
+}
+
+static int
+p_range_cmp(wchar_t c1, wchar_t c2)
+{
+#ifdef REGEX_LIBC_COLLATE
+ return __wcollate_range_cmp(c1, c2);
+#elif defined(NLS)
+ /* Copied from libc/collate __wcollate_range_cmp */
+ wchar_t s1[2], s2[2];
+
+ s1[0] = c1;
+ s1[1] = L'\0';
+ s2[0] = c2;
+ s2[1] = L'\0';
+ return wcscoll(s1, s2);
+#else
+ char s1[2], s2[2];
+
+ s1[0] = (char)c1;
+ s1[1] = '\0';
+ s2[0] = (char)c2;
+ s2[1] = '\0';
+ return strcoll(s1, s2);
+#endif
}
/*
@@ -840,13 +1175,15 @@
== static void p_b_term(struct parse *p, cset *cs);
*/
static void
-p_b_term(
- struct parse *p,
- cset *cs)
+p_b_term(struct parse *p, cset *cs)
{
char c;
- char start, finish;
- int i;
+ wint_t start, finish;
+ wint_t i;
+#ifdef REGEX_LIBC_COLLATE
+ struct xlocale_collate *table =
+ (struct xlocale_collate*)__get_locale()->components[XLC_COLLATE];
+#endif
_DIAGASSERT(p != NULL);
_DIAGASSERT(cs != NULL);
@@ -856,11 +1193,9 @@
case '[':
c = (MORE2()) ? PEEK2() : '\0';
break;
-
case '-':
SETERROR(REG_ERANGE);
return; /* NOTE RETURN */
-
default:
c = '\0';
break;
@@ -869,24 +1204,23 @@
switch (c) {
case ':': /* character class */
NEXT2();
- REQUIRE(MORE(), REG_EBRACK);
+ (void)REQUIRE(MORE(), REG_EBRACK);
c = PEEK();
- REQUIRE(c != '-' && c != ']', REG_ECTYPE);
+ (void)REQUIRE(c != '-' && c != ']', REG_ECTYPE);
p_b_cclass(p, cs);
- REQUIRE(MORE(), REG_EBRACK);
- REQUIRE(EATTWO(':', ']'), REG_ECTYPE);
+ (void)REQUIRE(MORE(), REG_EBRACK);
+ (void)REQUIRE(EATTWO(':', ']'), REG_ECTYPE);
break;
case '=': /* equivalence class */
NEXT2();
- REQUIRE(MORE(), REG_EBRACK);
+ (void)REQUIRE(MORE(), REG_EBRACK);
c = PEEK();
- REQUIRE(c != '-' && c != ']', REG_ECOLLATE);
+ (void)REQUIRE(c != '-' && c != ']', REG_ECOLLATE);
p_b_eclass(p, cs);
- REQUIRE(MORE(), REG_EBRACK);
- REQUIRE(EATTWO('=', ']'), REG_ECOLLATE);
+ (void)REQUIRE(MORE(), REG_EBRACK);
+ (void)REQUIRE(EATTWO('=', ']'), REG_ECOLLATE);
break;
default: /* symbol, ordinary character, or range */
-/* xxx revision needed for multichar stuff */
start = p_b_symbol(p);
if (SEE('-') && MORE2() && PEEK2() != ']') {
/* range */
@@ -897,51 +1231,103 @@
finish = p_b_symbol(p);
} else
finish = start;
-/* xxx what about signed chars here... */
- REQUIRE(start <= finish, REG_ERANGE);
- for (i = start; i <= finish; i++)
- CHadd(cs, i);
+ if (start == finish)
+ CHadd(p, cs, start);
+ else {
+#ifdef REGEX_LIBC_COLLATE
+ if (table->__collate_load_error || MB_CUR_MAX > 1) {
+#else
+ if (MB_CUR_MAX > 1) {
+#endif
+ (void)REQUIRE(start <= finish, REG_ERANGE);
+ CHaddrange(p, cs, start, finish);
+ } else {
+ (void)REQUIRE(p_range_cmp(start, finish) <= 0, REG_ERANGE);
+ for (i = 0; i <= UCHAR_MAX; i++) {
+ if (p_range_cmp(start, i) <= 0 &&
+ p_range_cmp(i, finish) <= 0 )
+ CHadd(p, cs, i);
+ }
+ }
+ }
break;
}
}
+#ifdef REGEX_GNU_EXTENSIONS
+/*
+ - p_b_pseudoclass - parse a pseudo-class (\w, \W, \s, \S)
+ == static int p_b_pseudoclass(struct parse *p, char c)
+ */
+static int
+p_b_pseudoclass(struct parse *p, char c) {
+ cset *cs;
+
+ if ((cs = allocset(p)) == NULL)
+ return(0);
+
+ if (p->g->cflags®_ICASE)
+ cs->icase = 1;
+
+ switch (c) {
+ case 'W':
+ cs->invert = 1;
+ /* FALLTHROUGH */
+ case 'w':
+ p_b_cclass_named(p, cs, "alnum");
+ break;
+ case 'S':
+ cs->invert = 1;
+ /* FALLTHROUGH */
+ case 's':
+ p_b_cclass_named(p, cs, "space");
+ break;
+ default:
+ return(0);
+ }
+
+ EMIT(OANYOF, (size_t)(cs - p->g->sets));
+ return(1);
+}
+#endif
+
/*
- p_b_cclass - parse a character-class name and deal with it
== static void p_b_cclass(struct parse *p, cset *cs);
*/
static void
-p_b_cclass(
- struct parse *p,
- cset *cs)
+p_b_cclass(struct parse *p, cset *cs)
{
- const char *sp;
- const struct cclass *cp;
+ const char *sp = p->next;
size_t len;
- const char *u;
- char c;
+ char clname[16];
- _DIAGASSERT(p != NULL);
- _DIAGASSERT(cs != NULL);
-
- sp = p->next;
-
- while (MORE() && isalpha((unsigned char)PEEK()))
+ while (MORE() && isalpha((uch)PEEK()))
NEXT();
len = p->next - sp;
- for (cp = cclasses; cp->name != NULL; cp++)
- if (strncmp(cp->name, sp, len) == 0 && cp->name[len] == '\0')
- break;
- if (cp->name == NULL) {
- /* oops, didn't find it */
+ if (len >= sizeof(clname) - 1) {
SETERROR(REG_ECTYPE);
return;
}
+ memcpy(clname, sp, len);
+ clname[len] = '\0';
- u = cp->chars;
- while ((c = *u++) != '\0')
- CHadd(cs, c);
- for (u = cp->multis; *u != '\0'; u += strlen(u) + 1)
- MCadd(p, cs, u);
+ p_b_cclass_named(p, cs, clname);
+}
+
+/*
+ - p_b_cclass_named - deal with a named character class
+ == static void p_b_cclass_named(struct parse *p, cset *cs, const char []);
+ */
+static void
+p_b_cclass_named(struct parse *p, cset *cs, const char clname[]) {
+ wctype_t wct;
+
+ if ((wct = wctype(clname)) == 0) {
+ SETERROR(REG_ECTYPE);
+ return;
+ }
+ CHaddtype(p, cs, wct);
}
/*
@@ -951,58 +1337,52 @@
* This implementation is incomplete. xxx
*/
static void
-p_b_eclass(
- struct parse *p,
- cset *cs)
+p_b_eclass(struct parse *p, cset *cs)
{
- char c;
+ wint_t c;
_DIAGASSERT(p != NULL);
_DIAGASSERT(cs != NULL);
c = p_b_coll_elem(p, '=');
- CHadd(cs, c);
+ CHadd(p, cs, c);
}
/*
- p_b_symbol - parse a character or [..]ed multicharacter collating symbol
- == static char p_b_symbol(struct parse *p);
+ == static wint_t p_b_symbol(struct parse *p);
*/
-static char /* value of symbol */
-p_b_symbol(
- struct parse *p)
+static wint_t /* value of symbol */
+p_b_symbol(struct parse *p)
{
- char value;
+ wint_t value;
_DIAGASSERT(p != NULL);
- REQUIRE(MORE(), REG_EBRACK);
+ (void)REQUIRE(MORE(), REG_EBRACK);
if (!EATTWO('[', '.'))
- return(GETNEXT());
+ return(WGETNEXT());
/* collating symbol */
value = p_b_coll_elem(p, '.');
- REQUIRE(EATTWO('.', ']'), REG_ECOLLATE);
+ (void)REQUIRE(EATTWO('.', ']'), REG_ECOLLATE);
return(value);
}
/*
- p_b_coll_elem - parse a collating-element name and look it up
- == static char p_b_coll_elem(struct parse *p, int endc);
+ == static wint_t p_b_coll_elem(struct parse *p, wint_t endc);
*/
-static char /* value of collating element */
-p_b_coll_elem(
- struct parse *p,
- int endc) /* name ended by endc,']' */
+static wint_t /* value of collating element */
+p_b_coll_elem(struct parse *p,
+ wint_t endc) /* name ended by endc,']' */
{
- const char *sp;
- const struct cname *cp;
+ const char *sp = p->next;
+ struct cname *cp;
size_t len;
_DIAGASSERT(p != NULL);
- sp = p->next;
-
while (MORE() && !SEETWO(endc, ']'))
NEXT();
if (!MORE()) {
@@ -1013,85 +1393,152 @@
for (cp = cnames; cp->name != NULL; cp++)
if (strncmp(cp->name, sp, len) == 0 && strlen(cp->name) == len)
return(cp->code); /* known name */
- if (len == 1)
- return(*sp); /* single character */
- SETERROR(REG_ECOLLATE); /* neither */
+#ifdef NLS
+ mbstate_t mbs;
+ wchar_t wc;
+ size_t clen;
+
+ memset(&mbs, 0, sizeof(mbs));
+ if ((clen = mbrtowc(&wc, sp, len, &mbs)) == len)
+ return (wc); /* single character */
+ else if (clen == (size_t)-1 || clen == (size_t)-2)
+ SETERROR(REG_ILLSEQ);
+ else
+ SETERROR(REG_ECOLLATE); /* neither */
return(0);
+#else
+ if (len == 1)
+ return *sp; /* single character */
+ SETERROR(REG_ECOLLATE); /* neither */
+ return 0;
+#endif
+}
+
+/*
+ - may_escape - determine whether 'ch' is escape-able in the current context
+ == static int may_escape(struct parse *p, const wint_t ch)
+ */
+static bool
+may_escape(struct parse *p, const wint_t ch)
+{
+
+ if ((p->pflags & PFLAG_LEGACY_ESC) != 0)
+ return (true);
+ if (isalpha(ch) || ch == '\'' || ch == '`')
+ return (false);
+ return (true);
+#ifdef NOTYET
+ /*
+ * Build a whitelist of characters that may be escaped to produce an
+ * ordinary in the current context. This assumes that these have not
+ * been otherwise interpreted as a special character. Escaping an
+ * ordinary character yields undefined results according to
+ * IEEE 1003.1-2008. Some extensions (notably, some GNU extensions) take
+ * advantage of this and use escaped ordinary characters to provide
+ * special meaning, e.g. \b, \B, \w, \W, \s, \S.
+ */
+ switch(ch) {
+ case '|':
+ case '+':
+ case '?':
+ /* The above characters may not be escaped in BREs */
+ if (!(p->g->cflags®_EXTENDED))
+ return (false);
+ /* Fallthrough */
+ case '(':
+ case ')':
+ case '{':
+ case '}':
+ case '.':
+ case '[':
+ case ']':
+ case '\\':
+ case '*':
+ case '^':
+ case '$':
+ return (true);
+ default:
+ return (false);
+ }
+#endif
}
/*
- othercase - return the case counterpart of an alphabetic
- == static int othercase(int ch);
+ == static wint_t othercase(wint_t ch);
*/
-static int /* if no counterpart, return ch */
-othercase(
- int ch)
+static wint_t /* if no counterpart, return ch */
+othercase(wint_t ch)
{
- assert(isalpha(ch));
- if (isupper(ch))
- return(tolower(ch));
- else if (islower(ch))
- return(toupper(ch));
+ assert(iswalpha(ch));
+ if (iswupper(ch))
+ return(towlower(ch));
+ else if (iswlower(ch))
+ return(towupper(ch));
else /* peculiar, but could happen */
return(ch);
}
/*
- bothcases - emit a dualcase version of a two-case character
- == static void bothcases(struct parse *p, int ch);
+ == static void bothcases(struct parse *p, wint_t ch);
*
* Boy, is this implementation ever a kludge...
*/
static void
-bothcases(
- struct parse *p,
- int ch)
+bothcases(struct parse *p, wint_t ch)
{
- const char *oldnext;
- const char *oldend;
- char bracket[3];
+ const char *oldnext = p->next;
+ const char *oldend = p->end;
+ char bracket[3 + MB_LEN_MAX];
+ size_t n;
_DIAGASSERT(p != NULL);
- oldnext = p->next;
- oldend = p->end;
-
assert(othercase(ch) != ch); /* p_bracket() would recurse */
p->next = bracket;
- p->end = bracket+2;
- bracket[0] = ch;
- bracket[1] = ']';
- bracket[2] = '\0';
+#ifdef NLS
+ mbstate_t mbs;
+ memset(&mbs, 0, sizeof(mbs));
+ n = wcrtomb(bracket, ch, &mbs);
+ assert(n != (size_t)-1);
+#else
+ n = 0;
+ bracket[n++] = ch;
+#endif
+ bracket[n] = ']';
+ bracket[n + 1] = '\0';
+ p->end = bracket+n+1;
p_bracket(p);
- assert(p->next == bracket+2);
+ assert(p->next == p->end);
p->next = oldnext;
p->end = oldend;
}
/*
- ordinary - emit an ordinary character
- == static void ordinary(struct parse *p, int ch);
+ == static void ordinary(struct parse *p, wint_t ch);
*/
static void
-ordinary(
- struct parse *p,
- int ch)
+ordinary(struct parse *p, wint_t ch)
{
- cat_t *cap;
- unsigned char uc = (unsigned char)ch;
+ cset *cs;
_DIAGASSERT(p != NULL);
- cap = p->g->categories;
- if ((p->g->cflags & REG_ICASE) && isalpha(uc) && othercase(uc) != uc)
- bothcases(p, uc);
+ if ((p->g->cflags®_ICASE) && iswalpha(ch) && othercase(ch) != ch)
+ bothcases(p, ch);
+ else if ((wint_t)(ch & OPDMASK) == ch)
+ EMIT(OCHAR, (size_t)ch);
else {
- EMIT(OCHAR, (sopno)uc);
- if (cap[uc] == 0) {
- _DIAGASSERT(__type_fit(unsigned char,
- p->g->ncategories + 1));
- cap[uc] = (unsigned char)p->g->ncategories++;
- }
+ /*
+ * Kludge: character is too big to fit into an OCHAR operand.
+ * Emit a singleton set.
+ */
+ if ((cs = allocset(p)) == NULL)
+ return;
+ CHadd(p, cs, ch);
+ EMIT(OANYOF, (size_t)(cs - p->g->sets));
}
}
@@ -1102,18 +1549,14 @@
* Boy, is this implementation ever a kludge...
*/
static void
-nonnewline(
- struct parse *p)
+nonnewline(struct parse *p)
{
- const char *oldnext;
- const char *oldend;
+ const char *oldnext = p->next;
+ const char *oldend = p->end;
char bracket[4];
_DIAGASSERT(p != NULL);
- oldnext = p->next;
- oldend = p->end;
-
p->next = bracket;
p->end = bracket+3;
bracket[0] = '^';
@@ -1128,18 +1571,15 @@
/*
- repeat - generate code for a bounded repetition, recursively if needed
- == static void repeat(struct parse *p, sopno start, int from, int to,
- == size_t reclimit);
+ == static void repeat(struct parse *p, sopno start, int from, int to);
*/
static void
-repeat(
- struct parse *p,
- sopno start, /* operand from here to end of strip */
- int from, /* repeated from this number */
- int to, /* to this number of times (maybe INFINITY) */
- size_t reclimit)
+repeat(struct parse *p,
+ sopno start, /* operand from here to end of strip */
+ int from, /* repeated from this number */
+ int to) /* to this number of times (maybe INFINITY) */
{
- sopno finish;
+ sopno finish = HERE();
# define N 2
# define INF 3
# define REP(f, t) ((f)*8 + (t))
@@ -1148,13 +1588,9 @@
_DIAGASSERT(p != NULL);
- if (reclimit++ > RECLIMIT)
- p->error = REG_ESPACE;
- if (p->error)
+ if (p->error != 0) /* head off possible runaway recursion */
return;
- finish = HERE();
-
assert(from <= to);
switch (REP(MAP(from), MAP(to))) {
@@ -1166,7 +1602,7 @@
case REP(0, INF): /* as x{1,}? */
/* KLUDGE: emit y? as (y|) until subtle bug gets fixed */
INSERT(OCH_, start); /* offset is wrong... */
- repeat(p, start+1, 1, to, reclimit);
+ repeat(p, start+1, 1, to);
ASTERN(OOR1, start);
AHEAD(start); /* ... fix it */
EMIT(OOR2, 0);
@@ -1186,7 +1622,7 @@
ASTERN(O_CH, THERETHERE());
copy = dupl(p, start+1, finish+1);
assert(copy == finish+4);
- repeat(p, copy, 1, to-1, reclimit);
+ repeat(p, copy, 1, to-1);
break;
case REP(1, INF): /* as x+ */
INSERT(OPLUS_, start);
@@ -1194,11 +1630,11 @@
break;
case REP(N, N): /* as xx{m-1,n-1} */
copy = dupl(p, start, finish);
- repeat(p, copy, from-1, to-1, reclimit);
+ repeat(p, copy, from-1, to-1);
break;
case REP(N, INF): /* as xx{n-1,INF} */
copy = dupl(p, start, finish);
- repeat(p, copy, from-1, to, reclimit);
+ repeat(p, copy, from-1, to);
break;
default: /* "can't happen" */
SETERROR(REG_ASSERT); /* just in case */
@@ -1207,13 +1643,39 @@
}
/*
+ - wgetnext - helper function for WGETNEXT() macro. Gets the next wide
+ - character from the parse struct, signals a REG_ILLSEQ error if the
+ - character can't be converted. Returns the number of bytes consumed.
+ */
+static wint_t
+wgetnext(struct parse *p)
+{
+#ifdef NLS
+ mbstate_t mbs;
+ wchar_t wc;
+ size_t n;
+
+ memset(&mbs, 0, sizeof(mbs));
+ n = mbrtowc(&wc, p->next, (size_t)(p->end - p->next), &mbs);
+ if (n == (size_t)-1 || n == (size_t)-2) {
+ SETERROR(REG_ILLSEQ);
+ return (0);
+ }
+ if (n == 0)
+ n = 1;
+ p->next += n;
+ return wc;
+#else
+ return *p->next++;
+#endif
+}
+
+/*
- seterr - set an error condition
== static int seterr(struct parse *p, int e);
*/
static int /* useless but makes type checking happy */
-seterr(
- struct parse *p,
- int e)
+seterr(struct parse *p, int e)
{
_DIAGASSERT(p != NULL);
@@ -1230,55 +1692,22 @@
== static cset *allocset(struct parse *p);
*/
static cset *
-allocset(
- struct parse *p)
+allocset(struct parse *p)
{
- size_t no;
- size_t nc;
- size_t nbytes;
- cset *cs;
- size_t css;
- size_t i;
- void *old_ptr;
+ cset *cs, *ncs;
_DIAGASSERT(p != NULL);
- no = p->g->ncsets++;
- css = (size_t)p->g->csetsize;
- if (no >= p->ncsalloc) { /* need another column of space */
- p->ncsalloc += CHAR_BIT;
- nc = p->ncsalloc;
- assert(nc % CHAR_BIT == 0);
- nbytes = nc / CHAR_BIT * css;
- if (MEMSIZE(p) > MEMLIMIT)
- goto oomem;
- if (reallocarr(&p->g->sets, nc, sizeof(cset)))
- goto oomem;
- old_ptr = p->g->setbits;
- if (reallocarr(&p->g->setbits, nc / CHAR_BIT, css)) {
- free(old_ptr);
- goto oomem;
- }
- if (old_ptr != p->g->setbits) {
- for (i = 0; i < no; i++)
- p->g->sets[i].ptr = p->g->setbits + css*(i/CHAR_BIT);
- }
- (void) memset((char *)p->g->setbits + (nbytes - css), 0, css);
+ ncs = reallocarray(p->g->sets, p->g->ncsets + 1, sizeof(*ncs));
+ if (ncs == NULL) {
+ SETERROR(REG_ESPACE);
+ return (NULL);
}
-
- cs = &p->g->sets[no];
- cs->ptr = p->g->setbits + css*((no)/CHAR_BIT);
- cs->mask = 1 << (unsigned int)((no) % CHAR_BIT);
- cs->hash = 0;
- cs->smultis = 0;
- cs->multis = NULL;
+ p->g->sets = ncs;
+ cs = &p->g->sets[p->g->ncsets++];
+ memset(cs, 0, sizeof(*cs));
return(cs);
-
-oomem:
- SETERROR(REG_ESPACE);
- /* caller's responsibility not to do set ops */
- return NULL;
}
/*
@@ -1286,353 +1715,128 @@
== static void freeset(struct parse *p, cset *cs);
*/
static void
-freeset(
- struct parse *p,
- cset *cs)
+freeset(struct parse *p, cset *cs)
{
- size_t i;
cset *top;
- size_t css;
_DIAGASSERT(p != NULL);
_DIAGASSERT(cs != NULL);
top = &p->g->sets[p->g->ncsets];
- css = (size_t)p->g->csetsize;
- for (i = 0; i < css; i++)
- CHsub(cs, (int)i);
+ free(cs->wides);
+ free(cs->ranges);
+ free(cs->types);
+ memset(cs, 0, sizeof(*cs));
if (cs == top-1) /* recover only the easy case */
p->g->ncsets--;
}
/*
- - freezeset - final processing on a set of characters
- == static int freezeset(struct parse *p, cset *cs);
- *
- * The main task here is merging identical sets. This is usually a waste
- * of time (although the hash code minimizes the overhead), but can win
- * big if REG_ICASE is being used. REG_ICASE, by the way, is why the hash
- * is done using addition rather than xor -- all ASCII [aA] sets xor to
- * the same value!
+ - singleton - Determine whether a set contains only one character,
+ - returning it if so, otherwise returning OUT.
*/
-static sopno /* set number */
-freezeset(
- struct parse *p,
- cset *cs)
+static wint_t
+singleton(cset *cs)
{
- uch h;
- size_t i;
- cset *top;
- cset *cs2;
- size_t css;
+ wint_t i, s, n;
- _DIAGASSERT(p != NULL);
- _DIAGASSERT(cs != NULL);
-
- h = cs->hash;
- top = &p->g->sets[p->g->ncsets];
- css = (size_t)p->g->csetsize;
-
- /* look for an earlier one which is the same */
- for (cs2 = &p->g->sets[0]; cs2 < top; cs2++)
- if (cs2->hash == h && cs2 != cs) {
- /* maybe */
- for (i = 0; i < css; i++)
- if (!!CHIN(cs2, i) != !!CHIN(cs, i))
- break; /* no */
- if (i == css)
- break; /* yes */
- }
-
- if (cs2 < top) { /* found one */
- freeset(p, cs);
- cs = cs2;
- }
-
- return (sopno)(cs - p->g->sets);
-}
-
-/*
- - firstch - return first character in a set (which must have at least one)
- == static int firstch(struct parse *p, cset *cs);
- */
-static int /* character; there is no "none" value */
-firstch(
- struct parse *p,
- cset *cs)
-{
- size_t i;
- size_t css;
-
- _DIAGASSERT(p != NULL);
- _DIAGASSERT(cs != NULL);
-
- css = (size_t)p->g->csetsize;
-
- for (i = 0; i < css; i++)
- if (CHIN(cs, i))
- return((char)i);
- assert(never);
- return(0); /* arbitrary */
-}
-
-/*
- - nch - number of characters in a set
- == static int nch(struct parse *p, cset *cs);
- */
-static int
-nch(
- struct parse *p,
- cset *cs)
-{
- size_t i;
- size_t css;
- int n = 0;
-
- _DIAGASSERT(p != NULL);
- _DIAGASSERT(cs != NULL);
-
- css = (size_t)p->g->csetsize;
-
- for (i = 0; i < css; i++)
- if (CHIN(cs, i))
+ for (i = n = 0; i < NC; i++)
+ if (CHIN(cs, i)) {
n++;
- return(n);
+ s = i;
+ }
+ if (n == 1)
+ return (s);
+ if (cs->nwides == 1 && cs->nranges == 0 && cs->ntypes == 0 &&
+ cs->icase == 0)
+ return (cs->wides[0]);
+ /* Don't bother handling the other cases. */
+ return (OUT);
}
/*
- - mcadd - add a collating element to a cset
- == static void mcadd(struct parse *p, cset *cs, \
- == char *cp);
+ - CHadd - add character to character set.
*/
static void
-mcadd(
- struct parse *p,
- cset *cs,
- const char *cp)
+CHadd(struct parse *p, cset *cs, wint_t ch)
{
- size_t oldend;
+ wint_t nch, *newwides;
_DIAGASSERT(p != NULL);
_DIAGASSERT(cs != NULL);
- _DIAGASSERT(cp != NULL);
- oldend = cs->smultis;
+ assert(ch >= 0);
+ if (ch < NC)
+ cs->bmp[(unsigned)ch >> 3] |= 1 << (ch & 7);
+ else {
+ newwides = reallocarray(cs->wides, cs->nwides + 1,
+ sizeof(*cs->wides));
+ if (newwides == NULL) {
+ SETERROR(REG_ESPACE);
+ return;
+ }
+ cs->wides = newwides;
+ cs->wides[cs->nwides++] = ch;
+ }
+ if (cs->icase) {
+ if ((nch = towlower(ch)) < NC)
+ cs->bmp[(unsigned)nch >> 3] |= 1 << (nch & 7);
+ if ((nch = towupper(ch)) < NC)
+ cs->bmp[(unsigned)nch >> 3] |= 1 << (nch & 7);
+ }
+}
- cs->smultis += strlen(cp) + 1;
- if (cs->multis == NULL)
- cs->multis = malloc(cs->smultis);
- else
- cs->multis = realloc(cs->multis, cs->smultis);
- if (cs->multis == NULL) {
+/*
+ - CHaddrange - add all characters in the range [min,max] to a character set.
+ */
+static void
+CHaddrange(struct parse *p, cset *cs, wint_t min, wint_t max)
+{
+ crange *newranges;
+
+ _DIAGASSERT(p != NULL);
+ _DIAGASSERT(cs != NULL);
+
+ for (; min < NC && min <= max; min++)
+ CHadd(p, cs, min);
+ if (min >= max)
+ return;
+ newranges = reallocarray(cs->ranges, cs->nranges + 1,
+ sizeof(*cs->ranges));
+ if (newranges == NULL) {
SETERROR(REG_ESPACE);
return;
}
-
- (void) strcpy(cs->multis + oldend - 1, cp);
- cs->multis[cs->smultis - 1] = '\0';
+ cs->ranges = newranges;
+ cs->ranges[cs->nranges].min = min;
+ cs->ranges[cs->nranges].max = max;
+ cs->nranges++;
}
-#if 0
/*
- - mcsub - subtract a collating element from a cset
- == static void mcsub(cset *cs, char *cp);
+ - CHaddtype - add all characters of a certain type to a character set.
*/
static void
-mcsub(
- cset *cs,
- char *cp)
+CHaddtype(struct parse *p, cset *cs, wctype_t wct)
{
- char *fp;
- size_t len;
+ wint_t i;
+ wctype_t *newtypes;
+ _DIAGASSERT(p != NULL);
_DIAGASSERT(cs != NULL);
- _DIAGASSERT(cp != NULL);
- fp = mcfind(cs, cp);
- len = strlen(fp);
-
- assert(fp != NULL);
- (void) memmove(fp, fp + len + 1,
- cs->smultis - (fp + len + 1 - cs->multis));
- cs->smultis -= len;
-
- if (cs->smultis == 0) {
- free(cs->multis);
- cs->multis = NULL;
+ for (i = 0; i < NC; i++)
+ if (iswctype(i, wct))
+ CHadd(p, cs, i);
+ newtypes = reallocarray(cs->types, cs->ntypes + 1,
+ sizeof(*cs->types));
+ if (newtypes == NULL) {
+ SETERROR(REG_ESPACE);
return;
}
-
- cs->multis = realloc(cs->multis, cs->smultis);
- assert(cs->multis != NULL);
-}
-
-/*
- - mcin - is a collating element in a cset?
- == static int mcin(cset *cs, char *cp);
- */
-static int
-mcin(
- cset *cs,
- char *cp)
-{
-
- _DIAGASSERT(cs != NULL);
- _DIAGASSERT(cp != NULL);
-
- return(mcfind(cs, cp) != NULL);
-}
-
-/*
- - mcfind - find a collating element in a cset
- == static char *mcfind(cset *cs, char *cp);
- */
-static char *
-mcfind(
- cset *cs,
- char *cp)
-{
- char *p;
-
- _DIAGASSERT(cs != NULL);
- _DIAGASSERT(cp != NULL);
-
- if (cs->multis == NULL)
- return(NULL);
- for (p = cs->multis; *p != '\0'; p += strlen(p) + 1)
- if (strcmp(cp, p) == 0)
- return(p);
- return(NULL);
-}
-#endif
-
-/*
- - mcinvert - invert the list of collating elements in a cset
- == static void mcinvert(struct parse *p, cset *cs);
- *
- * This would have to know the set of possibilities. Implementation
- * is deferred.
- */
-/* ARGSUSED */
-static void
-mcinvert(
- struct parse *p,
- cset *cs)
-{
-
- _DIAGASSERT(p != NULL);
- _DIAGASSERT(cs != NULL);
-
- assert(cs->multis == NULL); /* xxx */
-}
-
-/*
- - mccase - add case counterparts of the list of collating elements in a cset
- == static void mccase(struct parse *p, cset *cs);
- *
- * This would have to know the set of possibilities. Implementation
- * is deferred.
- */
-/* ARGSUSED */
-static void
-mccase(
- struct parse *p,
- cset *cs)
-{
-
- _DIAGASSERT(p != NULL);
- _DIAGASSERT(cs != NULL);
-
- assert(cs->multis == NULL); /* xxx */
-}
-
-/*
- - isinsets - is this character in any sets?
- == static int isinsets(struct re_guts *g, int c);
- */
-static int /* predicate */
-isinsets(
- struct re_guts *g,
- int c)
-{
- uch *col;
- size_t i;
- size_t ncols;
- unsigned uc = (unsigned char)c;
-
- _DIAGASSERT(g != NULL);
-
- if (g->setbits == NULL)
- return 0;
-
- ncols = (g->ncsets+(CHAR_BIT-1)) / CHAR_BIT;
-
- for (i = 0, col = g->setbits; i < ncols; i++, col += g->csetsize)
- if (col[uc] != 0)
- return(1);
- return(0);
-}
-
-/*
- - samesets - are these two characters in exactly the same sets?
- == static int samesets(struct re_guts *g, int c1, int c2);
- */
-static int /* predicate */
-samesets(
- struct re_guts *g,
- int c1,
- int c2)
-{
- uch *col;
- size_t i;
- size_t ncols;
- unsigned uc1 = (unsigned char)c1;
- unsigned uc2 = (unsigned char)c2;
-
- _DIAGASSERT(g != NULL);
-
- ncols = (g->ncsets+(CHAR_BIT-1)) / CHAR_BIT;
-
- for (i = 0, col = g->setbits; i < ncols; i++, col += g->csetsize)
- if (col[uc1] != col[uc2])
- return(0);
- return(1);
-}
-
-/*
- - categorize - sort out character categories
- == static void categorize(struct parse *p, struct re_guts *g);
- */
-static void
-categorize(
- struct parse *p,
- struct re_guts *g)
-{
- cat_t *cats;
- int c;
- int c2;
- cat_t cat;
-
- _DIAGASSERT(p != NULL);
- _DIAGASSERT(g != NULL);
-
- cats = g->categories;
-
- /* avoid making error situations worse */
- if (p->error != 0)
- return;
-
- for (c = CHAR_MIN; c <= CHAR_MAX; c++)
- if (cats[c] == 0 && isinsets(g, c)) {
- _DIAGASSERT(__type_fit(unsigned char,
- g->ncategories + 1));
- cat = g->ncategories++;
- cats[c] = cat;
- for (c2 = c+1; c2 <= CHAR_MAX; c2++)
- if (cats[c2] == 0 && samesets(g, c, c2))
- cats[c2] = cat;
- }
+ cs->types = newtypes;
+ cs->types[cs->ntypes++] = wct;
}
/*
@@ -1640,25 +1844,22 @@
== static sopno dupl(struct parse *p, sopno start, sopno finish);
*/
static sopno /* start of duplicate */
-dupl(
- struct parse *p,
- sopno start, /* from here */
- sopno finish) /* to this less one */
+dupl(struct parse *p,
+ sopno start, /* from here */
+ sopno finish) /* to this less one */
{
- sopno ret;
+ sopno ret = HERE();
sopno len = finish - start;
_DIAGASSERT(p != NULL);
- ret = HERE();
-
assert(finish >= start);
if (len == 0)
return(ret);
- if (!enlarge(p, p->ssize + len))/* this many unexpected additions */
- return ret;
- (void)memcpy(p->strip + p->slen, p->strip + start,
- (size_t)len * sizeof(sop));
+ if (!enlarge(p, p->ssize + len)) /* this many unexpected additions */
+ return(ret);
+ (void) memcpy(p->strip + p->slen,
+ p->strip + start, len * sizeof(*p->strip));
p->slen += len;
return(ret);
}
@@ -1672,17 +1873,14 @@
* some changes to the data structures. Maybe later.
*/
static void
-doemit(
- struct parse *p,
- sop op,
- sopno opnd)
+doemit(struct parse *p, sop op, size_t opnd)
{
- _DIAGASSERT(p != NULL);
-
/* avoid making error situations worse */
if (p->error != 0)
return;
+ _DIAGASSERT(p != NULL);
+
/* deal with oversize operands ("can't happen", more or less) */
assert(opnd < 1<<OPSHIFT);
@@ -1692,7 +1890,7 @@
return;
/* finally, it's all reduced to the easy case */
- p->strip[p->slen++] = (sop)SOP(op, opnd);
+ p->strip[p->slen++] = (sopno)SOP(op, opnd);
}
/*
@@ -1700,11 +1898,7 @@
== static void doinsert(struct parse *p, sop op, size_t opnd, sopno pos);
*/
static void
-doinsert(
- struct parse *p,
- sop op,
- sopno opnd,
- sopno pos)
+doinsert(struct parse *p, sop op, size_t opnd, sopno pos)
{
sopno sn;
sop s;
@@ -1732,7 +1926,8 @@
}
}
- memmove(&p->strip[pos+1], &p->strip[pos], (HERE()-pos-1)*sizeof(sop));
+ memmove(&p->strip[pos+1], &p->strip[pos],
+ (HERE()-pos-1)*sizeof(*p->strip));
p->strip[pos] = s;
}
@@ -1741,10 +1936,7 @@
== static void dofwd(struct parse *p, sopno pos, sop value);
*/
static void
-dofwd(
- struct parse *p,
- sopno pos,
- sopno value)
+dofwd(struct parse *p, sopno pos, sop value)
{
_DIAGASSERT(p != NULL);
@@ -1754,25 +1946,29 @@
return;
assert(value < 1<<OPSHIFT);
- p->strip[pos] = (sop)(OP(p->strip[pos]) | value);
+ p->strip[pos] = OP(p->strip[pos]) | value;
}
/*
- enlarge - enlarge the strip
- == static void enlarge(struct parse *p, sopno size);
+ == static int enlarge(struct parse *p, sopno size);
*/
static int
enlarge(struct parse *p, sopno size)
{
+ sop *sp;
+
_DIAGASSERT(p != NULL);
if (p->ssize >= size)
return 1;
- if (MEMSIZE(p) > MEMLIMIT || reallocarr(&p->strip, size, sizeof(sop))) {
+ sp = reallocarray(p->strip, size, sizeof(*p->strip));
+ if (sp == NULL) {
SETERROR(REG_ESPACE);
return 0;
}
+ p->strip = sp;
p->ssize = size;
return 1;
}
@@ -1782,18 +1978,18 @@
== static void stripsnug(struct parse *p, struct re_guts *g);
*/
static void
-stripsnug(
- struct parse *p,
- struct re_guts *g)
+stripsnug(struct parse *p, struct re_guts *g)
{
_DIAGASSERT(p != NULL);
_DIAGASSERT(g != NULL);
g->nstates = p->slen;
- g->strip = p->strip;
- reallocarr(&g->strip, p->slen, sizeof(sop));
- /* Ignore error as tries to free memory only. */
+ g->strip = reallocarray(p->strip, p->slen, sizeof(*p->strip));
+ if (g->strip == NULL) {
+ SETERROR(REG_ESPACE);
+ g->strip = p->strip;
+ }
}
/*
@@ -1807,9 +2003,7 @@
* Note that must and mlen got initialized during setup.
*/
static void
-findmust(
- struct parse *p,
- struct re_guts *g)
+findmust(struct parse *p, struct re_guts *g)
{
sop *scan;
sop *start = NULL;
@@ -1817,7 +2011,8 @@
sopno newlen;
sop s;
char *cp;
- sopno i;
+ int offset;
+ mbstate_t mbs;
_DIAGASSERT(p != NULL);
_DIAGASSERT(g != NULL);
@@ -1826,16 +2021,39 @@
if (p->error != 0)
return;
+#ifdef notyet
+ /*
+ * It's not generally safe to do a ``char'' substring search on
+ * multibyte character strings, but it's safe for at least
+ * UTF-8 (see RFC 3629).
+ */
+ if (MB_CUR_MAX > 1 &&
+ strcmp(_CurrentRuneLocale->__encoding, "UTF-8") != 0)
+ return;
+#endif
+
/* find the longest OCHAR sequence in strip */
newlen = 0;
+ offset = 0;
+ g->moffset = 0;
scan = g->strip + 1;
do {
s = *scan++;
switch (OP(s)) {
case OCHAR: /* sequence member */
- if (newlen == 0) /* new sequence */
+ if (newlen == 0) { /* new sequence */
+ memset(&mbs, 0, sizeof(mbs));
newstart = scan - 1;
+ }
+#ifdef NLS
+ char buf[MB_LEN_MAX];
+ size_t clen = wcrtomb(buf, (int)OPND(s), &mbs);
+ if (clen == (size_t)-1)
+ goto toohard;
+ newlen += (sopno)clen;
+#else
newlen++;
+#endif
break;
case OPLUS_: /* things that don't break one */
case OLPAREN:
@@ -1843,60 +2061,346 @@
break;
case OQUEST_: /* things that must be skipped */
case OCH_:
+ offset = altoffset(scan, offset);
scan--;
do {
scan += OPND(s);
s = *scan;
/* assert() interferes w debug printouts */
- if (OP(s) != O_QUEST && OP(s) != O_CH &&
- OP(s) != OOR2) {
+ if (OP(s) != O_QUEST &&
+ OP(s) != O_CH && OP(s) != OOR2) {
g->iflags |= BAD;
return;
}
} while (OP(s) != O_QUEST && OP(s) != O_CH);
/* FALLTHROUGH */
- default: /* things that break a sequence */
- if (newlen > g->mlen) { /* ends one */
+ case OBOW: /* things that break a sequence */
+ case OEOW:
+ case OBOL:
+ case OEOL:
+ case OBOS:
+ case OEOS:
+ case OWBND:
+ case ONWBND:
+ case O_QUEST:
+ case O_CH:
+ case OEND:
+ if (newlen > (sopno)g->mlen) { /* ends one */
start = newstart;
g->mlen = newlen;
+ if (offset > -1) {
+ g->moffset += offset;
+ offset = newlen;
+ } else
+ g->moffset = offset;
+ } else {
+ if (offset > -1)
+ offset += newlen;
}
newlen = 0;
break;
+ case OANY:
+ if (newlen > (sopno)g->mlen) { /* ends one */
+ start = newstart;
+ g->mlen = newlen;
+ if (offset > -1) {
+ g->moffset += offset;
+ offset = newlen;
+ } else
+ g->moffset = offset;
+ } else {
+ if (offset > -1)
+ offset += newlen;
+ }
+ if (offset > -1)
+ offset++;
+ newlen = 0;
+ break;
+ case OANYOF: /* may or may not invalidate offset */
+ /* First, everything as OANY */
+ if (newlen > (sopno)g->mlen) { /* ends one */
+ start = newstart;
+ g->mlen = newlen;
+ if (offset > -1) {
+ g->moffset += offset;
+ offset = newlen;
+ } else
+ g->moffset = offset;
+ } else {
+ if (offset > -1)
+ offset += newlen;
+ }
+ if (offset > -1)
+ offset++;
+ newlen = 0;
+ break;
+#ifdef NLS
+ toohard:/*FALLTHROUGH*/
+#endif
+ default:
+ /* Anything here makes it impossible or too hard
+ * to calculate the offset -- so we give up;
+ * save the last known good offset, in case the
+ * must sequence doesn't occur later.
+ */
+ if (newlen > (sopno)g->mlen) { /* ends one */
+ start = newstart;
+ g->mlen = newlen;
+ if (offset > -1)
+ g->moffset += offset;
+ else
+ g->moffset = offset;
+ }
+ offset = -1;
+ newlen = 0;
+ break;
}
} while (OP(s) != OEND);
- if (start == NULL)
- g->mlen = 0;
-
- if (g->mlen == 0) /* there isn't one */
+ if (g->mlen == 0) { /* there isn't one */
+ g->moffset = -1;
return;
+ }
/* turn it into a character string */
g->must = malloc((size_t)g->mlen + 1);
if (g->must == NULL) { /* argh; just forget it */
g->mlen = 0;
+ g->moffset = -1;
return;
}
cp = g->must;
scan = start;
- for (i = g->mlen; i > 0; i--) {
+ memset(&mbs, 0, sizeof(mbs));
+ while (cp < g->must + g->mlen) {
while (OP(s = *scan++) != OCHAR)
continue;
- assert(cp < g->must + g->mlen);
- *cp++ = (char)OPND(s);
+#ifdef NLS
+ size_t clen = wcrtomb(cp, (int)OPND(s), &mbs);
+ assert(clen != (size_t)-1);
+ cp += clen;
+#else
+ *cp++ = OPND(s);
+#endif
}
assert(cp == g->must + g->mlen);
*cp++ = '\0'; /* just on general principles */
}
/*
+ - altoffset - choose biggest offset among multiple choices
+ == static int altoffset(sop *scan, int offset);
+ *
+ * Compute, recursively if necessary, the largest offset among multiple
+ * re paths.
+ */
+static int
+altoffset(sop *scan, int offset)
+{
+ int largest;
+ int try;
+ sop s;
+
+ _DIAGASSERT(scan != NULL);
+
+ /* If we gave up already on offsets, return */
+ if (offset == -1)
+ return -1;
+
+ largest = 0;
+ try = 0;
+ s = *scan++;
+ while (OP(s) != O_QUEST && OP(s) != O_CH) {
+ switch (OP(s)) {
+ case OOR1:
+ if (try > largest)
+ largest = try;
+ try = 0;
+ break;
+ case OQUEST_:
+ case OCH_:
+ try = altoffset(scan, try);
+ if (try == -1)
+ return -1;
+ scan--;
+ do {
+ scan += OPND(s);
+ s = *scan;
+ if (OP(s) != O_QUEST &&
+ OP(s) != O_CH && OP(s) != OOR2)
+ return -1;
+ } while (OP(s) != O_QUEST && OP(s) != O_CH);
+ /* We must skip to the next position, or we'll
+ * leave altoffset() too early.
+ */
+ scan++;
+ break;
+ case OANYOF:
+ case OCHAR:
+ case OANY:
+ try++;
+ /*FALLTHROUGH*/
+ case OBOW:
+ case OEOW:
+ case OWBND:
+ case ONWBND:
+ case OLPAREN:
+ case ORPAREN:
+ case OOR2:
+ break;
+ default:
+ try = -1;
+ break;
+ }
+ if (try == -1)
+ return -1;
+ s = *scan++;
+ }
+
+ if (try > largest)
+ largest = try;
+
+ return largest+offset;
+}
+
+/*
+ - computejumps - compute char jumps for BM scan
+ == static void computejumps(struct parse *p, struct re_guts *g);
+ *
+ * This algorithm assumes g->must exists and is has size greater than
+ * zero. It's based on the algorithm found on Computer Algorithms by
+ * Sara Baase.
+ *
+ * A char jump is the number of characters one needs to jump based on
+ * the value of the character from the text that was mismatched.
+ */
+static void
+computejumps(struct parse *p, struct re_guts *g)
+{
+ int ch;
+ size_t mindex;
+
+ _DIAGASSERT(p != NULL);
+ _DIAGASSERT(g != NULL);
+
+ /* Avoid making errors worse */
+ if (p->error != 0)
+ return;
+
+ g->charjump = calloc((NC_MAX + 1), sizeof(*g->charjump));
+ if (g->charjump == NULL) /* Not a fatal error */
+ return;
+ /* Adjust for signed chars, if necessary */
+ g->charjump = &g->charjump[-(CHAR_MIN)];
+
+ /* If the character does not exist in the pattern, the jump
+ * is equal to the number of characters in the pattern.
+ */
+ for (ch = CHAR_MIN; ch < (CHAR_MAX + 1); ch++)
+ g->charjump[ch] = g->mlen;
+
+ /* If the character does exist, compute the jump that would
+ * take us to the last character in the pattern equal to it
+ * (notice that we match right to left, so that last character
+ * is the first one that would be matched).
+ */
+ for (mindex = 0; mindex < g->mlen; mindex++)
+ g->charjump[(int)g->must[mindex]] = g->mlen - mindex - 1;
+}
+
+/*
+ - computematchjumps - compute match jumps for BM scan
+ == static void computematchjumps(struct parse *p, struct re_guts *g);
+ *
+ * This algorithm assumes g->must exists and is has size greater than
+ * zero. It's based on the algorithm found on Computer Algorithms by
+ * Sara Baase.
+ *
+ * A match jump is the number of characters one needs to advance based
+ * on the already-matched suffix.
+ * Notice that all values here are minus (g->mlen-1), because of the way
+ * the search algorithm works.
+ */
+static void
+computematchjumps(struct parse *p, struct re_guts *g)
+{
+ size_t mindex; /* General "must" iterator */
+ size_t suffix; /* Keeps track of matching suffix */
+ size_t ssuffix; /* Keeps track of suffixes' suffix */
+ size_t* pmatches; /* pmatches[k] points to the next i
+ * such that i+1...mlen is a substring
+ * of k+1...k+mlen-i-1
+ */
+
+ _DIAGASSERT(p != NULL);
+ _DIAGASSERT(g != NULL);
+
+ /* Avoid making errors worse */
+ if (p->error != 0)
+ return;
+
+ pmatches = calloc(g->mlen, sizeof(*pmatches));
+ if (pmatches == NULL) {
+ g->matchjump = NULL;
+ return;
+ }
+
+ g->matchjump = calloc(g->mlen, sizeof(*g->matchjump));
+ if (g->matchjump == NULL) { /* Not a fatal error */
+ free(pmatches);
+ return;
+ }
+
+ /* Set maximum possible jump for each character in the pattern */
+ for (mindex = 0; mindex < g->mlen; mindex++)
+ g->matchjump[mindex] = 2 * g->mlen - mindex - 1;
+
+ /* Compute pmatches[] */
+ for (suffix = mindex = g->mlen; mindex-- > 0; suffix--) {
+ pmatches[mindex] = suffix;
+
+ /* If a mismatch is found, interrupting the substring,
+ * compute the matchjump for that position. If no
+ * mismatch is found, then a text substring mismatched
+ * against the suffix will also mismatch against the
+ * substring.
+ */
+ while (suffix < g->mlen
+ && g->must[mindex] != g->must[suffix]) {
+ g->matchjump[suffix] = MIN(g->matchjump[suffix],
+ g->mlen - mindex - 1);
+ suffix = pmatches[suffix];
+ }
+ }
+
+ /* Compute the matchjump up to the last substring found to jump
+ * to the beginning of the largest must pattern prefix matching
+ * it's own suffix.
+ */
+ for (mindex = 0; mindex <= suffix; mindex++)
+ g->matchjump[mindex] = MIN(g->matchjump[mindex],
+ g->mlen + suffix - mindex);
+
+ ssuffix = pmatches[suffix];
+ while (suffix < g->mlen) {
+ while (suffix <= ssuffix && suffix < g->mlen) {
+ g->matchjump[suffix] = MIN(g->matchjump[suffix],
+ g->mlen + ssuffix - suffix);
+ suffix++;
+ }
+ if (suffix < g->mlen)
+ ssuffix = pmatches[ssuffix];
+ }
+
+ free(pmatches);
+}
+
+/*
- pluscount - count + nesting
== static sopno pluscount(struct parse *p, struct re_guts *g);
*/
static sopno /* nesting depth */
-pluscount(
- struct parse *p,
- struct re_guts *g)
+pluscount(struct parse *p, struct re_guts *g)
{
sop *scan;
sop s;
diff --git a/libc/upstream-netbsd/lib/libc/regex/regerror.c b/libc/upstream-netbsd/lib/libc/regex/regerror.c
index e00d7c0..cfd7704 100644
--- a/libc/upstream-netbsd/lib/libc/regex/regerror.c
+++ b/libc/upstream-netbsd/lib/libc/regex/regerror.c
@@ -1,6 +1,9 @@
-/* $NetBSD: regerror.c,v 1.23 2007/02/09 23:44:18 junyoung Exp $ */
+/* $NetBSD: regerror.c,v 1.26 2022/11/05 11:33:55 riastradh Exp $ */
/*-
+ * SPDX-License-Identifier: BSD-3-Clause
+ *
+ * Copyright (c) 1992, 1993, 1994 Henry Spencer.
* Copyright (c) 1992, 1993, 1994
* The Regents of the University of California. All rights reserved.
*
@@ -34,76 +37,38 @@
* @(#)regerror.c 8.4 (Berkeley) 3/20/94
*/
-/*-
- * Copyright (c) 1992, 1993, 1994 Henry Spencer.
- *
- * This code is derived from software contributed to Berkeley by
- * Henry Spencer.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * @(#)regerror.c 8.4 (Berkeley) 3/20/94
- */
+#if HAVE_NBTOOL_CONFIG_H
+#include "nbtool_config.h"
+#endif
#include <sys/cdefs.h>
-#if defined(LIBC_SCCS) && !defined(lint)
#if 0
static char sccsid[] = "@(#)regerror.c 8.4 (Berkeley) 3/20/94";
-#else
-__RCSID("$NetBSD: regerror.c,v 1.23 2007/02/09 23:44:18 junyoung Exp $");
+__FBSDID("$FreeBSD: head/lib/libc/regex/regerror.c 326025 2017-11-20 19:49:47Z pfg $");
#endif
-#endif /* LIBC_SCCS and not lint */
+__RCSID("$NetBSD: regerror.c,v 1.26 2022/11/05 11:33:55 riastradh Exp $");
#include "namespace.h"
#include <sys/types.h>
-
-#include <assert.h>
-#include <ctype.h>
-#include <limits.h>
#include <stdio.h>
-#include <stdlib.h>
#include <string.h>
+#include <limits.h>
+#include <stdlib.h>
#include <regex.h>
+#include "utils.h"
+
#ifdef __weak_alias
__weak_alias(regerror,_regerror)
#endif
-#include "utils.h"
-
/* ========= begin header generated by ./mkh ========= */
#ifdef __cplusplus
extern "C" {
#endif
/* === regerror.c === */
-static const char *regatoi(const regex_t *preg, char *localbuf, size_t buflen);
+static const char *regatoi(const regex_t *preg, char *localbufm, size_t buflen);
#ifdef __cplusplus
}
@@ -126,6 +91,8 @@
= #define REG_EMPTY 14
= #define REG_ASSERT 15
= #define REG_INVARG 16
+ = #define REG_ENOSYS 17
+ = #define REG_ILLSEQ 18
= #define REG_ATOI 255 // convert name to number (!)
= #define REG_ITOA 0400 // convert number to name (!)
*/
@@ -134,36 +101,36 @@
const char *name;
const char *explain;
} rerrs[] = {
- { REG_NOMATCH, "REG_NOMATCH", "regexec() failed to match" },
- { REG_BADPAT, "REG_BADPAT", "invalid regular expression" },
- { REG_ECOLLATE, "REG_ECOLLATE", "invalid collating element" },
- { REG_ECTYPE, "REG_ECTYPE", "invalid character class" },
- { REG_EESCAPE, "REG_EESCAPE", "trailing backslash (\\)" },
- { REG_ESUBREG, "REG_ESUBREG", "invalid backreference number" },
- { REG_EBRACK, "REG_EBRACK", "brackets ([ ]) not balanced" },
- { REG_EPAREN, "REG_EPAREN", "parentheses not balanced" },
- { REG_EBRACE, "REG_EBRACE", "braces not balanced" },
- { REG_BADBR, "REG_BADBR", "invalid repetition count(s)" },
- { REG_ERANGE, "REG_ERANGE", "invalid character range" },
- { REG_ESPACE, "REG_ESPACE", "out of memory" },
- { REG_BADRPT, "REG_BADRPT", "repetition-operator operand invalid" },
- { REG_EMPTY, "REG_EMPTY", "empty (sub)expression" },
- { REG_ASSERT, "REG_ASSERT", "\"can't happen\" -- you found a bug" },
- { REG_INVARG, "REG_INVARG", "invalid argument to regex routine" },
- { 0, "", "*** unknown regexp error code ***" }
+ {REG_NOMATCH, "REG_NOMATCH", "regexec() failed to match"},
+ {REG_BADPAT, "REG_BADPAT", "invalid regular expression"},
+ {REG_ECOLLATE, "REG_ECOLLATE", "invalid collating element"},
+ {REG_ECTYPE, "REG_ECTYPE", "invalid character class"},
+ {REG_EESCAPE, "REG_EESCAPE", "trailing backslash (\\)"},
+ {REG_ESUBREG, "REG_ESUBREG", "invalid backreference number"},
+ {REG_EBRACK, "REG_EBRACK", "brackets ([ ]) not balanced"},
+ {REG_EPAREN, "REG_EPAREN", "parentheses not balanced"},
+ {REG_EBRACE, "REG_EBRACE", "braces not balanced"},
+ {REG_BADBR, "REG_BADBR", "invalid repetition count(s)"},
+ {REG_ERANGE, "REG_ERANGE", "invalid character range"},
+ {REG_ESPACE, "REG_ESPACE", "out of memory"},
+ {REG_BADRPT, "REG_BADRPT", "repetition-operator operand invalid"},
+ {REG_EMPTY, "REG_EMPTY", "empty (sub)expression"},
+ {REG_ASSERT, "REG_ASSERT", "\"can't happen\" -- you found a bug"},
+ {REG_INVARG, "REG_INVARG", "invalid argument to regex routine"},
+ {REG_ILLSEQ, "REG_ILLSEQ", "illegal byte sequence"},
+ {0, "", "*** unknown regexp error code ***"}
};
/*
- * regerror - the interface to error numbers
- * extern size_t regerror(int, const regex_t *, char *, size_t);
+ - regerror - the interface to error numbers
+ = extern size_t regerror(int, const regex_t *, char *, size_t);
*/
/* ARGSUSED */
size_t
-regerror(
- int errcode,
- const regex_t *preg,
- char *errbuf,
- size_t errbuf_size)
+regerror(int errcode,
+ const regex_t * __restrict preg,
+ char * __restrict errbuf,
+ size_t errbuf_size)
{
const struct rerr *r;
size_t len;
@@ -172,21 +139,20 @@
char convbuf[50];
_DIAGASSERT(errcode != REG_ATOI || preg != NULL);
- _DIAGASSERT(errbuf != NULL);
+ _DIAGASSERT(errbuf_size == 0 || errbuf != NULL);
- if (errcode == REG_ATOI)
+ if (errcode == REG_ATOI) {
s = regatoi(preg, convbuf, sizeof convbuf);
- else {
+ } else {
for (r = rerrs; r->code != 0; r++)
if (r->code == target)
break;
-
- if (errcode & REG_ITOA) {
- if (r->code != 0) {
- (void)strlcpy(convbuf, r->name, sizeof convbuf);
- } else
- (void)snprintf(convbuf, sizeof convbuf,
- "REG_0x%x", target);
+
+ if (errcode®_ITOA) {
+ if (r->code != 0)
+ (void) strlcpy(convbuf, r->name, sizeof(convbuf));
+ else
+ snprintf(convbuf, sizeof(convbuf), "REG_0x%x", target);
s = convbuf;
} else
s = r->explain;
@@ -194,21 +160,17 @@
len = strlen(s) + 1;
if (errbuf_size > 0)
- (void)strlcpy(errbuf, s, errbuf_size);
+ (void) strlcpy(errbuf, s, errbuf_size);
return(len);
}
/*
- * regatoi - internal routine to implement REG_ATOI
- * static const char *regatoi(const regex_t *preg, char *localbuf,
- * size_t buflen);
+ - regatoi - internal routine to implement REG_ATOI
+ == static char *regatoi(const regex_t *preg, char *localbuf);
*/
static const char *
-regatoi(
- const regex_t *preg,
- char *localbuf,
- size_t buflen)
+regatoi(const regex_t *preg, char *localbuf, size_t buflen)
{
const struct rerr *r;
@@ -218,6 +180,6 @@
if (r->code == 0)
return "0";
- (void)snprintf(localbuf, buflen, "%d", r->code);
+ snprintf(localbuf, buflen, "%d", r->code);
return localbuf;
}
diff --git a/libc/upstream-netbsd/lib/libc/regex/regex2.h b/libc/upstream-netbsd/lib/libc/regex/regex2.h
index 7c877ee..fbfff0d 100644
--- a/libc/upstream-netbsd/lib/libc/regex/regex2.h
+++ b/libc/upstream-netbsd/lib/libc/regex/regex2.h
@@ -1,6 +1,9 @@
-/* $NetBSD: regex2.h,v 1.13 2011/10/09 18:23:00 christos Exp $ */
+/* $NetBSD: regex2.h,v 1.15 2021/02/24 18:13:21 christos Exp $ */
/*-
+ * SPDX-License-Identifier: BSD-3-Clause
+ *
+ * Copyright (c) 1992, 1993, 1994 Henry Spencer.
* Copyright (c) 1992, 1993, 1994
* The Regents of the University of California. All rights reserved.
*
@@ -32,43 +35,7 @@
* SUCH DAMAGE.
*
* @(#)regex2.h 8.4 (Berkeley) 3/20/94
- */
-
-/*-
- * Copyright (c) 1992, 1993, 1994 Henry Spencer.
- *
- * This code is derived from software contributed to Berkeley by
- * Henry Spencer.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * @(#)regex2.h 8.4 (Berkeley) 3/20/94
+ * $FreeBSD: head/lib/libc/regex/regex2.h 368359 2020-12-05 03:18:48Z kevans $
*/
/*
@@ -109,68 +76,100 @@
* In state representations, an operator's bit is on to signify a state
* immediately *preceding* "execution" of that operator.
*/
-typedef u_int32_t sop; /* strip operator */
-typedef size_t sopno;
-#define OPRMASK ((u_int32_t)0xf8000000UL)
-#define OPDMASK ((u_int32_t)0x07ffffffUL)
-#define OPSHIFT ((unsigned)27)
+typedef uint32_t sop; /* strip operator */
+typedef uint32_t sopno;
+#define OPRMASK 0xf8000000U
+#define OPDMASK 0x07ffffffU
+#define OPSHIFT (27U)
#define OP(n) ((n)&OPRMASK)
-#define OPND(n) ((int)((n)&OPDMASK))
+#define OPND(n) ((n)&OPDMASK)
#define SOP(op, opnd) ((op)|(opnd))
-
-#define OPC(n) (((u_int32_t)(n))<<OPSHIFT)
-/* operators meaning operand */
-/* (back, fwd are offsets) */
-#define OEND OPC(1) /* endmarker - */
-#define OCHAR OPC(2) /* character unsigned char */
-#define OBOL OPC(3) /* left anchor - */
-#define OEOL OPC(4) /* right anchor - */
-#define OANY OPC(5) /* . - */
-#define OANYOF OPC(6) /* [...] set number */
-#define OBACK_ OPC(7) /* begin \d paren number */
-#define O_BACK OPC(8) /* end \d paren number */
-#define OPLUS_ OPC(9) /* + prefix fwd to suffix */
-#define O_PLUS OPC(10) /* + suffix back to prefix */
-#define OQUEST_ OPC(11) /* ? prefix fwd to suffix */
-#define O_QUEST OPC(12) /* ? suffix back to prefix */
-#define OLPAREN OPC(13) /* ( fwd to ) */
-#define ORPAREN OPC(14) /* ) back to ( */
-#define OCH_ OPC(15) /* begin choice fwd to OOR2 */
-#define OOR1 OPC(16) /* | pt. 1 back to OOR1 or OCH_ */
-#define OOR2 OPC(17) /* | pt. 2 fwd to OOR2 or O_CH */
-#define O_CH OPC(18) /* end choice back to OOR1 */
-#define OBOW OPC(19) /* begin word - */
-#define OEOW OPC(20) /* end word - */
+/* operators meaning operand */
+/* (back, fwd are offsets) */
+#define OEND (1U<<OPSHIFT) /* endmarker - */
+#define OCHAR (2U<<OPSHIFT) /* character wide character */
+#define OBOL (3U<<OPSHIFT) /* left anchor - */
+#define OEOL (4U<<OPSHIFT) /* right anchor - */
+#define OANY (5U<<OPSHIFT) /* . - */
+#define OANYOF (6U<<OPSHIFT) /* [...] set number */
+#define OBACK_ (7U<<OPSHIFT) /* begin \d paren number */
+#define O_BACK (8U<<OPSHIFT) /* end \d paren number */
+#define OPLUS_ (9U<<OPSHIFT) /* + prefix fwd to suffix */
+#define O_PLUS (10U<<OPSHIFT) /* + suffix back to prefix */
+#define OQUEST_ (11U<<OPSHIFT) /* ? prefix fwd to suffix */
+#define O_QUEST (12U<<OPSHIFT) /* ? suffix back to prefix */
+#define OLPAREN (13U<<OPSHIFT) /* ( fwd to ) */
+#define ORPAREN (14U<<OPSHIFT) /* ) back to ( */
+#define OCH_ (15U<<OPSHIFT) /* begin choice fwd to OOR2 */
+#define OOR1 (16U<<OPSHIFT) /* | pt. 1 back to OOR1 or OCH_ */
+#define OOR2 (17U<<OPSHIFT) /* | pt. 2 fwd to OOR2 or O_CH */
+#define O_CH (18U<<OPSHIFT) /* end choice back to OOR1 */
+#define OBOW (19U<<OPSHIFT) /* begin word - */
+#define OEOW (20U<<OPSHIFT) /* end word - */
+#define OBOS (21U<<OPSHIFT) /* begin subj. - */
+#define OEOS (22U<<OPSHIFT) /* end subj. - */
+#define OWBND (23U<<OPSHIFT) /* word bound - */
+#define ONWBND (24U<<OPSHIFT) /* not bound - */
/*
- * Structure for [] character-set representation. Character sets are
- * done as bit vectors, grouped 8 to a byte vector for compactness.
- * The individual set therefore has both a pointer to the byte vector
- * and a mask to pick out the relevant bit of each byte. A hash code
- * simplifies testing whether two sets could be identical.
- *
- * This will get trickier for multicharacter collating elements. As
- * preliminary hooks for dealing with such things, we also carry along
- * a string of multi-character elements, and decide the size of the
- * vectors at run time.
+ * Structures for [] character-set representation.
*/
typedef struct {
- uch *ptr; /* -> uch [csetsize] */
- uch mask; /* bit within array */
- uch hash; /* hash code */
- size_t smultis;
- char *multis; /* -> char[smulti] ab\0cd\0ef\0\0 */
+ wint_t min;
+ wint_t max;
+} crange;
+typedef struct {
+ unsigned char bmp[NC_MAX / 8];
+ wctype_t *types;
+ unsigned int ntypes;
+ wint_t *wides;
+ unsigned int nwides;
+ crange *ranges;
+ unsigned int nranges;
+ int invert;
+ int icase;
} cset;
-/* note that CHadd and CHsub are unsafe, and CHIN doesn't yield 0/1 */
-#define CHadd(cs, c) ((cs)->ptr[(uch)(c)] |= (cs)->mask, (cs)->hash += (c))
-#define CHsub(cs, c) ((cs)->ptr[(uch)(c)] &= ~(cs)->mask, (cs)->hash -= (c))
-#define CHIN(cs, c) ((cs)->ptr[(uch)(c)] & (cs)->mask)
-#define MCadd(p, cs, cp) mcadd(p, cs, cp) /* regcomp() internal fns */
-#define MCsub(p, cs, cp) mcsub(p, cs, cp)
-#define MCin(p, cs, cp) mcin(p, cs, cp)
-/* stuff for character categories */
-typedef unsigned char cat_t;
+static int
+CHIN1(cset *cs, wint_t ch)
+{
+ unsigned int i;
+
+ assert(ch >= 0);
+ if (ch < NC)
+ return (((cs->bmp[(unsigned)ch >> 3] & (1 << (ch & 7))) != 0) ^
+ cs->invert);
+ for (i = 0; i < cs->nwides; i++) {
+ if (cs->icase) {
+ if (ch == towlower(cs->wides[i]) ||
+ ch == towupper(cs->wides[i]))
+ return (!cs->invert);
+ } else if (ch == cs->wides[i])
+ return (!cs->invert);
+ }
+ for (i = 0; i < cs->nranges; i++)
+ if (cs->ranges[i].min <= ch && ch <= cs->ranges[i].max)
+ return (!cs->invert);
+ for (i = 0; i < cs->ntypes; i++)
+ if (iswctype(ch, cs->types[i]))
+ return (!cs->invert);
+ return (cs->invert);
+}
+
+static __inline int
+CHIN(cset *cs, wint_t ch)
+{
+
+ assert(ch >= 0);
+ if (ch < NC)
+ return (((cs->bmp[(unsigned)ch >> 3] & (1 << (ch & 7))) != 0) ^
+ cs->invert);
+ else if (cs->icase)
+ return (CHIN1(cs, ch) || CHIN1(cs, towlower(ch)) ||
+ CHIN1(cs, towupper(ch)));
+ else
+ return (CHIN1(cs, ch));
+}
/*
* main compiled-expression structure
@@ -179,10 +178,8 @@
int magic;
# define MAGIC2 ((('R'^0200)<<8)|'E')
sop *strip; /* malloced area for strip */
- size_t csetsize; /* number of bits in a cset vector */
size_t ncsets; /* number of csets in use */
cset *sets; /* -> cset [ncsets] */
- uch *setbits; /* -> uch[csetsize][ncsets/CHAR_BIT] */
int cflags; /* copy of regcomp() cflags argument */
sopno nstates; /* = number of sops */
sopno firststate; /* the initial OEND (normally 0) */
@@ -193,17 +190,17 @@
# define BAD 04 /* something wrong */
size_t nbol; /* number of ^ used */
size_t neol; /* number of $ used */
- size_t ncategories; /* how many character categories */
- cat_t *categories; /* ->catspace[-CHAR_MIN] */
char *must; /* match must contain this string */
+ int moffset; /* latest point at which must may be located */
+ size_t *charjump; /* Boyer-Moore char jump table */
+ size_t *matchjump; /* Boyer-Moore match jump table */
size_t mlen; /* length of must */
size_t nsub; /* copy of re_nsub */
int backrefs; /* does it use back references? */
sopno nplus; /* how deep does it nest +s? */
- /* catspace must be last */
- cat_t catspace[1]; /* actually [NC] */
};
/* misc utilities */
-#define OUT (CHAR_MAX+1) /* a non-character value */
-#define ISWORD(c) (isalnum((unsigned char)c) || (c) == '_')
+#define OUT (CHAR_MIN - 1) /* a non-character value */
+#define IGN (CHAR_MIN - 2)
+#define ISWORD(c) (iswalnum((uch)(c)) || (c) == '_')
diff --git a/libc/upstream-netbsd/lib/libc/regex/regexec.c b/libc/upstream-netbsd/lib/libc/regex/regexec.c
index f16e0b6..213a90b 100644
--- a/libc/upstream-netbsd/lib/libc/regex/regexec.c
+++ b/libc/upstream-netbsd/lib/libc/regex/regexec.c
@@ -1,6 +1,9 @@
-/* $NetBSD: regexec.c,v 1.22 2012/03/13 21:13:43 christos Exp $ */
+/* $NetBSD: regexec.c,v 1.26 2021/02/26 19:24:47 christos Exp $ */
/*-
+ * SPDX-License-Identifier: BSD-3-Clause
+ *
+ * Copyright (c) 1992, 1993, 1994 Henry Spencer.
* Copyright (c) 1992, 1993, 1994
* The Regents of the University of California. All rights reserved.
*
@@ -34,91 +37,96 @@
* @(#)regexec.c 8.3 (Berkeley) 3/20/94
*/
-/*-
- * Copyright (c) 1992, 1993, 1994 Henry Spencer.
- *
- * This code is derived from software contributed to Berkeley by
- * Henry Spencer.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * @(#)regexec.c 8.3 (Berkeley) 3/20/94
- */
+#if HAVE_NBTOOL_CONFIG_H
+#include "nbtool_config.h"
+#endif
#include <sys/cdefs.h>
-#if defined(LIBC_SCCS) && !defined(lint)
#if 0
static char sccsid[] = "@(#)regexec.c 8.3 (Berkeley) 3/20/94";
-#else
-__RCSID("$NetBSD: regexec.c,v 1.22 2012/03/13 21:13:43 christos Exp $");
+__FBSDID("$FreeBSD: head/lib/libc/regex/regexec.c 326025 2017-11-20 19:49:47Z pfg $");
#endif
-#endif /* LIBC_SCCS and not lint */
+__RCSID("$NetBSD: regexec.c,v 1.26 2021/02/26 19:24:47 christos Exp $");
/*
* the outer shell of regexec()
*
- * This file includes engine.c *twice*, after muchos fiddling with the
+ * This file includes engine.c three times, after muchos fiddling with the
* macros that code uses. This lets the same code operate on two different
- * representations for state sets.
+ * representations for state sets and characters.
*/
-#include "namespace.h"
-#include <sys/types.h>
-#include <assert.h>
-#include <ctype.h>
-#include <limits.h>
+#ifndef LIBHACK
+#include "namespace.h"
+#endif
+#include <sys/types.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
+#include <limits.h>
+#include <ctype.h>
#include <regex.h>
-#ifdef __weak_alias
+#if defined(__weak_alias) && !defined(LIBHACK)
__weak_alias(regexec,_regexec)
#endif
#include "utils.h"
#include "regex2.h"
+static __inline size_t
+xmbrtowc(wint_t *wi, const char *s, size_t n, mbstate_t *mbs, wint_t dummy)
+{
+#ifdef NLS
+ size_t nr;
+ wchar_t wc;
+
+ nr = mbrtowc(&wc, s, n, mbs);
+ if (wi != NULL)
+ *wi = wc;
+ if (nr == 0)
+ return (1);
+ else if (nr == (size_t)-1 || nr == (size_t)-2) {
+ memset(mbs, 0, sizeof(*mbs));
+ if (wi != NULL)
+ *wi = dummy;
+ return (1);
+ } else
+ return (nr);
+#else
+ if (wi)
+ *wi = *s;
+ return 1;
+#endif
+}
+
+static __inline size_t
+xmbrtowc_dummy(wint_t *wi,
+ const char *s,
+ size_t n __unused,
+ mbstate_t *mbs __unused,
+ wint_t dummy __unused)
+{
+
+ if (wi != NULL)
+ *wi = (unsigned char)*s;
+ return (1);
+}
+
/* macros for manipulating states, small version */
-#define states unsigned long
-#define states1 unsigned long /* for later use in regexec() decision */
+#define states long
+#define states1 states /* for later use in regexec() decision */
#define CLEAR(v) ((v) = 0)
#define SET0(v, n) ((v) &= ~((unsigned long)1 << (n)))
#define SET1(v, n) ((v) |= (unsigned long)1 << (n))
#define ISSET(v, n) (((v) & ((unsigned long)1 << (n))) != 0)
#define ASSIGN(d, s) ((d) = (s))
#define EQ(a, b) ((a) == (b))
-#define STATEVARS int dummy /* dummy version */
+#define STATEVARS long dummy /* dummy version */
#define STATESETUP(m, n) /* nothing */
#define STATETEARDOWN(m) /* nothing */
#define SETUP(v) ((v) = 0)
-#define onestate unsigned long
+#define onestate long
#define INIT(o, n) ((o) = (unsigned long)1 << (n))
#define INC(o) ((o) <<= 1)
#define ISSTATEIN(v, o) (((v) & (o)) != 0)
@@ -127,6 +135,9 @@
#define FWD(dst, src, n) ((dst) |= ((unsigned long)(src)&(here)) << (n))
#define BACK(dst, src, n) ((dst) |= ((unsigned long)(src)&(here)) >> (n))
#define ISSETBACK(v, n) (((v) & ((unsigned long)here >> (n))) != 0)
+/* no multibyte support */
+#define XMBRTOWC xmbrtowc_dummy
+#define ZAPSTATE(mbs) ((void)(mbs))
/* function names */
#define SNAMES /* engine.c looks after details */
@@ -152,26 +163,25 @@
#undef BACK
#undef ISSETBACK
#undef SNAMES
+#undef XMBRTOWC
+#undef ZAPSTATE
/* macros for manipulating states, large version */
#define states char *
-#define CLEAR(v) memset(v, 0, (size_t)m->g->nstates)
+#define CLEAR(v) memset(v, 0, m->g->nstates)
#define SET0(v, n) ((v)[n] = 0)
#define SET1(v, n) ((v)[n] = 1)
#define ISSET(v, n) ((v)[n])
-#define ASSIGN(d, s) memcpy(d, s, (size_t)m->g->nstates)
-#define EQ(a, b) (memcmp(a, b, (size_t)m->g->nstates) == 0)
-#define STATEVARS int vn; char *space
-#define STATESETUP(m, nv) \
- if (((m)->space = malloc((size_t)((nv)*(m)->g->nstates))) == NULL) \
- return(REG_ESPACE); \
- else \
- (m)->vn = 0
-
-#define STATETEARDOWN(m) { free((m)->space); m->space = NULL; }
-#define SETUP(v) ((v) = &m->space[(size_t)(m->vn++ * m->g->nstates)])
-#define onestate int
-#define INIT(o, n) ((o) = (int)(n))
+#define ASSIGN(d, s) memcpy(d, s, m->g->nstates)
+#define EQ(a, b) (memcmp(a, b, m->g->nstates) == 0)
+#define STATEVARS long vn; char *space
+#define STATESETUP(m, nv) { (m)->space = malloc((nv)*(m)->g->nstates); \
+ if ((m)->space == NULL) return(REG_ESPACE); \
+ (m)->vn = 0; }
+#define STATETEARDOWN(m) { free((m)->space); }
+#define SETUP(v) ((v) = &m->space[m->vn++ * m->g->nstates])
+#define onestate long
+#define INIT(o, n) ((o) = (n))
#define INC(o) ((o)++)
#define ISSTATEIN(v, o) ((v)[o])
/* some abbreviations; note that some of these know variable names! */
@@ -179,11 +189,24 @@
#define FWD(dst, src, n) ((dst)[here+(n)] |= (src)[here])
#define BACK(dst, src, n) ((dst)[here-(n)] |= (src)[here])
#define ISSETBACK(v, n) ((v)[here - (n)])
+/* no multibyte support */
+#define XMBRTOWC xmbrtowc_dummy
+#define ZAPSTATE(mbs) ((void)(mbs))
/* function names */
#define LNAMES /* flag */
#include "engine.c"
+/* multibyte character & large states version */
+#undef LNAMES
+#undef XMBRTOWC
+#undef ZAPSTATE
+#define XMBRTOWC xmbrtowc
+#define ZAPSTATE(mbs) memset((mbs), 0, sizeof(*(mbs)))
+#define MNAMES
+
+#include "engine.c"
+
/*
- regexec - interface for matching
= extern int regexec(const regex_t *, const char *, size_t, \
@@ -200,21 +223,18 @@
* have been prototyped.
*/
int /* 0 success, REG_NOMATCH failure */
-regexec(
- const regex_t *preg,
- const char *string,
- size_t nmatch,
- regmatch_t pmatch[],
- int eflags)
+regexec(const regex_t * __restrict preg,
+ const char * __restrict string,
+ size_t nmatch,
+ regmatch_t pmatch[__restrict],
+ int eflags)
{
struct re_guts *g = preg->re_g;
- char *s;
#ifdef REDEBUG
# define GOODFLAGS(f) (f)
#else
# define GOODFLAGS(f) ((f)&(REG_NOTBOL|REG_NOTEOL|REG_STARTEND))
#endif
-
_DIAGASSERT(preg != NULL);
_DIAGASSERT(string != NULL);
@@ -225,10 +245,10 @@
return(REG_BADPAT);
eflags = GOODFLAGS(eflags);
- s = __UNCONST(string);
-
- if (g->nstates <= (sopno)(CHAR_BIT*sizeof(states1)) && !(eflags®_LARGE))
- return(smatcher(g, s, nmatch, pmatch, eflags));
+ if (MB_CUR_MAX > 1)
+ return(mmatcher(g, string, nmatch, pmatch, eflags));
+ else if (g->nstates <= CHAR_BIT*sizeof(states1) && !(eflags®_LARGE))
+ return(smatcher(g, string, nmatch, pmatch, eflags));
else
- return(lmatcher(g, s, nmatch, pmatch, eflags));
+ return(lmatcher(g, string, nmatch, pmatch, eflags));
}
diff --git a/libc/upstream-netbsd/lib/libc/regex/regfree.c b/libc/upstream-netbsd/lib/libc/regex/regfree.c
index ce011ea..7e388b1 100644
--- a/libc/upstream-netbsd/lib/libc/regex/regfree.c
+++ b/libc/upstream-netbsd/lib/libc/regex/regfree.c
@@ -1,6 +1,9 @@
-/* $NetBSD: regfree.c,v 1.15 2007/02/09 23:44:18 junyoung Exp $ */
+/* $NetBSD: regfree.c,v 1.19 2021/02/26 19:24:47 christos Exp $ */
/*-
+ * SPDX-License-Identifier: BSD-3-Clause
+ *
+ * Copyright (c) 1992, 1993, 1994 Henry Spencer.
* Copyright (c) 1992, 1993, 1994
* The Regents of the University of California. All rights reserved.
*
@@ -34,58 +37,22 @@
* @(#)regfree.c 8.3 (Berkeley) 3/20/94
*/
-/*-
- * Copyright (c) 1992, 1993, 1994 Henry Spencer.
- *
- * This code is derived from software contributed to Berkeley by
- * Henry Spencer.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * @(#)regfree.c 8.3 (Berkeley) 3/20/94
- */
+#if HAVE_NBTOOL_CONFIG_H
+#include "nbtool_config.h"
+#endif
#include <sys/cdefs.h>
-#if defined(LIBC_SCCS) && !defined(lint)
#if 0
static char sccsid[] = "@(#)regfree.c 8.3 (Berkeley) 3/20/94";
-#else
-__RCSID("$NetBSD: regfree.c,v 1.15 2007/02/09 23:44:18 junyoung Exp $");
+__FBSDID("$FreeBSD: head/lib/libc/regex/regfree.c 326025 2017-11-20 19:49:47Z pfg $");
#endif
-#endif /* LIBC_SCCS and not lint */
+__RCSID("$NetBSD: regfree.c,v 1.19 2021/02/26 19:24:47 christos Exp $");
#include "namespace.h"
#include <sys/types.h>
-
-#include <assert.h>
#include <stdio.h>
#include <stdlib.h>
+#include <limits.h>
#include <regex.h>
#ifdef __weak_alias
@@ -100,10 +67,10 @@
= extern void regfree(regex_t *);
*/
void
-regfree(
- regex_t *preg)
+regfree(regex_t *preg)
{
struct re_guts *g;
+ unsigned int i;
_DIAGASSERT(preg != NULL);
@@ -119,11 +86,19 @@
if (g->strip != NULL)
free(g->strip);
- if (g->sets != NULL)
+ if (g->sets != NULL) {
+ for (i = 0; i < g->ncsets; i++) {
+ free(g->sets[i].ranges);
+ free(g->sets[i].wides);
+ free(g->sets[i].types);
+ }
free(g->sets);
- if (g->setbits != NULL)
- free(g->setbits);
+ }
if (g->must != NULL)
free(g->must);
+ if (g->charjump != NULL)
+ free(&g->charjump[CHAR_MIN]);
+ if (g->matchjump != NULL)
+ free(g->matchjump);
free(g);
}
diff --git a/libc/upstream-netbsd/lib/libc/regex/utils.h b/libc/upstream-netbsd/lib/libc/regex/utils.h
index 762caee..972f555 100644
--- a/libc/upstream-netbsd/lib/libc/regex/utils.h
+++ b/libc/upstream-netbsd/lib/libc/regex/utils.h
@@ -1,6 +1,9 @@
-/* $NetBSD: utils.h,v 1.6 2003/08/07 16:43:21 agc Exp $ */
+/* $NetBSD: utils.h,v 1.9 2021/04/22 19:20:24 christos Exp $ */
/*-
+ * SPDX-License-Identifier: BSD-3-Clause
+ *
+ * Copyright (c) 1992, 1993, 1994 Henry Spencer.
* Copyright (c) 1992, 1993, 1994
* The Regents of the University of California. All rights reserved.
*
@@ -32,49 +35,38 @@
* SUCH DAMAGE.
*
* @(#)utils.h 8.3 (Berkeley) 3/20/94
+ * $FreeBSD: head/lib/libc/regex/utils.h 341838 2018-12-12 04:23:00Z yuripv $
*/
-/*-
- * Copyright (c) 1992, 1993, 1994 Henry Spencer.
- *
- * This code is derived from software contributed to Berkeley by
- * Henry Spencer.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * @(#)utils.h 8.3 (Berkeley) 3/20/94
- */
+#ifdef NLS
+#include <wchar.h>
+#include <wctype.h>
+#else
+#include <ctype.h>
+#define wint_t regex_wint_t
+#define mbstate_t regex_mbstate_t
+#define wctype_t regex_wctype_t
+typedef short wint_t;
+typedef char mbstate_t;
+typedef short wctype_t;
+#define iswupper(a) isupper(a)
+#define iswlower(a) islower(a)
+#define iswalpha(a) isalpha(a)
+#define iswalnum(a) isalnum(a)
+#define towupper(a) toupper(a)
+#define towlower(a) tolower(a)
+extern wctype_t __regex_wctype(const char *);
+extern int __regex_iswctype(wint_t, wctype_t);
+#define wctype(s) __regex_wctype(s)
+#define iswctype(c, t) __regex_iswctype((c), (t))
+#endif
/* utility definitions */
#define DUPMAX _POSIX2_RE_DUP_MAX /* xxx is this right? */
#define INFINITY (DUPMAX + 1)
-#define NC (CHAR_MAX - CHAR_MIN + 1)
+
+#define NC_MAX (CHAR_MAX - CHAR_MIN + 1)
+#define NC ((MB_CUR_MAX) == 1 ? (NC_MAX) : (128))
typedef unsigned char uch;
/* switch off assertions (if not already off) if no REDEBUG */
diff --git a/libc/upstream-netbsd/lib/libc/stdlib/bsearch.c b/libc/upstream-netbsd/lib/libc/stdlib/bsearch.c
index 2b0e0d8..e48fe85 100644
--- a/libc/upstream-netbsd/lib/libc/stdlib/bsearch.c
+++ b/libc/upstream-netbsd/lib/libc/stdlib/bsearch.c
@@ -1,4 +1,4 @@
-/* $NetBSD: bsearch.c,v 1.15 2012/03/04 20:01:45 christos Exp $ */
+/* $NetBSD: bsearch.c,v 1.16 2022/05/31 08:43:14 andvar Exp $ */
/*
* Copyright (c) 1990, 1993
@@ -34,7 +34,7 @@
#if 0
static char sccsid[] = "@(#)bsearch.c 8.1 (Berkeley) 6/4/93";
#else
-__RCSID("$NetBSD: bsearch.c,v 1.15 2012/03/04 20:01:45 christos Exp $");
+__RCSID("$NetBSD: bsearch.c,v 1.16 2022/05/31 08:43:14 andvar Exp $");
#endif
#endif /* LIBC_SCCS and not lint */
@@ -50,7 +50,7 @@
* is odd, moving left simply involves halving lim: e.g., when lim
* is 5 we look at item 2, so we change lim to 2 so that we will
* look at items 0 & 1. If lim is even, the same applies. If lim
- * is odd, moving right again involes halving lim, this time moving
+ * is odd, moving right again involves halving lim, this time moving
* the base up one item past p: e.g., when lim is 5 we change base
* to item 3 and make lim 2 so that we will look at items 3 and 4.
* If lim is even, however, we have to shrink it by one before
diff --git a/libfdtrack/fdtrack.cpp b/libfdtrack/fdtrack.cpp
index 2d114f2..b064401 100644
--- a/libfdtrack/fdtrack.cpp
+++ b/libfdtrack/fdtrack.cpp
@@ -71,7 +71,11 @@
static constexpr size_t kStackDepth = 32;
// Skip any initial frames from libfdtrack.so.
-static std::vector<std::string> kSkipFdtrackLib [[clang::no_destroy]] = {"libfdtrack.so"};
+// Also ignore frames from ART (http://b/236197847) because we'd rather spend
+// our precious few frames on the actual Java calling code rather than the
+// implementation of JNI!
+static std::vector<std::string> kSkipFdtrackLib
+ [[clang::no_destroy]] = {"libfdtrack.so", "libart.so"};
static bool installed = false;
static std::array<FdEntry, kFdTableSize> stack_traces [[clang::no_destroy]];
diff --git a/libm/Android.bp b/libm/Android.bp
index 8024fbe..3e271fa 100644
--- a/libm/Android.bp
+++ b/libm/Android.bp
@@ -29,6 +29,7 @@
whole_static_libs: ["libarm-optimized-routines-math"],
+ tidy_disabled_srcs: ["upstream-*/**/*.c"],
srcs: [
"upstream-freebsd/lib/msun/bsdsrc/b_tgamma.c",
"upstream-freebsd/lib/msun/src/catrig.c",
@@ -346,10 +347,33 @@
],
exclude_srcs: [
+ // TODO: do the rest when our clang has https://reviews.llvm.org/D136508.
+ // TODO: "upstream-freebsd/lib/msun/src/s_ceil.c",
+ // TODO: "upstream-freebsd/lib/msun/src/s_ceilf.c",
+ "upstream-freebsd/lib/msun/src/s_copysign.c",
+ "upstream-freebsd/lib/msun/src/s_copysignf.c",
+ // TODO: "upstream-freebsd/lib/msun/src/s_floor.c",
+ // TODO: "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_fmaxf.c",
+ "upstream-freebsd/lib/msun/src/s_fmin.c",
+ "upstream-freebsd/lib/msun/src/s_fminf.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_llroundf.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_lroundf.c",
+ // TODO: "upstream-freebsd/lib/msun/src/s_rint.c",
+ // TODO: "upstream-freebsd/lib/msun/src/s_rintf.c",
+ // TODO: "upstream-freebsd/lib/msun/src/s_round.c",
+ // TODO: "upstream-freebsd/lib/msun/src/s_roundf.c",
+ // TODO: "upstream-freebsd/lib/msun/src/s_trunc.c",
+ // TODO: "upstream-freebsd/lib/msun/src/s_truncf.c",
],
version_script: ":libm.riscv64.map",
},
@@ -361,57 +385,24 @@
"x86/ceilf.S",
"x86/floor.S",
"x86/floorf.S",
+ "x86/lrint.S",
+ "x86/lrintf.S",
"x86/rint.S",
"x86/rintf.S",
"x86/sqrt.S",
"x86/sqrtf.S",
"x86/trunc.S",
"x86/truncf.S",
- "x86/e_acos.S",
- "x86/e_asin.S",
- "x86/e_atan2.S",
- "x86/e_cosh.S",
- "x86/e_hypot.S",
- "x86/e_log10.S",
- "x86/e_sinh.S",
- "x86/libm_reduce_pi04l.S",
- "x86/libm_sincos_huge.S",
- "x86/libm_tancot_huge.S",
- "x86/lrint.S",
- "x86/lrintf.S",
- "x86/s_atan.S",
- "x86/s_cbrt.S",
- "x86/s_cos.S",
- "x86/s_expm1.S",
- "x86/s_log1p.S",
- "x86/s_sin.S",
- "x86/s_tanh.S",
- "x86/s_tan.S",
],
exclude_srcs: [
- "upstream-freebsd/lib/msun/src/e_acos.c",
- "upstream-freebsd/lib/msun/src/e_asin.c",
- "upstream-freebsd/lib/msun/src/e_atan2.c",
- "upstream-freebsd/lib/msun/src/e_cosh.c",
- "upstream-freebsd/lib/msun/src/e_hypot.c",
- "upstream-freebsd/lib/msun/src/e_log10.c",
- "upstream-freebsd/lib/msun/src/e_sinh.c",
- "upstream-freebsd/lib/msun/src/s_atan.c",
- "upstream-freebsd/lib/msun/src/s_cbrt.c",
"upstream-freebsd/lib/msun/src/s_ceil.c",
"upstream-freebsd/lib/msun/src/s_ceilf.c",
- "upstream-freebsd/lib/msun/src/s_cos.c",
- "upstream-freebsd/lib/msun/src/s_expm1.c",
"upstream-freebsd/lib/msun/src/s_floor.c",
"upstream-freebsd/lib/msun/src/s_floorf.c",
- "upstream-freebsd/lib/msun/src/s_log1p.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_sin.c",
- "upstream-freebsd/lib/msun/src/s_tan.c",
- "upstream-freebsd/lib/msun/src/s_tanh.c",
"upstream-freebsd/lib/msun/src/s_trunc.c",
"upstream-freebsd/lib/msun/src/s_truncf.c",
],
@@ -428,56 +419,26 @@
"x86_64/ceilf.S",
"x86_64/floor.S",
"x86_64/floorf.S",
+ "x86_64/lrint.S",
+ "x86_64/lrintf.S",
"x86_64/rint.S",
"x86_64/rintf.S",
"x86_64/sqrt.S",
"x86_64/sqrtf.S",
"x86_64/trunc.S",
"x86_64/truncf.S",
- "x86_64/e_acos.S",
- "x86_64/e_asin.S",
- "x86_64/e_atan2.S",
- "x86_64/e_cosh.S",
- "x86_64/e_hypot.S",
- "x86_64/e_log10.S",
- "x86_64/e_sinh.S",
- "x86_64/lrint.S",
- "x86_64/lrintf.S",
- "x86_64/s_atan.S",
- "x86_64/s_cbrt.S",
- "x86_64/s_cos.S",
- "x86_64/s_expm1.S",
- "x86_64/s_log1p.S",
- "x86_64/s_sin.S",
- "x86_64/s_tanh.S",
- "x86_64/s_tan.S",
],
exclude_srcs: [
- "upstream-freebsd/lib/msun/src/e_acos.c",
- "upstream-freebsd/lib/msun/src/e_asin.c",
- "upstream-freebsd/lib/msun/src/e_atan2.c",
- "upstream-freebsd/lib/msun/src/e_cosh.c",
- "upstream-freebsd/lib/msun/src/e_hypot.c",
- "upstream-freebsd/lib/msun/src/e_log10.c",
- "upstream-freebsd/lib/msun/src/e_sinh.c",
- "upstream-freebsd/lib/msun/src/s_atan.c",
- "upstream-freebsd/lib/msun/src/s_cbrt.c",
"upstream-freebsd/lib/msun/src/s_ceil.c",
"upstream-freebsd/lib/msun/src/s_ceilf.c",
- "upstream-freebsd/lib/msun/src/s_cos.c",
- "upstream-freebsd/lib/msun/src/s_expm1.c",
"upstream-freebsd/lib/msun/src/s_floor.c",
"upstream-freebsd/lib/msun/src/s_floorf.c",
- "upstream-freebsd/lib/msun/src/s_log1p.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_sin.c",
- "upstream-freebsd/lib/msun/src/s_tan.c",
- "upstream-freebsd/lib/msun/src/s_tanh.c",
"upstream-freebsd/lib/msun/src/s_trunc.c",
"upstream-freebsd/lib/msun/src/s_truncf.c",
],
diff --git a/libm/builtins.cpp b/libm/builtins.cpp
index 7487323..58cd81d 100644
--- a/libm/builtins.cpp
+++ b/libm/builtins.cpp
@@ -18,43 +18,26 @@
#include "fpmath.h"
-double fabs(double x) {
-#if __arm__
- // Both Clang and GCC insist on moving r0/r1 into a double register
- // and using fabs where bit-twiddling would be a better choice.
- // They get fabsf right, but we need to be careful in fabsl too.
- IEEEd2bits u;
- u.d = x;
- u.bits.sign = 0;
- return u.d;
-#else
- return __builtin_fabs(x);
-#endif
-}
-
-float fabsf(float x) {
- return __builtin_fabsf(x);
-}
-
-#if defined(__LP64__)
+double fabs(double x) { return __builtin_fabs(x); }
+float fabsf(float x) { return __builtin_fabsf(x); }
long double fabsl(long double x) { return __builtin_fabsl(x); }
-#else
-long double fabsl(long double x) {
- // Don't use __builtin_fabs here because of ARM. (See fabs above.)
- return fabs(x);
-}
-#endif
#if defined(__aarch64__)
float ceilf(float x) { return __builtin_ceilf(x); }
double ceil(double x) { return __builtin_ceil(x); }
+#endif
+#if defined(__aarch64__) || defined(__riscv)
double copysign(double x, double y) { return __builtin_copysign(x, y); }
float copysignf(float x, float y) { return __builtin_copysignf(x, y); }
+#endif
+#if defined(__aarch64__)
float floorf(float x) { return __builtin_floorf(x); }
double floor(double x) { return __builtin_floor(x); }
+#endif
+#if defined(__aarch64__) || defined(__riscv)
float fmaf(float x, float y, float z) { return __builtin_fmaf(x, y, z); }
double fma(double x, double y, double z) { return __builtin_fma(x, y, z); }
@@ -68,7 +51,9 @@
long lroundf(float x) { return __builtin_lroundf(x); }
long long llround(double x) { return __builtin_llround(x); }
long long llroundf(float x) { return __builtin_llroundf(x); }
+#endif
+#if defined(__aarch64__)
float rintf(float x) { return __builtin_rintf(x); }
double rint(double x) { return __builtin_rint(x); }
diff --git a/libm/x86/e_acos.S b/libm/x86/e_acos.S
deleted file mode 100644
index 04b1787..0000000
--- a/libm/x86/e_acos.S
+++ /dev/null
@@ -1,1929 +0,0 @@
-/*
-Copyright (c) 2014, Intel Corporation
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
-
- * Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
-
- * Neither the name of Intel Corporation nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
-ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/******************************************************************************/
-// ALGORITHM DESCRIPTION
-// ---------------------
-//
-// To compute acos(s), separate schemes are used when s is in different
-// intervals.
-//
-// |s| in [2^{-4}, sqrt(3)/2):
-// Let t=2^k*1.b1 b2..b6 1, where s=2^k*1.b1 b2 .. b52
-// acos(s)=pi/2-asin(t)-asin(r), where r=s*sqrt(1-t^2)-t*sqrt(1-s^2)
-// asin(r)-r evaluated as 7-degree polynomial (c3*r^3+c5*r^5+c7*r^7)
-// For the first degree term, r is evaluated as
-// R=(s^2-t^2)/(sqrt(1-t^2)*s+sqrt(1-s^2)*t)
-// (sqrt(1-t^2) read from table)
-// The main source of error is still R (may still be affected by up to 3 ulps
-// of rounding error). The table size must be sufficiently large, to minimize
-// this effect.
-//
-// |s| in [sqrt(3)/2, 255/256):
-// Let t=2^k*1.b1 b2..b6 1, where sqrt(1-s^2)=2^k*1.b1 b2 .. b52 (rounded)
-// acos(|s|)=asin(t)-asin(r), r=s*t-sqrt(1-s^2)*sqrt(1-t^2)
-// acos(-|s|)=pi-acos(|s|)
-// (The -PI constant, or 0, is added to the result. The sign is set at
-// the end)
-// asin(r) evaluated as a polynomial (same as above)
-// The first degree term is evaluated as
-// r=(s^2+t^2-1)/(s*t+sqrt(1-s^2)*sqrt(1-t^2))
-//
-// |s|<2^{-4}: acos(s)=pi/2-asin(s)
-// evaluate asin(s) as 13-degree polynomial
-//
-// |s| in [255/256,1): acos(|s|)=2*asin(q), where q=sqrt((1-|s|)/2)
-// asin(q) is evaluated as 13-degree polynomial
-// q^2=(1-|s|)/2 is obtained in advance
-// 2*q*eps ~ ((1-|s|)/2-q^2)/q used for first term
-// acos(-|s|)=pi-acos(|s|)
-// (The -PI constant, or 0, is added to the result. The sign is set at
-// the end)
-//
-// Special cases:
-// acos(NaN) = quiet NaN, and raise invalid exception
-// acos(INF) = QNaN and raise invalid exception
-// acos(x) = QNaN and raise invalid exception, for |x|>1.0
-// acos(1) = +0
-//
-/******************************************************************************/
-
-#include <private/bionic_asm.h>
-# -- Begin static_func
- .text
- .align __bionic_asm_align
- .type static_func, @function
-static_func:
-..B1.1:
- call ..L2
-..L2:
- popl %eax
- lea _GLOBAL_OFFSET_TABLE_+[. - ..L2](%eax), %eax
- lea static_const_table@GOTOFF(%eax), %eax
- ret
- .size static_func,.-static_func
-# -- End static_func
-
-# -- Begin acos
-ENTRY(acos)
-# parameter 1: 8 + %ebp
-..B2.1:
-..B2.2:
- pushl %ebp
- movl %esp, %ebp
- subl $104, %esp
- movl %ebx, 48(%esp)
- call static_func
- movl %eax, %ebx
- movsd 112(%esp), %xmm0
- movsd 6048(%ebx), %xmm4
- movsd 6080(%ebx), %xmm3
- xorpd %xmm5, %xmm5
- movsd 6064(%ebx), %xmm2
- movapd %xmm0, %xmm1
- movsd %xmm0, 8(%esp)
- psrlq $44, %xmm0
- movd %xmm0, %edx
- movapd %xmm1, %xmm7
- movl $8192, %ecx
- pinsrw $2, %ecx, %xmm5
- movapd %xmm1, %xmm0
- movl $524287, %eax
- andl %edx, %eax
- subl $260864, %eax
- cmpl $955, %eax
- jae .L_2TAG_PACKET_0.0.2
- mulsd %xmm1, %xmm1
- andl $65535, %edx
- subsd %xmm1, %xmm3
- sqrtsd %xmm3, %xmm3
- andpd %xmm7, %xmm2
- andl $-4, %edx
- subl $64256, %edx
- movsd 3840(%ebx,%edx,2), %xmm1
- orpd %xmm5, %xmm2
- movapd (%ebx,%edx,4), %xmm4
- movapd %xmm7, %xmm6
- addsd %xmm2, %xmm7
- subsd %xmm2, %xmm0
- mulsd %xmm0, %xmm7
- mulsd %xmm1, %xmm6
- mulsd %xmm2, %xmm3
- movapd %xmm6, %xmm1
- addsd %xmm3, %xmm6
- divsd %xmm6, %xmm7
- movsd 5976(%ebx), %xmm0
- movsd 5960(%ebx), %xmm5
- subsd %xmm3, %xmm1
- psrlq $63, %xmm2
- movapd %xmm1, %xmm3
- psllq $63, %xmm2
- mulsd %xmm1, %xmm1
- pshufd $68, %xmm2, %xmm2
- movsd 5968(%ebx), %xmm6
- mulsd %xmm1, %xmm3
- mulsd %xmm1, %xmm0
- xorpd %xmm2, %xmm4
- mulsd %xmm3, %xmm5
- subpd 5888(%ebx), %xmm4
- mulsd %xmm1, %xmm3
- addsd %xmm6, %xmm0
- mulsd %xmm3, %xmm0
- subsd %xmm4, %xmm5
- pshufd $238, %xmm4, %xmm4
- addsd %xmm5, %xmm0
- subsd %xmm7, %xmm0
- subsd %xmm4, %xmm0
- movsd %xmm0, (%esp)
- fldl (%esp)
- jmp .L_2TAG_PACKET_1.0.2
-.L_2TAG_PACKET_0.0.2:
- subl $955, %eax
- cmpl $65, %eax
- jae .L_2TAG_PACKET_2.0.2
- psrlq $38, %xmm7
- psllq $38, %xmm7
- pmovmskb %xmm0, %eax
- andnpd %xmm0, %xmm4
- subsd %xmm7, %xmm1
- movapd %xmm7, %xmm6
- mulsd %xmm7, %xmm7
- addsd %xmm6, %xmm0
- orpd %xmm4, %xmm5
- subsd %xmm7, %xmm3
- mulsd %xmm1, %xmm0
- movapd %xmm3, %xmm4
- subsd %xmm0, %xmm3
- sqrtsd %xmm3, %xmm3
- andl $128, %eax
- shrl $7, %eax
- negl %eax
- movapd %xmm3, %xmm7
- andpd %xmm3, %xmm2
- psllq $2, %xmm3
- pextrw $3, %xmm3, %edx
- orpd %xmm5, %xmm2
- movd %eax, %xmm3
- pshufd $0, %xmm3, %xmm3
- subl $65216, %edx
- addl %edx, %edx
- mulsd 3840(%ebx,%edx,4), %xmm7
- mulsd %xmm2, %xmm6
- mulsd %xmm2, %xmm1
- mulsd %xmm2, %xmm2
- subsd %xmm7, %xmm6
- andpd 5904(%ebx), %xmm3
- addsd %xmm1, %xmm6
- subsd %xmm2, %xmm4
- addsd %xmm7, %xmm7
- movsd 5960(%ebx), %xmm5
- subsd %xmm0, %xmm4
- addsd %xmm6, %xmm7
- movsd 5976(%ebx), %xmm0
- divsd %xmm7, %xmm4
- movsd 5968(%ebx), %xmm2
- addpd (%ebx,%edx,8), %xmm3
- movapd %xmm6, %xmm1
- mulsd %xmm6, %xmm6
- mulsd %xmm6, %xmm0
- mulsd %xmm6, %xmm1
- mulsd %xmm1, %xmm5
- mulsd %xmm6, %xmm1
- addsd %xmm2, %xmm0
- pxor %xmm6, %xmm6
- mulsd %xmm1, %xmm0
- addsd %xmm3, %xmm5
- addsd %xmm5, %xmm0
- andl $32768, %eax
- pinsrw $3, %eax, %xmm6
- movapd %xmm4, %xmm5
- pshufd $238, %xmm3, %xmm3
- addsd %xmm3, %xmm4
- subsd %xmm4, %xmm3
- addsd %xmm3, %xmm5
- addsd %xmm5, %xmm0
- addsd %xmm4, %xmm0
- xorpd %xmm6, %xmm0
- movsd %xmm0, (%esp)
- fldl (%esp)
- jmp .L_2TAG_PACKET_1.0.2
-.L_2TAG_PACKET_2.0.2:
- addl $15291, %eax
- cmpl $14336, %eax
- jae .L_2TAG_PACKET_3.0.2
- unpcklpd %xmm0, %xmm0
- movapd 5984(%ebx), %xmm6
- unpcklpd %xmm0, %xmm1
- movapd 6000(%ebx), %xmm2
- movapd 6016(%ebx), %xmm4
- mulpd %xmm0, %xmm0
- movapd 5888(%ebx), %xmm5
- mulpd %xmm0, %xmm1
- mulpd %xmm0, %xmm6
- mulpd %xmm0, %xmm0
- movapd %xmm1, %xmm3
- mulsd %xmm1, %xmm1
- addpd %xmm2, %xmm6
- mulpd %xmm0, %xmm4
- mulsd %xmm3, %xmm1
- addpd %xmm4, %xmm6
- pshufd $238, %xmm5, %xmm0
- mulpd %xmm6, %xmm1
- pshufd $238, %xmm5, %xmm6
- subsd %xmm7, %xmm0
- pshufd $238, %xmm1, %xmm2
- subsd %xmm1, %xmm5
- subsd %xmm0, %xmm6
- subsd %xmm2, %xmm5
- subsd %xmm6, %xmm7
- subsd %xmm7, %xmm5
- addsd %xmm5, %xmm0
- movsd %xmm0, (%esp)
- fldl (%esp)
- jmp .L_2TAG_PACKET_1.0.2
-.L_2TAG_PACKET_3.0.2:
- subl $15356, %eax
- cmpl $4, %eax
- jae .L_2TAG_PACKET_4.0.2
- xorpd %xmm6, %xmm6
- andpd 6048(%ebx), %xmm7
- movsd 6096(%ebx), %xmm4
- movapd 5984(%ebx), %xmm1
- mulsd %xmm4, %xmm7
- movapd 6000(%ebx), %xmm2
- subsd %xmm7, %xmm4
- movapd 6016(%ebx), %xmm3
- pshufd $68, %xmm4, %xmm7
- sqrtsd %xmm4, %xmm4
- mulpd %xmm7, %xmm1
- pshufd $68, %xmm7, %xmm5
- pextrw $3, %xmm0, %eax
- mulpd %xmm7, %xmm7
- addpd %xmm1, %xmm2
- movsd 5936(%ebx), %xmm1
- mulpd %xmm7, %xmm3
- cmpsd $1, %xmm6, %xmm0
- mulsd %xmm5, %xmm7
- addpd %xmm3, %xmm2
- pshufd $68, %xmm0, %xmm0
- mulsd %xmm7, %xmm2
- andpd 5904(%ebx), %xmm0
- mulpd %xmm5, %xmm2
- andpd %xmm4, %xmm1
- pshufd $68, %xmm4, %xmm3
- subsd %xmm1, %xmm4
- addsd %xmm3, %xmm3
- mulsd %xmm1, %xmm1
- subsd %xmm4, %xmm3
- subsd %xmm1, %xmm5
- mulsd %xmm3, %xmm4
- pshufd $238, %xmm3, %xmm3
- subsd %xmm4, %xmm5
- divsd %xmm3, %xmm5
- addpd %xmm3, %xmm3
- mulpd %xmm3, %xmm2
- pshufd $238, %xmm2, %xmm4
- addsd %xmm0, %xmm2
- andl $32768, %eax
- pinsrw $3, %eax, %xmm6
- pshufd $238, %xmm0, %xmm0
- addsd %xmm4, %xmm2
- addsd %xmm5, %xmm2
- addsd %xmm3, %xmm2
- addsd %xmm2, %xmm0
- xorpd %xmm6, %xmm0
- movsd %xmm0, (%esp)
- fldl (%esp)
- jmp .L_2TAG_PACKET_1.0.2
-.L_2TAG_PACKET_4.0.2:
- addl $261884, %eax
- cmpl $261888, %eax
- jb .L_2TAG_PACKET_5.0.2
- movd %xmm7, %ecx
- psrlq $32, %xmm7
- movd %xmm7, %edx
- andl $2147483647, %edx
- movl $1072693248, %eax
- subl %edx, %eax
- orl %ecx, %eax
- cmpl $0, %eax
- je .L_2TAG_PACKET_6.0.2
- movq 8(%esp), %xmm2
- movd %xmm2, %edx
- psrlq $32, %xmm2
- movd %xmm2, %ecx
- andl $2147483647, %ecx
- subl $1, %edx
- sbbl $2146435072, %ecx
- cmpl $0, %ecx
- jge .L_2TAG_PACKET_7.0.2
- xorpd %xmm1, %xmm1
- xorpd %xmm0, %xmm0
- movl $32752, %edx
- pinsrw $3, %edx, %xmm1
- mulsd %xmm1, %xmm0
- movsd %xmm0, (%esp)
- fldl (%esp)
- jmp .L_2TAG_PACKET_1.0.2
-.L_2TAG_PACKET_6.0.2:
- pextrw $1, %xmm7, %edx
- shrl $15, %edx
- negl %edx
- movd %edx, %xmm7
- pshufd $0, %xmm7, %xmm7
- movsd 5920(%ebx), %xmm2
- movsd 5928(%ebx), %xmm0
- andpd %xmm7, %xmm2
- andpd %xmm7, %xmm0
- addsd %xmm2, %xmm0
- movsd %xmm0, (%esp)
- fldl (%esp)
- jmp .L_2TAG_PACKET_1.0.2
-.L_2TAG_PACKET_5.0.2:
- movsd 5888(%ebx), %xmm2
- movsd 5896(%ebx), %xmm0
- addsd %xmm2, %xmm0
- movsd %xmm0, (%esp)
- fldl (%esp)
- jmp .L_2TAG_PACKET_1.0.2
-.L_2TAG_PACKET_7.0.2:
- xorpd %xmm6, %xmm6
- addsd %xmm6, %xmm0
- movsd %xmm0, (%esp)
- fldl (%esp)
-.L_2TAG_PACKET_1.0.2:
- movl 48(%esp), %ebx
- movl %ebp, %esp
- popl %ebp
- ret
-..B2.3:
-END(acos)
-# -- End acos
-
-# Start file scope ASM
-ALIAS_SYMBOL(acosl, acos);
-# End file scope ASM
- .section .rodata, "a"
- .align 16
- .align 16
-static_const_table:
- .long 3822952792
- .long 1021639372
- .long 182792448
- .long 1068507836
- .long 2264213271
- .long 1019558908
- .long 649052928
- .long 1068524253
- .long 1797139609
- .long 1022295143
- .long 1243095296
- .long 1068540671
- .long 1415938756
- .long 1021439537
- .long 2033294592
- .long 1068557090
- .long 2356809978
- .long 1021777916
- .long 3088063744
- .long 1068573510
- .long 2669055318
- .long 1022124482
- .long 180888576
- .long 1068589932
- .long 3566445325
- .long 1021358712
- .long 1970196992
- .long 1068606354
- .long 896980323
- .long 1021319659
- .long 4229555456
- .long 1068622777
- .long 436049712
- .long 1021319758
- .long 2732572160
- .long 1068639202
- .long 583123209
- .long 1020797960
- .long 1842831872
- .long 1068655628
- .long 1370449804
- .long 1021429270
- .long 1628994560
- .long 1068672055
- .long 2411391464
- .long 1021057980
- .long 2159763712
- .long 1068688483
- .long 1208692749
- .long 1021943903
- .long 3503886336
- .long 1068704912
- .long 538793309
- .long 1019744063
- .long 1435187200
- .long 1068721343
- .long 4085087612
- .long 1020608419
- .long 317469952
- .long 1068737775
- .long 144386942
- .long 1021440732
- .long 219617280
- .long 1068754208
- .long 2940088361
- .long 1019981122
- .long 1210558208
- .long 1068770642
- .long 2176850347
- .long 1018373705
- .long 3359268352
- .long 1068787077
- .long 2395611454
- .long 1021889042
- .long 2439803648
- .long 1068803514
- .long 1650705253
- .long 1020227966
- .long 2816203520
- .long 1068819952
- .long 3702166386
- .long 1019379914
- .long 262620672
- .long 1068836392
- .long 1855649370
- .long 1020453124
- .long 3438159616
- .long 1068852832
- .long 923063860
- .long 1019273834
- .long 3822105856
- .long 1068869274
- .long 4289947947
- .long 1019434249
- .long 1483729920
- .long 1068885718
- .long 787455814
- .long 1020738379
- .long 787321088
- .long 1068902163
- .long 3321653337
- .long 1021842569
- .long 1802253312
- .long 1068918609
- .long 2653633526
- .long 1021821525
- .long 302985984
- .long 1068935057
- .long 161272028
- .long 1021655149
- .long 653966080
- .long 1068951506
- .long 2566098667
- .long 1020066219
- .long 2924727296
- .long 1068967956
- .long 3646493722
- .long 1014292285
- .long 2889890304
- .long 1068984408
- .long 1081009196
- .long 1022189620
- .long 619098112
- .long 1069000862
- .long 4011643355
- .long 1021773297
- .long 477017600
- .long 1069017317
- .long 4030305534
- .long 1021292252
- .long 2533403904
- .long 1069033773
- .long 2645187591
- .long 1019527099
- .long 2563102208
- .long 1069050231
- .long 3857293792
- .long 1022311697
- .long 635982336
- .long 1069066691
- .long 3625936637
- .long 1017511744
- .long 1116940800
- .long 1069083152
- .long 3653872993
- .long 1022016631
- .long 4075964160
- .long 1069099614
- .long 2468900271
- .long 1021769532
- .long 993165568
- .long 1069116079
- .long 1358104224
- .long 1021199776
- .long 528586752
- .long 1069132545
- .long 2200950332
- .long 1022024872
- .long 2752395776
- .long 1069149012
- .long 3197072454
- .long 1017751319
- .long 3439855616
- .long 1069165481
- .long 1651081806
- .long 1020809338
- .long 2661257728
- .long 1069181952
- .long 539032752
- .long 1021728805
- .long 486957312
- .long 1069198425
- .long 3136045149
- .long 1016888671
- .long 1282340352
- .long 1069214899
- .long 2593963259
- .long 1018956103
- .long 822921728
- .long 1069231375
- .long 2146032737
- .long 1022306465
- .long 3474216192
- .long 1069247852
- .long 3976811625
- .long 1021350207
- .long 716902656
- .long 1069264332
- .long 718267222
- .long 1018624727
- .long 1211594496
- .long 1069280813
- .long 1485641389
- .long 1018447451
- .long 734070272
- .long 1069297296
- .long 354455128
- .long 1021341291
- .long 3650110720
- .long 1069313780
- .long 682185947
- .long 1021651853
- .long 1440663040
- .long 1069330267
- .long 3558574550
- .long 1021615110
- .long 2766612224
- .long 1069346755
- .long 874607978
- .long 1017746872
- .long 3404011008
- .long 1069363245
- .long 4154988502
- .long 1021439906
- .long 3423949056
- .long 1069379737
- .long 2263202309
- .long 1021479615
- .long 2897587712
- .long 1069396231
- .long 2562065031
- .long 1022090363
- .long 1896159232
- .long 1069412727
- .long 3836237663
- .long 1019867288
- .long 490968576
- .long 1069429225
- .long 3322056743
- .long 1006752762
- .long 3048360192
- .long 1069445724
- .long 1152314833
- .long 1013122252
- .long 1049850624
- .long 1069462226
- .long 3601590727
- .long 1022214610
- .long 3156899584
- .long 1069478729
- .long 1855169970
- .long 1019487271
- .long 851173376
- .long 1069495235
- .long 312649594
- .long 1020868604
- .long 2794281728
- .long 1069511742
- .long 1093490181
- .long 1020777577
- .long 468042496
- .long 1069528252
- .long 1152540679
- .long 1021403732
- .long 2534219264
- .long 1069544763
- .long 2292126035
- .long 1021872430
- .long 1376146432
- .long 1069558527
- .long 3293753641
- .long 1020500454
- .long 4175442432
- .long 1069575044
- .long 3626347564
- .long 1021610969
- .long 3523113472
- .long 1069591566
- .long 339956500
- .long 1021119039
- .long 4003350528
- .long 1069608092
- .long 3429333082
- .long 1022813542
- .long 1611067392
- .long 1069624623
- .long 2298017544
- .long 1021977587
- .long 931782144
- .long 1069641158
- .long 2164684743
- .long 1021250988
- .long 2256725504
- .long 1069657697
- .long 1138762335
- .long 1021443776
- .long 1582853120
- .long 1069674241
- .long 1084010382
- .long 1022994693
- .long 3497758720
- .long 1069690789
- .long 406366244
- .long 1022713586
- .long 3999816960
- .long 1069707342
- .long 1488723042
- .long 1023381290
- .long 3383096064
- .long 1069723900
- .long 2541558953
- .long 1019137887
- .long 1942403584
- .long 1069740463
- .long 1879620343
- .long 1022653642
- .long 4268263680
- .long 1069757030
- .long 3039077047
- .long 1022252545
- .long 2067062272
- .long 1069773603
- .long 4190670677
- .long 1020725863
- .long 4225828096
- .long 1069790180
- .long 1998567321
- .long 1022014385
- .long 2452507136
- .long 1069806763
- .long 1511628873
- .long 1021900300
- .long 1340746240
- .long 1069823351
- .long 788367341
- .long 1022726208
- .long 1190035456
- .long 1069839944
- .long 3856337230
- .long 1021834118
- .long 2300688384
- .long 1069856542
- .long 3211396579
- .long 1022621365
- .long 678886400
- .long 1069873146
- .long 4001011887
- .long 1022042646
- .long 921594112
- .long 1069889755
- .long 557811968
- .long 1023065533
- .long 3331668992
- .long 1069906369
- .long 1877060679
- .long 1022419742
- .long 3917875200
- .long 1069922989
- .long 1181055171
- .long 1022752712
- .long 2984829696
- .long 1069939615
- .long 4294526932
- .long 1021499988
- .long 838049024
- .long 1069956247
- .long 3658081878
- .long 1022957952
- .long 2078928384
- .long 1069972884
- .long 820353701
- .long 1019391107
- .long 2719854336
- .long 1069989527
- .long 1644022489
- .long 1023378240
- .long 3069117696
- .long 1070006176
- .long 2771393702
- .long 1019319954
- .long 3435962368
- .long 1070022831
- .long 3876394145
- .long 1023024433
- .long 4130595328
- .long 1070039492
- .long 1630447748
- .long 1021465882
- .long 1169236224
- .long 1070056160
- .long 2828355997
- .long 1020458120
- .long 3453997312
- .long 1070072833
- .long 164091641
- .long 1020388279
- .long 2708127744
- .long 1070089513
- .long 3036550223
- .long 1023328684
- .long 3540797696
- .long 1070106199
- .long 3710949463
- .long 1022568805
- .long 1972276736
- .long 1070122892
- .long 3885277950
- .long 1019761674
- .long 2613815552
- .long 1070139591
- .long 2764165077
- .long 1022921023
- .long 1487791616
- .long 1070156297
- .long 1330644769
- .long 1023162679
- .long 3207593472
- .long 1070173009
- .long 3911007221
- .long 1022993496
- .long 3797764608
- .long 1070189728
- .long 979712598
- .long 1022554580
- .long 3578920448
- .long 1070206454
- .long 2825738223
- .long 1020223708
- .long 2872795648
- .long 1070223187
- .long 392451124
- .long 1022666279
- .long 2002258432
- .long 1070239927
- .long 3730407632
- .long 1023148291
- .long 1291326464
- .long 1070256674
- .long 3723802980
- .long 1022514089
- .long 1065180928
- .long 1070273428
- .long 2635617463
- .long 1022654470
- .long 1650181632
- .long 1070290189
- .long 2061982883
- .long 1022853411
- .long 3373882880
- .long 1070306957
- .long 319732785
- .long 1022017175
- .long 2270081280
- .long 1070323733
- .long 2237757411
- .long 1023064087
- .long 2963732736
- .long 1070340516
- .long 468839165
- .long 1023293774
- .long 1491099904
- .long 1070357307
- .long 1502657946
- .long 1021533479
- .long 2479636480
- .long 1070374105
- .long 482913562
- .long 1021986286
- .long 1968133632
- .long 1070390911
- .long 3281474337
- .long 1022646400
- .long 291639040
- .long 1070407725
- .long 2453320259
- .long 1022812423
- .long 2081472512
- .long 1070424546
- .long 2939989570
- .long 1023091888
- .long 3380340480
- .long 1070441375
- .long 2850707499
- .long 1021921109
- .long 232287488
- .long 1070458213
- .long 3674625342
- .long 1020725130
- .long 1567614208
- .long 1070475058
- .long 9347334
- .long 1022024009
- .long 3433091072
- .long 1070491911
- .long 282524999
- .long 1021433523
- .long 1876877312
- .long 1070508773
- .long 3470449440
- .long 1019309721
- .long 1538472192
- .long 1070525643
- .long 2089486825
- .long 1019698916
- .long 2763830784
- .long 1070542521
- .long 443498115
- .long 1020505194
- .long 1605381632
- .long 1070559408
- .long 3018871601
- .long 1022869913
- .long 2706946048
- .long 1070576303
- .long 3936260892
- .long 1023175875
- .long 2123887360
- .long 1070593207
- .long 2994220655
- .long 1022825948
- .long 104015104
- .long 1070603108
- .long 335054493
- .long 1023441853
- .long 2904568832
- .long 1070615800
- .long 1451215633
- .long 1023853857
- .long 3456197120
- .long 1070632739
- .long 436334733
- .long 1024026432
- .long 252452352
- .long 1070649697
- .long 34596167
- .long 1024031396
- .long 3328018432
- .long 1070666672
- .long 2644547073
- .long 1024296758
- .long 1255829248
- .long 1070683667
- .long 552832586
- .long 1023763122
- .long 4097058560
- .long 1070700680
- .long 1955640623
- .long 1021394654
- .long 451770112
- .long 1070717714
- .long 3428903777
- .long 1022941142
- .long 408920832
- .long 1070734767
- .long 165503263
- .long 1023894958
- .long 1186960640
- .long 1070751840
- .long 435826450
- .long 1024026134
- .long 19078656
- .long 1070768934
- .long 1834169749
- .long 1022899284
- .long 2743490304
- .long 1070786048
- .long 494581074
- .long 1018818479
- .long 2328961024
- .long 1070803184
- .long 2987908834
- .long 1022581110
- .long 350011392
- .long 1070820342
- .long 240771184
- .long 1024143083
- .long 2692326912
- .long 1070837521
- .long 666056837
- .long 1022394776
- .long 2373274368
- .long 1070854723
- .long 2484337770
- .long 1024228156
- .long 1017131520
- .long 1070871948
- .long 3285648279
- .long 1024025789
- .long 265558272
- .long 1070889196
- .long 392241896
- .long 1024252809
- .long 1778008064
- .long 1070906467
- .long 1536107943
- .long 1023949300
- .long 2937184768
- .long 1070923762
- .long 3541062251
- .long 1019448646
- .long 1144442880
- .long 1070941082
- .long 3691683781
- .long 1022123948
- .long 2410165504
- .long 1070958426
- .long 1804181960
- .long 1023945221
- .long 4174350848
- .long 1070975795
- .long 2016094861
- .long 1021716585
- .long 3897012480
- .long 1070993190
- .long 175294410
- .long 1023703404
- .long 3353623040
- .long 1071010611
- .long 167973242
- .long 1023240839
- .long 45671168
- .long 1071028059
- .long 2166856113
- .long 1021565413
- .long 86063872
- .long 1071045533
- .long 2676254727
- .long 1023985299
- .long 1019772672
- .long 1071063034
- .long 989043593
- .long 1021549587
- .long 414297344
- .long 1071080563
- .long 3960972046
- .long 1024307251
- .long 155173120
- .long 1071098120
- .long 1830919291
- .long 1021592251
- .long 2151562240
- .long 1071115705
- .long 405408666
- .long 1023423128
- .long 4041854720
- .long 1071133319
- .long 2043497827
- .long 1024411503
- .long 3489224192
- .long 1071150963
- .long 3072215864
- .long 1022698635
- .long 2477196288
- .long 1071168637
- .long 1812195139
- .long 1022689192
- .long 3015298816
- .long 1071186341
- .long 764841969
- .long 1021027331
- .long 2844731136
- .long 1071204076
- .long 2878117321
- .long 1019116513
- .long 4028950528
- .long 1071221842
- .long 698911452
- .long 1023265602
- .long 69441536
- .long 1071239641
- .long 3253467847
- .long 1020795075
- .long 1676209920
- .long 1071257471
- .long 4272431167
- .long 1022873982
- .long 2408752384
- .long 1071275334
- .long 648519100
- .long 1024385717
- .long 151623680
- .long 1071293231
- .long 345257017
- .long 1019561408
- .long 1410154240
- .long 1071311161
- .long 197863993
- .long 1023224207
- .long 4131351552
- .long 1071329125
- .long 2620801789
- .long 1024411169
- .long 1999664384
- .long 1071347125
- .long 3952692616
- .long 1024168086
- .long 1617668864
- .long 1071365160
- .long 3019889809
- .long 1021907692
- .long 1032074240
- .long 1071383231
- .long 59469899
- .long 1023656194
- .long 2619492096
- .long 1071401338
- .long 1417526820
- .long 1021457783
- .long 202429440
- .long 1071419483
- .long 2927667935
- .long 1019175447
- .long 525044224
- .long 1071437665
- .long 38166811
- .long 1023981879
- .long 1779258880
- .long 1071455885
- .long 481252500
- .long 1023310234
- .long 2195673600
- .long 1071474144
- .long 3962395981
- .long 1021339088
- .long 44573696
- .long 1071492443
- .long 3936281395
- .long 1023014829
- .long 2226905344
- .long 1071510781
- .long 1515320476
- .long 1024320623
- .long 2800512512
- .long 1071529160
- .long 1225403697
- .long 1021081846
- .long 161113600
- .long 1071547581
- .long 3064809733
- .long 1024173917
- .long 1338410240
- .long 1071566043
- .long 2027604973
- .long 1024362526
- .long 522433280
- .long 1071584548
- .long 2055171723
- .long 1023858825
- .long 539595776
- .long 1071603096
- .long 3868820135
- .long 1022936424
- .long 4264017664
- .long 1071621687
- .long 3228065145
- .long 1023479578
- .long 1733924096
- .long 1071640324
- .long 3511934475
- .long 1022496355
- .long 108880384
- .long 1071651839
- .long 615880967
- .long 1023519706
- .long 3517856512
- .long 1071661202
- .long 3113108559
- .long 1025190289
- .long 4043153152
- .long 1071670589
- .long 1571836218
- .long 1023106116
- .long 3251299072
- .long 1071680000
- .long 3444076102
- .long 1022187841
- .long 2736921600
- .long 1071689435
- .long 272771483
- .long 1025095280
- .long 3897698560
- .long 1071703633
- .long 2075390188
- .long 1022489022
- .long 3209485056
- .long 1071722652
- .long 1438094065
- .long 1021844944
- .long 3781432064
- .long 1071741774
- .long 1675017145
- .long 1024143828
- .long 2684184064
- .long 1071761003
- .long 2259963753
- .long 1024731393
- .long 1840489728
- .long 1071780342
- .long 3372883597
- .long 1023431408
- .long 3764087808
- .long 1071799794
- .long 3307523102
- .long 1024485788
- .long 3006232320
- .long 1071819364
- .long 3088971966
- .long 1025213251
- .long 3374881280
- .long 1071839055
- .long 834437749
- .long 1025236452
- .long 797284864
- .long 1071858872
- .long 3122663941
- .long 1025320473
- .long 545765120
- .long 1071878818
- .long 826539625
- .long 1022450955
- .long 107562240
- .long 1071898898
- .long 339584600
- .long 1022481255
- .long 2123649024
- .long 1071919116
- .long 3912959833
- .long 1024321009
- .long 1562385664
- .long 1071939478
- .long 2846067230
- .long 1023343981
- .long 2963085824
- .long 1071959988
- .long 954548627
- .long 1021475211
- .long 3325550592
- .long 1071980652
- .long 3459651155
- .long 1025305573
- .long 775752448
- .long 1072001476
- .long 3582746667
- .long 1023859460
- .long 3238590720
- .long 1072022464
- .long 634636162
- .long 1024472353
- .long 2758801920
- .long 1072043624
- .long 3078216319
- .long 1025304516
- .long 1370319104
- .long 1072064962
- .long 2570569078
- .long 1025099442
- .long 2615805184
- .long 1072086484
- .long 3729933412
- .long 1024605112
- .long 3077336576
- .long 1072108198
- .long 1948916066
- .long 1024781603
- .long 1099528192
- .long 1072130112
- .long 3139143157
- .long 1023729360
- .long 1231903232
- .long 1072152233
- .long 1349513477
- .long 1024737515
- .long 1507504128
- .long 1072174570
- .long 3484516322
- .long 1024000959
- .long 2214659840
- .long 1072197132
- .long 2563820917
- .long 1025225535
- .long 1804739840
- .long 1072219929
- .long 760038746
- .long 1024482855
- .long 1413746688
- .long 1072242971
- .long 3401734714
- .long 1025129838
- .long 821409536
- .long 1072266269
- .long 3729772551
- .long 1025484796
- .long 3031825664
- .long 1072289834
- .long 122256749
- .long 1024752594
- .long 1710784256
- .long 1072313680
- .long 1518205483
- .long 1024724809
- .long 3025265152
- .long 1072337819
- .long 409951989
- .long 1022835555
- .long 287769088
- .long 1072362267
- .long 800355594
- .long 1022484850
- .long 198179840
- .long 1072387038
- .long 3502926213
- .long 1024209373
- .long 1909130496
- .long 1072412149
- .long 3064694319
- .long 1025380823
- .long 1941732096
- .long 1072437619
- .long 4112930390
- .long 1024294679
- .long 3492010496
- .long 1072463467
- .long 2684918107
- .long 1023220233
- .long 81959680
- .long 1072489716
- .long 220021366
- .long 1020635131
- .long 2297837056
- .long 1072516387
- .long 4027683826
- .long 1021041185
- .long 270404096
- .long 1072543508
- .long 2012766065
- .long 1021780753
- .long 3667376896
- .long 1072571105
- .long 2727981522
- .long 1023009874
- .long 330400256
- .long 1072599212
- .long 2940017003
- .long 1025393439
- .long 1119293952
- .long 1072627861
- .long 1608550416
- .long 1022675612
- .long 3536155904
- .long 1072657091
- .long 349665778
- .long 1025156751
- .long 3078046720
- .long 1072686946
- .long 2016159996
- .long 1022193169
- .long 455228416
- .long 1072705361
- .long 1908539328
- .long 1026126332
- .long 1871505664
- .long 1072720988
- .long 2784700894
- .long 1025922277
- .long 1630994432
- .long 1072737010
- .long 361107678
- .long 1022887244
- .long 2084558336
- .long 1072753462
- .long 2642784509
- .long 1072689083
- .long 1514442531
- .long 1072688953
- .long 333108933
- .long 1072688821
- .long 3392112024
- .long 1072688686
- .long 2099852862
- .long 1072688550
- .long 749609004
- .long 1072688412
- .long 3634632596
- .long 1072688271
- .long 2163248461
- .long 1072688129
- .long 628657846
- .long 1072687985
- .long 3324036511
- .long 1072687838
- .long 1657632815
- .long 1072687690
- .long 4217538760
- .long 1072687539
- .long 2411951597
- .long 1072687387
- .long 533944872
- .long 1072687233
- .long 2876566508
- .long 1072687076
- .long 847936891
- .long 1072686918
- .long 3036019913
- .long 1072686757
- .long 848884575
- .long 1072686595
- .long 2874443326
- .long 1072686430
- .long 520713666
- .long 1072686264
- .long 2375556481
- .long 1072686095
- .long 4141904948
- .long 1072685924
- .long 1522666382
- .long 1072685752
- .long 3105624104
- .long 1072685577
- .long 298666327
- .long 1072685401
- .long 1689524500
- .long 1072685222
- .long 2981002200
- .long 1072685041
- .long 4170844284
- .long 1072684858
- .long 961802263
- .long 1072684674
- .long 1941503454
- .long 1072684487
- .long 2812647170
- .long 1072684298
- .long 3572873869
- .long 1072684107
- .long 4219797823
- .long 1072683914
- .long 456039788
- .long 1072683720
- .long 869096151
- .long 1072683523
- .long 1161535119
- .long 1072683324
- .long 1330865866
- .long 1072683123
- .long 1374571204
- .long 1072682920
- .long 1290107538
- .long 1072682715
- .long 1074904836
- .long 1072682508
- .long 726366587
- .long 1072682299
- .long 241869763
- .long 1072682088
- .long 3913732079
- .long 1072681874
- .long 3149342765
- .long 1072681659
- .long 2240966306
- .long 1072681442
- .long 1185873216
- .long 1072681223
- .long 4276274591
- .long 1072681001
- .long 2919452883
- .long 1072680778
- .long 1407565635
- .long 1072680553
- .long 4032743551
- .long 1072680325
- .long 2202188565
- .long 1072680096
- .long 207977577
- .long 1072679865
- .long 2342160518
- .long 1072679631
- .long 11858423
- .long 1072679396
- .long 1804034453
- .long 1072679158
- .long 3420722787
- .long 1072678918
- .long 563930456
- .long 1072678677
- .long 1820539192
- .long 1072678433
- .long 2892501606
- .long 1072678187
- .long 3776710320
- .long 1072677939
- .long 175063337
- .long 1072677690
- .long 674333171
- .long 1072677438
- .long 976363026
- .long 1072677184
- .long 1077935934
- .long 1072676928
- .long 1921075490
- .long 1072676540
- .long 881493302
- .long 1072676016
- .long 3275752439
- .long 1072675483
- .long 486855588
- .long 1072674943
- .long 1077229111
- .long 1072674394
- .long 723950308
- .long 1072673837
- .long 3693582199
- .long 1072673271
- .long 1367335316
- .long 1072672698
- .long 2305837020
- .long 1072672116
- .long 2184358641
- .long 1072671526
- .long 972682840
- .long 1072670928
- .long 2935101762
- .long 1072670321
- .long 3745513263
- .long 1072669706
- .long 3372320886
- .long 1072669083
- .long 1783464620
- .long 1072668452
- .long 3241386215
- .long 1072667812
- .long 3418125284
- .long 1072667164
- .long 2280219148
- .long 1072666508
- .long 4088700758
- .long 1072665843
- .long 219227400
- .long 1072665171
- .long 3521816918
- .long 1072664489
- .long 1076205279
- .long 1072663800
- .long 1436484616
- .long 1072663102
- .long 271362610
- .long 1072662396
- .long 1838996688
- .long 1072661681
- .long 1807122518
- .long 1072660958
- .long 137953542
- .long 1072660227
- .long 1088178584
- .long 1072659487
- .long 324057537
- .long 1072658739
- .long 2101288076
- .long 1072657982
- .long 2085133974
- .long 1072657217
- .long 235324451
- .long 1072656444
- .long 806051592
- .long 1072655662
- .long 3756033140
- .long 1072654871
- .long 453542543
- .long 1072654073
- .long 3741177327
- .long 1072653265
- .long 691216109
- .long 1072652450
- .long 4145223372
- .long 1072651625
- .long 1174439091
- .long 1072650793
- .long 324416139
- .long 1072649952
- .long 1550246310
- .long 1072649102
- .long 511524674
- .long 1072648244
- .long 1457248482
- .long 1072647377
- .long 45944955
- .long 1072646502
- .long 525537397
- .long 1072645618
- .long 2848440188
- .long 1072644725
- .long 2671555633
- .long 1072643824
- .long 4241172637
- .long 1072642914
- .long 3213094278
- .long 1072641996
- .long 3832503688
- .long 1072641069
- .long 1754091534
- .long 1072640134
- .long 1221921804
- .long 1072639190
- .long 2184526489
- .long 1072638237
- .long 294902089
- .long 1072637276
- .long 4090375270
- .long 1072636305
- .long 632860906
- .long 1072635327
- .long 2753498702
- .long 1072634339
- .long 1808009252
- .long 1072633343
- .long 2036428672
- .long 1072632338
- .long 3383235626
- .long 1072631324
- .long 1497347484
- .long 1072630302
- .long 617018317
- .long 1072629271
- .long 684933058
- .long 1072628231
- .long 1643170798
- .long 1072627182
- .long 3011066360
- .long 1072625592
- .long 957158713
- .long 1072623442
- .long 1390907941
- .long 1072621256
- .long 3819155270
- .long 1072619034
- .long 3443571196
- .long 1072616777
- .long 4045412458
- .long 1072614484
- .long 805503923
- .long 1072612156
- .long 1778922015
- .long 1072609791
- .long 2125033665
- .long 1072607390
- .long 1287203863
- .long 1072604953
- .long 2992629568
- .long 1072602479
- .long 2367267127
- .long 1072599969
- .long 3115526047
- .long 1072597422
- .long 340219539
- .long 1072594839
- .long 2017215719
- .long 1072592218
- .long 3225443424
- .long 1072589560
- .long 3326565673
- .long 1072586865
- .long 1669811211
- .long 1072584133
- .long 1886735022
- .long 1072581363
- .long 3301071171
- .long 1072578555
- .long 928514283
- .long 1072575710
- .long 2656364059
- .long 1072572826
- .long 3473490507
- .long 1072569904
- .long 2649965606
- .long 1072566944
- .long 3736819052
- .long 1072563945
- .long 1680885175
- .long 1072560908
- .long 4413771
- .long 1072557832
- .long 2214869753
- .long 1072554716
- .long 3214725184
- .long 1072551561
- .long 2186079903
- .long 1072548367
- .long 2590372131
- .long 1072545133
- .long 3578146079
- .long 1072541859
- .long 4283712755
- .long 1072538545
- .long 3824834510
- .long 1072535191
- .long 1302400298
- .long 1072531797
- .long 95058636
- .long 1072528362
- .long 3563906063
- .long 1072524885
- .long 2167230730
- .long 1072521368
- .long 3524918334
- .long 1072517809
- .long 2353304918
- .long 1072514209
- .long 1939625839
- .long 1072510567
- .long 1256714581
- .long 1072506883
- .long 3552525848
- .long 1072503156
- .long 3464809522
- .long 1072499387
- .long 4200542593
- .long 1072495575
- .long 355609124
- .long 1072491721
- .long 3684139099
- .long 1072487822
- .long 148355918
- .long 1072483881
- .long 1457689242
- .long 1072479895
- .long 2118591596
- .long 1072475865
- .long 908848089
- .long 1072471791
- .long 877032689
- .long 1072467672
- .long 752012304
- .long 1072463508
- .long 3532301749
- .long 1072459298
- .long 3600563221
- .long 1072455043
- .long 3902857084
- .long 1072450742
- .long 3063101036
- .long 1072446395
- .long 3972344374
- .long 1072442001
- .long 903183549
- .long 1072437561
- .long 983892938
- .long 1072433073
- .long 2722858568
- .long 1072428537
- .long 302790515
- .long 1072423954
- .long 759811057
- .long 1072419322
- .long 2507809922
- .long 1072414641
- .long 2388408813
- .long 1072407528
- .long 2084492942
- .long 1072397870
- .long 2435703301
- .long 1072388010
- .long 1935433360
- .long 1072377945
- .long 2742047290
- .long 1072367671
- .long 2053284205
- .long 1072357185
- .long 657783367
- .long 1072346483
- .long 2893664841
- .long 1072335560
- .long 3718906405
- .long 1072324413
- .long 1547896303
- .long 1072313038
- .long 2494058440
- .long 1072301429
- .long 3133238742
- .long 1072289582
- .long 3327000086
- .long 1072277492
- .long 1860667274
- .long 1072265154
- .long 665340747
- .long 1072252562
- .long 443347841
- .long 1072239710
- .long 581282618
- .long 1072226592
- .long 3349780465
- .long 1072213201
- .long 914217606
- .long 1072199532
- .long 989797661
- .long 1072185576
- .long 945436416
- .long 1072171326
- .long 549291300
- .long 1072156774
- .long 1814636389
- .long 1072141911
- .long 239092858
- .long 1072126729
- .long 1794680724
- .long 1072111217
- .long 1241534678
- .long 1072095366
- .long 3366566214
- .long 1072079164
- .long 1244090828
- .long 1072062601
- .long 1708448120
- .long 1072045663
- .long 3544260650
- .long 1072028337
- .long 1402741403
- .long 1072010610
- .long 2551936888
- .long 1071992465
- .long 617669739
- .long 1071973887
- .long 794002186
- .long 1071954857
- .long 2021237693
- .long 1071935356
- .long 540450384
- .long 1071915364
- .long 1920555537
- .long 1071894857
- .long 2879585206
- .long 1071873811
- .long 3000237455
- .long 1071852199
- .long 3352974346
- .long 1071829991
- .long 569629937
- .long 1071807155
- .long 2077237208
- .long 1071783653
- .long 2284891805
- .long 1071759446
- .long 1226651784
- .long 1071734489
- .long 1102047405
- .long 1071708731
- .long 2009896384
- .long 1071682115
- .long 927419082
- .long 1071654577
- .long 85010366
- .long 1071607413
- .long 696431025
- .long 1071548180
- .long 2611410541
- .long 1071486585
- .long 2612593658
- .long 1071422396
- .long 3548155306
- .long 1071355336
- .long 3887997484
- .long 1071285073
- .long 244854763
- .long 1071211202
- .long 4214445648
- .long 1071133216
- .long 2303966727
- .long 1071050478
- .long 3991040013
- .long 1070962152
- .long 3126952278
- .long 1070867118
- .long 1817448378
- .long 1070763804
- .long 1793814864
- .long 1070649884
- .long 3507224072
- .long 1070447193
- .long 4027609105
- .long 1070148772
- .long 577507993
- .long 1069779414
- .long 2310232419
- .long 1068931829
- .long 856972295
- .long 1016178214
- .long 1413754136
- .long 1073291771
- .long 856972295
- .long 3164710438
- .long 1413754136
- .long 3221823995
- .long 856972295
- .long 1017226790
- .long 1413754136
- .long 1074340347
- .long 4160749568
- .long 4294967295
- .long 4160749568
- .long 4294967295
- .long 0
- .long 0
- .long 1431655765
- .long 3217380693
- .long 858993459
- .long 3216192307
- .long 3067833783
- .long 3215383405
- .long 780903145
- .long 1066854586
- .long 858993459
- .long 1068708659
- .long 3340530119
- .long 1067392113
- .long 1431655765
- .long 1069897045
- .long 1321528399
- .long 1066517740
- .long 3067833783
- .long 1067899757
- .long 2021159460
- .long 1065855096
- .long 2576980378
- .long 1066178969
- .long 4294967295
- .long 2147483647
- .long 0
- .long 0
- .long 0
- .long 4294950912
- .long 0
- .long 0
- .long 0
- .long 1072693248
- .long 0
- .long 0
- .long 0
- .long 1071644672
- .long 0
- .long 0
- .type static_const_table,@object
- .size static_const_table,6112
- .data
- .section .note.GNU-stack, "",@progbits
-# End
diff --git a/libm/x86/e_asin.S b/libm/x86/e_asin.S
deleted file mode 100644
index 6a3ff8e..0000000
--- a/libm/x86/e_asin.S
+++ /dev/null
@@ -1,2003 +0,0 @@
-/*
-Copyright (c) 2014, Intel Corporation
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
-
- * Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
-
- * Neither the name of Intel Corporation nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
-ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/******************************************************************************/
-// ALGORITHM DESCRIPTION
-// ---------------------
-//
-// To compute asin(s), separate schemes are used when s is in different
-// intervals.
-//
-// |s| in [2^{-4}, sqrt(3)/2):
-// Let t=2^k*1.b1 b2..b6 1, where s=2^k*1.b1 b2 .. b52
-// asin(s)=asin(t)+asin(r), where r=s*sqrt(1-t^2)-t*sqrt(1-s^2)
-// asin(r)-r evaluated as 7-degree polynomial (c3*r^3+c5*r^5+c7*r^7)
-// For the first degree term, r is evaluated as
-// R=(s^2-t^2)/(sqrt(1-t^2)*s+sqrt(1-s^2)*t)
-// (sqrt(1-t^2) read from table)
-// The main source of error is still R (may still be affected by up to 3 ulps
-// of rounding error). The table size must be sufficiently large, to minimize
-// this effect.
-//
-// |s| in [sqrt(3)/2, 255/256):
-// Let t=2^k*1.b1 b2..b6 1, where sqrt(1-s^2)=2^k*1.b1 b2 .. b52 (rounded)
-// asin(|s|)=pi/2-asin(t)+asin(r), r=s*t-sqrt(1-s^2)*sqrt(1-t^2)
-// asin(r) evaluated as polynomial (same as above)
-// The first degree term is evaluated as
-// r=(s^2+t^2-1)/(s*t+sqrt(1-s^2)*sqrt(1-t^2))
-//
-// |s|<2^{-4}: evaluate as 13-degree polynomial
-//
-// |s| in [255/256,1): asin(|s|)=pi/2-asin(sqrt(1-s^2))
-// use 17-degree polynomial, get error term
-// Q*eps ~ (1-s^2-Q^2)/(2*Q) for first term
-// ( Q(1+eps)=sqrt(1-s^2) )
-//
-// Special cases:
-// asin(NaN) = quiet NaN, and raise invalid exception
-// asin(INF) = QNaN and raise invalid exception
-// asin(x) = QNaN and raise invalid exception, for |x|>1.0
-// asin(+/-0) = +/-0
-//
-/******************************************************************************/
-
-#include <private/bionic_asm.h>
-# -- Begin static_func
- .text
- .align __bionic_asm_align
- .type static_func, @function
-static_func:
-..B1.1:
- call ..L2
-..L2:
- popl %eax
- lea _GLOBAL_OFFSET_TABLE_+[. - ..L2](%eax), %eax
- lea static_const_table@GOTOFF(%eax), %eax
- ret
- .size static_func,.-static_func
-# -- End static_func
-
-# -- Begin asin
-ENTRY(asin)
-# parameter 1: 8 + %ebp
-..B2.1:
-..B2.2:
- pushl %ebp
- movl %esp, %ebp
- subl $120, %esp
- movl %ebx, 64(%esp)
- call static_func
- movl %eax, %ebx
- movsd 128(%esp), %xmm0
- stmxcsr 16(%esp)
- movl 16(%esp), %edx
- andl $-24577, %edx
- cmpl %edx, 16(%esp)
- jne .L_2TAG_PACKET_0.0.2
-.L_2TAG_PACKET_1.0.2:
- movsd 5984(%ebx), %xmm4
- movsd 6016(%ebx), %xmm3
- xorpd %xmm5, %xmm5
- movsd 6000(%ebx), %xmm2
- movl $8192, %ecx
- pinsrw $2, %ecx, %xmm5
- movapd %xmm0, %xmm1
- movsd %xmm0, 8(%esp)
- psrlq $44, %xmm0
- movd %xmm0, %edx
- movapd %xmm1, %xmm7
- movl $8192, %ecx
- pinsrw $2, %ecx, %xmm5
- movapd %xmm1, %xmm0
- movl $524287, %eax
- andl %edx, %eax
- subl $260864, %eax
- cmpl $955, %eax
- jae .L_2TAG_PACKET_2.0.2
- mulsd %xmm1, %xmm1
- andl $65535, %edx
- subsd %xmm1, %xmm3
- sqrtsd %xmm3, %xmm3
- andpd %xmm7, %xmm2
- andl $-4, %edx
- subl $64256, %edx
- movsd 3936(%ebx,%edx,2), %xmm1
- orpd %xmm5, %xmm2
- movapd 96(%ebx,%edx,4), %xmm4
- movapd %xmm7, %xmm6
- addsd %xmm2, %xmm7
- subsd %xmm2, %xmm0
- mulsd %xmm7, %xmm0
- mulsd %xmm1, %xmm6
- mulsd %xmm2, %xmm3
- movapd %xmm6, %xmm1
- addsd %xmm3, %xmm6
- divsd %xmm6, %xmm0
- movsd 80(%ebx), %xmm7
- movsd 64(%ebx), %xmm5
- subsd %xmm3, %xmm1
- andpd 6064(%ebx), %xmm2
- movapd %xmm1, %xmm3
- mulsd %xmm1, %xmm1
- movsd 72(%ebx), %xmm6
- mulsd %xmm1, %xmm3
- mulsd %xmm1, %xmm7
- mulsd %xmm3, %xmm5
- xorpd %xmm2, %xmm4
- mulsd %xmm1, %xmm3
- addsd %xmm7, %xmm6
- mulsd %xmm3, %xmm6
- addsd %xmm4, %xmm5
- pshufd $238, %xmm4, %xmm4
- addsd %xmm5, %xmm6
- orpd %xmm2, %xmm4
- addsd %xmm6, %xmm0
- movl 16(%esp), %eax
- andl $-24577, %eax
- cmpl 16(%esp), %eax
- je .L_2TAG_PACKET_3.0.2
- stmxcsr 24(%esp)
- movl 16(%esp), %eax
- andl $24576, %eax
- orl %eax, 24(%esp)
- ldmxcsr 24(%esp)
-.L_2TAG_PACKET_3.0.2:
- addsd %xmm4, %xmm0
- movsd %xmm0, (%esp)
- fldl (%esp)
- jmp .L_2TAG_PACKET_4.0.2
-.L_2TAG_PACKET_2.0.2:
- subl $955, %eax
- cmpl $67, %eax
- jae .L_2TAG_PACKET_5.0.2
- mulsd %xmm1, %xmm1
- subsd %xmm1, %xmm3
- sqrtsd %xmm3, %xmm3
- movl %edx, %eax
- andpd 5984(%ebx), %xmm0
- andpd 6048(%ebx), %xmm7
- movapd %xmm0, %xmm1
- movsd 6016(%ebx), %xmm4
- movapd %xmm7, %xmm6
- subsd %xmm7, %xmm1
- mulsd %xmm7, %xmm7
- addsd %xmm6, %xmm0
- subsd %xmm7, %xmm4
- mulsd %xmm1, %xmm0
- movapd %xmm3, %xmm7
- andpd %xmm3, %xmm2
- psllq $2, %xmm3
- pextrw $3, %xmm3, %edx
- orpd %xmm5, %xmm2
- subl $65216, %edx
- addl %edx, %edx
- mulsd 3936(%ebx,%edx,4), %xmm7
- mulsd %xmm2, %xmm6
- movapd 6080(%ebx), %xmm3
- mulsd %xmm2, %xmm1
- mulsd %xmm2, %xmm2
- subsd %xmm7, %xmm6
- addsd %xmm1, %xmm6
- subsd %xmm2, %xmm4
- addsd %xmm7, %xmm7
- movsd 64(%ebx), %xmm5
- subsd %xmm0, %xmm4
- addsd %xmm6, %xmm7
- movsd 80(%ebx), %xmm0
- divsd %xmm7, %xmm4
- movsd 72(%ebx), %xmm2
- subpd 96(%ebx,%edx,8), %xmm3
- movapd %xmm6, %xmm1
- mulsd %xmm6, %xmm6
- andl $524288, %eax
- shrl $4, %eax
- mulsd %xmm6, %xmm0
- mulsd %xmm6, %xmm1
- mulsd %xmm1, %xmm5
- mulsd %xmm6, %xmm1
- addsd %xmm2, %xmm0
- pxor %xmm6, %xmm6
- mulsd %xmm1, %xmm0
- addsd %xmm3, %xmm5
- pinsrw $3, %eax, %xmm6
- addsd %xmm5, %xmm0
- movapd %xmm4, %xmm5
- pshufd $238, %xmm3, %xmm3
- subsd %xmm3, %xmm4
- addsd %xmm4, %xmm3
- subsd %xmm3, %xmm5
- subsd %xmm5, %xmm0
- movl 16(%esp), %eax
- andl $-24577, %eax
- cmpl 16(%esp), %eax
- je .L_2TAG_PACKET_6.0.2
- stmxcsr 24(%esp)
- movl 16(%esp), %eax
- andl $24576, %eax
- orl %eax, 24(%esp)
- ldmxcsr 24(%esp)
-.L_2TAG_PACKET_6.0.2:
- xorpd %xmm6, %xmm0
- xorpd %xmm6, %xmm4
- subsd %xmm4, %xmm0
- movsd %xmm0, (%esp)
- fldl (%esp)
- jmp .L_2TAG_PACKET_4.0.2
-.L_2TAG_PACKET_5.0.2:
- addl $15291, %eax
- cmpl $14336, %eax
- jae .L_2TAG_PACKET_7.0.2
- unpcklpd %xmm7, %xmm7
- movapd (%ebx), %xmm1
- movapd %xmm7, %xmm6
- movapd 16(%ebx), %xmm2
- movapd 32(%ebx), %xmm4
- mulpd %xmm7, %xmm7
- mulpd %xmm7, %xmm6
- mulpd %xmm7, %xmm1
- mulpd %xmm7, %xmm7
- movapd %xmm6, %xmm3
- mulsd %xmm6, %xmm6
- addpd %xmm2, %xmm1
- mulpd %xmm7, %xmm4
- mulsd %xmm3, %xmm6
- addpd %xmm4, %xmm1
- mulpd %xmm6, %xmm1
- pshufd $238, %xmm1, %xmm2
- addsd %xmm2, %xmm1
- movl 16(%esp), %eax
- andl $-24577, %eax
- cmpl 16(%esp), %eax
- je .L_2TAG_PACKET_8.0.2
- stmxcsr 24(%esp)
- movl 16(%esp), %eax
- andl $24576, %eax
- orl %eax, 24(%esp)
- ldmxcsr 24(%esp)
-.L_2TAG_PACKET_8.0.2:
- addsd %xmm1, %xmm0
- movsd %xmm0, (%esp)
- fldl (%esp)
- jmp .L_2TAG_PACKET_4.0.2
-.L_2TAG_PACKET_7.0.2:
- subl $15358, %eax
- cmpl $2, %eax
- jae .L_2TAG_PACKET_9.0.2
- mulsd %xmm1, %xmm1
- subsd %xmm1, %xmm3
- sqrtsd %xmm3, %xmm3
- movl %edx, %eax
- andpd 6032(%ebx), %xmm7
- pshufd $68, %xmm3, %xmm5
- andpd 6032(%ebx), %xmm3
- movapd %xmm7, %xmm1
- movsd 6016(%ebx), %xmm4
- movapd %xmm7, %xmm6
- subsd %xmm7, %xmm0
- mulsd %xmm7, %xmm7
- addsd %xmm1, %xmm1
- mulsd %xmm0, %xmm1
- subsd %xmm7, %xmm4
- movapd %xmm3, %xmm6
- mulsd %xmm3, %xmm3
- mulsd %xmm0, %xmm0
- subsd %xmm1, %xmm4
- subsd %xmm5, %xmm6
- addsd %xmm5, %xmm5
- subsd %xmm3, %xmm4
- movapd (%ebx), %xmm2
- pshufd $238, %xmm5, %xmm3
- subsd %xmm0, %xmm4
- addsd %xmm6, %xmm5
- pshufd $238, %xmm3, %xmm7
- addsd %xmm3, %xmm3
- mulsd %xmm6, %xmm5
- addsd %xmm5, %xmm4
- pshufd $238, %xmm7, %xmm6
- divsd %xmm3, %xmm4
- movapd 48(%ebx), %xmm1
- movapd 16(%ebx), %xmm5
- movapd 32(%ebx), %xmm0
- mulpd %xmm7, %xmm7
- movapd %xmm6, %xmm3
- mulpd %xmm7, %xmm2
- mulpd %xmm7, %xmm6
- shrl $4, %eax
- andl $32768, %eax
- mulsd %xmm7, %xmm1
- mulpd %xmm7, %xmm7
- addpd %xmm2, %xmm5
- movapd %xmm6, %xmm2
- mulsd %xmm6, %xmm6
- mulpd %xmm0, %xmm7
- movapd 6080(%ebx), %xmm0
- mulsd %xmm6, %xmm2
- addpd %xmm5, %xmm7
- pshufd $238, %xmm1, %xmm5
- mulsd %xmm2, %xmm6
- mulpd %xmm2, %xmm7
- addsd %xmm5, %xmm1
- xorpd %xmm5, %xmm5
- pshufd $238, %xmm7, %xmm2
- mulsd %xmm6, %xmm1
- pshufd $238, %xmm0, %xmm6
- addsd %xmm2, %xmm7
- movapd %xmm3, %xmm2
- pinsrw $3, %eax, %xmm5
- subsd %xmm6, %xmm3
- addsd %xmm1, %xmm0
- addsd %xmm3, %xmm6
- addsd %xmm4, %xmm7
- subsd %xmm6, %xmm2
- subsd %xmm7, %xmm0
- subsd %xmm2, %xmm0
- movl 16(%esp), %eax
- andl $-24577, %eax
- cmpl 16(%esp), %eax
- je .L_2TAG_PACKET_10.0.2
- stmxcsr 24(%esp)
- movl 16(%esp), %eax
- andl $24576, %eax
- orl %eax, 24(%esp)
- ldmxcsr 24(%esp)
-.L_2TAG_PACKET_10.0.2:
- xorpd %xmm5, %xmm0
- xorpd %xmm5, %xmm3
- subsd %xmm3, %xmm0
- movsd %xmm0, (%esp)
- fldl (%esp)
- jmp .L_2TAG_PACKET_4.0.2
-.L_2TAG_PACKET_9.0.2:
- addl $261886, %eax
- cmpl $261888, %eax
- jb .L_2TAG_PACKET_11.0.2
- movd %xmm0, %ecx
- psrlq $32, %xmm0
- movd %xmm0, %edx
- andl $2147483647, %edx
- movl $1072693248, %eax
- subl %edx, %eax
- orl %ecx, %eax
- cmpl $0, %eax
- je .L_2TAG_PACKET_12.0.2
- movq 8(%esp), %xmm2
- movd %xmm2, %edx
- psrlq $32, %xmm2
- movd %xmm2, %ecx
- andl $2147483647, %ecx
- subl $1, %edx
- sbbl $2146435072, %ecx
- cmpl $0, %ecx
- jge .L_2TAG_PACKET_11.0.2
- xorpd %xmm1, %xmm1
- xorpd %xmm0, %xmm0
- movl $32752, %edx
- pinsrw $3, %edx, %xmm1
- mulsd %xmm1, %xmm0
- movsd %xmm0, (%esp)
- fldl (%esp)
- jmp .L_2TAG_PACKET_13.0.2
-.L_2TAG_PACKET_12.0.2:
- movsd 5984(%ebx), %xmm1
- movsd 6080(%ebx), %xmm2
- movsd 6088(%ebx), %xmm0
- movl 16(%esp), %eax
- andl $-24577, %eax
- cmpl 16(%esp), %eax
- je .L_2TAG_PACKET_14.0.2
- stmxcsr 24(%esp)
- movl 16(%esp), %eax
- andl $24576, %eax
- orl %eax, 24(%esp)
- ldmxcsr 24(%esp)
-.L_2TAG_PACKET_14.0.2:
- andnpd %xmm7, %xmm1
- orpd %xmm1, %xmm0
- orpd %xmm1, %xmm2
- addsd %xmm2, %xmm0
- movsd %xmm0, (%esp)
- fldl (%esp)
- jmp .L_2TAG_PACKET_4.0.2
-.L_2TAG_PACKET_0.0.2:
- movl 16(%esp), %edx
- andl $-24577, %edx
- movl %edx, 24(%esp)
- ldmxcsr 24(%esp)
- jmp .L_2TAG_PACKET_1.0.2
-.L_2TAG_PACKET_11.0.2:
- movsd 8(%esp), %xmm0
- xorpd %xmm6, %xmm6
- movapd %xmm0, %xmm7
- pextrw $3, %xmm0, %edx
- andl $32752, %edx
- subl $16, %edx
- cmpl $32736, %edx
- jb .L_2TAG_PACKET_15.0.2
- addsd %xmm0, %xmm6
- orpd %xmm6, %xmm0
- mulsd %xmm0, %xmm7
-.L_2TAG_PACKET_15.0.2:
- movsd %xmm0, (%esp)
- fldl (%esp)
-.L_2TAG_PACKET_13.0.2:
- movl 16(%esp), %edx
- andl $-24577, %edx
- cmpl 16(%esp), %edx
- je .L_2TAG_PACKET_4.0.2
- stmxcsr 24(%esp)
- movl 16(%esp), %edx
- andl $24576, %edx
- orl %edx, 24(%esp)
- ldmxcsr 24(%esp)
-.L_2TAG_PACKET_4.0.2:
- movl 64(%esp), %ebx
- movl %ebp, %esp
- popl %ebp
- ret
-..B2.3:
-END(asin)
-# -- End asin
-
-# Start file scope ASM
-ALIAS_SYMBOL(asinl, asin);
-# End file scope ASM
- .section .rodata, "a"
- .align 16
- .align 16
-static_const_table:
- .long 780903145
- .long 1066854586
- .long 858993459
- .long 1068708659
- .long 3340530119
- .long 1067392113
- .long 1431655765
- .long 1069897045
- .long 1321528399
- .long 1066517740
- .long 3067833783
- .long 1067899757
- .long 2021159460
- .long 1065855096
- .long 2576980378
- .long 1066178969
- .long 1431655765
- .long 1069897045
- .long 858993459
- .long 1068708659
- .long 3067833783
- .long 1067899757
- .long 0
- .long 0
- .long 3822952792
- .long 1021639372
- .long 182792448
- .long 1068507836
- .long 2264213271
- .long 1019558908
- .long 649052928
- .long 1068524253
- .long 1797139609
- .long 1022295143
- .long 1243095296
- .long 1068540671
- .long 1415938756
- .long 1021439537
- .long 2033294592
- .long 1068557090
- .long 2356809978
- .long 1021777916
- .long 3088063744
- .long 1068573510
- .long 2669055318
- .long 1022124482
- .long 180888576
- .long 1068589932
- .long 3566445325
- .long 1021358712
- .long 1970196992
- .long 1068606354
- .long 896980323
- .long 1021319659
- .long 4229555456
- .long 1068622777
- .long 436049712
- .long 1021319758
- .long 2732572160
- .long 1068639202
- .long 583123209
- .long 1020797960
- .long 1842831872
- .long 1068655628
- .long 1370449804
- .long 1021429270
- .long 1628994560
- .long 1068672055
- .long 2411391464
- .long 1021057980
- .long 2159763712
- .long 1068688483
- .long 1208692749
- .long 1021943903
- .long 3503886336
- .long 1068704912
- .long 538793309
- .long 1019744063
- .long 1435187200
- .long 1068721343
- .long 4085087612
- .long 1020608419
- .long 317469952
- .long 1068737775
- .long 144386942
- .long 1021440732
- .long 219617280
- .long 1068754208
- .long 2940088361
- .long 1019981122
- .long 1210558208
- .long 1068770642
- .long 2176850347
- .long 1018373705
- .long 3359268352
- .long 1068787077
- .long 2395611454
- .long 1021889042
- .long 2439803648
- .long 1068803514
- .long 1650705253
- .long 1020227966
- .long 2816203520
- .long 1068819952
- .long 3702166386
- .long 1019379914
- .long 262620672
- .long 1068836392
- .long 1855649370
- .long 1020453124
- .long 3438159616
- .long 1068852832
- .long 923063860
- .long 1019273834
- .long 3822105856
- .long 1068869274
- .long 4289947947
- .long 1019434249
- .long 1483729920
- .long 1068885718
- .long 787455814
- .long 1020738379
- .long 787321088
- .long 1068902163
- .long 3321653337
- .long 1021842569
- .long 1802253312
- .long 1068918609
- .long 2653633526
- .long 1021821525
- .long 302985984
- .long 1068935057
- .long 161272028
- .long 1021655149
- .long 653966080
- .long 1068951506
- .long 2566098667
- .long 1020066219
- .long 2924727296
- .long 1068967956
- .long 3646493722
- .long 1014292285
- .long 2889890304
- .long 1068984408
- .long 1081009196
- .long 1022189620
- .long 619098112
- .long 1069000862
- .long 4011643355
- .long 1021773297
- .long 477017600
- .long 1069017317
- .long 4030305534
- .long 1021292252
- .long 2533403904
- .long 1069033773
- .long 2645187591
- .long 1019527099
- .long 2563102208
- .long 1069050231
- .long 3857293792
- .long 1022311697
- .long 635982336
- .long 1069066691
- .long 3625936637
- .long 1017511744
- .long 1116940800
- .long 1069083152
- .long 3653872993
- .long 1022016631
- .long 4075964160
- .long 1069099614
- .long 2468900271
- .long 1021769532
- .long 993165568
- .long 1069116079
- .long 1358104224
- .long 1021199776
- .long 528586752
- .long 1069132545
- .long 2200950332
- .long 1022024872
- .long 2752395776
- .long 1069149012
- .long 3197072454
- .long 1017751319
- .long 3439855616
- .long 1069165481
- .long 1651081806
- .long 1020809338
- .long 2661257728
- .long 1069181952
- .long 539032752
- .long 1021728805
- .long 486957312
- .long 1069198425
- .long 3136045149
- .long 1016888671
- .long 1282340352
- .long 1069214899
- .long 2593963259
- .long 1018956103
- .long 822921728
- .long 1069231375
- .long 2146032737
- .long 1022306465
- .long 3474216192
- .long 1069247852
- .long 3976811625
- .long 1021350207
- .long 716902656
- .long 1069264332
- .long 718267222
- .long 1018624727
- .long 1211594496
- .long 1069280813
- .long 1485641389
- .long 1018447451
- .long 734070272
- .long 1069297296
- .long 354455128
- .long 1021341291
- .long 3650110720
- .long 1069313780
- .long 682185947
- .long 1021651853
- .long 1440663040
- .long 1069330267
- .long 3558574550
- .long 1021615110
- .long 2766612224
- .long 1069346755
- .long 874607978
- .long 1017746872
- .long 3404011008
- .long 1069363245
- .long 4154988502
- .long 1021439906
- .long 3423949056
- .long 1069379737
- .long 2263202309
- .long 1021479615
- .long 2897587712
- .long 1069396231
- .long 2562065031
- .long 1022090363
- .long 1896159232
- .long 1069412727
- .long 3836237663
- .long 1019867288
- .long 490968576
- .long 1069429225
- .long 3322056743
- .long 1006752762
- .long 3048360192
- .long 1069445724
- .long 1152314833
- .long 1013122252
- .long 1049850624
- .long 1069462226
- .long 3601590727
- .long 1022214610
- .long 3156899584
- .long 1069478729
- .long 1855169970
- .long 1019487271
- .long 851173376
- .long 1069495235
- .long 312649594
- .long 1020868604
- .long 2794281728
- .long 1069511742
- .long 1093490181
- .long 1020777577
- .long 468042496
- .long 1069528252
- .long 1152540679
- .long 1021403732
- .long 2534219264
- .long 1069544763
- .long 2292126035
- .long 1021872430
- .long 1376146432
- .long 1069558527
- .long 3293753641
- .long 1020500454
- .long 4175442432
- .long 1069575044
- .long 3626347564
- .long 1021610969
- .long 3523113472
- .long 1069591566
- .long 339956500
- .long 1021119039
- .long 4003350528
- .long 1069608092
- .long 3429333082
- .long 1022813542
- .long 1611067392
- .long 1069624623
- .long 2298017544
- .long 1021977587
- .long 931782144
- .long 1069641158
- .long 2164684743
- .long 1021250988
- .long 2256725504
- .long 1069657697
- .long 1138762335
- .long 1021443776
- .long 1582853120
- .long 1069674241
- .long 1084010382
- .long 1022994693
- .long 3497758720
- .long 1069690789
- .long 406366244
- .long 1022713586
- .long 3999816960
- .long 1069707342
- .long 1488723042
- .long 1023381290
- .long 3383096064
- .long 1069723900
- .long 2541558953
- .long 1019137887
- .long 1942403584
- .long 1069740463
- .long 1879620343
- .long 1022653642
- .long 4268263680
- .long 1069757030
- .long 3039077047
- .long 1022252545
- .long 2067062272
- .long 1069773603
- .long 4190670677
- .long 1020725863
- .long 4225828096
- .long 1069790180
- .long 1998567321
- .long 1022014385
- .long 2452507136
- .long 1069806763
- .long 1511628873
- .long 1021900300
- .long 1340746240
- .long 1069823351
- .long 788367341
- .long 1022726208
- .long 1190035456
- .long 1069839944
- .long 3856337230
- .long 1021834118
- .long 2300688384
- .long 1069856542
- .long 3211396579
- .long 1022621365
- .long 678886400
- .long 1069873146
- .long 4001011887
- .long 1022042646
- .long 921594112
- .long 1069889755
- .long 557811968
- .long 1023065533
- .long 3331668992
- .long 1069906369
- .long 1877060679
- .long 1022419742
- .long 3917875200
- .long 1069922989
- .long 1181055171
- .long 1022752712
- .long 2984829696
- .long 1069939615
- .long 4294526932
- .long 1021499988
- .long 838049024
- .long 1069956247
- .long 3658081878
- .long 1022957952
- .long 2078928384
- .long 1069972884
- .long 820353701
- .long 1019391107
- .long 2719854336
- .long 1069989527
- .long 1644022489
- .long 1023378240
- .long 3069117696
- .long 1070006176
- .long 2771393702
- .long 1019319954
- .long 3435962368
- .long 1070022831
- .long 3876394145
- .long 1023024433
- .long 4130595328
- .long 1070039492
- .long 1630447748
- .long 1021465882
- .long 1169236224
- .long 1070056160
- .long 2828355997
- .long 1020458120
- .long 3453997312
- .long 1070072833
- .long 164091641
- .long 1020388279
- .long 2708127744
- .long 1070089513
- .long 3036550223
- .long 1023328684
- .long 3540797696
- .long 1070106199
- .long 3710949463
- .long 1022568805
- .long 1972276736
- .long 1070122892
- .long 3885277950
- .long 1019761674
- .long 2613815552
- .long 1070139591
- .long 2764165077
- .long 1022921023
- .long 1487791616
- .long 1070156297
- .long 1330644769
- .long 1023162679
- .long 3207593472
- .long 1070173009
- .long 3911007221
- .long 1022993496
- .long 3797764608
- .long 1070189728
- .long 979712598
- .long 1022554580
- .long 3578920448
- .long 1070206454
- .long 2825738223
- .long 1020223708
- .long 2872795648
- .long 1070223187
- .long 392451124
- .long 1022666279
- .long 2002258432
- .long 1070239927
- .long 3730407632
- .long 1023148291
- .long 1291326464
- .long 1070256674
- .long 3723802980
- .long 1022514089
- .long 1065180928
- .long 1070273428
- .long 2635617463
- .long 1022654470
- .long 1650181632
- .long 1070290189
- .long 2061982883
- .long 1022853411
- .long 3373882880
- .long 1070306957
- .long 319732785
- .long 1022017175
- .long 2270081280
- .long 1070323733
- .long 2237757411
- .long 1023064087
- .long 2963732736
- .long 1070340516
- .long 468839165
- .long 1023293774
- .long 1491099904
- .long 1070357307
- .long 1502657946
- .long 1021533479
- .long 2479636480
- .long 1070374105
- .long 482913562
- .long 1021986286
- .long 1968133632
- .long 1070390911
- .long 3281474337
- .long 1022646400
- .long 291639040
- .long 1070407725
- .long 2453320259
- .long 1022812423
- .long 2081472512
- .long 1070424546
- .long 2939989570
- .long 1023091888
- .long 3380340480
- .long 1070441375
- .long 2850707499
- .long 1021921109
- .long 232287488
- .long 1070458213
- .long 3674625342
- .long 1020725130
- .long 1567614208
- .long 1070475058
- .long 9347334
- .long 1022024009
- .long 3433091072
- .long 1070491911
- .long 282524999
- .long 1021433523
- .long 1876877312
- .long 1070508773
- .long 3470449440
- .long 1019309721
- .long 1538472192
- .long 1070525643
- .long 2089486825
- .long 1019698916
- .long 2763830784
- .long 1070542521
- .long 443498115
- .long 1020505194
- .long 1605381632
- .long 1070559408
- .long 3018871601
- .long 1022869913
- .long 2706946048
- .long 1070576303
- .long 3936260892
- .long 1023175875
- .long 2123887360
- .long 1070593207
- .long 2994220655
- .long 1022825948
- .long 104015104
- .long 1070603108
- .long 335054493
- .long 1023441853
- .long 2904568832
- .long 1070615800
- .long 1451215633
- .long 1023853857
- .long 3456197120
- .long 1070632739
- .long 436334733
- .long 1024026432
- .long 252452352
- .long 1070649697
- .long 34596167
- .long 1024031396
- .long 3328018432
- .long 1070666672
- .long 2644547073
- .long 1024296758
- .long 1255829248
- .long 1070683667
- .long 552832586
- .long 1023763122
- .long 4097058560
- .long 1070700680
- .long 1955640623
- .long 1021394654
- .long 451770112
- .long 1070717714
- .long 3428903777
- .long 1022941142
- .long 408920832
- .long 1070734767
- .long 165503263
- .long 1023894958
- .long 1186960640
- .long 1070751840
- .long 435826450
- .long 1024026134
- .long 19078656
- .long 1070768934
- .long 1834169749
- .long 1022899284
- .long 2743490304
- .long 1070786048
- .long 494581074
- .long 1018818479
- .long 2328961024
- .long 1070803184
- .long 2987908834
- .long 1022581110
- .long 350011392
- .long 1070820342
- .long 240771184
- .long 1024143083
- .long 2692326912
- .long 1070837521
- .long 666056837
- .long 1022394776
- .long 2373274368
- .long 1070854723
- .long 2484337770
- .long 1024228156
- .long 1017131520
- .long 1070871948
- .long 3285648279
- .long 1024025789
- .long 265558272
- .long 1070889196
- .long 392241896
- .long 1024252809
- .long 1778008064
- .long 1070906467
- .long 1536107943
- .long 1023949300
- .long 2937184768
- .long 1070923762
- .long 3541062251
- .long 1019448646
- .long 1144442880
- .long 1070941082
- .long 3691683781
- .long 1022123948
- .long 2410165504
- .long 1070958426
- .long 1804181960
- .long 1023945221
- .long 4174350848
- .long 1070975795
- .long 2016094861
- .long 1021716585
- .long 3897012480
- .long 1070993190
- .long 175294410
- .long 1023703404
- .long 3353623040
- .long 1071010611
- .long 167973242
- .long 1023240839
- .long 45671168
- .long 1071028059
- .long 2166856113
- .long 1021565413
- .long 86063872
- .long 1071045533
- .long 2676254727
- .long 1023985299
- .long 1019772672
- .long 1071063034
- .long 989043593
- .long 1021549587
- .long 414297344
- .long 1071080563
- .long 3960972046
- .long 1024307251
- .long 155173120
- .long 1071098120
- .long 1830919291
- .long 1021592251
- .long 2151562240
- .long 1071115705
- .long 405408666
- .long 1023423128
- .long 4041854720
- .long 1071133319
- .long 2043497827
- .long 1024411503
- .long 3489224192
- .long 1071150963
- .long 3072215864
- .long 1022698635
- .long 2477196288
- .long 1071168637
- .long 1812195139
- .long 1022689192
- .long 3015298816
- .long 1071186341
- .long 764841969
- .long 1021027331
- .long 2844731136
- .long 1071204076
- .long 2878117321
- .long 1019116513
- .long 4028950528
- .long 1071221842
- .long 698911452
- .long 1023265602
- .long 69441536
- .long 1071239641
- .long 3253467847
- .long 1020795075
- .long 1676209920
- .long 1071257471
- .long 4272431167
- .long 1022873982
- .long 2408752384
- .long 1071275334
- .long 648519100
- .long 1024385717
- .long 151623680
- .long 1071293231
- .long 345257017
- .long 1019561408
- .long 1410154240
- .long 1071311161
- .long 197863993
- .long 1023224207
- .long 4131351552
- .long 1071329125
- .long 2620801789
- .long 1024411169
- .long 1999664384
- .long 1071347125
- .long 3952692616
- .long 1024168086
- .long 1617668864
- .long 1071365160
- .long 3019889809
- .long 1021907692
- .long 1032074240
- .long 1071383231
- .long 59469899
- .long 1023656194
- .long 2619492096
- .long 1071401338
- .long 1417526820
- .long 1021457783
- .long 202429440
- .long 1071419483
- .long 2927667935
- .long 1019175447
- .long 525044224
- .long 1071437665
- .long 38166811
- .long 1023981879
- .long 1779258880
- .long 1071455885
- .long 481252500
- .long 1023310234
- .long 2195673600
- .long 1071474144
- .long 3962395981
- .long 1021339088
- .long 44573696
- .long 1071492443
- .long 3936281395
- .long 1023014829
- .long 2226905344
- .long 1071510781
- .long 1515320476
- .long 1024320623
- .long 2800512512
- .long 1071529160
- .long 1225403697
- .long 1021081846
- .long 161113600
- .long 1071547581
- .long 3064809733
- .long 1024173917
- .long 1338410240
- .long 1071566043
- .long 2027604973
- .long 1024362526
- .long 522433280
- .long 1071584548
- .long 2055171723
- .long 1023858825
- .long 539595776
- .long 1071603096
- .long 3868820135
- .long 1022936424
- .long 4264017664
- .long 1071621687
- .long 3228065145
- .long 1023479578
- .long 1733924096
- .long 1071640324
- .long 3511934475
- .long 1022496355
- .long 108880384
- .long 1071651839
- .long 615880967
- .long 1023519706
- .long 3517856512
- .long 1071661202
- .long 3113108559
- .long 1025190289
- .long 4043153152
- .long 1071670589
- .long 1571836218
- .long 1023106116
- .long 3251299072
- .long 1071680000
- .long 3444076102
- .long 1022187841
- .long 2736921600
- .long 1071689435
- .long 272771483
- .long 1025095280
- .long 3897698560
- .long 1071703633
- .long 2075390188
- .long 1022489022
- .long 3209485056
- .long 1071722652
- .long 1438094065
- .long 1021844944
- .long 3781432064
- .long 1071741774
- .long 1675017145
- .long 1024143828
- .long 2684184064
- .long 1071761003
- .long 2259963753
- .long 1024731393
- .long 1840489728
- .long 1071780342
- .long 3372883597
- .long 1023431408
- .long 3764087808
- .long 1071799794
- .long 3307523102
- .long 1024485788
- .long 3006232320
- .long 1071819364
- .long 3088971966
- .long 1025213251
- .long 3374881280
- .long 1071839055
- .long 834437749
- .long 1025236452
- .long 797284864
- .long 1071858872
- .long 3122663941
- .long 1025320473
- .long 545765120
- .long 1071878818
- .long 826539625
- .long 1022450955
- .long 107562240
- .long 1071898898
- .long 339584600
- .long 1022481255
- .long 2123649024
- .long 1071919116
- .long 3912959833
- .long 1024321009
- .long 1562385664
- .long 1071939478
- .long 2846067230
- .long 1023343981
- .long 2963085824
- .long 1071959988
- .long 954548627
- .long 1021475211
- .long 3325550592
- .long 1071980652
- .long 3459651155
- .long 1025305573
- .long 775752448
- .long 1072001476
- .long 3582746667
- .long 1023859460
- .long 3238590720
- .long 1072022464
- .long 634636162
- .long 1024472353
- .long 2758801920
- .long 1072043624
- .long 3078216319
- .long 1025304516
- .long 1370319104
- .long 1072064962
- .long 2570569078
- .long 1025099442
- .long 2615805184
- .long 1072086484
- .long 3729933412
- .long 1024605112
- .long 3077336576
- .long 1072108198
- .long 1948916066
- .long 1024781603
- .long 1099528192
- .long 1072130112
- .long 3139143157
- .long 1023729360
- .long 1231903232
- .long 1072152233
- .long 1349513477
- .long 1024737515
- .long 1507504128
- .long 1072174570
- .long 3484516322
- .long 1024000959
- .long 2214659840
- .long 1072197132
- .long 2563820917
- .long 1025225535
- .long 1804739840
- .long 1072219929
- .long 760038746
- .long 1024482855
- .long 1413746688
- .long 1072242971
- .long 3401734714
- .long 1025129838
- .long 821409536
- .long 1072266269
- .long 3729772551
- .long 1025484796
- .long 3031825664
- .long 1072289834
- .long 122256749
- .long 1024752594
- .long 1710784256
- .long 1072313680
- .long 1518205483
- .long 1024724809
- .long 3025265152
- .long 1072337819
- .long 409951989
- .long 1022835555
- .long 287769088
- .long 1072362267
- .long 800355594
- .long 1022484850
- .long 198179840
- .long 1072387038
- .long 3502926213
- .long 1024209373
- .long 1909130496
- .long 1072412149
- .long 3064694319
- .long 1025380823
- .long 1941732096
- .long 1072437619
- .long 4112930390
- .long 1024294679
- .long 3492010496
- .long 1072463467
- .long 2684918107
- .long 1023220233
- .long 81959680
- .long 1072489716
- .long 220021366
- .long 1020635131
- .long 2297837056
- .long 1072516387
- .long 4027683826
- .long 1021041185
- .long 270404096
- .long 1072543508
- .long 2012766065
- .long 1021780753
- .long 3667376896
- .long 1072571105
- .long 2727981522
- .long 1023009874
- .long 330400256
- .long 1072599212
- .long 2940017003
- .long 1025393439
- .long 1119293952
- .long 1072627861
- .long 1608550416
- .long 1022675612
- .long 3536155904
- .long 1072657091
- .long 349665778
- .long 1025156751
- .long 3078046720
- .long 1072686946
- .long 2016159996
- .long 1022193169
- .long 455228416
- .long 1072705361
- .long 1908539328
- .long 1026126332
- .long 1871505664
- .long 1072720988
- .long 2784700894
- .long 1025922277
- .long 1630994432
- .long 1072737010
- .long 361107678
- .long 1022887244
- .long 2084558336
- .long 1072753462
- .long 2642784509
- .long 1072689083
- .long 1514442531
- .long 1072688953
- .long 333108933
- .long 1072688821
- .long 3392112024
- .long 1072688686
- .long 2099852862
- .long 1072688550
- .long 749609004
- .long 1072688412
- .long 3634632596
- .long 1072688271
- .long 2163248461
- .long 1072688129
- .long 628657846
- .long 1072687985
- .long 3324036511
- .long 1072687838
- .long 1657632815
- .long 1072687690
- .long 4217538760
- .long 1072687539
- .long 2411951597
- .long 1072687387
- .long 533944872
- .long 1072687233
- .long 2876566508
- .long 1072687076
- .long 847936891
- .long 1072686918
- .long 3036019913
- .long 1072686757
- .long 848884575
- .long 1072686595
- .long 2874443326
- .long 1072686430
- .long 520713666
- .long 1072686264
- .long 2375556481
- .long 1072686095
- .long 4141904948
- .long 1072685924
- .long 1522666382
- .long 1072685752
- .long 3105624104
- .long 1072685577
- .long 298666327
- .long 1072685401
- .long 1689524500
- .long 1072685222
- .long 2981002200
- .long 1072685041
- .long 4170844284
- .long 1072684858
- .long 961802263
- .long 1072684674
- .long 1941503454
- .long 1072684487
- .long 2812647170
- .long 1072684298
- .long 3572873869
- .long 1072684107
- .long 4219797823
- .long 1072683914
- .long 456039788
- .long 1072683720
- .long 869096151
- .long 1072683523
- .long 1161535119
- .long 1072683324
- .long 1330865866
- .long 1072683123
- .long 1374571204
- .long 1072682920
- .long 1290107538
- .long 1072682715
- .long 1074904836
- .long 1072682508
- .long 726366587
- .long 1072682299
- .long 241869763
- .long 1072682088
- .long 3913732079
- .long 1072681874
- .long 3149342765
- .long 1072681659
- .long 2240966306
- .long 1072681442
- .long 1185873216
- .long 1072681223
- .long 4276274591
- .long 1072681001
- .long 2919452883
- .long 1072680778
- .long 1407565635
- .long 1072680553
- .long 4032743551
- .long 1072680325
- .long 2202188565
- .long 1072680096
- .long 207977577
- .long 1072679865
- .long 2342160518
- .long 1072679631
- .long 11858423
- .long 1072679396
- .long 1804034453
- .long 1072679158
- .long 3420722787
- .long 1072678918
- .long 563930456
- .long 1072678677
- .long 1820539192
- .long 1072678433
- .long 2892501606
- .long 1072678187
- .long 3776710320
- .long 1072677939
- .long 175063337
- .long 1072677690
- .long 674333171
- .long 1072677438
- .long 976363026
- .long 1072677184
- .long 1077935934
- .long 1072676928
- .long 1921075490
- .long 1072676540
- .long 881493302
- .long 1072676016
- .long 3275752439
- .long 1072675483
- .long 486855588
- .long 1072674943
- .long 1077229111
- .long 1072674394
- .long 723950308
- .long 1072673837
- .long 3693582199
- .long 1072673271
- .long 1367335316
- .long 1072672698
- .long 2305837020
- .long 1072672116
- .long 2184358641
- .long 1072671526
- .long 972682840
- .long 1072670928
- .long 2935101762
- .long 1072670321
- .long 3745513263
- .long 1072669706
- .long 3372320886
- .long 1072669083
- .long 1783464620
- .long 1072668452
- .long 3241386215
- .long 1072667812
- .long 3418125284
- .long 1072667164
- .long 2280219148
- .long 1072666508
- .long 4088700758
- .long 1072665843
- .long 219227400
- .long 1072665171
- .long 3521816918
- .long 1072664489
- .long 1076205279
- .long 1072663800
- .long 1436484616
- .long 1072663102
- .long 271362610
- .long 1072662396
- .long 1838996688
- .long 1072661681
- .long 1807122518
- .long 1072660958
- .long 137953542
- .long 1072660227
- .long 1088178584
- .long 1072659487
- .long 324057537
- .long 1072658739
- .long 2101288076
- .long 1072657982
- .long 2085133974
- .long 1072657217
- .long 235324451
- .long 1072656444
- .long 806051592
- .long 1072655662
- .long 3756033140
- .long 1072654871
- .long 453542543
- .long 1072654073
- .long 3741177327
- .long 1072653265
- .long 691216109
- .long 1072652450
- .long 4145223372
- .long 1072651625
- .long 1174439091
- .long 1072650793
- .long 324416139
- .long 1072649952
- .long 1550246310
- .long 1072649102
- .long 511524674
- .long 1072648244
- .long 1457248482
- .long 1072647377
- .long 45944955
- .long 1072646502
- .long 525537397
- .long 1072645618
- .long 2848440188
- .long 1072644725
- .long 2671555633
- .long 1072643824
- .long 4241172637
- .long 1072642914
- .long 3213094278
- .long 1072641996
- .long 3832503688
- .long 1072641069
- .long 1754091534
- .long 1072640134
- .long 1221921804
- .long 1072639190
- .long 2184526489
- .long 1072638237
- .long 294902089
- .long 1072637276
- .long 4090375270
- .long 1072636305
- .long 632860906
- .long 1072635327
- .long 2753498702
- .long 1072634339
- .long 1808009252
- .long 1072633343
- .long 2036428672
- .long 1072632338
- .long 3383235626
- .long 1072631324
- .long 1497347484
- .long 1072630302
- .long 617018317
- .long 1072629271
- .long 684933058
- .long 1072628231
- .long 1643170798
- .long 1072627182
- .long 3011066360
- .long 1072625592
- .long 957158713
- .long 1072623442
- .long 1390907941
- .long 1072621256
- .long 3819155270
- .long 1072619034
- .long 3443571196
- .long 1072616777
- .long 4045412458
- .long 1072614484
- .long 805503923
- .long 1072612156
- .long 1778922015
- .long 1072609791
- .long 2125033665
- .long 1072607390
- .long 1287203863
- .long 1072604953
- .long 2992629568
- .long 1072602479
- .long 2367267127
- .long 1072599969
- .long 3115526047
- .long 1072597422
- .long 340219539
- .long 1072594839
- .long 2017215719
- .long 1072592218
- .long 3225443424
- .long 1072589560
- .long 3326565673
- .long 1072586865
- .long 1669811211
- .long 1072584133
- .long 1886735022
- .long 1072581363
- .long 3301071171
- .long 1072578555
- .long 928514283
- .long 1072575710
- .long 2656364059
- .long 1072572826
- .long 3473490507
- .long 1072569904
- .long 2649965606
- .long 1072566944
- .long 3736819052
- .long 1072563945
- .long 1680885175
- .long 1072560908
- .long 4413771
- .long 1072557832
- .long 2214869753
- .long 1072554716
- .long 3214725184
- .long 1072551561
- .long 2186079903
- .long 1072548367
- .long 2590372131
- .long 1072545133
- .long 3578146079
- .long 1072541859
- .long 4283712755
- .long 1072538545
- .long 3824834510
- .long 1072535191
- .long 1302400298
- .long 1072531797
- .long 95058636
- .long 1072528362
- .long 3563906063
- .long 1072524885
- .long 2167230730
- .long 1072521368
- .long 3524918334
- .long 1072517809
- .long 2353304918
- .long 1072514209
- .long 1939625839
- .long 1072510567
- .long 1256714581
- .long 1072506883
- .long 3552525848
- .long 1072503156
- .long 3464809522
- .long 1072499387
- .long 4200542593
- .long 1072495575
- .long 355609124
- .long 1072491721
- .long 3684139099
- .long 1072487822
- .long 148355918
- .long 1072483881
- .long 1457689242
- .long 1072479895
- .long 2118591596
- .long 1072475865
- .long 908848089
- .long 1072471791
- .long 877032689
- .long 1072467672
- .long 752012304
- .long 1072463508
- .long 3532301749
- .long 1072459298
- .long 3600563221
- .long 1072455043
- .long 3902857084
- .long 1072450742
- .long 3063101036
- .long 1072446395
- .long 3972344374
- .long 1072442001
- .long 903183549
- .long 1072437561
- .long 983892938
- .long 1072433073
- .long 2722858568
- .long 1072428537
- .long 302790515
- .long 1072423954
- .long 759811057
- .long 1072419322
- .long 2507809922
- .long 1072414641
- .long 2388408813
- .long 1072407528
- .long 2084492942
- .long 1072397870
- .long 2435703301
- .long 1072388010
- .long 1935433360
- .long 1072377945
- .long 2742047290
- .long 1072367671
- .long 2053284205
- .long 1072357185
- .long 657783367
- .long 1072346483
- .long 2893664841
- .long 1072335560
- .long 3718906405
- .long 1072324413
- .long 1547896303
- .long 1072313038
- .long 2494058440
- .long 1072301429
- .long 3133238742
- .long 1072289582
- .long 3327000086
- .long 1072277492
- .long 1860667274
- .long 1072265154
- .long 665340747
- .long 1072252562
- .long 443347841
- .long 1072239710
- .long 581282618
- .long 1072226592
- .long 3349780465
- .long 1072213201
- .long 914217606
- .long 1072199532
- .long 989797661
- .long 1072185576
- .long 945436416
- .long 1072171326
- .long 549291300
- .long 1072156774
- .long 1814636389
- .long 1072141911
- .long 239092858
- .long 1072126729
- .long 1794680724
- .long 1072111217
- .long 1241534678
- .long 1072095366
- .long 3366566214
- .long 1072079164
- .long 1244090828
- .long 1072062601
- .long 1708448120
- .long 1072045663
- .long 3544260650
- .long 1072028337
- .long 1402741403
- .long 1072010610
- .long 2551936888
- .long 1071992465
- .long 617669739
- .long 1071973887
- .long 794002186
- .long 1071954857
- .long 2021237693
- .long 1071935356
- .long 540450384
- .long 1071915364
- .long 1920555537
- .long 1071894857
- .long 2879585206
- .long 1071873811
- .long 3000237455
- .long 1071852199
- .long 3352974346
- .long 1071829991
- .long 569629937
- .long 1071807155
- .long 2077237208
- .long 1071783653
- .long 2284891805
- .long 1071759446
- .long 1226651784
- .long 1071734489
- .long 1102047405
- .long 1071708731
- .long 2009896384
- .long 1071682115
- .long 927419082
- .long 1071654577
- .long 85010366
- .long 1071607413
- .long 696431025
- .long 1071548180
- .long 2611410541
- .long 1071486585
- .long 2612593658
- .long 1071422396
- .long 3548155306
- .long 1071355336
- .long 3887997484
- .long 1071285073
- .long 244854763
- .long 1071211202
- .long 4214445648
- .long 1071133216
- .long 2303966727
- .long 1071050478
- .long 3991040013
- .long 1070962152
- .long 3126952278
- .long 1070867118
- .long 1817448378
- .long 1070763804
- .long 1793814864
- .long 1070649884
- .long 3507224072
- .long 1070447193
- .long 4027609105
- .long 1070148772
- .long 577507993
- .long 1069779414
- .long 2310232419
- .long 1068931829
- .long 4294967295
- .long 2147483647
- .long 0
- .long 0
- .long 0
- .long 4294950912
- .long 0
- .long 0
- .long 0
- .long 1072693248
- .long 0
- .long 0
- .long 4160749568
- .long 4294967295
- .long 4160749568
- .long 4294967295
- .long 0
- .long 2147483584
- .long 0
- .long 0
- .long 0
- .long 2147483648
- .long 0
- .long 0
- .long 856972295
- .long 1016178214
- .long 1413754136
- .long 1073291771
- .type static_const_table,@object
- .size static_const_table,6096
- .data
- .section .note.GNU-stack, "",@progbits
-# End
diff --git a/libm/x86/e_atan2.S b/libm/x86/e_atan2.S
deleted file mode 100644
index e491396..0000000
--- a/libm/x86/e_atan2.S
+++ /dev/null
@@ -1,1221 +0,0 @@
-/*
-Copyright (c) 2014, Intel Corporation
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
-
- * Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
-
- * Neither the name of Intel Corporation nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
-ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/******************************************************************************/
-// ALGORITHM DESCRIPTION
-// ---------------------
-//
-//
-//1. The method is based on the relationship of atan2(Y,X) to atan(|Y/X|)
-// as follows.
-// / sign(Y) atan(|Y/X|) if X > 0
-// atan2(Y,X) =
-// \ sign(Y)*pi - sign(Y)*atan(|Y/X|) if X < 0
-//
-// Thus, atan2(Y,X) is of the form atan2(Y,X) = PI + sgn*atan(|Y/X|)
-// where PI and sgn can be determined by the four possible combinations of
-// of the pair (sign(X),sign(Y)). We concentrate on the numerical method
-// for atan(|Y/X|).
-//
-//2. For |Y/X| < 2^(-64), atan(|Y/X|) ~=~ |Y/X|. Hence, atan2(Y,X) is Y/X
-// if X > 0, and sign(Y)*pi otherwise.
-//3. For |Y/X| >= 2^(65), atan(|Y/X|) ~=~ pi/2. Hence atan2(Y,X) is sign(Y)pi/2.
-//4. For 2^(-64) <= |Y/X| < 2^(-5), atan(|Y/X|) is approximated by a polynomial
-// of the form Z + Z*E*polynomial(E), where Z = |Y/X| and E = Z*Z.
-//5. For |Y/X| > 2^(5), atan(|Y/X|) = pi/2 + atan(-|X/Y|), and atan(-|X/Y|) is
-// calculated using the polynomial in 4 above.
-//6. For 2^(-5) <= |Y/X| <= 2^(5), we employ a table lookup method. First,
-// we obtain B = 2^k * 1.b1 b2 b3 b4 = 2^k * (1+k/16) that approximate
-// |Y/X| to approximately 5 significant bits. Hence, atan(|Y/X|) is
-//
-// atan(|Y/X|) = atan(B) + atan(Z), where Z = (|Y|-B|X|)/(|X|+B|Y|).
-// ~=~ tau + Z + Z*E*polynomial(E), where E = Z*Z.
-//
-// B has the range from 2^(-6)*(1+14/16) to 2^5 = 2^(5)*(1+0/16), totally
-// 163 possible values. These values are calculated beforehand and stored
-// in a table. The polynomial is the one used in 4.
-//
-// Special cases:
-// atan2(+-0, +0) = +-0
-// atan2(+-0, -0) = +-pi
-// atan2(+-0, x) = +-0, for x > 0, and +-pi, for x < 0
-// atan2(y, +-0) = +pi/2 for y > 0, and -pi/2 for y < 0
-// atan2(+-y, +INF) = +-0, for finite y > 0
-// atan2(+-y, -INF) = +-pi, for finite y > 0
-// atan2(+-INF, x) = +-pi/2, for finite x
-// atan2(+-INF, +INF) = +-pi/4
-// atan2(+-INF, -INF) = +-3*pi/4
-//
-/******************************************************************************/
-
-#include <private/bionic_asm.h>
-# -- Begin static_func
- .text
- .align __bionic_asm_align
- .type static_func, @function
-static_func:
-..B1.1:
- call ..L2
-..L2:
- popl %eax
- lea _GLOBAL_OFFSET_TABLE_+[. - ..L2](%eax), %eax
- lea static_const_table@GOTOFF(%eax), %eax
- ret
- .size static_func,.-static_func
-# -- End static_func
-
-# -- Begin atan2
-ENTRY(atan2)
-# parameter 1: 8 + %ebp
-# parameter 2: 16 + %ebp
-..B2.1:
-..B2.2:
- pushl %ebp
- movl %esp, %ebp
- subl $120, %esp
- movl %ebx, 64(%esp)
- call static_func
- movl %eax, %ebx
- movsd 136(%esp), %xmm1
- movsd 128(%esp), %xmm0
- pextrw $3, %xmm0, %eax
- movq %xmm0, 8(%esp)
- andl $32752, %eax
- movq %xmm1, 16(%esp)
- subl $14448, %eax
- cmpl $3840, %eax
- ja .L_2TAG_PACKET_0.0.2
- pextrw $3, %xmm1, %eax
- andl $32752, %eax
- subl $14448, %eax
- cmpl $3840, %eax
- ja .L_2TAG_PACKET_1.0.2
-.L_2TAG_PACKET_2.0.2:
- unpcklpd %xmm1, %xmm0
- xorpd %xmm5, %xmm5
- xorpd %xmm3, %xmm3
- movl $2048, %eax
- pinsrw $3, %eax, %xmm5
- paddw %xmm1, %xmm5
- psrlq $29, %xmm5
- rcpss %xmm5, %xmm3
- xorpd %xmm4, %xmm4
- movl $14336, %ecx
- pinsrw $3, %ecx, %xmm4
- psllq $29, %xmm3
- paddw %xmm4, %xmm3
- mulsd %xmm0, %xmm3
- xorpd %xmm2, %xmm2
- xorpd %xmm6, %xmm6
- xorpd %xmm7, %xmm7
- movl $32768, %eax
- pinsrw $2, %eax, %xmm6
- movl $32767, %ecx
- pinsrw $3, %ecx, %xmm7
- paddd %xmm6, %xmm3
- andpd %xmm7, %xmm3
- movapd %xmm3, %xmm5
- pextrw $3, %xmm3, %eax
- movl $16448, %ecx
- pinsrw $3, %ecx, %xmm2
- minsd %xmm2, %xmm3
- movmskpd %xmm0, %edx
- psllq $1, %xmm0
- psrlq $1, %xmm0
- cmpsd $2, %xmm2, %xmm5
- psllq $1, %xmm1
- psrlq $1, %xmm1
- movapd %xmm1, %xmm6
- movapd %xmm1, %xmm7
- movapd %xmm0, %xmm2
- movl $0, %ecx
- pinsrw $0, %ecx, %xmm6
- subsd %xmm6, %xmm7
- movapd %xmm0, %xmm4
- mulsd %xmm3, %xmm6
- mulsd %xmm3, %xmm4
- mulsd %xmm3, %xmm7
- andpd %xmm5, %xmm0
- subsd %xmm6, %xmm0
- andpd %xmm5, %xmm1
- addsd %xmm1, %xmm4
- subsd %xmm7, %xmm0
- andl $32752, %eax
- subl $16286, %eax
- cmpl $1121, %eax
- ja .L_2TAG_PACKET_3.0.2
- divsd %xmm4, %xmm0
- pextrw $3, %xmm3, %ecx
- movsd 2944(%ebx), %xmm2
- movsd 2960(%ebx), %xmm3
- pextrw $0, %xmm5, %eax
- addl %edx, %edx
- movapd 2688(%ebx,%edx,8), %xmm6
- movapd 2752(%ebx,%edx,8), %xmm1
- subl $16286, %ecx
- notl %eax
- andl $1, %eax
- addl %eax, %ecx
- addl %ecx, %ecx
- movapd (%ebx,%ecx,8), %xmm5
- xorpd %xmm1, %xmm5
- addpd %xmm6, %xmm5
- movapd %xmm5, %xmm6
- unpckhpd %xmm5, %xmm5
- xorpd %xmm0, %xmm1
- movapd %xmm1, %xmm4
- mulsd %xmm0, %xmm0
- mulsd %xmm0, %xmm2
- addsd %xmm0, %xmm3
- addsd %xmm6, %xmm1
- subsd %xmm1, %xmm6
- addsd %xmm4, %xmm6
- addsd 2952(%ebx), %xmm2
- mulsd %xmm0, %xmm3
- mulsd %xmm0, %xmm4
- addsd %xmm5, %xmm6
- mulsd %xmm4, %xmm2
- addsd 2968(%ebx), %xmm3
- mulsd %xmm3, %xmm2
- addsd %xmm6, %xmm2
- addsd %xmm2, %xmm1
- movsd %xmm1, (%esp)
- fldl (%esp)
- jmp .L_2TAG_PACKET_4.0.2
-.L_2TAG_PACKET_3.0.2:
- addl $942, %eax
- cmpl $942, %eax
- ja .L_2TAG_PACKET_5.0.2
- xorpd %xmm4, %xmm4
- movl $16368, %ecx
- pinsrw $3, %ecx, %xmm4
- divsd %xmm1, %xmm4
- addl %edx, %edx
- movapd 2752(%ebx,%edx,8), %xmm6
- unpcklpd %xmm3, %xmm3
- xorpd %xmm6, %xmm0
- xorpd %xmm6, %xmm2
- xorpd %xmm6, %xmm3
- movapd 2816(%ebx,%edx,8), %xmm7
- movsd 2944(%ebx), %xmm1
- movsd 2960(%ebx), %xmm5
- andpd 2880(%ebx,%edx,8), %xmm3
- mulsd %xmm4, %xmm2
- mulsd %xmm4, %xmm0
- movapd %xmm2, %xmm6
- mulsd %xmm2, %xmm2
- mulsd %xmm2, %xmm1
- addsd %xmm2, %xmm5
- mulsd %xmm2, %xmm6
- addsd 2952(%ebx), %xmm1
- mulsd %xmm2, %xmm5
- addsd %xmm0, %xmm7
- addpd %xmm3, %xmm7
- mulsd %xmm6, %xmm1
- addsd 2968(%ebx), %xmm5
- mulsd %xmm1, %xmm5
- addsd %xmm7, %xmm5
- unpckhpd %xmm7, %xmm7
- addsd %xmm7, %xmm5
- movsd %xmm5, (%esp)
- fldl (%esp)
- jmp .L_2TAG_PACKET_4.0.2
-.L_2TAG_PACKET_5.0.2:
- movsd 16(%esp), %xmm1
- movsd 8(%esp), %xmm0
- pextrw $3, %xmm1, %eax
- andl $32752, %eax
- pextrw $3, %xmm0, %ecx
- andl $32752, %ecx
- cmpl %eax, %ecx
- jg .L_2TAG_PACKET_6.0.2
- pextrw $3, %xmm1, %ecx
- cmpl $32767, %ecx
- jg .L_2TAG_PACKET_7.0.2
- divsd %xmm1, %xmm0
- movsd %xmm0, (%esp)
- fldl (%esp)
- jmp .L_2TAG_PACKET_4.0.2
-.L_2TAG_PACKET_7.0.2:
- andpd 2672(%ebx), %xmm0
- movsd 2640(%ebx), %xmm2
- xorpd %xmm2, %xmm0
- movsd %xmm0, (%esp)
- fldl (%esp)
- jmp .L_2TAG_PACKET_4.0.2
-.L_2TAG_PACKET_6.0.2:
- andpd 2672(%ebx), %xmm0
- movsd 2624(%ebx), %xmm2
- xorpd %xmm2, %xmm0
- movsd %xmm0, (%esp)
- fldl (%esp)
- jmp .L_2TAG_PACKET_4.0.2
-.L_2TAG_PACKET_0.0.2:
-.L_2TAG_PACKET_1.0.2:
- pextrw $3, %xmm0, %ecx
- andl $32752, %ecx
- pextrw $3, %xmm1, %eax
- andl $32752, %eax
- cmpl $32752, %ecx
- je .L_2TAG_PACKET_8.0.2
- cmpl $32752, %eax
- je .L_2TAG_PACKET_9.0.2
- movsd 2992(%ebx), %xmm3
- movl $1024, %edx
- movsd 2976(%ebx), %xmm4
- xorpd %xmm6, %xmm6
- movsd 3008(%ebx), %xmm7
- cmpl $0, %ecx
- je .L_2TAG_PACKET_10.0.2
-.L_2TAG_PACKET_11.0.2:
- cmpl $0, %eax
- je .L_2TAG_PACKET_12.0.2
-.L_2TAG_PACKET_13.0.2:
- addl %ecx, %edx
- subl %eax, %edx
- cmpl $2048, %edx
- ja .L_2TAG_PACKET_5.0.2
- addl $15344, %edx
- pinsrw $3, %edx, %xmm6
- andpd %xmm4, %xmm0
- andpd %xmm4, %xmm1
- orpd %xmm6, %xmm0
- orpd %xmm7, %xmm1
- jmp .L_2TAG_PACKET_2.0.2
-.L_2TAG_PACKET_10.0.2:
- subl $880, %edx
- mulsd %xmm3, %xmm0
- pextrw $3, %xmm0, %ecx
- andl $32752, %ecx
- cmpl $0, %ecx
- je .L_2TAG_PACKET_14.0.2
- jmp .L_2TAG_PACKET_11.0.2
-.L_2TAG_PACKET_12.0.2:
- addl $880, %edx
- mulsd %xmm3, %xmm1
- pextrw $3, %xmm1, %eax
- andl $32752, %eax
- cmpl $0, %eax
- je .L_2TAG_PACKET_15.0.2
- jmp .L_2TAG_PACKET_13.0.2
-.L_2TAG_PACKET_8.0.2:
- movd %xmm0, %edx
- movapd %xmm0, %xmm2
- psrlq $32, %xmm2
- movd %xmm2, %ecx
- andl $1048575, %ecx
- orl %edx, %ecx
- cmpl $0, %ecx
- jne .L_2TAG_PACKET_16.0.2
- psrlq $63, %xmm0
- psllq $63, %xmm0
- cmpl $32752, %eax
- jae .L_2TAG_PACKET_17.0.2
- movapd 2624(%ebx), %xmm5
- pshufd $238, %xmm5, %xmm4
- addsd %xmm4, %xmm5
- orpd %xmm5, %xmm0
-.L_2TAG_PACKET_18.0.2:
- movsd %xmm0, (%esp)
- fldl (%esp)
- jmp .L_2TAG_PACKET_4.0.2
-.L_2TAG_PACKET_16.0.2:
- addsd %xmm1, %xmm0
- jmp .L_2TAG_PACKET_18.0.2
-.L_2TAG_PACKET_17.0.2:
- movd %xmm1, %eax
- movapd %xmm1, %xmm2
- psrlq $32, %xmm2
- movd %xmm2, %ecx
- movl $-2147483648, %edx
- andl %ecx, %edx
- andl $1048575, %ecx
- orl %eax, %ecx
- cmpl $0, %ecx
- jne .L_2TAG_PACKET_19.0.2
- cmpl $0, %edx
- jne .L_2TAG_PACKET_20.0.2
- movapd 2656(%ebx), %xmm5
- pshufd $238, %xmm5, %xmm4
- addsd %xmm4, %xmm5
- orpd %xmm5, %xmm0
- movsd %xmm0, (%esp)
- fldl (%esp)
- jmp .L_2TAG_PACKET_4.0.2
-.L_2TAG_PACKET_19.0.2:
- movapd %xmm1, %xmm0
- movsd %xmm0, (%esp)
- fldl (%esp)
- jmp .L_2TAG_PACKET_4.0.2
-.L_2TAG_PACKET_20.0.2:
- movapd 2656(%ebx), %xmm5
- movapd 2624(%ebx), %xmm6
- addpd %xmm6, %xmm5
- pshufd $238, %xmm5, %xmm6
- addpd %xmm6, %xmm5
- orpd %xmm5, %xmm0
- movsd %xmm0, (%esp)
- fldl (%esp)
- jmp .L_2TAG_PACKET_4.0.2
-.L_2TAG_PACKET_9.0.2:
- movd %xmm1, %eax
- movapd %xmm1, %xmm2
- psrlq $32, %xmm2
- movd %xmm2, %ecx
- movl $-2147483648, %edx
- andl %ecx, %edx
- andl $1048575, %ecx
- orl %eax, %ecx
- cmpl $0, %ecx
- jne .L_2TAG_PACKET_19.0.2
- psrlq $63, %xmm0
- psllq $63, %xmm0
- cmpl $0, %edx
- jne .L_2TAG_PACKET_21.0.2
- movsd %xmm0, (%esp)
- fldl (%esp)
- jmp .L_2TAG_PACKET_4.0.2
-.L_2TAG_PACKET_21.0.2:
- movapd 2640(%ebx), %xmm5
- pshufd $238, %xmm5, %xmm4
- addsd %xmm4, %xmm5
- orpd %xmm5, %xmm0
- movsd %xmm0, (%esp)
- fldl (%esp)
- jmp .L_2TAG_PACKET_4.0.2
-.L_2TAG_PACKET_14.0.2:
- pextrw $3, %xmm1, %edx
- andl $32768, %edx
- cmpl $0, %edx
- je .L_2TAG_PACKET_22.0.2
- movapd 2640(%ebx), %xmm5
- pshufd $238, %xmm5, %xmm4
- addsd %xmm4, %xmm5
- comisd %xmm0, %xmm1
- orpd %xmm5, %xmm0
- jne .L_2TAG_PACKET_23.0.2
-.L_2TAG_PACKET_24.0.2:
- movsd %xmm0, (%esp)
- fldl (%esp)
- jmp .L_2TAG_PACKET_4.0.2
-.L_2TAG_PACKET_23.0.2:
- movsd %xmm0, (%esp)
- fldl (%esp)
- jmp .L_2TAG_PACKET_4.0.2
-.L_2TAG_PACKET_22.0.2:
- comisd %xmm0, %xmm1
- jne .L_2TAG_PACKET_23.0.2
- je .L_2TAG_PACKET_24.0.2
-.L_2TAG_PACKET_15.0.2:
- movapd 2624(%ebx), %xmm5
- psrlq $63, %xmm0
- psllq $63, %xmm0
- pshufd $238, %xmm5, %xmm4
- addsd %xmm4, %xmm5
- orpd %xmm5, %xmm0
- movsd %xmm0, (%esp)
- fldl (%esp)
-.L_2TAG_PACKET_4.0.2:
- movl 64(%esp), %ebx
- movl %ebp, %esp
- popl %ebp
- ret
-..B2.3:
-END(atan2)
-# -- End atan2
-
-# Start file scope ASM
-ALIAS_SYMBOL(atan2l, atan2);
-# End file scope ASM
- .section .rodata, "a"
- .align 16
- .align 16
-static_const_table:
- .long 3390881280
- .long 1067318733
- .long 1411116779
- .long 1018950063
- .long 2985987840
- .long 1067384211
- .long 2088903695
- .long 1018086027
- .long 3148445184
- .long 1067449685
- .long 2044163806
- .long 1017271335
- .long 3667629184
- .long 1067515494
- .long 2353092775
- .long 1019967309
- .long 1546568832
- .long 1067580954
- .long 611991315
- .long 1017602584
- .long 3815996800
- .long 1067646404
- .long 466038598
- .long 1019686426
- .long 4050241920
- .long 1067711845
- .long 3265026328
- .long 1019626952
- .long 120454912
- .long 1067777277
- .long 1542207696
- .long 1020155608
- .long 2784639744
- .long 1067842697
- .long 3883834623
- .long 1018602870
- .long 1328010624
- .long 1067908107
- .long 1791097456
- .long 1019053126
- .long 2217794048
- .long 1067973505
- .long 551619938
- .long 1018494194
- .long 3333520000
- .long 1068038891
- .long 2390331823
- .long 1019033022
- .long 2557052032
- .long 1068104265
- .long 2423976108
- .long 1019728674
- .long 2067649536
- .long 1068169626
- .long 3757397745
- .long 1018672362
- .long 4047094784
- .long 1068234973
- .long 481613184
- .long 1019275104
- .long 2089853184
- .long 1068300307
- .long 1733914374
- .long 1020124677
- .long 2678003840
- .long 1068365626
- .long 1373600282
- .long 1013935474
- .long 3706496128
- .long 1068430930
- .long 1000610902
- .long 1019673285
- .long 3073179008
- .long 1068496219
- .long 1497143008
- .long 1019900342
- .long 2803716736
- .long 1068562846
- .long 1476677416
- .long 1019444094
- .long 3204984128
- .long 1068628077
- .long 1192335905
- .long 1018748628
- .long 831146624
- .long 1068693273
- .long 2733586224
- .long 1018823295
- .long 243029376
- .long 1068758431
- .long 950106081
- .long 1019046675
- .long 1735561920
- .long 1068823549
- .long 3546440856
- .long 1020104712
- .long 1339217792
- .long 1068888626
- .long 3028812387
- .long 1019818321
- .long 3706342144
- .long 1068953659
- .long 3814564029
- .long 1017763871
- .long 637726976
- .long 1069018648
- .long 3584007699
- .long 1017976868
- .long 1148779264
- .long 1069083589
- .long 2282532133
- .long 1019483954
- .long 1406131392
- .long 1069148481
- .long 1547359113
- .long 1019786342
- .long 1908875904
- .long 1069213322
- .long 1315508410
- .long 1020009473
- .long 3194947520
- .long 1069278110
- .long 3845393201
- .long 1015803761
- .long 1547487744
- .long 1069342844
- .long 3863107865
- .long 1019810104
- .long 1881061952
- .long 1069407521
- .long 4288343548
- .long 1019687581
- .long 563086336
- .long 1069472140
- .long 2582230241
- .long 1020099350
- .long 2594975552
- .long 1069536698
- .long 2306443764
- .long 1019667244
- .long 3438545024
- .long 1069606573
- .long 957455549
- .long 1015587735
- .long 4211357472
- .long 1069670906
- .long 2611778754
- .long 1017877214
- .long 3002835424
- .long 1069735101
- .long 235580458
- .long 1020211685
- .long 3905315424
- .long 1069799150
- .long 3630647617
- .long 1018736849
- .long 2849656576
- .long 1069863047
- .long 2412165062
- .long 1019693004
- .long 507429472
- .long 1069926785
- .long 1397750723
- .long 1018412717
- .long 2307470272
- .long 1069990356
- .long 1796470904
- .long 1019796181
- .long 1271814912
- .long 1070053755
- .long 189761565
- .long 1016149115
- .long 3800538144
- .long 1070116974
- .long 2524871582
- .long 1018263353
- .long 3916203552
- .long 1070180008
- .long 127848658
- .long 1017672664
- .long 457192032
- .long 1070242851
- .long 4020400938
- .long 1019823010
- .long 1385324704
- .long 1070305495
- .long 564511179
- .long 1016079094
- .long 2322869856
- .long 1070367935
- .long 2347103319
- .long 1018927760
- .long 3743438624
- .long 1070430165
- .long 877973862
- .long 1019638162
- .long 2392255552
- .long 1070492180
- .long 2432782267
- .long 1018872629
- .long 4180443328
- .long 1070553973
- .long 3102990015
- .long 1020093101
- .long 2547540832
- .long 1070636485
- .long 3877738253
- .long 1017300424
- .long 2735468912
- .long 1070697461
- .long 2446470256
- .long 1019235378
- .long 542633792
- .long 1070757943
- .long 583606328
- .long 1018624131
- .long 923265984
- .long 1070817911
- .long 1793926708
- .long 1019714161
- .long 918728448
- .long 1070877348
- .long 3726463586
- .long 1019433296
- .long 2572275008
- .long 1070936237
- .long 1845354238
- .long 1019459238
- .long 50974688
- .long 1070994564
- .long 983808064
- .long 1016685418
- .long 1105518320
- .long 1071052313
- .long 2357496692
- .long 1015139882
- .long 1264825328
- .long 1071109472
- .long 2244129354
- .long 1019046344
- .long 961157920
- .long 1071166029
- .long 3124185339
- .long 1018541776
- .long 1162701584
- .long 1071221973
- .long 1279780948
- .long 1019268918
- .long 3284935664
- .long 1071277294
- .long 2670033472
- .long 1019833744
- .long 497441888
- .long 1071331985
- .long 1032737410
- .long 1019795212
- .long 3377383904
- .long 1071386036
- .long 2356897182
- .long 1020205553
- .long 1126962000
- .long 1071439443
- .long 3723724586
- .long 1015212418
- .long 90291008
- .long 1071492199
- .long 4178672431
- .long 1020186971
- .long 190059536
- .long 1071595741
- .long 1763589807
- .long 1019162163
- .long 2497392840
- .long 1071670654
- .long 3036997041
- .long 1020204325
- .long 2616971944
- .long 1071719773
- .long 300151069
- .long 1017041957
- .long 2883518128
- .long 1071767563
- .long 2203981414
- .long 1019190108
- .long 1496354352
- .long 1071814030
- .long 332287966
- .long 1016846435
- .long 483276728
- .long 1071859184
- .long 653845024
- .long 1018830914
- .long 3097401072
- .long 1071903039
- .long 1514746408
- .long 1019278972
- .long 2737217248
- .long 1071945615
- .long 1358845067
- .long 1017268275
- .long 2072577560
- .long 1071986933
- .long 3041024735
- .long 1019929672
- .long 2266405656
- .long 1072027017
- .long 1271261130
- .long 1012925070
- .long 958652544
- .long 1072065894
- .long 2158017058
- .long 1019955372
- .long 3312993840
- .long 1072103591
- .long 765809169
- .long 1019114443
- .long 3177001304
- .long 1072140139
- .long 144180084
- .long 1019822186
- .long 3071642184
- .long 1072175568
- .long 4004602424
- .long 1019420740
- .long 4283953648
- .long 1072209909
- .long 1511950430
- .long 1020176966
- .long 1413754136
- .long 1072243195
- .long 856972295
- .long 1015129638
- .long 4073202944
- .long 1072306725
- .long 4068194804
- .long 1019714860
- .long 946117760
- .long 1072366415
- .long 694980733
- .long 1020150135
- .long 3980632032
- .long 1072422512
- .long 1313251280
- .long 1019948709
- .long 1468297112
- .long 1072475260
- .long 330111143
- .long 1019809198
- .long 3478063816
- .long 1072524887
- .long 2930067044
- .long 1017784081
- .long 1153979856
- .long 1072571613
- .long 2225786102
- .long 1017634481
- .long 2089828808
- .long 1072615641
- .long 474621367
- .long 1017043414
- .long 3531732632
- .long 1072657163
- .long 2276396220
- .long 1018757240
- .long 775214612
- .long 1072694803
- .long 3209744818
- .long 1019963015
- .long 662307284
- .long 1072713319
- .long 1381696763
- .long 1019763781
- .long 1192776652
- .long 1072730830
- .long 3017932994
- .long 1015179769
- .long 744202396
- .long 1072747407
- .long 2073854034
- .long 1019512292
- .long 8337908
- .long 1072763115
- .long 16004448
- .long 1019599514
- .long 3589868768
- .long 1072778013
- .long 1374369804
- .long 1018019237
- .long 121647320
- .long 1072792159
- .long 128481634
- .long 1018115438
- .long 2464923204
- .long 1072805601
- .long 1787331214
- .long 1016798022
- .long 4093304372
- .long 1072830562
- .long 3306868969
- .long 1019384078
- .long 1436891684
- .long 1072853231
- .long 676347266
- .long 1017302183
- .long 1104571840
- .long 1072873890
- .long 2870400285
- .long 1019938149
- .long 2037009832
- .long 1072892781
- .long 2956702105
- .long 1016472908
- .long 3139037960
- .long 1072910111
- .long 916057147
- .long 1018364335
- .long 1826698064
- .long 1072926058
- .long 2171961098
- .long 1019669816
- .long 1353941060
- .long 1072940774
- .long 1722928782
- .long 1019926215
- .long 1803191644
- .long 1072954391
- .long 1547878639
- .long 1020259262
- .long 1092591296
- .long 1072967024
- .long 3070107923
- .long 1018320401
- .long 2205372832
- .long 1072978772
- .long 787328196
- .long 1014621351
- .long 1291577100
- .long 1072989723
- .long 2964757301
- .long 1020242528
- .long 4234512804
- .long 1072999952
- .long 3136030038
- .long 1017522144
- .long 3248069132
- .long 1073009528
- .long 1506192355
- .long 1018050472
- .long 3932628500
- .long 1073018509
- .long 1045823554
- .long 1019946655
- .long 4195697848
- .long 1073026948
- .long 233443322
- .long 1018917447
- .long 2501811452
- .long 1073034892
- .long 901427976
- .long 1017333852
- .long 866379428
- .long 1073049455
- .long 2437443742
- .long 1019678792
- .long 1376865888
- .long 1073062480
- .long 3365790232
- .long 1014547152
- .long 3290094268
- .long 1073074195
- .long 3898947415
- .long 1018683566
- .long 354764884
- .long 1073084787
- .long 3854322404
- .long 1019662058
- .long 3332975496
- .long 1073094406
- .long 3171701655
- .long 1017830922
- .long 1141460088
- .long 1073103181
- .long 3946082701
- .long 1020032019
- .long 745761284
- .long 1073111216
- .long 1347210591
- .long 1019106121
- .long 1673304508
- .long 1073118600
- .long 1760606642
- .long 1017324577
- .long 983388240
- .long 1073125409
- .long 3740651204
- .long 1019514104
- .long 3895509100
- .long 1073131706
- .long 2409629983
- .long 1020069322
- .long 2128523668
- .long 1073137548
- .long 3045605368
- .long 1018579174
- .long 2075485692
- .long 1073142981
- .long 3720571789
- .long 1017557436
- .long 121855976
- .long 1073148047
- .long 2391744767
- .long 1020160645
- .long 4181733780
- .long 1073152780
- .long 995028816
- .long 1019681295
- .long 2887813280
- .long 1073157214
- .long 218733247
- .long 1020003509
- .long 2862180896
- .long 1073161375
- .long 2043806490
- .long 1018602288
- .long 3909375184
- .long 1073168973
- .long 1559903412
- .long 1020103444
- .long 3533966292
- .long 1073175738
- .long 734884149
- .long 1018462962
- .long 3815044608
- .long 1073181799
- .long 3630523428
- .long 1017250093
- .long 739639376
- .long 1073187261
- .long 4167476661
- .long 1020008277
- .long 1068309648
- .long 1073192207
- .long 2110061437
- .long 1019295858
- .long 2350566352
- .long 1073196707
- .long 582596516
- .long 1018568821
- .long 2529520024
- .long 1073200819
- .long 745552787
- .long 1019053165
- .long 1841667508
- .long 1073204591
- .long 3982568700
- .long 1016503327
- .long 2242261080
- .long 1073208063
- .long 3433582258
- .long 1016196763
- .long 715134328
- .long 1073211270
- .long 355901358
- .long 1020087916
- .long 2700735876
- .long 1073214240
- .long 3640957736
- .long 1019780205
- .long 141607580
- .long 1073217000
- .long 2488245051
- .long 1020262395
- .long 287934404
- .long 1073219570
- .long 2392691085
- .long 1019883292
- .long 2363373988
- .long 1073221969
- .long 4194561737
- .long 1019237447
- .long 3829340424
- .long 1073224214
- .long 429455526
- .long 1019490975
- .long 1988805928
- .long 1073226320
- .long 3029848706
- .long 1018104889
- .long 1647572320
- .long 1073230161
- .long 10289938
- .long 1017394880
- .long 3988000624
- .long 1073233576
- .long 1957559169
- .long 1019434816
- .long 4263843944
- .long 1073236633
- .long 204710264
- .long 1019908761
- .long 663197724
- .long 1073239386
- .long 1921757578
- .long 1019778948
- .long 3560800700
- .long 1073241876
- .long 3994348896
- .long 1019230192
- .long 2441785656
- .long 1073244141
- .long 871468611
- .long 1014800505
- .long 3277400272
- .long 1073246209
- .long 4092218139
- .long 1020040842
- .long 3951990120
- .long 1073248105
- .long 4276546478
- .long 1019763677
- .long 2737338540
- .long 1073249850
- .long 252776012
- .long 1018794951
- .long 1511361316
- .long 1073251461
- .long 3119653999
- .long 1018514803
- .long 3969162516
- .long 1073252952
- .long 1037069016
- .long 1016792900
- .long 413985240
- .long 1073254338
- .long 4110171432
- .long 1020001345
- .long 3681283576
- .long 1073255627
- .long 1463092818
- .long 1020260354
- .long 3146455488
- .long 1073256831
- .long 1031209123
- .long 1016554799
- .long 95214512
- .long 1073257958
- .long 1373808632
- .long 1019493031
- .long 4250240828
- .long 1073259013
- .long 3891047882
- .long 1020108730
- .long 1413754136
- .long 1073291771
- .long 856972295
- .long 1016178214
- .long 1413754136
- .long 1073291771
- .long 856972295
- .long 1016178214
- .long 1413754136
- .long 1074340347
- .long 856972295
- .long 1017226790
- .long 1413754136
- .long 1072243195
- .long 856972295
- .long 1015129638
- .long 0
- .long 2147483648
- .long 0
- .long 2147483648
- .long 0
- .long 0
- .long 0
- .long 0
- .long 0
- .long 0
- .long 0
- .long 0
- .long 1413754136
- .long 1074340347
- .long 856972295
- .long 1017226790
- .long 1413754136
- .long 3221823995
- .long 856972295
- .long 3164710438
- .long 0
- .long 0
- .long 0
- .long 0
- .long 0
- .long 2147483648
- .long 0
- .long 2147483648
- .long 0
- .long 2147483648
- .long 0
- .long 2147483648
- .long 0
- .long 0
- .long 0
- .long 0
- .long 0
- .long 0
- .long 0
- .long 0
- .long 0
- .long 0
- .long 0
- .long 0
- .long 856972295
- .long 1017226790
- .long 1413754136
- .long 1074340347
- .long 856972295
- .long 3164710438
- .long 1413754136
- .long 3221823995
- .long 0
- .long 0
- .long 4294967295
- .long 4294967295
- .long 0
- .long 0
- .long 4294967295
- .long 4294967295
- .long 4294967295
- .long 4294967295
- .long 0
- .long 0
- .long 4294967295
- .long 4294967295
- .long 0
- .long 0
- .long 2006262985
- .long 1069310863
- .long 2358449471
- .long 3217342131
- .long 3845454352
- .long 1069952297
- .long 2829679149
- .long 1073771565
- .long 4294967295
- .long 2148532223
- .long 0
- .long 0
- .long 0
- .long 1130364928
- .long 0
- .long 0
- .long 0
- .long 1072693248
- .long 0
- .long 0
- .type static_const_table,@object
- .size static_const_table,3024
- .data
- .section .note.GNU-stack, "",@progbits
-# End
diff --git a/libm/x86/e_cosh.S b/libm/x86/e_cosh.S
deleted file mode 100644
index 567a9d0..0000000
--- a/libm/x86/e_cosh.S
+++ /dev/null
@@ -1,1349 +0,0 @@
-/*
-Copyright (c) 2014, Intel Corporation
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
-
- * Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
-
- * Neither the name of Intel Corporation nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
-ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/******************************************************************************/
-// ALGORITHM DESCRIPTION
-// ---------------------
-//
-// cosh(x)=(exp(x)+exp(-x))/2
-//
-// Let |x|=xH+xL (upper 26 bits, lower 27 bits)
-// log2(e) rounded to 26 bits (high part) plus a double precision low part is
-// L2EH+L2EL (upper 26, lower 53 bits)
-//
-// Let xH*L2EH=k+f+r`, where (k+f)*2^7=int(xH*L2EH*2^7),
-// f=0.b1 b2 ... b7, k integer
-// 2^f is approximated as Tp[f]+Dp[f], and 2^{-f} as Tn[f]+Dn[f]
-// Tp stores higher 53 bits, Dp stores (2^f-Tp[f]) rounded to double precision
-//
-// e^|x|=2^{k+f}*2^r, r=r`+xL*L2EH+|x|*L2EL, |r|<2^{-8}+2^{-14},
-// for |x| in [1/8,3*2^8)
-// e^{-|x|}=2^{-k-f}*2^{-r}
-//
-// e^|x| is approximated as 2^k*Tp+2^k*Tp*c1*r(1+c2*r+..+c5*r^4)+2^k*Dp=
-// =2^k*Tp+2^k*Tp*P15+2^k*Dp
-// e^{-|x|} approximated as 2^{-k}*Tn-2^{-k}*Tn*c1*r(1-c2*r+..+c5*r^4)
-//
-// For |x| in [1/8, 3*2^7), cosh(x) is formed as
-// RN(2^k*Tp+2^{-k}*Tn)+2^k*Tp*P15+2^{-k}*Tn*P`15+2^{-k}*TnL+2^{-k}*Dn+2^k*Dp
-//
-// For |x| in [3*2^7, 3*2^8), (e^|x|)/2 is returned, and
-// the result is checked for overflow.
-//
-// For |x|<1/8, a Taylor polynomial expansion is used (degree 10)
-// (error bound for polynomial expansion is below 0.501 ulp)
-//
-// Special cases:
-// cosh(NaN) = quiet NaN, and raise invalid exception
-// cosh(INF) = that INF
-// cosh(0)=1
-// for finite argument, only cosh(0)=1 is exact
-// For IEEE double
-// cosh(x) overflows
-// for x > 710.47586007394386342639336362481117248535156250 = MAXLOG+log(2)
-//
-/******************************************************************************/
-
-#include <private/bionic_asm.h>
-# -- Begin static_func
- .text
- .align __bionic_asm_align
- .type static_func, @function
-static_func:
-..B1.1:
- call ..L2
-..L2:
- popl %eax
- lea _GLOBAL_OFFSET_TABLE_+[. - ..L2](%eax), %eax
- lea static_const_table@GOTOFF(%eax), %eax
- ret
- .size static_func,.-static_func
-# -- End static_func
-
-# -- Begin cosh
-ENTRY(cosh)
-# parameter 1: 8 + %ebp
-..B2.1:
-..B2.2:
- pushl %ebp
- movl %esp, %ebp
- subl $104, %esp
- movl %ebx, 40(%esp)
- call static_func
- movl %eax, %ebx
- movsd 112(%esp), %xmm0
- movsd 4240(%ebx), %xmm3
- xorpd %xmm4, %xmm4
- movsd 4192(%ebx), %xmm1
- movsd 4200(%ebx), %xmm2
- movl $32768, %eax
- pinsrw $3, %eax, %xmm4
- movsd 4096(%ebx), %xmm6
- pextrw $3, %xmm0, %ecx
- andpd %xmm0, %xmm3
- andnpd %xmm0, %xmm4
- pshufd $68, %xmm4, %xmm5
- andl $32767, %ecx
- subl $16320, %ecx
- cmpl $200, %ecx
- jae .L_2TAG_PACKET_0.0.2
- subsd %xmm3, %xmm4
- mulsd %xmm1, %xmm3
- mulsd %xmm5, %xmm2
- cvtsd2si %xmm3, %eax
- movapd %xmm3, %xmm7
- addsd %xmm6, %xmm3
- mulsd %xmm4, %xmm1
- xorpd %xmm5, %xmm5
- subsd %xmm6, %xmm3
- movapd 4112(%ebx), %xmm4
- addsd %xmm1, %xmm2
- movapd 4128(%ebx), %xmm6
- subsd %xmm3, %xmm7
- movl $32704, %edx
- pinsrw $3, %edx, %xmm5
- movapd 4144(%ebx), %xmm1
- addsd %xmm7, %xmm2
- movl $127, %edx
- andl %eax, %edx
- addl %edx, %edx
- shrl $3, %eax
- andl $65520, %eax
- addl $16352, %eax
- xorpd %xmm0, %xmm0
- cmpl $184, %ecx
- jae .L_2TAG_PACKET_1.0.2
- pshufd $68, %xmm5, %xmm5
- pinsrw $3, %eax, %xmm0
- pshufd $68, %xmm0, %xmm0
- psubw %xmm0, %xmm5
- mulpd (%ebx,%edx,8), %xmm0
- mulpd 2048(%ebx,%edx,8), %xmm5
- pshufd $68, %xmm2, %xmm3
- movapd 4160(%ebx), %xmm7
- pshufd $68, %xmm2, %xmm2
- mulpd %xmm3, %xmm3
- mulpd %xmm2, %xmm4
- mulpd %xmm2, %xmm6
- mulpd 4176(%ebx), %xmm2
- mulpd %xmm3, %xmm1
- mulpd %xmm3, %xmm7
- mulpd %xmm3, %xmm4
- mulpd %xmm3, %xmm1
- addpd %xmm7, %xmm6
- movapd %xmm0, %xmm7
- addpd %xmm1, %xmm4
- shufpd $0, %xmm5, %xmm7
- addpd %xmm5, %xmm0
- mulpd %xmm7, %xmm2
- addpd %xmm6, %xmm4
- subsd %xmm0, %xmm7
- mulpd %xmm2, %xmm4
- pshufd $238, %xmm0, %xmm6
- addsd %xmm5, %xmm7
- addpd %xmm2, %xmm4
- addsd %xmm6, %xmm7
- pshufd $238, %xmm4, %xmm2
- addsd %xmm7, %xmm2
- addsd %xmm4, %xmm2
- addsd %xmm2, %xmm0
- jmp .L_2TAG_PACKET_2.0.2
-.L_2TAG_PACKET_0.0.2:
- addl $16320, %ecx
- cmpl $16320, %ecx
- ja .L_2TAG_PACKET_3.0.2
- cmpl $15952, %ecx
- jae .L_2TAG_PACKET_4.0.2
- addsd %xmm2, %xmm6
- movsd 4248(%ebx), %xmm0
- jmp .L_2TAG_PACKET_2.0.2
-.L_2TAG_PACKET_1.0.2:
- subl $16352, %eax
- movl %eax, %ecx
- andl $32752, %eax
- shrl $1, %eax
- andl $65520, %eax
- subl %eax, %ecx
- addl $16352, %eax
- pinsrw $3, %eax, %xmm0
- pshufd $68, %xmm0, %xmm0
- mulpd (%ebx,%edx,8), %xmm0
- pshufd $68, %xmm2, %xmm3
- movsd 4160(%ebx), %xmm7
- mulsd %xmm3, %xmm3
- mulsd %xmm2, %xmm4
- mulsd %xmm2, %xmm6
- mulsd 4176(%ebx), %xmm2
- mulsd %xmm3, %xmm1
- mulsd %xmm3, %xmm7
- mulsd %xmm3, %xmm4
- addl $16368, %ecx
- pinsrw $3, %ecx, %xmm5
- mulsd %xmm3, %xmm1
- addsd %xmm7, %xmm6
- addsd %xmm1, %xmm4
- mulsd %xmm0, %xmm2
- addsd %xmm6, %xmm4
- mulsd %xmm2, %xmm4
- pshufd $238, %xmm0, %xmm6
- addsd %xmm6, %xmm4
- addsd %xmm4, %xmm2
- addsd %xmm2, %xmm0
- mulsd %xmm5, %xmm0
- pextrw $3, %xmm0, %eax
- andl $32752, %eax
- movl $64, %edx
- cmpl $32752, %eax
- je .L_2TAG_PACKET_5.0.2
- jmp .L_2TAG_PACKET_2.0.2
-.L_2TAG_PACKET_4.0.2:
- movapd 4208(%ebx), %xmm1
- mulpd %xmm5, %xmm5
- movapd 4224(%ebx), %xmm2
- xorpd %xmm3, %xmm3
- movapd %xmm5, %xmm0
- mulpd %xmm5, %xmm1
- movsd 4248(%ebx), %xmm6
- mulpd %xmm5, %xmm5
- movl $16352, %eax
- pinsrw $3, %eax, %xmm3
- addpd %xmm2, %xmm1
- mulpd %xmm5, %xmm1
- pshufd $238, %xmm1, %xmm2
- mulsd %xmm1, %xmm5
- mulsd %xmm3, %xmm0
- addsd %xmm5, %xmm2
- addsd %xmm2, %xmm0
- addsd %xmm6, %xmm0
- jmp .L_2TAG_PACKET_2.0.2
-.L_2TAG_PACKET_3.0.2:
- cmpl $32752, %ecx
- jae .L_2TAG_PACKET_6.0.2
- xorpd %xmm0, %xmm0
- movl $32736, %eax
- pinsrw $3, %eax, %xmm0
- mulsd %xmm0, %xmm0
- movl $64, %edx
-.L_2TAG_PACKET_5.0.2:
- movsd %xmm0, (%esp)
- movsd 112(%esp), %xmm0
- fldl (%esp)
- jmp .L_2TAG_PACKET_7.0.2
-.L_2TAG_PACKET_6.0.2:
- mulsd %xmm0, %xmm0
- jmp .L_2TAG_PACKET_2.0.2
-.L_2TAG_PACKET_2.0.2:
- movsd %xmm0, 24(%esp)
- fldl 24(%esp)
-.L_2TAG_PACKET_7.0.2:
- movl 40(%esp), %ebx
- movl %ebp, %esp
- popl %ebp
- ret
-..B2.3:
-END(cosh)
-# -- End cosh
-
-# Start file scope ASM
-ALIAS_SYMBOL(coshl, cosh);
-# End file scope ASM
- .section .rodata, "a"
- .align 16
- .align 16
-static_const_table:
- .long 0
- .long 1072693248
- .long 0
- .long 0
- .long 2851812149
- .long 1072698941
- .long 2595802551
- .long 1016815913
- .long 1048019041
- .long 1072704666
- .long 1398474845
- .long 3161559171
- .long 3899555717
- .long 1072710421
- .long 427280750
- .long 3163595548
- .long 3541402996
- .long 1072716208
- .long 2759177317
- .long 1015903202
- .long 702412510
- .long 1072722027
- .long 3803266087
- .long 3163328991
- .long 410360776
- .long 1072727877
- .long 1269990655
- .long 1013024446
- .long 3402036099
- .long 1072733758
- .long 405889334
- .long 1016154232
- .long 1828292879
- .long 1072739672
- .long 1255956747
- .long 1016636974
- .long 728909815
- .long 1072745618
- .long 383930225
- .long 1016078044
- .long 852742562
- .long 1072751596
- .long 667253586
- .long 1010842135
- .long 2952712987
- .long 1072757606
- .long 3293494651
- .long 3161168877
- .long 3490863953
- .long 1072763649
- .long 960797498
- .long 3163997456
- .long 3228316108
- .long 1072769725
- .long 3010241991
- .long 3159471380
- .long 2930322912
- .long 1072775834
- .long 2599499422
- .long 3163762623
- .long 3366293073
- .long 1072781976
- .long 3119426314
- .long 1015169130
- .long 1014845819
- .long 1072788152
- .long 3117910646
- .long 3162607681
- .long 948735466
- .long 1072794361
- .long 3516338028
- .long 3163623459
- .long 3949972341
- .long 1072800603
- .long 2068408548
- .long 1015962444
- .long 2214878420
- .long 1072806880
- .long 892270087
- .long 3164164998
- .long 828946858
- .long 1072813191
- .long 10642492
- .long 1016988014
- .long 586995997
- .long 1072819536
- .long 41662348
- .long 3163676568
- .long 2288159958
- .long 1072825915
- .long 2169144469
- .long 1015924597
- .long 2440944790
- .long 1072832329
- .long 2492769774
- .long 1015196030
- .long 1853186616
- .long 1072838778
- .long 3066496371
- .long 1016705150
- .long 1337108031
- .long 1072845262
- .long 3203724452
- .long 1015726421
- .long 1709341917
- .long 1072851781
- .long 2571168217
- .long 1015201075
- .long 3790955393
- .long 1072858335
- .long 2352942462
- .long 3164228666
- .long 4112506593
- .long 1072864925
- .long 2947355221
- .long 1015419624
- .long 3504003472
- .long 1072871551
- .long 3594001060
- .long 3158379228
- .long 2799960843
- .long 1072878213
- .long 1423655381
- .long 1016070727
- .long 2839424854
- .long 1072884911
- .long 1171596163
- .long 1014090255
- .long 171030293
- .long 1072891646
- .long 3526460132
- .long 1015477354
- .long 4232894513
- .long 1072898416
- .long 2383938684
- .long 1015717095
- .long 2992903935
- .long 1072905224
- .long 2218154406
- .long 1016276769
- .long 1603444721
- .long 1072912069
- .long 1548633640
- .long 3163249902
- .long 926591435
- .long 1072918951
- .long 3208833762
- .long 3163962090
- .long 1829099622
- .long 1072925870
- .long 1016661181
- .long 3164509581
- .long 887463927
- .long 1072932827
- .long 3596744163
- .long 3161842742
- .long 3272845541
- .long 1072939821
- .long 928852419
- .long 3164536824
- .long 1276261410
- .long 1072946854
- .long 300981948
- .long 1015732745
- .long 78413852
- .long 1072953925
- .long 4183226867
- .long 3164065827
- .long 569847338
- .long 1072961034
- .long 472945272
- .long 3160339305
- .long 3645941911
- .long 1072968181
- .long 3814685081
- .long 3162621917
- .long 1617004845
- .long 1072975368
- .long 82804944
- .long 1011391354
- .long 3978100823
- .long 1072982593
- .long 3513027190
- .long 1016894539
- .long 3049340112
- .long 1072989858
- .long 3062915824
- .long 1014219171
- .long 4040676318
- .long 1072997162
- .long 4090609238
- .long 1016712034
- .long 3577096743
- .long 1073004506
- .long 2951496418
- .long 1014842263
- .long 2583551245
- .long 1073011890
- .long 3161094195
- .long 1016655067
- .long 1990012071
- .long 1073019314
- .long 3529070563
- .long 3163861769
- .long 2731501122
- .long 1073026778
- .long 1774031855
- .long 3163518597
- .long 1453150082
- .long 1073034283
- .long 498154669
- .long 3162536638
- .long 3395129871
- .long 1073041828
- .long 4025345435
- .long 3163383964
- .long 917841882
- .long 1073049415
- .long 18715565
- .long 1016707884
- .long 3566716925
- .long 1073057042
- .long 1536826856
- .long 1015191009
- .long 3712504873
- .long 1073064711
- .long 88491949
- .long 1016476236
- .long 2321106615
- .long 1073072422
- .long 2171176610
- .long 1010584347
- .long 363667784
- .long 1073080175
- .long 813753950
- .long 1016833785
- .long 3111574537
- .long 1073087969
- .long 2606161479
- .long 3163808322
- .long 2956612997
- .long 1073095806
- .long 2118169751
- .long 3163784129
- .long 885834528
- .long 1073103686
- .long 1973258547
- .long 3163310140
- .long 2186617381
- .long 1073111608
- .long 2270764084
- .long 3164321289
- .long 3561793907
- .long 1073119573
- .long 1157054053
- .long 1012938926
- .long 1719614413
- .long 1073127582
- .long 330458198
- .long 3164331316
- .long 1963711167
- .long 1073135634
- .long 1744767757
- .long 3161622870
- .long 1013258799
- .long 1073143730
- .long 1748797611
- .long 3161177658
- .long 4182873220
- .long 1073151869
- .long 629542646
- .long 3163044879
- .long 3907805044
- .long 1073160053
- .long 2257091225
- .long 3162598983
- .long 1218806132
- .long 1073168282
- .long 1818613052
- .long 3163597017
- .long 1447192521
- .long 1073176555
- .long 1462857171
- .long 3163563097
- .long 1339972927
- .long 1073184873
- .long 167908909
- .long 1016620728
- .long 1944781191
- .long 1073193236
- .long 3993278767
- .long 3162772855
- .long 19972402
- .long 1073201645
- .long 3507899862
- .long 1017057868
- .long 919555682
- .long 1073210099
- .long 3121969534
- .long 1013996802
- .long 1413356050
- .long 1073218599
- .long 1651349291
- .long 3163716742
- .long 2571947539
- .long 1073227145
- .long 3558159064
- .long 3164425245
- .long 1176749997
- .long 1073235738
- .long 2738998779
- .long 3163084420
- .long 2604962541
- .long 1073244377
- .long 2614425274
- .long 3164587768
- .long 3649726105
- .long 1073253063
- .long 4085036346
- .long 1016698050
- .long 1110089947
- .long 1073261797
- .long 1451641639
- .long 1016523249
- .long 380978316
- .long 1073270578
- .long 854188970
- .long 3161511262
- .long 2568320822
- .long 1073279406
- .long 2732824428
- .long 1015401491
- .long 194117574
- .long 1073288283
- .long 777528612
- .long 3164460665
- .long 2966275557
- .long 1073297207
- .long 2176155324
- .long 3160891335
- .long 3418903055
- .long 1073306180
- .long 2527457337
- .long 3161869180
- .long 2682146384
- .long 1073315202
- .long 2082178513
- .long 3164411995
- .long 1892288442
- .long 1073324273
- .long 2446255666
- .long 3163648957
- .long 2191782032
- .long 1073333393
- .long 2960257726
- .long 1014791238
- .long 434316067
- .long 1073342563
- .long 2028358766
- .long 1014506698
- .long 2069751141
- .long 1073351782
- .long 1562170675
- .long 3163773257
- .long 3964284211
- .long 1073361051
- .long 2111583915
- .long 1016475740
- .long 2990417245
- .long 1073370371
- .long 3683467745
- .long 3164417902
- .long 321958744
- .long 1073379742
- .long 3401933767
- .long 1016843134
- .long 1434058175
- .long 1073389163
- .long 251133233
- .long 1016134345
- .long 3218338682
- .long 1073398635
- .long 3404164304
- .long 3163525684
- .long 2572866477
- .long 1073408159
- .long 878562433
- .long 1016570317
- .long 697153126
- .long 1073417735
- .long 1283515429
- .long 3164331765
- .long 3092190715
- .long 1073427362
- .long 814012168
- .long 3160571998
- .long 2380618042
- .long 1073437042
- .long 3149557219
- .long 3164369375
- .long 4076559943
- .long 1073446774
- .long 2119478331
- .long 3161806927
- .long 815859274
- .long 1073456560
- .long 240396590
- .long 3164536019
- .long 2420883922
- .long 1073466398
- .long 2049810052
- .long 1015168464
- .long 1540824585
- .long 1073476290
- .long 1064017011
- .long 3164536266
- .long 3716502172
- .long 1073486235
- .long 2303740125
- .long 1015091301
- .long 1610600570
- .long 1073496235
- .long 3766732298
- .long 1016808759
- .long 777507147
- .long 1073506289
- .long 4282924205
- .long 1016236109
- .long 2483480501
- .long 1073516397
- .long 1216371780
- .long 1014082748
- .long 3706687593
- .long 1073526560
- .long 3521726940
- .long 1014301643
- .long 1432208378
- .long 1073536779
- .long 1401068914
- .long 3163412539
- .long 1242007932
- .long 1073547053
- .long 1132034716
- .long 3164388407
- .long 135105010
- .long 1073557383
- .long 1906148728
- .long 3164424315
- .long 3707479175
- .long 1073567768
- .long 3613079303
- .long 1015213314
- .long 382305176
- .long 1073578211
- .long 2347622376
- .long 3163627201
- .long 64696965
- .long 1073588710
- .long 1768797490
- .long 1016865536
- .long 4076975200
- .long 1073599265
- .long 2029000899
- .long 1016257111
- .long 863738719
- .long 1073609879
- .long 1326992220
- .long 3163661773
- .long 351641897
- .long 1073620550
- .long 2172261526
- .long 3164059175
- .long 3884662774
- .long 1073631278
- .long 2158611599
- .long 1015258761
- .long 4224142467
- .long 1073642065
- .long 3389820386
- .long 1016255778
- .long 2728693978
- .long 1073652911
- .long 396109971
- .long 3164511267
- .long 764307441
- .long 1073663816
- .long 3021057420
- .long 3164378099
- .long 3999357479
- .long 1073674779
- .long 2258941616
- .long 1016973300
- .long 929806999
- .long 1073685803
- .long 3205336643
- .long 1016308133
- .long 1533953344
- .long 1073696886
- .long 769171851
- .long 1016714209
- .long 2912730644
- .long 1073708029
- .long 3490067722
- .long 3164453650
- .long 2174652632
- .long 1073719233
- .long 4087714590
- .long 1015498835
- .long 730821105
- .long 1073730498
- .long 2523232743
- .long 1013115764
- .long 0
- .long 1072693248
- .long 0
- .long 0
- .long 730821105
- .long 1072681922
- .long 2523232743
- .long 1012067188
- .long 2174652632
- .long 1072670657
- .long 4087714590
- .long 1014450259
- .long 2912730644
- .long 1072659453
- .long 3490067722
- .long 3163405074
- .long 1533953344
- .long 1072648310
- .long 769171851
- .long 1015665633
- .long 929806999
- .long 1072637227
- .long 3205336643
- .long 1015259557
- .long 3999357479
- .long 1072626203
- .long 2258941616
- .long 1015924724
- .long 764307441
- .long 1072615240
- .long 3021057420
- .long 3163329523
- .long 2728693978
- .long 1072604335
- .long 396109971
- .long 3163462691
- .long 4224142467
- .long 1072593489
- .long 3389820386
- .long 1015207202
- .long 3884662774
- .long 1072582702
- .long 2158611599
- .long 1014210185
- .long 351641897
- .long 1072571974
- .long 2172261526
- .long 3163010599
- .long 863738719
- .long 1072561303
- .long 1326992220
- .long 3162613197
- .long 4076975200
- .long 1072550689
- .long 2029000899
- .long 1015208535
- .long 64696965
- .long 1072540134
- .long 1768797490
- .long 1015816960
- .long 382305176
- .long 1072529635
- .long 2347622376
- .long 3162578625
- .long 3707479175
- .long 1072519192
- .long 3613079303
- .long 1014164738
- .long 135105010
- .long 1072508807
- .long 1906148728
- .long 3163375739
- .long 1242007932
- .long 1072498477
- .long 1132034716
- .long 3163339831
- .long 1432208378
- .long 1072488203
- .long 1401068914
- .long 3162363963
- .long 3706687593
- .long 1072477984
- .long 3521726940
- .long 1013253067
- .long 2483480501
- .long 1072467821
- .long 1216371780
- .long 1013034172
- .long 777507147
- .long 1072457713
- .long 4282924205
- .long 1015187533
- .long 1610600570
- .long 1072447659
- .long 3766732298
- .long 1015760183
- .long 3716502172
- .long 1072437659
- .long 2303740125
- .long 1014042725
- .long 1540824585
- .long 1072427714
- .long 1064017011
- .long 3163487690
- .long 2420883922
- .long 1072417822
- .long 2049810052
- .long 1014119888
- .long 815859274
- .long 1072407984
- .long 240396590
- .long 3163487443
- .long 4076559943
- .long 1072398198
- .long 2119478331
- .long 3160758351
- .long 2380618042
- .long 1072388466
- .long 3149557219
- .long 3163320799
- .long 3092190715
- .long 1072378786
- .long 814012168
- .long 3159523422
- .long 697153126
- .long 1072369159
- .long 1283515429
- .long 3163283189
- .long 2572866477
- .long 1072359583
- .long 878562433
- .long 1015521741
- .long 3218338682
- .long 1072350059
- .long 3404164304
- .long 3162477108
- .long 1434058175
- .long 1072340587
- .long 251133233
- .long 1015085769
- .long 321958744
- .long 1072331166
- .long 3401933767
- .long 1015794558
- .long 2990417245
- .long 1072321795
- .long 3683467745
- .long 3163369326
- .long 3964284211
- .long 1072312475
- .long 2111583915
- .long 1015427164
- .long 2069751141
- .long 1072303206
- .long 1562170675
- .long 3162724681
- .long 434316067
- .long 1072293987
- .long 2028358766
- .long 1013458122
- .long 2191782032
- .long 1072284817
- .long 2960257726
- .long 1013742662
- .long 1892288442
- .long 1072275697
- .long 2446255666
- .long 3162600381
- .long 2682146384
- .long 1072266626
- .long 2082178513
- .long 3163363419
- .long 3418903055
- .long 1072257604
- .long 2527457337
- .long 3160820604
- .long 2966275557
- .long 1072248631
- .long 2176155324
- .long 3159842759
- .long 194117574
- .long 1072239707
- .long 777528612
- .long 3163412089
- .long 2568320822
- .long 1072230830
- .long 2732824428
- .long 1014352915
- .long 380978316
- .long 1072222002
- .long 854188970
- .long 3160462686
- .long 1110089947
- .long 1072213221
- .long 1451641639
- .long 1015474673
- .long 3649726105
- .long 1072204487
- .long 4085036346
- .long 1015649474
- .long 2604962541
- .long 1072195801
- .long 2614425274
- .long 3163539192
- .long 1176749997
- .long 1072187162
- .long 2738998779
- .long 3162035844
- .long 2571947539
- .long 1072178569
- .long 3558159064
- .long 3163376669
- .long 1413356050
- .long 1072170023
- .long 1651349291
- .long 3162668166
- .long 919555682
- .long 1072161523
- .long 3121969534
- .long 1012948226
- .long 19972402
- .long 1072153069
- .long 3507899862
- .long 1016009292
- .long 1944781191
- .long 1072144660
- .long 3993278767
- .long 3161724279
- .long 1339972927
- .long 1072136297
- .long 167908909
- .long 1015572152
- .long 1447192521
- .long 1072127979
- .long 1462857171
- .long 3162514521
- .long 1218806132
- .long 1072119706
- .long 1818613052
- .long 3162548441
- .long 3907805044
- .long 1072111477
- .long 2257091225
- .long 3161550407
- .long 4182873220
- .long 1072103293
- .long 629542646
- .long 3161996303
- .long 1013258799
- .long 1072095154
- .long 1748797611
- .long 3160129082
- .long 1963711167
- .long 1072087058
- .long 1744767757
- .long 3160574294
- .long 1719614413
- .long 1072079006
- .long 330458198
- .long 3163282740
- .long 3561793907
- .long 1072070997
- .long 1157054053
- .long 1011890350
- .long 2186617381
- .long 1072063032
- .long 2270764084
- .long 3163272713
- .long 885834528
- .long 1072055110
- .long 1973258547
- .long 3162261564
- .long 2956612997
- .long 1072047230
- .long 2118169751
- .long 3162735553
- .long 3111574537
- .long 1072039393
- .long 2606161479
- .long 3162759746
- .long 363667784
- .long 1072031599
- .long 813753950
- .long 1015785209
- .long 2321106615
- .long 1072023846
- .long 2171176610
- .long 1009535771
- .long 3712504873
- .long 1072016135
- .long 88491949
- .long 1015427660
- .long 3566716925
- .long 1072008466
- .long 1536826856
- .long 1014142433
- .long 917841882
- .long 1072000839
- .long 18715565
- .long 1015659308
- .long 3395129871
- .long 1071993252
- .long 4025345435
- .long 3162335388
- .long 1453150082
- .long 1071985707
- .long 498154669
- .long 3161488062
- .long 2731501122
- .long 1071978202
- .long 1774031855
- .long 3162470021
- .long 1990012071
- .long 1071970738
- .long 3529070563
- .long 3162813193
- .long 2583551245
- .long 1071963314
- .long 3161094195
- .long 1015606491
- .long 3577096743
- .long 1071955930
- .long 2951496418
- .long 1013793687
- .long 4040676318
- .long 1071948586
- .long 4090609238
- .long 1015663458
- .long 3049340112
- .long 1071941282
- .long 3062915824
- .long 1013170595
- .long 3978100823
- .long 1071934017
- .long 3513027190
- .long 1015845963
- .long 1617004845
- .long 1071926792
- .long 82804944
- .long 1010342778
- .long 3645941911
- .long 1071919605
- .long 3814685081
- .long 3161573341
- .long 569847338
- .long 1071912458
- .long 472945272
- .long 3159290729
- .long 78413852
- .long 1071905349
- .long 4183226867
- .long 3163017251
- .long 1276261410
- .long 1071898278
- .long 300981948
- .long 1014684169
- .long 3272845541
- .long 1071891245
- .long 928852419
- .long 3163488248
- .long 887463927
- .long 1071884251
- .long 3596744163
- .long 3160794166
- .long 1829099622
- .long 1071877294
- .long 1016661181
- .long 3163461005
- .long 926591435
- .long 1071870375
- .long 3208833762
- .long 3162913514
- .long 1603444721
- .long 1071863493
- .long 1548633640
- .long 3162201326
- .long 2992903935
- .long 1071856648
- .long 2218154406
- .long 1015228193
- .long 4232894513
- .long 1071849840
- .long 2383938684
- .long 1014668519
- .long 171030293
- .long 1071843070
- .long 3526460132
- .long 1014428778
- .long 2839424854
- .long 1071836335
- .long 1171596163
- .long 1013041679
- .long 2799960843
- .long 1071829637
- .long 1423655381
- .long 1015022151
- .long 3504003472
- .long 1071822975
- .long 3594001060
- .long 3157330652
- .long 4112506593
- .long 1071816349
- .long 2947355221
- .long 1014371048
- .long 3790955393
- .long 1071809759
- .long 2352942462
- .long 3163180090
- .long 1709341917
- .long 1071803205
- .long 2571168217
- .long 1014152499
- .long 1337108031
- .long 1071796686
- .long 3203724452
- .long 1014677845
- .long 1853186616
- .long 1071790202
- .long 3066496371
- .long 1015656574
- .long 2440944790
- .long 1071783753
- .long 2492769774
- .long 1014147454
- .long 2288159958
- .long 1071777339
- .long 2169144469
- .long 1014876021
- .long 586995997
- .long 1071770960
- .long 41662348
- .long 3162627992
- .long 828946858
- .long 1071764615
- .long 10642492
- .long 1015939438
- .long 2214878420
- .long 1071758304
- .long 892270087
- .long 3163116422
- .long 3949972341
- .long 1071752027
- .long 2068408548
- .long 1014913868
- .long 948735466
- .long 1071745785
- .long 3516338028
- .long 3162574883
- .long 1014845819
- .long 1071739576
- .long 3117910646
- .long 3161559105
- .long 3366293073
- .long 1071733400
- .long 3119426314
- .long 1014120554
- .long 2930322912
- .long 1071727258
- .long 2599499422
- .long 3162714047
- .long 3228316108
- .long 1071721149
- .long 3010241991
- .long 3158422804
- .long 3490863953
- .long 1071715073
- .long 960797498
- .long 3162948880
- .long 2952712987
- .long 1071709030
- .long 3293494651
- .long 3160120301
- .long 852742562
- .long 1071703020
- .long 667253586
- .long 1009793559
- .long 728909815
- .long 1071697042
- .long 383930225
- .long 1015029468
- .long 1828292879
- .long 1071691096
- .long 1255956747
- .long 1015588398
- .long 3402036099
- .long 1071685182
- .long 405889334
- .long 1015105656
- .long 410360776
- .long 1071679301
- .long 1269990655
- .long 1011975870
- .long 702412510
- .long 1071673451
- .long 3803266087
- .long 3162280415
- .long 3541402996
- .long 1071667632
- .long 2759177317
- .long 1014854626
- .long 3899555717
- .long 1071661845
- .long 427280750
- .long 3162546972
- .long 1048019041
- .long 1071656090
- .long 1398474845
- .long 3160510595
- .long 2851812149
- .long 1071650365
- .long 2595802551
- .long 1015767337
- .long 0
- .long 1127743488
- .long 0
- .long 3275227136
- .long 3607404736
- .long 1044146952
- .long 3607404736
- .long 3191630600
- .long 4277811695
- .long 1063661122
- .long 4277811695
- .long 3211144770
- .long 2140175755
- .long 1033864261
- .long 2140175755
- .long 1033864261
- .long 4289495988
- .long 1054113747
- .long 4289495988
- .long 1054113747
- .long 4277811695
- .long 1064709698
- .long 4277811695
- .long 3212193346
- .long 1610612736
- .long 1080497479
- .long 4166901572
- .long 1053077003
- .long 3078135644
- .long 1049787983
- .long 381774870
- .long 1062650220
- .long 436314137
- .long 1056571808
- .long 1431655765
- .long 1067799893
- .long 4160749568
- .long 2147483647
- .long 0
- .long 1072693248
- .type static_const_table,@object
- .size static_const_table,4256
- .data
- .section .note.GNU-stack, "",@progbits
-# End
diff --git a/libm/x86/e_hypot.S b/libm/x86/e_hypot.S
deleted file mode 100644
index 8422024..0000000
--- a/libm/x86/e_hypot.S
+++ /dev/null
@@ -1,220 +0,0 @@
-/*
-Copyright (c) 2014, Intel Corporation
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
-
- * Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
-
- * Neither the name of Intel Corporation nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
-ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/******************************************************************************/
-// ALGORITHM DESCRIPTION
-// ---------------------
-//
-// X87 version:
-// Use 80-bit FPU precision fmul, fsqrt to compute square and sqrt.
-//
-// SSE version:
-// Swap x, y if |x|<|y|
-// For x=2^k*x, get y=y*2^(-k)
-// Get S ~ sqrt(x^2+y^2) (leading 1 + leading 25 mantissa bits)
-//
-// Get D = ( RN(x^2+y^2) - S^2 ) + ( x^2 - RN(x^2) ) +
-// + ( y^2 - ((RN(x^2+y^2)-RN(x^2)) )
-//
-// Result is 2^k*(S + Se), where Se = S*e
-// S*e is approximated as (D/2S)*( 1 - (D/2S)^2*1.0/S )
-//
-// Return 2^k*(S+Se)
-//
-// For |y/x|<2^(-64), return x
-//
-// For cases where maximum biased exponent is either greater than 7fdh or
-// below 32, take a special path to check for special cases (0, NaN, Inf),
-// possible overflow, and more accurate computation for denormal results
-//
-// Special cases:
-// hypot(x,y), hypot(y,x), and hypot(x,-y) are equivalent
-// hypot(x,+-0) is equivalent to fabs(x)
-// hypot(x,y) = y if (x==NaN or x==INF) and y==INF
-// hypot(x,y) = x if (x==NaN or x==INF) and y!=INF (even if y==NaN!)
-// hypot(x,y) = y if (x!=NaN and x!=INF) and (y==NaN or y==INF)
-//
-/******************************************************************************/
-
-#include <private/bionic_asm.h>
-# -- Begin static_func
- .text
- .align __bionic_asm_align
- .type static_func, @function
-static_func:
-..B1.1:
- call ..L2
-..L2:
- popl %eax
- lea _GLOBAL_OFFSET_TABLE_+[. - ..L2](%eax), %eax
- lea static_const_table@GOTOFF(%eax), %eax
- ret
- .size static_func,.-static_func
-# -- End static_func
-
-# -- Begin hypot
-ENTRY(hypot)
-# parameter 1: 8 + %ebp
-# parameter 2: 16 + %ebp
-..B2.1:
-..B2.2:
- pushl %ebp
- movl %esp, %ebp
- subl $152, %esp
- movl %ebx, 96(%esp)
- call static_func
- movl %eax, %ebx
- movapd (%ebx), %xmm3
- movsd 160(%esp), %xmm0
- movsd 168(%esp), %xmm1
- andpd %xmm3, %xmm0
- andpd %xmm3, %xmm1
- pextrw $3, %xmm0, %eax
- pextrw $3, %xmm1, %edx
- cmpl $24528, %eax
- ja .L_2TAG_PACKET_0.0.2
- cmpl $24528, %edx
- ja .L_2TAG_PACKET_0.0.2
-.L_2TAG_PACKET_1.0.2:
- fldl 160(%esp)
- fldl 168(%esp)
- fxch %st(1)
- fmul %st(0), %st
- fxch %st(1)
- nop
- fmul %st(0), %st
- faddp %st, %st(1)
- fsqrt
- jmp .L_2TAG_PACKET_2.0.2
-.L_2TAG_PACKET_0.0.2:
- cmpl $32752, %eax
- movl %eax, %ecx
- jae .L_2TAG_PACKET_3.0.2
- subl %edx, %ecx
- cmpl $32752, %edx
- jae .L_2TAG_PACKET_3.0.2
- addl $928, %ecx
- addl %edx, %eax
- cmpl $1856, %ecx
- ja .L_2TAG_PACKET_4.0.2
- cmpl $49056, %eax
- jb .L_2TAG_PACKET_1.0.2
- fldl 160(%esp)
- fldl 168(%esp)
- fxch %st(1)
- fmul %st(0), %st
- fxch %st(1)
- nop
- fmul %st(0), %st
- faddp %st, %st(1)
- fsqrt
-.L_2TAG_PACKET_5.0.2:
- fstl (%esp)
- fstpt 16(%esp)
- xorl %eax, %eax
- movw 24(%esp), %ax
- cmpl $17407, %eax
- jae .L_2TAG_PACKET_6.0.2
- fldl (%esp)
- jmp .L_2TAG_PACKET_7.0.2
-.L_2TAG_PACKET_4.0.2:
- movsd %xmm0, 32(%esp)
- movsd %xmm1, 40(%esp)
- fldl 32(%esp)
- faddl 40(%esp)
- jmp .L_2TAG_PACKET_5.0.2
-.L_2TAG_PACKET_6.0.2:
- movl $46, %edx
-.L_2TAG_PACKET_8.0.2:
- movsd 160(%esp), %xmm0
- movsd 168(%esp), %xmm1
- fldl (%esp)
- jmp .L_2TAG_PACKET_7.0.2
-.L_2TAG_PACKET_3.0.2:
- shufpd $0, %xmm1, %xmm0
- movdqa %xmm0, %xmm2
- movdqa 16(%ebx), %xmm3
- movsd %xmm0, 32(%esp)
- movsd %xmm1, 40(%esp)
- cmppd $3, %xmm0, %xmm2
- cmppd $0, %xmm0, %xmm3
- movmskpd %xmm2, %edx
- movmskpd %xmm3, %eax
- testl %edx, %edx
- je .L_2TAG_PACKET_9.0.2
- fldl 32(%esp)
- fmull 40(%esp)
- testl $1, %eax
- jne .L_2TAG_PACKET_10.0.2
- testl $2, %eax
- jne .L_2TAG_PACKET_11.0.2
- jmp .L_2TAG_PACKET_2.0.2
-.L_2TAG_PACKET_9.0.2:
- fldl 32(%esp)
- faddl 40(%esp)
- jmp .L_2TAG_PACKET_2.0.2
-.L_2TAG_PACKET_10.0.2:
- fstpl 40(%esp)
- fldl 32(%esp)
- jmp .L_2TAG_PACKET_7.0.2
-.L_2TAG_PACKET_11.0.2:
- fstpl 32(%esp)
- fldl 40(%esp)
- jmp .L_2TAG_PACKET_7.0.2
-.L_2TAG_PACKET_2.0.2:
-.L_2TAG_PACKET_7.0.2:
- movl 96(%esp), %ebx
- movl %ebp, %esp
- popl %ebp
- ret
-..B2.3:
-END(hypot)
-# -- End hypot
-
-# Start file scope ASM
-ALIAS_SYMBOL(hypotl, hypot);
-# End file scope ASM
- .section .rodata, "a"
- .align 16
- .align 16
-static_const_table:
- .long 4294967295
- .long 2147483647
- .long 4294967295
- .long 2147483647
- .long 0
- .long 2146435072
- .long 0
- .long 2146435072
- .type static_const_table,@object
- .size static_const_table,32
- .data
- .section .note.GNU-stack, "",@progbits
-# End
diff --git a/libm/x86/e_log10.S b/libm/x86/e_log10.S
deleted file mode 100644
index 473cea3..0000000
--- a/libm/x86/e_log10.S
+++ /dev/null
@@ -1,795 +0,0 @@
-/*
-Copyright (c) 2014, Intel Corporation
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
-
- * Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
-
- * Neither the name of Intel Corporation nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
-ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/******************************************************************************/
-// ALGORITHM DESCRIPTION
-// ---------------------
-//
-// Let x=2^k * mx, mx in [1,2)
-//
-// Get B~1/mx based on the output of rcpss instruction (B0)
-// B = int((B0*LH*2^7+0.5))/2^7
-// LH is a short approximation for log10(e)
-//
-// Reduced argument: r=B*mx-LH (computed accurately in high and low parts)
-//
-// Result: k*log10(2) - log(B) + p(r)
-// p(r) is a degree 7 polynomial
-// -log(B) read from data table (high, low parts)
-// Result is formed from high and low parts
-//
-// Special cases:
-// log10(0) = -INF with divide-by-zero exception raised
-// log10(1) = +0
-// log10(x) = NaN with invalid exception raised if x < -0, including -INF
-// log10(+INF) = +INF
-//
-/******************************************************************************/
-
-#include <private/bionic_asm.h>
-# -- Begin static_func
- .text
- .align __bionic_asm_align
- .type static_func, @function
-static_func:
-..B1.1:
- call ..L2
-..L2:
- popl %eax
- lea _GLOBAL_OFFSET_TABLE_+[. - ..L2](%eax), %eax
- lea static_const_table@GOTOFF(%eax), %eax
- ret
- .size static_func,.-static_func
-# -- End static_func
-
-# -- Begin log10
-ENTRY(log10)
-# parameter 1: 8 + %ebp
-..B2.1:
-..B2.2:
- pushl %ebp
- movl %esp, %ebp
- subl $104, %esp
- movl %ebx, 40(%esp)
- call static_func
- movl %eax, %ebx
- xorpd %xmm2, %xmm2
- movl $16368, %eax
- pinsrw $3, %eax, %xmm2
- movl $1054736384, %ecx
- movd %ecx, %xmm7
- xorpd %xmm3, %xmm3
- movl $30704, %edx
- pinsrw $3, %edx, %xmm3
- movsd 112(%esp), %xmm0
- movapd %xmm0, %xmm1
- movl $32768, %edx
- movd %edx, %xmm4
- movapd 2128(%ebx), %xmm5
- pextrw $3, %xmm0, %eax
- orpd %xmm2, %xmm0
- movl $16352, %ecx
- psllq $5, %xmm0
- movsd 2144(%ebx), %xmm2
- psrlq $34, %xmm0
- rcpss %xmm0, %xmm0
- psllq $12, %xmm1
- pshufd $78, %xmm5, %xmm6
- psrlq $12, %xmm1
- subl $16, %eax
- cmpl $32736, %eax
- jae .L_2TAG_PACKET_0.0.2
-.L_2TAG_PACKET_1.0.2:
- mulss %xmm7, %xmm0
- orpd %xmm3, %xmm1
- andpd %xmm1, %xmm5
- paddd %xmm4, %xmm0
- subsd %xmm5, %xmm1
- movd %xmm0, %edx
- psllq $29, %xmm0
- andpd %xmm6, %xmm0
- andl $32752, %eax
- subl %ecx, %eax
- cvtsi2sdl %eax, %xmm7
- mulpd %xmm0, %xmm5
- mulsd %xmm0, %xmm1
- movsd 2064(%ebx), %xmm6
- movapd 2080(%ebx), %xmm3
- subsd %xmm2, %xmm5
- andl $16711680, %edx
- shrl $12, %edx
- movapd -1504(%ebx,%edx), %xmm0
- movapd 2096(%ebx), %xmm4
- addsd %xmm5, %xmm1
- movapd 2112(%ebx), %xmm2
- mulsd %xmm7, %xmm6
- pshufd $68, %xmm1, %xmm5
- mulsd 2072(%ebx), %xmm7
- mulsd %xmm1, %xmm3
- addsd %xmm6, %xmm0
- mulpd %xmm5, %xmm4
- movsd 2152(%ebx), %xmm6
- mulpd %xmm5, %xmm5
- addpd %xmm2, %xmm4
- mulpd %xmm5, %xmm3
- pshufd $228, %xmm0, %xmm2
- addsd %xmm1, %xmm0
- mulsd %xmm1, %xmm4
- subsd %xmm0, %xmm2
- mulsd %xmm1, %xmm6
- addsd %xmm2, %xmm1
- pshufd $238, %xmm0, %xmm2
- mulsd %xmm5, %xmm5
- addsd %xmm2, %xmm7
- addsd %xmm6, %xmm1
- addpd %xmm3, %xmm4
- addsd %xmm7, %xmm1
- mulpd %xmm5, %xmm4
- addsd %xmm4, %xmm1
- pshufd $238, %xmm4, %xmm5
- addsd %xmm5, %xmm1
- addsd %xmm1, %xmm0
- jmp .L_2TAG_PACKET_2.0.2
-.L_2TAG_PACKET_0.0.2:
- movsd 112(%esp), %xmm0
- movapd %xmm0, %xmm1
- addl $16, %eax
- cmpl $32768, %eax
- jae .L_2TAG_PACKET_3.0.2
- cmpl $16, %eax
- jb .L_2TAG_PACKET_4.0.2
-.L_2TAG_PACKET_5.0.2:
- addsd %xmm0, %xmm0
- jmp .L_2TAG_PACKET_2.0.2
-.L_2TAG_PACKET_6.0.2:
- ja .L_2TAG_PACKET_5.0.2
- cmpl $0, %edx
- ja .L_2TAG_PACKET_5.0.2
- jmp .L_2TAG_PACKET_7.0.2
-.L_2TAG_PACKET_3.0.2:
- movd %xmm1, %edx
- psrlq $32, %xmm1
- movd %xmm1, %ecx
- addl %ecx, %ecx
- cmpl $-2097152, %ecx
- jae .L_2TAG_PACKET_6.0.2
- orl %ecx, %edx
- cmpl $0, %edx
- je .L_2TAG_PACKET_8.0.2
-.L_2TAG_PACKET_7.0.2:
- xorpd %xmm1, %xmm1
- xorpd %xmm0, %xmm0
- movl $32752, %eax
- pinsrw $3, %eax, %xmm1
- movl $9, %edx
- mulsd %xmm1, %xmm0
-.L_2TAG_PACKET_9.0.2:
- movsd %xmm0, (%esp)
- movsd 112(%esp), %xmm0
- fldl (%esp)
- jmp .L_2TAG_PACKET_10.0.2
-.L_2TAG_PACKET_8.0.2:
- xorpd %xmm1, %xmm1
- xorpd %xmm0, %xmm0
- movl $49136, %eax
- pinsrw $3, %eax, %xmm0
- divsd %xmm1, %xmm0
- movl $8, %edx
- jmp .L_2TAG_PACKET_9.0.2
-.L_2TAG_PACKET_4.0.2:
- movd %xmm1, %edx
- psrlq $32, %xmm1
- movd %xmm1, %ecx
- orl %ecx, %edx
- cmpl $0, %edx
- je .L_2TAG_PACKET_8.0.2
- xorpd %xmm1, %xmm1
- movl $18416, %eax
- pinsrw $3, %eax, %xmm1
- mulsd %xmm1, %xmm0
- xorpd %xmm2, %xmm2
- movl $16368, %eax
- pinsrw $3, %eax, %xmm2
- movapd %xmm0, %xmm1
- pextrw $3, %xmm0, %eax
- orpd %xmm2, %xmm0
- movl $18416, %ecx
- psllq $5, %xmm0
- movsd 2144(%ebx), %xmm2
- psrlq $34, %xmm0
- rcpss %xmm0, %xmm0
- psllq $12, %xmm1
- pshufd $78, %xmm5, %xmm6
- psrlq $12, %xmm1
- jmp .L_2TAG_PACKET_1.0.2
-.L_2TAG_PACKET_2.0.2:
- movsd %xmm0, 24(%esp)
- fldl 24(%esp)
-.L_2TAG_PACKET_10.0.2:
- movl 40(%esp), %ebx
- movl %ebp, %esp
- popl %ebp
- ret
-..B2.3:
-END(log10)
-# -- End log10
-
-# Start file scope ASM
-ALIAS_SYMBOL(log10l, log10);
-# End file scope ASM
- .section .rodata, "a"
- .align 16
- .align 16
-static_const_table:
- .long 1352628224
- .long 1070810131
- .long 521319256
- .long 1025503025
- .long 2150839296
- .long 1070801944
- .long 3329350096
- .long 3170190015
- .long 1360613376
- .long 1070793794
- .long 2024059075
- .long 1024991594
- .long 1875350528
- .long 1070785680
- .long 2163882141
- .long 3163564137
- .long 2312126464
- .long 1070777602
- .long 1975711076
- .long 1023674196
- .long 1306336256
- .long 1070769560
- .long 3524899523
- .long 3170508164
- .long 1806334976
- .long 1070761553
- .long 4254777025
- .long 1025238739
- .long 2483193856
- .long 1070753581
- .long 3800671317
- .long 3172916830
- .long 2025350144
- .long 1070745644
- .long 1731514745
- .long 1025501083
- .long 3433285632
- .long 1070737741
- .long 2551857336
- .long 3169662186
- .long 1134317568
- .long 1070729873
- .long 3426297655
- .long 3172637891
- .long 2457152512
- .long 1070722038
- .long 63549415
- .long 1025415416
- .long 1861803008
- .long 1070714237
- .long 1910171636
- .long 1023977580
- .long 2414140416
- .long 1070706469
- .long 4002514337
- .long 3170841618
- .long 2900726784
- .long 1070698734
- .long 3268064083
- .long 1022459609
- .long 2123517952
- .long 1070691032
- .long 1767031218
- .long 1022448156
- .long 3194569728
- .long 1070683362
- .long 3402332618
- .long 3171671160
- .long 650882048
- .long 1070675725
- .long 4146023905
- .long 3171023038
- .long 1928988672
- .long 1070668119
- .long 1438617867
- .long 1016360491
- .long 1594908672
- .long 1070660545
- .long 971389377
- .long 1024763979
- .long 2818746368
- .long 1070653002
- .long 3555925341
- .long 3172434821
- .long 194584576
- .long 1070645491
- .long 943919215
- .long 3172950063
- .long 1215096832
- .long 1070638010
- .long 2283358588
- .long 1022335098
- .long 501519360
- .long 1070630560
- .long 480904295
- .long 1024437959
- .long 1278266368
- .long 1070623140
- .long 2755806066
- .long 3172342012
- .long 2487812096
- .long 1070615750
- .long 2489653202
- .long 3172481099
- .long 3085451264
- .long 1070608390
- .long 3759184951
- .long 3172574892
- .long 2039090176
- .long 1070601060
- .long 1361176676
- .long 3172355319
- .long 953057280
- .long 1070591423
- .long 1176587546
- .long 3166422018
- .long 3370524672
- .long 1070576879
- .long 3669570051
- .long 1025376630
- .long 749742080
- .long 1070562394
- .long 707700964
- .long 3170814058
- .long 4008353792
- .long 1070547965
- .long 3247327652
- .long 1022431400
- .long 2612455424
- .long 1070533594
- .long 2453457344
- .long 3172322969
- .long 3230920704
- .long 1070519279
- .long 1296781801
- .long 1025115335
- .long 3965253632
- .long 1070505020
- .long 373075289
- .long 1017938528
- .long 2593157120
- .long 1070476669
- .long 1068054086
- .long 1021616576
- .long 925962240
- .long 1070448537
- .long 850121213
- .long 1023928989
- .long 1732556800
- .long 1070420620
- .long 1305206740
- .long 3172665570
- .long 3815630848
- .long 1070392915
- .long 192642943
- .long 3172699907
- .long 2001758208
- .long 1070365420
- .long 2820786683
- .long 1024704867
- .long 16746496
- .long 1070338131
- .long 1399573110
- .long 3171372773
- .long 1886492672
- .long 1070311044
- .long 3621428075
- .long 3172974358
- .long 3338196992
- .long 1070284157
- .long 3793882035
- .long 1025124701
- .long 381769728
- .long 1070257468
- .long 3877933342
- .long 3170195490
- .long 2186491904
- .long 1070230972
- .long 1838687089
- .long 1017927292
- .long 1008330752
- .long 1070204668
- .long 2228321664
- .long 1025352196
- .long 2247065600
- .long 1070178552
- .long 1413900906
- .long 3170902532
- .long 2964070400
- .long 1070152622
- .long 3590454629
- .long 1025016844
- .long 465154048
- .long 1070126876
- .long 2079688550
- .long 3172268183
- .long 883615744
- .long 1070101310
- .long 989244452
- .long 3171900485
- .long 1993768960
- .long 1070075922
- .long 1124327841
- .long 3172964992
- .long 1794471936
- .long 1070050710
- .long 1140575046
- .long 1022673726
- .long 2797932544
- .long 1070025671
- .long 1894836933
- .long 3172544059
- .long 3433797632
- .long 1070000803
- .long 3221831166
- .long 3171921685
- .long 2338371584
- .long 1069976104
- .long 3732461053
- .long 3164513518
- .long 2644013056
- .long 1069951571
- .long 2519460462
- .long 3172548740
- .long 3383814144
- .long 1069927202
- .long 2290997657
- .long 1025499649
- .long 3781380096
- .long 1069902995
- .long 380479405
- .long 1025184136
- .long 3245785088
- .long 1069878948
- .long 1096398261
- .long 3169885192
- .long 1366712320
- .long 1069855059
- .long 2218343715
- .long 3170281628
- .long 2204717056
- .long 1069831325
- .long 2668334011
- .long 1025264524
- .long 1401772032
- .long 1069807745
- .long 4103993159
- .long 1022925721
- .long 3356721152
- .long 1069784316
- .long 3573790772
- .long 3172186527
- .long 4041148416
- .long 1069761037
- .long 4027691910
- .long 3171276990
- .long 3880151040
- .long 1069737906
- .long 4087118786
- .long 3172710734
- .long 3453364224
- .long 1069714921
- .long 99014299
- .long 3172003077
- .long 3491092480
- .long 1069692080
- .long 3801836701
- .long 3172989287
- .long 575580160
- .long 1069669382
- .long 1920406012
- .long 3170874125
- .long 22282240
- .long 1069646824
- .long 964193370
- .long 1019363159
- .long 2991429632
- .long 1069624404
- .long 3372589890
- .long 1023425053
- .long 2189645824
- .long 1069602122
- .long 2610503872
- .long 1023652442
- .long 3341467648
- .long 1069579975
- .long 1190292004
- .long 1022425665
- .long 3711293440
- .long 1069557962
- .long 1104795356
- .long 1023625829
- .long 1380401152
- .long 1069524644
- .long 1156998217
- .long 1025100499
- .long 765710336
- .long 1069481144
- .long 1736649113
- .long 1024999439
- .long 849412096
- .long 1069437902
- .long 2618178330
- .long 3170853629
- .long 1433104384
- .long 1069394915
- .long 43477267
- .long 3170378811
- .long 2548596736
- .long 1069352180
- .long 3967367063
- .long 1025246584
- .long 157577216
- .long 1069309695
- .long 100402533
- .long 3172825502
- .long 3326238720
- .long 1069267455
- .long 1176892909
- .long 1025464099
- .long 4155494400
- .long 1069225459
- .long 3713707617
- .long 3172630046
- .long 3545804800
- .long 1069183704
- .long 857007315
- .long 1024965777
- .long 2602520576
- .long 1069142187
- .long 2588758347
- .long 1022463131
- .long 2631196672
- .long 1069100905
- .long 2118424235
- .long 1022490989
- .long 838135808
- .long 1069059856
- .long 4117002727
- .long 1024874520
- .long 3210903552
- .long 1069019036
- .long 650070125
- .long 3172012966
- .long 3039211520
- .long 1068978444
- .long 438055812
- .long 1017743757
- .long 2385633280
- .long 1068938077
- .long 3011990369
- .long 3171312044
- .long 3491618816
- .long 1068897932
- .long 712813818
- .long 3172720400
- .long 183644160
- .long 1068858008
- .long 4287006742
- .long 1022379728
- .long 3639214080
- .long 1068818300
- .long 353762279
- .long 3172980009
- .long 3728416768
- .long 1068778808
- .long 1851367730
- .long 1025486574
- .long 3370094592
- .long 1068739529
- .long 4046594913
- .long 3172567047
- .long 1348407296
- .long 1068700461
- .long 143189675
- .long 1025397632
- .long 899403776
- .long 1068661601
- .long 3753687842
- .long 3170772772
- .long 1117708288
- .long 1068622947
- .long 1857340812
- .long 3170782678
- .long 1248276480
- .long 1068584497
- .long 1289858203
- .long 1025222289
- .long 683237376
- .long 1068546249
- .long 2356679608
- .long 3171629170
- .long 3253764096
- .long 1068508200
- .long 3267136556
- .long 1018554987
- .long 94478336
- .long 1068441756
- .long 1927868814
- .long 3169378180
- .long 3233144832
- .long 1068366445
- .long 2682188854
- .long 1023964004
- .long 2940297216
- .long 1068291522
- .long 275301289
- .long 1023944679
- .long 3677708288
- .long 1068216982
- .long 302658771
- .long 1024465567
- .long 1576968192
- .long 1068142822
- .long 3672035940
- .long 3172254610
- .long 1614069760
- .long 1068069037
- .long 480052905
- .long 3172692062
- .long 424435712
- .long 1067995624
- .long 2207869657
- .long 3170965436
- .long 3477782528
- .long 1067922578
- .long 2980661858
- .long 3164990018
- .long 3598401536
- .long 1067849897
- .long 1974393034
- .long 3171357083
- .long 2435235840
- .long 1067777577
- .long 1385289011
- .long 1024615823
- .long 1867333632
- .long 1067705614
- .long 3442236633
- .long 1025334384
- .long 3999301632
- .long 1067634004
- .long 3506472073
- .long 1025132546
- .long 2566971392
- .long 1067562745
- .long 1425757592
- .long 3172358463
- .long 112943104
- .long 1067491833
- .long 1693407156
- .long 3172426603
- .long 3079929856
- .long 1067392159
- .long 3999942455
- .long 1018549369
- .long 2443837440
- .long 1067251701
- .long 974534460
- .long 1023963412
- .long 359366656
- .long 1067111917
- .long 2204915018
- .long 1013514416
- .long 3564519424
- .long 1066972799
- .long 3977441659
- .long 3170879860
- .long 2011086848
- .long 1066834343
- .long 590145514
- .long 1025390011
- .long 3216982016
- .long 1066696541
- .long 3629120110
- .long 1024330313
- .long 2194128896
- .long 1066559388
- .long 2367098512
- .long 3172260338
- .long 2916220928
- .long 1066422877
- .long 2262431886
- .long 1021229446
- .long 2263941120
- .long 1066172214
- .long 3118507287
- .long 1021484970
- .long 3076292608
- .long 1065901726
- .long 1411737803
- .long 3172957147
- .long 1186136064
- .long 1065632488
- .long 3109349337
- .long 1025397383
- .long 3085303808
- .long 1065364487
- .long 584715031
- .long 3172596519
- .long 1821048832
- .long 1064842211
- .long 2182246895
- .long 3172536214
- .long 697368576
- .long 1064311094
- .long 3157561765
- .long 3172716357
- .long 894042112
- .long 1063260131
- .long 3237958154
- .long 3172587292
- .long 0
- .long 0
- .long 0
- .long 0
- .long 1352628224
- .long 1066615827
- .long 521319256
- .long 1021308721
- .long 3248877870
- .long 1077250164
- .long 1691676429
- .long 3221787401
- .long 945132465
- .long 3223701783
- .long 3700831335
- .long 1073506818
- .long 2141010593
- .long 1075227551
- .long 3698831637
- .long 3220339442
- .long 4160749568
- .long 4294967295
- .long 0
- .long 4294959104
- .long 0
- .long 1071366144
- .long 3207479560
- .long 1062894188
- .type static_const_table,@object
- .size static_const_table,2160
- .data
- .section .note.GNU-stack, "",@progbits
-# End
diff --git a/libm/x86/e_sinh.S b/libm/x86/e_sinh.S
deleted file mode 100644
index b9a2930..0000000
--- a/libm/x86/e_sinh.S
+++ /dev/null
@@ -1,1407 +0,0 @@
-/*
-Copyright (c) 2014, Intel Corporation
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
-
- * Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
-
- * Neither the name of Intel Corporation nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
-ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/******************************************************************************/
-/******************************************************************************/
-// ALGORITHM DESCRIPTION
-// ---------------------
-//
-// sinh(x)=(exp(x)-exp(-x))/2
-//
-// Let |x|=xH+xL (upper 26 bits, lower 27 bits)
-// log2(e) rounded to 26 bits (high part) plus a double precision low part is
-// L2EH+L2EL (upper 26, lower 53 bits)
-//
-// Let xH*L2EH=k+f+r`, where (k+f)*2^7=int(xH*L2EH*2^7),
-// f=0.b1 b2 ... b7, k integer
-// 2^f is approximated as Tp[f]+Dp[f], and 2^{-f} as Tn[f]+Dn[f]
-// Tp stores the high 53 bits, Dp stores (2^f-Tp[f]) rounded to double precision
-//
-// e^|x|=2^{k+f}*2^r, r=r`+xL*L2EH+|x|*L2EL, |r|<2^{-8}+2^{-14},
-// for |x| in [23/64,3*2^7)
-// e^{-|x|}=2^{-k-f}*2^{-r}
-//
-// e^|x| is approximated as 2^k*Tp+2^k*Tp*c1*r(1+c2*r+..+c5*r^4)+2^k*Dp=
-// =2^k*Tp+2^k*Tp*P15+2^k*Dp
-// e^{-|x|} approximated as 2^{-k}*Tn-2^{-k}*Tn*c1*r(1-c2*r+..+c5*r^4)+2^{-k}*Dn
-//
-// For |x| in [1/8, 3*2^7), sinh(x) is formed as
-// RN(2^k*Tp-2^{-k}*Tn)+2^k*Tp*P15-2^{-k}*Tn*P`15-2^{-k}*TnL-2^{-k}*Dn+2^k*Dp
-//
-// For x in (3*2^7, 3*2^8), sign(x)*(e^|x|)/2 is returned, and
-// the result is checked for overflow.
-//
-// For |x|<23/64, a Taylor polynomial expansion is used (degree 13)
-// To reduce rounding errors, the p3*x^3 term is computed as
-// (p3*xh^3)_high+[(p3*xl*(3*x*xh+xl^2))+(p3*xh^3)_low],
-// where x=xh+xl, (xh are the leading 17 bits of x), and
-// (p3*xh^3)_high=RN(x+p3*xh^3)-x
-// (error bound for polynomial expansion is below 0.51 ulp)
-//
-// Special cases:
-// sinh(NaN) = quiet NaN, and raise invalid exception
-// sinh(+/-INF) = +/-INF
-// sinh(x) = x for subnormals
-// for finite argument, only sinh(0)=0 is exact
-// For IEEE double
-// sinh(x) overflows for x >
-// 710.47586007394386342639336362481117248535156250 = MAXLOG+log(2)
-//
-/******************************************************************************/
-
-#include <private/bionic_asm.h>
-# -- Begin static_func
- .text
- .align __bionic_asm_align
- .type static_func, @function
-static_func:
-..B1.1:
- call ..L2
-..L2:
- popl %eax
- lea _GLOBAL_OFFSET_TABLE_+[. - ..L2](%eax), %eax
- lea static_const_table@GOTOFF(%eax), %eax
- ret
- .size static_func,.-static_func
-# -- End static_func
-
-# -- Begin sinh
-ENTRY(sinh)
-# parameter 1: 8 + %ebp
-..B2.1:
-..B2.2:
- pushl %ebp
- movl %esp, %ebp
- subl $104, %esp
- movl %ebx, 40(%esp)
- call static_func
- movl %eax, %ebx
- movsd 112(%esp), %xmm0
- movsd 4272(%ebx), %xmm3
- xorpd %xmm4, %xmm4
- movsd 4192(%ebx), %xmm1
- movsd 4200(%ebx), %xmm2
- movl $32768, %eax
- pinsrw $3, %eax, %xmm4
- movsd 4096(%ebx), %xmm6
- pextrw $3, %xmm0, %ecx
- andpd %xmm0, %xmm3
- andnpd %xmm0, %xmm4
- pshufd $68, %xmm4, %xmm5
- movl $32768, %edx
- andl %ecx, %edx
- andl $32767, %ecx
- subl $16343, %ecx
- cmpl $177, %ecx
- jae .L_2TAG_PACKET_0.0.2
- subsd %xmm3, %xmm4
- mulsd %xmm1, %xmm3
- mulsd %xmm5, %xmm2
- cvtsd2si %xmm3, %eax
- shll $3, %edx
- orl %edx, %eax
- movapd %xmm3, %xmm7
- addsd %xmm6, %xmm3
- mulsd %xmm4, %xmm1
- xorpd %xmm5, %xmm5
- subsd %xmm6, %xmm3
- movapd 4112(%ebx), %xmm4
- addsd %xmm1, %xmm2
- movapd 4128(%ebx), %xmm6
- subsd %xmm3, %xmm7
- movl $32704, %edx
- pinsrw $3, %edx, %xmm5
- movapd 4144(%ebx), %xmm1
- addsd %xmm7, %xmm2
- movl $127, %edx
- andl %eax, %edx
- addl %edx, %edx
- shrl $3, %eax
- andl $65520, %eax
- addl $16352, %eax
- xorpd %xmm0, %xmm0
- cmpl $161, %ecx
- jae .L_2TAG_PACKET_1.0.2
- pshufd $68, %xmm5, %xmm5
- pinsrw $3, %eax, %xmm0
- pshufd $68, %xmm0, %xmm0
- psubw %xmm0, %xmm5
- mulpd (%ebx,%edx,8), %xmm0
- mulpd 2048(%ebx,%edx,8), %xmm5
- pshufd $68, %xmm2, %xmm3
- movapd 4160(%ebx), %xmm7
- pshufd $68, %xmm2, %xmm2
- mulpd %xmm3, %xmm3
- mulpd %xmm2, %xmm4
- mulpd %xmm2, %xmm6
- mulpd 4176(%ebx), %xmm2
- mulpd %xmm3, %xmm1
- mulpd %xmm3, %xmm7
- mulpd %xmm3, %xmm4
- mulpd %xmm3, %xmm1
- addpd %xmm7, %xmm6
- movapd %xmm0, %xmm7
- addpd %xmm1, %xmm4
- shufpd $0, %xmm5, %xmm7
- subpd %xmm5, %xmm0
- mulpd %xmm7, %xmm2
- addpd %xmm6, %xmm4
- subsd %xmm0, %xmm7
- mulpd %xmm2, %xmm4
- pshufd $238, %xmm0, %xmm6
- subsd %xmm5, %xmm7
- addpd %xmm2, %xmm4
- addsd %xmm6, %xmm7
- pshufd $238, %xmm4, %xmm2
- addsd %xmm7, %xmm2
- addsd %xmm4, %xmm2
- addsd %xmm2, %xmm0
- jmp .L_2TAG_PACKET_2.0.2
-.L_2TAG_PACKET_1.0.2:
- subl $16352, %eax
- movl %eax, %ecx
- andl $32752, %eax
- shrl $1, %eax
- andl $65520, %eax
- subl %eax, %ecx
- addl $16352, %eax
- pinsrw $3, %eax, %xmm0
- pshufd $68, %xmm0, %xmm0
- mulpd (%ebx,%edx,8), %xmm0
- pshufd $68, %xmm2, %xmm3
- movsd 4160(%ebx), %xmm7
- mulsd %xmm3, %xmm3
- mulsd %xmm2, %xmm4
- mulsd %xmm2, %xmm6
- mulsd 4176(%ebx), %xmm2
- mulsd %xmm3, %xmm1
- mulsd %xmm3, %xmm7
- mulsd %xmm3, %xmm4
- addl $16368, %ecx
- pinsrw $3, %ecx, %xmm5
- mulsd %xmm3, %xmm1
- addsd %xmm7, %xmm6
- addsd %xmm1, %xmm4
- mulsd %xmm0, %xmm2
- addsd %xmm6, %xmm4
- mulsd %xmm2, %xmm4
- pshufd $238, %xmm0, %xmm6
- addsd %xmm6, %xmm4
- addsd %xmm4, %xmm2
- addsd %xmm2, %xmm0
- mulsd %xmm5, %xmm0
- pextrw $3, %xmm0, %eax
- andl $32752, %eax
- movl $127, %edx
- cmpl $32752, %eax
- je .L_2TAG_PACKET_3.0.2
- jmp .L_2TAG_PACKET_2.0.2
-.L_2TAG_PACKET_0.0.2:
- addl $16343, %ecx
- cmpl $16343, %ecx
- ja .L_2TAG_PACKET_4.0.2
- cmpl $15856, %ecx
- jb .L_2TAG_PACKET_5.0.2
- movapd 4208(%ebx), %xmm1
- pshufd $68, %xmm0, %xmm6
- mulpd %xmm5, %xmm5
- movapd 4224(%ebx), %xmm2
- pshufd $68, %xmm0, %xmm7
- movapd 4240(%ebx), %xmm3
- pshufd $68, %xmm0, %xmm4
- andpd 4256(%ebx), %xmm6
- mulpd %xmm5, %xmm1
- mulsd %xmm5, %xmm2
- subpd %xmm6, %xmm4
- mulpd %xmm5, %xmm7
- addpd %xmm3, %xmm1
- pshufd $68, %xmm6, %xmm3
- mulpd %xmm5, %xmm5
- mulsd %xmm7, %xmm2
- mulpd %xmm7, %xmm1
- pshufd $68, %xmm0, %xmm7
- mulsd %xmm6, %xmm6
- addsd %xmm7, %xmm7
- mulsd %xmm4, %xmm4
- mulpd %xmm5, %xmm1
- addsd %xmm0, %xmm7
- mulsd %xmm3, %xmm6
- mulsd %xmm3, %xmm7
- pshufd $238, %xmm1, %xmm3
- mulsd %xmm5, %xmm1
- pshufd $238, %xmm4, %xmm5
- addsd %xmm2, %xmm3
- pshufd $238, %xmm2, %xmm2
- addsd %xmm4, %xmm7
- movapd %xmm0, %xmm4
- mulsd %xmm2, %xmm6
- mulsd %xmm5, %xmm7
- addsd %xmm6, %xmm0
- mulsd %xmm2, %xmm7
- subsd %xmm0, %xmm4
- addsd %xmm7, %xmm1
- addsd %xmm4, %xmm6
- addsd %xmm3, %xmm1
- addsd %xmm6, %xmm1
- addsd %xmm1, %xmm0
- jmp .L_2TAG_PACKET_2.0.2
-.L_2TAG_PACKET_5.0.2:
- cmpl $16, %ecx
- jae .L_2TAG_PACKET_6.0.2
- movapd %xmm0, %xmm1
- mulsd %xmm1, %xmm1
- jmp .L_2TAG_PACKET_2.0.2
-.L_2TAG_PACKET_6.0.2:
- xorpd %xmm2, %xmm2
- movl $17392, %ecx
- pinsrw $3, %ecx, %xmm2
- xorpd %xmm3, %xmm3
- movl $15344, %edx
- pinsrw $3, %edx, %xmm3
- mulsd %xmm0, %xmm2
- addsd %xmm2, %xmm0
- mulsd %xmm3, %xmm0
- jmp .L_2TAG_PACKET_2.0.2
-.L_2TAG_PACKET_4.0.2:
- cmpl $32752, %ecx
- jae .L_2TAG_PACKET_7.0.2
- xorpd %xmm0, %xmm0
- movl $32736, %eax
- pinsrw $3, %eax, %xmm0
- orl %edx, %eax
- pinsrw $3, %eax, %xmm1
- mulsd %xmm1, %xmm0
- movl $127, %edx
-.L_2TAG_PACKET_3.0.2:
- movsd %xmm0, (%esp)
- movsd 112(%esp), %xmm0
- fldl (%esp)
- jmp .L_2TAG_PACKET_8.0.2
-.L_2TAG_PACKET_7.0.2:
- xorpd %xmm1, %xmm1
- movl $32768, %eax
- pinsrw $3, %eax, %xmm1
- andnpd %xmm0, %xmm1
- mulsd %xmm1, %xmm0
- jmp .L_2TAG_PACKET_2.0.2
-.L_2TAG_PACKET_2.0.2:
- movsd %xmm0, 24(%esp)
- fldl 24(%esp)
-.L_2TAG_PACKET_8.0.2:
- movl 40(%esp), %ebx
- movl %ebp, %esp
- popl %ebp
- ret
-..B2.3:
-END(sinh)
-# -- End sinh
-
-# Start file scope ASM
-ALIAS_SYMBOL(sinhl, sinh);
-# End file scope ASM
- .section .rodata, "a"
- .align 16
- .align 16
-static_const_table:
- .long 0
- .long 1072693248
- .long 0
- .long 0
- .long 2851812149
- .long 1072698941
- .long 2595802551
- .long 1016815913
- .long 1048019041
- .long 1072704666
- .long 1398474845
- .long 3161559171
- .long 3899555717
- .long 1072710421
- .long 427280750
- .long 3163595548
- .long 3541402996
- .long 1072716208
- .long 2759177317
- .long 1015903202
- .long 702412510
- .long 1072722027
- .long 3803266087
- .long 3163328991
- .long 410360776
- .long 1072727877
- .long 1269990655
- .long 1013024446
- .long 3402036099
- .long 1072733758
- .long 405889334
- .long 1016154232
- .long 1828292879
- .long 1072739672
- .long 1255956747
- .long 1016636974
- .long 728909815
- .long 1072745618
- .long 383930225
- .long 1016078044
- .long 852742562
- .long 1072751596
- .long 667253586
- .long 1010842135
- .long 2952712987
- .long 1072757606
- .long 3293494651
- .long 3161168877
- .long 3490863953
- .long 1072763649
- .long 960797498
- .long 3163997456
- .long 3228316108
- .long 1072769725
- .long 3010241991
- .long 3159471380
- .long 2930322912
- .long 1072775834
- .long 2599499422
- .long 3163762623
- .long 3366293073
- .long 1072781976
- .long 3119426314
- .long 1015169130
- .long 1014845819
- .long 1072788152
- .long 3117910646
- .long 3162607681
- .long 948735466
- .long 1072794361
- .long 3516338028
- .long 3163623459
- .long 3949972341
- .long 1072800603
- .long 2068408548
- .long 1015962444
- .long 2214878420
- .long 1072806880
- .long 892270087
- .long 3164164998
- .long 828946858
- .long 1072813191
- .long 10642492
- .long 1016988014
- .long 586995997
- .long 1072819536
- .long 41662348
- .long 3163676568
- .long 2288159958
- .long 1072825915
- .long 2169144469
- .long 1015924597
- .long 2440944790
- .long 1072832329
- .long 2492769774
- .long 1015196030
- .long 1853186616
- .long 1072838778
- .long 3066496371
- .long 1016705150
- .long 1337108031
- .long 1072845262
- .long 3203724452
- .long 1015726421
- .long 1709341917
- .long 1072851781
- .long 2571168217
- .long 1015201075
- .long 3790955393
- .long 1072858335
- .long 2352942462
- .long 3164228666
- .long 4112506593
- .long 1072864925
- .long 2947355221
- .long 1015419624
- .long 3504003472
- .long 1072871551
- .long 3594001060
- .long 3158379228
- .long 2799960843
- .long 1072878213
- .long 1423655381
- .long 1016070727
- .long 2839424854
- .long 1072884911
- .long 1171596163
- .long 1014090255
- .long 171030293
- .long 1072891646
- .long 3526460132
- .long 1015477354
- .long 4232894513
- .long 1072898416
- .long 2383938684
- .long 1015717095
- .long 2992903935
- .long 1072905224
- .long 2218154406
- .long 1016276769
- .long 1603444721
- .long 1072912069
- .long 1548633640
- .long 3163249902
- .long 926591435
- .long 1072918951
- .long 3208833762
- .long 3163962090
- .long 1829099622
- .long 1072925870
- .long 1016661181
- .long 3164509581
- .long 887463927
- .long 1072932827
- .long 3596744163
- .long 3161842742
- .long 3272845541
- .long 1072939821
- .long 928852419
- .long 3164536824
- .long 1276261410
- .long 1072946854
- .long 300981948
- .long 1015732745
- .long 78413852
- .long 1072953925
- .long 4183226867
- .long 3164065827
- .long 569847338
- .long 1072961034
- .long 472945272
- .long 3160339305
- .long 3645941911
- .long 1072968181
- .long 3814685081
- .long 3162621917
- .long 1617004845
- .long 1072975368
- .long 82804944
- .long 1011391354
- .long 3978100823
- .long 1072982593
- .long 3513027190
- .long 1016894539
- .long 3049340112
- .long 1072989858
- .long 3062915824
- .long 1014219171
- .long 4040676318
- .long 1072997162
- .long 4090609238
- .long 1016712034
- .long 3577096743
- .long 1073004506
- .long 2951496418
- .long 1014842263
- .long 2583551245
- .long 1073011890
- .long 3161094195
- .long 1016655067
- .long 1990012071
- .long 1073019314
- .long 3529070563
- .long 3163861769
- .long 2731501122
- .long 1073026778
- .long 1774031855
- .long 3163518597
- .long 1453150082
- .long 1073034283
- .long 498154669
- .long 3162536638
- .long 3395129871
- .long 1073041828
- .long 4025345435
- .long 3163383964
- .long 917841882
- .long 1073049415
- .long 18715565
- .long 1016707884
- .long 3566716925
- .long 1073057042
- .long 1536826856
- .long 1015191009
- .long 3712504873
- .long 1073064711
- .long 88491949
- .long 1016476236
- .long 2321106615
- .long 1073072422
- .long 2171176610
- .long 1010584347
- .long 363667784
- .long 1073080175
- .long 813753950
- .long 1016833785
- .long 3111574537
- .long 1073087969
- .long 2606161479
- .long 3163808322
- .long 2956612997
- .long 1073095806
- .long 2118169751
- .long 3163784129
- .long 885834528
- .long 1073103686
- .long 1973258547
- .long 3163310140
- .long 2186617381
- .long 1073111608
- .long 2270764084
- .long 3164321289
- .long 3561793907
- .long 1073119573
- .long 1157054053
- .long 1012938926
- .long 1719614413
- .long 1073127582
- .long 330458198
- .long 3164331316
- .long 1963711167
- .long 1073135634
- .long 1744767757
- .long 3161622870
- .long 1013258799
- .long 1073143730
- .long 1748797611
- .long 3161177658
- .long 4182873220
- .long 1073151869
- .long 629542646
- .long 3163044879
- .long 3907805044
- .long 1073160053
- .long 2257091225
- .long 3162598983
- .long 1218806132
- .long 1073168282
- .long 1818613052
- .long 3163597017
- .long 1447192521
- .long 1073176555
- .long 1462857171
- .long 3163563097
- .long 1339972927
- .long 1073184873
- .long 167908909
- .long 1016620728
- .long 1944781191
- .long 1073193236
- .long 3993278767
- .long 3162772855
- .long 19972402
- .long 1073201645
- .long 3507899862
- .long 1017057868
- .long 919555682
- .long 1073210099
- .long 3121969534
- .long 1013996802
- .long 1413356050
- .long 1073218599
- .long 1651349291
- .long 3163716742
- .long 2571947539
- .long 1073227145
- .long 3558159064
- .long 3164425245
- .long 1176749997
- .long 1073235738
- .long 2738998779
- .long 3163084420
- .long 2604962541
- .long 1073244377
- .long 2614425274
- .long 3164587768
- .long 3649726105
- .long 1073253063
- .long 4085036346
- .long 1016698050
- .long 1110089947
- .long 1073261797
- .long 1451641639
- .long 1016523249
- .long 380978316
- .long 1073270578
- .long 854188970
- .long 3161511262
- .long 2568320822
- .long 1073279406
- .long 2732824428
- .long 1015401491
- .long 194117574
- .long 1073288283
- .long 777528612
- .long 3164460665
- .long 2966275557
- .long 1073297207
- .long 2176155324
- .long 3160891335
- .long 3418903055
- .long 1073306180
- .long 2527457337
- .long 3161869180
- .long 2682146384
- .long 1073315202
- .long 2082178513
- .long 3164411995
- .long 1892288442
- .long 1073324273
- .long 2446255666
- .long 3163648957
- .long 2191782032
- .long 1073333393
- .long 2960257726
- .long 1014791238
- .long 434316067
- .long 1073342563
- .long 2028358766
- .long 1014506698
- .long 2069751141
- .long 1073351782
- .long 1562170675
- .long 3163773257
- .long 3964284211
- .long 1073361051
- .long 2111583915
- .long 1016475740
- .long 2990417245
- .long 1073370371
- .long 3683467745
- .long 3164417902
- .long 321958744
- .long 1073379742
- .long 3401933767
- .long 1016843134
- .long 1434058175
- .long 1073389163
- .long 251133233
- .long 1016134345
- .long 3218338682
- .long 1073398635
- .long 3404164304
- .long 3163525684
- .long 2572866477
- .long 1073408159
- .long 878562433
- .long 1016570317
- .long 697153126
- .long 1073417735
- .long 1283515429
- .long 3164331765
- .long 3092190715
- .long 1073427362
- .long 814012168
- .long 3160571998
- .long 2380618042
- .long 1073437042
- .long 3149557219
- .long 3164369375
- .long 4076559943
- .long 1073446774
- .long 2119478331
- .long 3161806927
- .long 815859274
- .long 1073456560
- .long 240396590
- .long 3164536019
- .long 2420883922
- .long 1073466398
- .long 2049810052
- .long 1015168464
- .long 1540824585
- .long 1073476290
- .long 1064017011
- .long 3164536266
- .long 3716502172
- .long 1073486235
- .long 2303740125
- .long 1015091301
- .long 1610600570
- .long 1073496235
- .long 3766732298
- .long 1016808759
- .long 777507147
- .long 1073506289
- .long 4282924205
- .long 1016236109
- .long 2483480501
- .long 1073516397
- .long 1216371780
- .long 1014082748
- .long 3706687593
- .long 1073526560
- .long 3521726940
- .long 1014301643
- .long 1432208378
- .long 1073536779
- .long 1401068914
- .long 3163412539
- .long 1242007932
- .long 1073547053
- .long 1132034716
- .long 3164388407
- .long 135105010
- .long 1073557383
- .long 1906148728
- .long 3164424315
- .long 3707479175
- .long 1073567768
- .long 3613079303
- .long 1015213314
- .long 382305176
- .long 1073578211
- .long 2347622376
- .long 3163627201
- .long 64696965
- .long 1073588710
- .long 1768797490
- .long 1016865536
- .long 4076975200
- .long 1073599265
- .long 2029000899
- .long 1016257111
- .long 863738719
- .long 1073609879
- .long 1326992220
- .long 3163661773
- .long 351641897
- .long 1073620550
- .long 2172261526
- .long 3164059175
- .long 3884662774
- .long 1073631278
- .long 2158611599
- .long 1015258761
- .long 4224142467
- .long 1073642065
- .long 3389820386
- .long 1016255778
- .long 2728693978
- .long 1073652911
- .long 396109971
- .long 3164511267
- .long 764307441
- .long 1073663816
- .long 3021057420
- .long 3164378099
- .long 3999357479
- .long 1073674779
- .long 2258941616
- .long 1016973300
- .long 929806999
- .long 1073685803
- .long 3205336643
- .long 1016308133
- .long 1533953344
- .long 1073696886
- .long 769171851
- .long 1016714209
- .long 2912730644
- .long 1073708029
- .long 3490067722
- .long 3164453650
- .long 2174652632
- .long 1073719233
- .long 4087714590
- .long 1015498835
- .long 730821105
- .long 1073730498
- .long 2523232743
- .long 1013115764
- .long 0
- .long 1072693248
- .long 0
- .long 0
- .long 730821105
- .long 1072681922
- .long 2523232743
- .long 1012067188
- .long 2174652632
- .long 1072670657
- .long 4087714590
- .long 1014450259
- .long 2912730644
- .long 1072659453
- .long 3490067722
- .long 3163405074
- .long 1533953344
- .long 1072648310
- .long 769171851
- .long 1015665633
- .long 929806999
- .long 1072637227
- .long 3205336643
- .long 1015259557
- .long 3999357479
- .long 1072626203
- .long 2258941616
- .long 1015924724
- .long 764307441
- .long 1072615240
- .long 3021057420
- .long 3163329523
- .long 2728693978
- .long 1072604335
- .long 396109971
- .long 3163462691
- .long 4224142467
- .long 1072593489
- .long 3389820386
- .long 1015207202
- .long 3884662774
- .long 1072582702
- .long 2158611599
- .long 1014210185
- .long 351641897
- .long 1072571974
- .long 2172261526
- .long 3163010599
- .long 863738719
- .long 1072561303
- .long 1326992220
- .long 3162613197
- .long 4076975200
- .long 1072550689
- .long 2029000899
- .long 1015208535
- .long 64696965
- .long 1072540134
- .long 1768797490
- .long 1015816960
- .long 382305176
- .long 1072529635
- .long 2347622376
- .long 3162578625
- .long 3707479175
- .long 1072519192
- .long 3613079303
- .long 1014164738
- .long 135105010
- .long 1072508807
- .long 1906148728
- .long 3163375739
- .long 1242007932
- .long 1072498477
- .long 1132034716
- .long 3163339831
- .long 1432208378
- .long 1072488203
- .long 1401068914
- .long 3162363963
- .long 3706687593
- .long 1072477984
- .long 3521726940
- .long 1013253067
- .long 2483480501
- .long 1072467821
- .long 1216371780
- .long 1013034172
- .long 777507147
- .long 1072457713
- .long 4282924205
- .long 1015187533
- .long 1610600570
- .long 1072447659
- .long 3766732298
- .long 1015760183
- .long 3716502172
- .long 1072437659
- .long 2303740125
- .long 1014042725
- .long 1540824585
- .long 1072427714
- .long 1064017011
- .long 3163487690
- .long 2420883922
- .long 1072417822
- .long 2049810052
- .long 1014119888
- .long 815859274
- .long 1072407984
- .long 240396590
- .long 3163487443
- .long 4076559943
- .long 1072398198
- .long 2119478331
- .long 3160758351
- .long 2380618042
- .long 1072388466
- .long 3149557219
- .long 3163320799
- .long 3092190715
- .long 1072378786
- .long 814012168
- .long 3159523422
- .long 697153126
- .long 1072369159
- .long 1283515429
- .long 3163283189
- .long 2572866477
- .long 1072359583
- .long 878562433
- .long 1015521741
- .long 3218338682
- .long 1072350059
- .long 3404164304
- .long 3162477108
- .long 1434058175
- .long 1072340587
- .long 251133233
- .long 1015085769
- .long 321958744
- .long 1072331166
- .long 3401933767
- .long 1015794558
- .long 2990417245
- .long 1072321795
- .long 3683467745
- .long 3163369326
- .long 3964284211
- .long 1072312475
- .long 2111583915
- .long 1015427164
- .long 2069751141
- .long 1072303206
- .long 1562170675
- .long 3162724681
- .long 434316067
- .long 1072293987
- .long 2028358766
- .long 1013458122
- .long 2191782032
- .long 1072284817
- .long 2960257726
- .long 1013742662
- .long 1892288442
- .long 1072275697
- .long 2446255666
- .long 3162600381
- .long 2682146384
- .long 1072266626
- .long 2082178513
- .long 3163363419
- .long 3418903055
- .long 1072257604
- .long 2527457337
- .long 3160820604
- .long 2966275557
- .long 1072248631
- .long 2176155324
- .long 3159842759
- .long 194117574
- .long 1072239707
- .long 777528612
- .long 3163412089
- .long 2568320822
- .long 1072230830
- .long 2732824428
- .long 1014352915
- .long 380978316
- .long 1072222002
- .long 854188970
- .long 3160462686
- .long 1110089947
- .long 1072213221
- .long 1451641639
- .long 1015474673
- .long 3649726105
- .long 1072204487
- .long 4085036346
- .long 1015649474
- .long 2604962541
- .long 1072195801
- .long 2614425274
- .long 3163539192
- .long 1176749997
- .long 1072187162
- .long 2738998779
- .long 3162035844
- .long 2571947539
- .long 1072178569
- .long 3558159064
- .long 3163376669
- .long 1413356050
- .long 1072170023
- .long 1651349291
- .long 3162668166
- .long 919555682
- .long 1072161523
- .long 3121969534
- .long 1012948226
- .long 19972402
- .long 1072153069
- .long 3507899862
- .long 1016009292
- .long 1944781191
- .long 1072144660
- .long 3993278767
- .long 3161724279
- .long 1339972927
- .long 1072136297
- .long 167908909
- .long 1015572152
- .long 1447192521
- .long 1072127979
- .long 1462857171
- .long 3162514521
- .long 1218806132
- .long 1072119706
- .long 1818613052
- .long 3162548441
- .long 3907805044
- .long 1072111477
- .long 2257091225
- .long 3161550407
- .long 4182873220
- .long 1072103293
- .long 629542646
- .long 3161996303
- .long 1013258799
- .long 1072095154
- .long 1748797611
- .long 3160129082
- .long 1963711167
- .long 1072087058
- .long 1744767757
- .long 3160574294
- .long 1719614413
- .long 1072079006
- .long 330458198
- .long 3163282740
- .long 3561793907
- .long 1072070997
- .long 1157054053
- .long 1011890350
- .long 2186617381
- .long 1072063032
- .long 2270764084
- .long 3163272713
- .long 885834528
- .long 1072055110
- .long 1973258547
- .long 3162261564
- .long 2956612997
- .long 1072047230
- .long 2118169751
- .long 3162735553
- .long 3111574537
- .long 1072039393
- .long 2606161479
- .long 3162759746
- .long 363667784
- .long 1072031599
- .long 813753950
- .long 1015785209
- .long 2321106615
- .long 1072023846
- .long 2171176610
- .long 1009535771
- .long 3712504873
- .long 1072016135
- .long 88491949
- .long 1015427660
- .long 3566716925
- .long 1072008466
- .long 1536826856
- .long 1014142433
- .long 917841882
- .long 1072000839
- .long 18715565
- .long 1015659308
- .long 3395129871
- .long 1071993252
- .long 4025345435
- .long 3162335388
- .long 1453150082
- .long 1071985707
- .long 498154669
- .long 3161488062
- .long 2731501122
- .long 1071978202
- .long 1774031855
- .long 3162470021
- .long 1990012071
- .long 1071970738
- .long 3529070563
- .long 3162813193
- .long 2583551245
- .long 1071963314
- .long 3161094195
- .long 1015606491
- .long 3577096743
- .long 1071955930
- .long 2951496418
- .long 1013793687
- .long 4040676318
- .long 1071948586
- .long 4090609238
- .long 1015663458
- .long 3049340112
- .long 1071941282
- .long 3062915824
- .long 1013170595
- .long 3978100823
- .long 1071934017
- .long 3513027190
- .long 1015845963
- .long 1617004845
- .long 1071926792
- .long 82804944
- .long 1010342778
- .long 3645941911
- .long 1071919605
- .long 3814685081
- .long 3161573341
- .long 569847338
- .long 1071912458
- .long 472945272
- .long 3159290729
- .long 78413852
- .long 1071905349
- .long 4183226867
- .long 3163017251
- .long 1276261410
- .long 1071898278
- .long 300981948
- .long 1014684169
- .long 3272845541
- .long 1071891245
- .long 928852419
- .long 3163488248
- .long 887463927
- .long 1071884251
- .long 3596744163
- .long 3160794166
- .long 1829099622
- .long 1071877294
- .long 1016661181
- .long 3163461005
- .long 926591435
- .long 1071870375
- .long 3208833762
- .long 3162913514
- .long 1603444721
- .long 1071863493
- .long 1548633640
- .long 3162201326
- .long 2992903935
- .long 1071856648
- .long 2218154406
- .long 1015228193
- .long 4232894513
- .long 1071849840
- .long 2383938684
- .long 1014668519
- .long 171030293
- .long 1071843070
- .long 3526460132
- .long 1014428778
- .long 2839424854
- .long 1071836335
- .long 1171596163
- .long 1013041679
- .long 2799960843
- .long 1071829637
- .long 1423655381
- .long 1015022151
- .long 3504003472
- .long 1071822975
- .long 3594001060
- .long 3157330652
- .long 4112506593
- .long 1071816349
- .long 2947355221
- .long 1014371048
- .long 3790955393
- .long 1071809759
- .long 2352942462
- .long 3163180090
- .long 1709341917
- .long 1071803205
- .long 2571168217
- .long 1014152499
- .long 1337108031
- .long 1071796686
- .long 3203724452
- .long 1014677845
- .long 1853186616
- .long 1071790202
- .long 3066496371
- .long 1015656574
- .long 2440944790
- .long 1071783753
- .long 2492769774
- .long 1014147454
- .long 2288159958
- .long 1071777339
- .long 2169144469
- .long 1014876021
- .long 586995997
- .long 1071770960
- .long 41662348
- .long 3162627992
- .long 828946858
- .long 1071764615
- .long 10642492
- .long 1015939438
- .long 2214878420
- .long 1071758304
- .long 892270087
- .long 3163116422
- .long 3949972341
- .long 1071752027
- .long 2068408548
- .long 1014913868
- .long 948735466
- .long 1071745785
- .long 3516338028
- .long 3162574883
- .long 1014845819
- .long 1071739576
- .long 3117910646
- .long 3161559105
- .long 3366293073
- .long 1071733400
- .long 3119426314
- .long 1014120554
- .long 2930322912
- .long 1071727258
- .long 2599499422
- .long 3162714047
- .long 3228316108
- .long 1071721149
- .long 3010241991
- .long 3158422804
- .long 3490863953
- .long 1071715073
- .long 960797498
- .long 3162948880
- .long 2952712987
- .long 1071709030
- .long 3293494651
- .long 3160120301
- .long 852742562
- .long 1071703020
- .long 667253586
- .long 1009793559
- .long 728909815
- .long 1071697042
- .long 383930225
- .long 1015029468
- .long 1828292879
- .long 1071691096
- .long 1255956747
- .long 1015588398
- .long 3402036099
- .long 1071685182
- .long 405889334
- .long 1015105656
- .long 410360776
- .long 1071679301
- .long 1269990655
- .long 1011975870
- .long 702412510
- .long 1071673451
- .long 3803266087
- .long 3162280415
- .long 3541402996
- .long 1071667632
- .long 2759177317
- .long 1014854626
- .long 3899555717
- .long 1071661845
- .long 427280750
- .long 3162546972
- .long 1048019041
- .long 1071656090
- .long 1398474845
- .long 3160510595
- .long 2851812149
- .long 1071650365
- .long 2595802551
- .long 1015767337
- .long 0
- .long 1127743488
- .long 0
- .long 3275227136
- .long 3607404736
- .long 1044146952
- .long 3607404736
- .long 3191630600
- .long 4277811695
- .long 1063661122
- .long 4277811695
- .long 3211144770
- .long 2140175755
- .long 1033864261
- .long 2140175755
- .long 1033864261
- .long 4289495988
- .long 1054113747
- .long 4289495988
- .long 1054113747
- .long 4277811695
- .long 1064709698
- .long 4277811695
- .long 1064709698
- .long 1610612736
- .long 1080497479
- .long 4166901572
- .long 1053077003
- .long 329805064
- .long 1038488134
- .long 2773927730
- .long 1053236707
- .long 286331153
- .long 1065423121
- .long 1431655765
- .long 1069897045
- .long 1744127201
- .long 1046144581
- .long 436314137
- .long 1059717536
- .long 0
- .long 4294967280
- .long 0
- .long 4294967280
- .long 4160749568
- .long 2147483647
- .type static_const_table,@object
- .size static_const_table,4280
- .data
- .section .note.GNU-stack, "",@progbits
-# End
diff --git a/libm/x86/libm_reduce_pi04l.S b/libm/x86/libm_reduce_pi04l.S
deleted file mode 100644
index 25976ea..0000000
--- a/libm/x86/libm_reduce_pi04l.S
+++ /dev/null
@@ -1,3718 +0,0 @@
-/*
-Copyright (c) 2014, Intel Corporation
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
-
- * Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
-
- * Neither the name of Intel Corporation nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
-ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-# -- Begin __libm_reduce_pi04l
- .text
- .align 16,0x90
- .hidden __libm_reduce_pi04l
- .globl __libm_reduce_pi04l
-__libm_reduce_pi04l:
-# parameter 1: 8 + %ebp
-# parameter 2: 20 + %ebp
-# parameter 3: 24 + %ebp
-..B1.1:
- pushl %ebp
- movl %esp, %ebp
- andl $-16, %esp
- pushl %esi
- pushl %edi
- pushl %ebx
- subl $20, %esp
- movzwl 16(%ebp), %ebx
- andl $32767, %ebx
- movl 20(%ebp), %eax
- cmpl $16413, %ebx
- movl 24(%ebp), %esi
- call ..L2
-..L2:
- popl %edi
- lea _GLOBAL_OFFSET_TABLE_+[. - ..L2](%edi), %edi
- movl %eax, 4(%esp)
- jge ..B1.8
-..B1.2:
- fldt 8(%ebp)
- fldl __4onpi_d@GOTOFF(%edi)
- fmul %st(1), %st
- fstpt 8(%esp)
- movzwl 16(%esp), %ecx
- negl %ecx
- addl $30, %ecx
- movl 12(%esp), %eax
- shrl %cl, %eax
- cmpl $0, 4(%esp)
- jne ..B1.4
-..B1.3:
- lea 1(%eax), %ecx
- andl $-2, %ecx
- jmp ..B1.5
-..B1.4:
- movl %eax, %ecx
- addl 4(%esp), %eax
- movl %eax, %edx
- andl $1, %edx
- addl %edx, %ecx
-..B1.5:
- fldl _TWO_32H@GOTOFF(%edi)
- cmpl $16400, %ebx
- movl %ecx, (%esp)
- fildl (%esp)
- jge ..B1.7
-..B1.6:
- fldl _pi04_3d@GOTOFF(%edi)
- fmul %st(1), %st
- fsubrp %st, %st(3)
- fxch %st(1)
- fmul %st(2), %st
- fld %st(2)
- fadd %st(1), %st
- fsubp %st, %st(1)
- fld %st(0)
- fxch %st(1)
- fsubr %st, %st(3)
- fldl 8+_pi04_3d@GOTOFF(%edi)
- fmul %st(3), %st
- fsubr %st, %st(2)
- fxch %st(1)
- fsub %st(2), %st
- fsubp %st, %st(1)
- faddp %st, %st(3)
- fldl 16+_pi04_3d@GOTOFF(%edi)
- fmulp %st, %st(2)
- fld %st(1)
- fsubr %st(1), %st
- fsubr %st, %st(1)
- fxch %st(2)
- fsubrp %st, %st(1)
- faddp %st, %st(2)
- fxch %st(1)
- jmp ..B1.15
-..B1.7:
- fldl _pi04_5d@GOTOFF(%edi)
- fmul %st(1), %st
- fsubrp %st, %st(3)
- fxch %st(1)
- fmul %st(2), %st
- fld %st(2)
- fadd %st(1), %st
- fsubp %st, %st(1)
- fld %st(0)
- fxch %st(1)
- fsubr %st, %st(3)
- fldl 8+_pi04_5d@GOTOFF(%edi)
- fmul %st(3), %st
- fsubr %st, %st(2)
- fxch %st(1)
- fsub %st(2), %st
- fsubp %st, %st(1)
- faddp %st, %st(3)
- fldl 16+_pi04_5d@GOTOFF(%edi)
- fmul %st(2), %st
- fld %st(0)
- fsubr %st(2), %st
- fsubr %st, %st(2)
- fxch %st(1)
- fsubrp %st, %st(2)
- fxch %st(1)
- faddp %st, %st(3)
- fldl 24+_pi04_5d@GOTOFF(%edi)
- fmul %st(2), %st
- fld %st(0)
- fsubr %st(2), %st
- fsubr %st, %st(2)
- fxch %st(1)
- fsubrp %st, %st(2)
- fxch %st(1)
- faddp %st, %st(3)
- fldl 32+_pi04_5d@GOTOFF(%edi)
- fmulp %st, %st(2)
- fld %st(1)
- fsubr %st(1), %st
- fsubr %st, %st(1)
- fxch %st(2)
- fsubrp %st, %st(1)
- faddp %st, %st(2)
- fxch %st(1)
- jmp ..B1.15
-..B1.8:
- fldt 8(%ebp)
- addl $-16417, %ebx
- fmull _SCALE@GOTOFF(%edi)
- movl $-2078209981, %eax
- imull %ebx
- addl %ebx, %edx
- movl %ebx, %ecx
- sarl $4, %edx
- sarl $31, %ecx
- subl %ecx, %edx
- movl %edx, %eax
- shll $5, %eax
- fstpt 8(%ebp)
- fldt 8(%ebp)
- subl %edx, %eax
- movl $0, 8(%ebp)
- subl %eax, %ebx
- fldt 8(%ebp)
- cmpl $17, %ebx
- fsubr %st, %st(1)
- jl ..B1.10
-..B1.9:
- lea (,%edx,8), %eax
- lea (%eax,%edx,4), %ecx
- incl %edx
- fldt __4onpi_31l@GOTOFF(%ecx,%edi)
- fmul %st(2), %st
- fldt 12+__4onpi_31l@GOTOFF(%edi,%ecx)
- fmul %st(2), %st
- fld %st(0)
- fadd %st(2), %st
- fsubr %st, %st(2)
- fxch %st(1)
- faddp %st, %st(2)
- fld %st(1)
- fadd %st(1), %st
- fstpt 8(%esp)
- andl $-16777216, 8(%esp)
- fldt 8(%esp)
- fsubrp %st, %st(1)
- jmp ..B1.11
-..B1.10:
- fldl _zeros@GOTOFF(%edi)
- fld %st(0)
-..B1.11:
- fld %st(0)
- lea (,%edx,8), %eax
- fld %st(3)
- lea (%eax,%edx,4), %edx
- fldt __4onpi_31l@GOTOFF(%edx,%edi)
- fmul %st(6), %st
- movl %edx, (%esp)
- fadd %st, %st(2)
- fxch %st(2)
- fsubr %st, %st(3)
- fxch %st(2)
- faddp %st, %st(3)
- fxch %st(2)
- faddp %st, %st(3)
- fldt 12+__4onpi_31l@GOTOFF(%edx,%edi)
- fmul %st, %st(2)
- fld %st(2)
- fadd %st(2), %st
- fld %st(0)
- fxch %st(1)
- fsub %st, %st(3)
- fxch %st(3)
- fchs
- faddp %st, %st(4)
- fxch %st(3)
- faddp %st, %st(4)
- fxch %st(2)
- fadd %st(3), %st
- fxch %st(2)
- fmul %st(5), %st
- fadd %st, %st(2)
- fld %st(4)
- fldt 24+__4onpi_31l@GOTOFF(%edx,%edi)
- fmul %st, %st(1)
- fxch %st(1)
- fadd %st, %st(4)
- fxch %st(4)
- fstpt 8(%esp)
- movzwl 16(%esp), %ebx
- andl $32767, %ebx
- cmpl $16415, %ebx
- jge ..B1.13
-..B1.12:
- negl %ebx
- addl $30, %ebx
- movl %ebx, %ecx
- movl 12(%esp), %eax
- shrl %cl, %eax
- shll %cl, %eax
- movl %eax, 12(%esp)
- movl $0, 8(%esp)
- shrl %cl, %eax
- jmp ..B1.14
-..B1.13:
- negl %ebx
- addl $30, %ebx
- movl %ebx, %ecx
- movl 8(%esp), %edx
- shrl %cl, %edx
- shll %cl, %edx
- negl %ecx
- movl 12(%esp), %eax
- shll %cl, %eax
- movl %ebx, %ecx
- movl %edx, 8(%esp)
- shrl %cl, %edx
- orl %edx, %eax
-..B1.14:
- fldt 8(%esp)
- addl 4(%esp), %eax
- fsubrp %st, %st(3)
- fmul %st(6), %st
- fld %st(4)
- movl %eax, %edx
- andl $1, %edx
- fadd %st(3), %st
- movl (%esp), %ecx
- fsubr %st, %st(3)
- fxch %st(3)
- faddp %st, %st(5)
- fld %st(1)
- fxch %st(3)
- faddl zero_none@GOTOFF(%edi,%edx,8)
- fadd %st, %st(3)
- fsub %st(3), %st
- faddp %st, %st(2)
- fxch %st(1)
- faddp %st, %st(4)
- fld %st(2)
- fadd %st(2), %st
- fsubr %st, %st(2)
- fxch %st(3)
- faddp %st, %st(2)
- fxch %st(1)
- faddp %st, %st(3)
- fld %st(0)
- fadd %st(2), %st
- fsubr %st, %st(2)
- fxch %st(1)
- faddp %st, %st(2)
- fxch %st(1)
- faddp %st, %st(2)
- fld %st(2)
- fldt 36+__4onpi_31l@GOTOFF(%ecx,%edi)
- fmul %st, %st(1)
- fld %st(1)
- fadd %st(3), %st
- fsubr %st, %st(3)
- fxch %st(2)
- faddp %st, %st(3)
- fxch %st(2)
- faddp %st, %st(3)
- fxch %st(1)
- fmul %st(4), %st
- fld %st(0)
- fadd %st(2), %st
- fsubr %st, %st(2)
- fxch %st(1)
- faddp %st, %st(2)
- fxch %st(1)
- faddp %st, %st(2)
- fld %st(2)
- fldt 48+__4onpi_31l@GOTOFF(%ecx,%edi)
- fmul %st, %st(1)
- fld %st(1)
- fadd %st(3), %st
- fsubr %st, %st(3)
- fxch %st(2)
- faddp %st, %st(3)
- fxch %st(2)
- faddp %st, %st(3)
- fld %st(3)
- fxch %st(2)
- fmul %st(5), %st
- fldt 60+__4onpi_31l@GOTOFF(%ecx,%edi)
- fmul %st, %st(3)
- fxch %st(3)
- faddp %st, %st(1)
- fld %st(0)
- fadd %st(2), %st
- fsubr %st, %st(2)
- fxch %st(1)
- faddp %st, %st(2)
- fxch %st(1)
- faddp %st, %st(3)
- fld %st(3)
- fxch %st(2)
- fmul %st(5), %st
- fldt 72+__4onpi_31l@GOTOFF(%ecx,%edi)
- fmul %st, %st(3)
- fxch %st(3)
- faddp %st, %st(1)
- fld %st(0)
- fadd %st(2), %st
- fsubr %st, %st(2)
- fxch %st(1)
- faddp %st, %st(2)
- fxch %st(1)
- faddp %st, %st(3)
- fxch %st(1)
- fmulp %st, %st(4)
- fldt 84+__4onpi_31l@GOTOFF(%edi,%ecx)
- fmulp %st, %st(3)
- fxch %st(2)
- faddp %st, %st(3)
- fld %st(2)
- fadd %st(2), %st
- fldl _TWO_32H@GOTOFF(%edi)
- fmul %st(1), %st
- fadd %st, %st(1)
- fsubrp %st, %st(1)
- fsubr %st, %st(2)
- fxch %st(3)
- faddp %st, %st(2)
- faddp %st, %st(1)
- fldl _pi04_2d@GOTOFF(%edi)
- fld %st(0)
- fmul %st(2), %st
- fxch %st(2)
- fadd %st(3), %st
- fxch %st(1)
- fmulp %st, %st(3)
- fmull 8+_pi04_2d@GOTOFF(%edi)
- faddp %st, %st(1)
-..B1.15:
- fldl _TWO_12H@GOTOFF(%edi)
- fld %st(2)
- fadd %st(2), %st
- fmul %st, %st(1)
- fstpt 8(%esp)
- fldt 8(%esp)
- fadd %st(1), %st
- fsubp %st, %st(1)
- fstl (%esi)
- fsubrp %st, %st(2)
- faddp %st, %st(1)
- fstpl 8(%esi)
- addl $20, %esp
- popl %ebx
- popl %edi
- popl %esi
- movl %ebp, %esp
- popl %ebp
- ret
- .align 16,0x90
- .type __libm_reduce_pi04l,@function
- .size __libm_reduce_pi04l,.-__libm_reduce_pi04l
- .data
-# -- End __libm_reduce_pi04l
- .section .rodata, "a"
- .align 8
- .align 8
-zero_none:
- .long 0x00000000,0x00000000
- .long 0x00000000,0xbff00000
- .type zero_none,@object
- .size zero_none,16
- .align 4
-__4onpi_d:
- .long 1841940611
- .long 1072979760
- .type __4onpi_d,@object
- .size __4onpi_d,8
- .align 4
-_TWO_32H:
- .long 0
- .long 1106771968
- .type _TWO_32H,@object
- .size _TWO_32H,8
- .align 4
-_pi04_3d:
- .long 1413754112
- .long 1072243195
- .long 2563527040
- .long 1021855384
- .long 3417685868
- .long 3118450936
- .type _pi04_3d,@object
- .size _pi04_3d,24
- .align 4
-_pi04_5d:
- .long 1413480448
- .long 1072243195
- .long 442499072
- .long 1036039265
- .long 771751936
- .long 999496074
- .long 622854144
- .long 963347354
- .long 1396597664
- .long 922906692
- .type _pi04_5d,@object
- .size _pi04_5d,40
- .align 4
-_SCALE:
- .long 0
- .long 845152256
- .type _SCALE,@object
- .size _SCALE,8
- .align 4
-_zeros:
- .long 0
- .long 0
- .long 0
- .long 2147483648
- .type _zeros,@object
- .size _zeros,16
- .align 4
-_pi04_2d:
- .long 1413480448
- .long 1072243195
- .long 442655537
- .long 1036039265
- .type _pi04_2d,@object
- .size _pi04_2d,16
- .align 4
-_TWO_12H:
- .long 0
- .long 1085800448
- .type _TWO_12H,@object
- .size _TWO_12H,8
- .align 2
-__4onpi_31l:
- .word 0
- .word 0
- .word 0
- .word 0
- .word 0
- .word 0
- .word 0
- .word 0
- .word 33646
- .word 41721
- .word 16600
- .word 0
- .word 0
- .word 0
- .word 10832
- .word 40072
- .word 16567
- .word 0
- .word 0
- .word 0
- .word 44008
- .word 65043
- .word 16537
- .word 0
- .word 0
- .word 0
- .word 28384
- .word 64154
- .word 16505
- .word 0
- .word 0
- .word 0
- .word 38272
- .word 56162
- .word 16472
- .word 0
- .word 0
- .word 0
- .word 7298
- .word 51682
- .word 16445
- .word 0
- .word 0
- .word 0
- .word 45504
- .word 65320
- .word 16409
- .word 0
- .word 0
- .word 0
- .word 61204
- .word 44922
- .word 16382
- .word 0
- .word 0
- .word 0
- .word 18652
- .word 50030
- .word 16351
- .word 0
- .word 0
- .word 0
- .word 14144
- .word 59657
- .word 16318
- .word 0
- .word 0
- .word 0
- .word 37450
- .word 47105
- .word 16290
- .word 0
- .word 0
- .word 0
- .word 14898
- .word 56641
- .word 16259
- .word 0
- .word 0
- .word 0
- .word 34680
- .word 34623
- .word 16226
- .word 0
- .word 0
- .word 0
- .word 4760
- .word 45515
- .word 16196
- .word 0
- .word 0
- .word 0
- .word 41480
- .word 40187
- .word 16166
- .word 0
- .word 0
- .word 0
- .word 47852
- .word 55252
- .word 16134
- .word 0
- .word 0
- .word 0
- .word 54072
- .word 35081
- .word 16103
- .word 0
- .word 0
- .word 0
- .word 26808
- .word 57421
- .word 16071
- .word 0
- .word 0
- .word 0
- .word 20068
- .word 57232
- .word 16042
- .word 0
- .word 0
- .word 0
- .word 49576
- .word 60188
- .word 16009
- .word 0
- .word 0
- .word 0
- .word 10016
- .word 52861
- .word 15978
- .word 0
- .word 0
- .word 0
- .word 30648
- .word 35825
- .word 15947
- .word 0
- .word 0
- .word 0
- .word 60542
- .word 58528
- .word 15918
- .word 0
- .word 0
- .word 0
- .word 65468
- .word 61743
- .word 15887
- .word 0
- .word 0
- .word 0
- .word 64960
- .word 45825
- .word 15851
- .word 0
- .word 0
- .word 0
- .word 50604
- .word 38792
- .word 15825
- .word 0
- .word 0
- .word 0
- .word 18394
- .word 33435
- .word 15794
- .word 0
- .word 0
- .word 0
- .word 55780
- .word 42703
- .word 15763
- .word 0
- .word 0
- .word 0
- .word 14056
- .word 63841
- .word 15731
- .word 0
- .word 0
- .word 0
- .word 63080
- .word 62563
- .word 15700
- .word 0
- .word 0
- .word 0
- .word 20840
- .word 62207
- .word 15669
- .word 0
- .word 0
- .word 0
- .word 30094
- .word 59983
- .word 15639
- .word 0
- .word 0
- .word 0
- .word 61818
- .word 60389
- .word 15608
- .word 0
- .word 0
- .word 0
- .word 40186
- .word 40579
- .word 15577
- .word 0
- .word 0
- .word 0
- .word 42170
- .word 58004
- .word 15546
- .word 0
- .word 0
- .word 0
- .word 55276
- .word 39678
- .word 15514
- .word 0
- .word 0
- .word 0
- .word 44672
- .word 36806
- .word 15481
- .word 0
- .word 0
- .word 0
- .word 13060
- .word 34144
- .word 15452
- .word 0
- .word 0
- .word 0
- .word 28016
- .word 57231
- .word 15419
- .word 0
- .word 0
- .word 0
- .word 16112
- .word 44995
- .word 15390
- .word 0
- .word 0
- .word 0
- .word 53464
- .word 33387
- .word 15358
- .word 0
- .word 0
- .word 0
- .word 7296
- .word 60751
- .word 15325
- .word 0
- .word 0
- .word 0
- .word 29452
- .word 45231
- .word 15297
- .word 0
- .word 0
- .word 0
- .word 26208
- .word 49689
- .word 15266
- .word 0
- .word 0
- .word 0
- .word 37900
- .word 44002
- .word 15235
- .word 0
- .word 0
- .word 0
- .word 57340
- .word 33800
- .word 15204
- .word 0
- .word 0
- .word 0
- .word 27544
- .word 50178
- .word 15173
- .word 0
- .word 0
- .word 0
- .word 6168
- .word 40132
- .word 15142
- .word 0
- .word 0
- .word 0
- .word 21392
- .word 43702
- .word 15109
- .word 0
- .word 0
- .word 0
- .word 45168
- .word 54372
- .word 15081
- .word 0
- .word 0
- .word 0
- .word 8986
- .word 40688
- .word 15050
- .word 0
- .word 0
- .word 0
- .word 1648
- .word 53745
- .word 15018
- .word 0
- .word 0
- .word 0
- .word 30520
- .word 55795
- .word 14986
- .word 0
- .word 0
- .word 0
- .word 43060
- .word 32914
- .word 14956
- .word 0
- .word 0
- .word 0
- .word 46172
- .word 52771
- .word 14925
- .word 0
- .word 0
- .word 0
- .word 14056
- .word 45285
- .word 14893
- .word 0
- .word 0
- .word 0
- .word 53590
- .word 44868
- .word 14864
- .word 0
- .word 0
- .word 0
- .word 40786
- .word 35970
- .word 14833
- .word 0
- .word 0
- .word 0
- .word 33436
- .word 65411
- .word 14801
- .word 0
- .word 0
- .word 0
- .word 32006
- .word 61382
- .word 14771
- .word 0
- .word 0
- .word 0
- .word 37856
- .word 45239
- .word 14738
- .word 0
- .word 0
- .word 0
- .word 60894
- .word 49555
- .word 14709
- .word 0
- .word 0
- .word 0
- .word 48064
- .word 53065
- .word 14674
- .word 0
- .word 0
- .word 0
- .word 48624
- .word 54844
- .word 14647
- .word 0
- .word 0
- .word 0
- .word 7988
- .word 40762
- .word 14616
- .word 0
- .word 0
- .word 0
- .word 16270
- .word 58745
- .word 14585
- .word 0
- .word 0
- .word 0
- .word 37064
- .word 50168
- .word 14553
- .word 0
- .word 0
- .word 0
- .word 18624
- .word 63736
- .word 14519
- .word 0
- .word 0
- .word 0
- .word 60758
- .word 44966
- .word 14492
- .word 0
- .word 0
- .word 0
- .word 33304
- .word 47465
- .word 14461
- .word 0
- .word 0
- .word 0
- .word 6226
- .word 60503
- .word 14430
- .word 0
- .word 0
- .word 0
- .word 26380
- .word 54900
- .word 14398
- .word 0
- .word 0
- .word 0
- .word 44352
- .word 49860
- .word 14368
- .word 0
- .word 0
- .word 0
- .word 11904
- .word 42646
- .word 14337
- .word 0
- .word 0
- .word 0
- .word 55296
- .word 50279
- .word 14300
- .word 0
- .word 0
- .word 0
- .word 15474
- .word 50606
- .word 14275
- .word 0
- .word 0
- .word 0
- .word 45062
- .word 44137
- .word 14244
- .word 0
- .word 0
- .word 0
- .word 13472
- .word 36063
- .word 14210
- .word 0
- .word 0
- .word 0
- .word 40658
- .word 53854
- .word 14182
- .word 0
- .word 0
- .word 0
- .word 28652
- .word 43690
- .word 14151
- .word 0
- .word 0
- .word 0
- .word 24640
- .word 64348
- .word 14118
- .word 0
- .word 0
- .word 0
- .word 30284
- .word 41980
- .word 14088
- .word 0
- .word 0
- .word 0
- .word 45652
- .word 38222
- .word 14057
- .word 0
- .word 0
- .word 0
- .word 15900
- .word 62940
- .word 14026
- .word 0
- .word 0
- .word 0
- .word 31494
- .word 50741
- .word 13996
- .word 0
- .word 0
- .word 0
- .word 43194
- .word 55096
- .word 13965
- .word 0
- .word 0
- .word 0
- .word 1740
- .word 45646
- .word 13933
- .word 0
- .word 0
- .word 0
- .word 28936
- .word 44150
- .word 13903
- .word 0
- .word 0
- .word 0
- .word 8996
- .word 42955
- .word 13872
- .word 0
- .word 0
- .word 0
- .word 44096
- .word 61205
- .word 13839
- .word 0
- .word 0
- .word 0
- .word 44614
- .word 54550
- .word 13810
- .word 0
- .word 0
- .word 0
- .word 24926
- .word 57347
- .word 13779
- .word 0
- .word 0
- .word 0
- .word 3312
- .word 61415
- .word 13745
- .word 0
- .word 0
- .word 0
- .word 64336
- .word 63884
- .word 13717
- .word 0
- .word 0
- .word 0
- .word 2748
- .word 62259
- .word 13685
- .word 0
- .word 0
- .word 0
- .word 56672
- .word 51775
- .word 13653
- .word 0
- .word 0
- .word 0
- .word 32438
- .word 55423
- .word 13624
- .word 0
- .word 0
- .word 0
- .word 17652
- .word 45713
- .word 13593
- .word 0
- .word 0
- .word 0
- .word 65408
- .word 51586
- .word 13558
- .word 0
- .word 0
- .word 0
- .word 40416
- .word 55736
- .word 13531
- .word 0
- .word 0
- .word 0
- .word 52546
- .word 37734
- .word 13500
- .word 0
- .word 0
- .word 0
- .word 48880
- .word 64238
- .word 13469
- .word 0
- .word 0
- .word 0
- .word 56004
- .word 46833
- .word 13437
- .word 0
- .word 0
- .word 0
- .word 61760
- .word 38110
- .word 13405
- .word 0
- .word 0
- .word 0
- .word 41496
- .word 35659
- .word 13374
- .word 0
- .word 0
- .word 0
- .word 25472
- .word 41269
- .word 13342
- .word 0
- .word 0
- .word 0
- .word 45444
- .word 36018
- .word 13314
- .word 0
- .word 0
- .word 0
- .word 6510
- .word 56417
- .word 13283
- .word 0
- .word 0
- .word 0
- .word 3072
- .word 56837
- .word 13252
- .word 0
- .word 0
- .word 0
- .word 61338
- .word 48440
- .word 13221
- .word 0
- .word 0
- .word 0
- .word 49568
- .word 57088
- .word 13189
- .word 0
- .word 0
- .word 0
- .word 4240
- .word 39283
- .word 13157
- .word 0
- .word 0
- .word 0
- .word 18562
- .word 33537
- .word 13128
- .word 0
- .word 0
- .word 0
- .word 31422
- .word 44487
- .word 13097
- .word 0
- .word 0
- .word 0
- .word 31930
- .word 60459
- .word 13066
- .word 0
- .word 0
- .word 0
- .word 42272
- .word 36641
- .word 13033
- .word 0
- .word 0
- .word 0
- .word 28940
- .word 36150
- .word 13004
- .word 0
- .word 0
- .word 0
- .word 21010
- .word 50925
- .word 12973
- .word 0
- .word 0
- .word 0
- .word 29448
- .word 64886
- .word 12941
- .word 0
- .word 0
- .word 0
- .word 20500
- .word 54600
- .word 12911
- .word 0
- .word 0
- .word 0
- .word 54258
- .word 46233
- .word 12880
- .word 0
- .word 0
- .word 0
- .word 32628
- .word 42502
- .word 12848
- .word 0
- .word 0
- .word 0
- .word 61608
- .word 55072
- .word 12818
- .word 0
- .word 0
- .word 0
- .word 6236
- .word 57871
- .word 12786
- .word 0
- .word 0
- .word 0
- .word 42408
- .word 34616
- .word 12756
- .word 0
- .word 0
- .word 0
- .word 56692
- .word 51963
- .word 12724
- .word 0
- .word 0
- .word 0
- .word 39094
- .word 48526
- .word 12694
- .word 0
- .word 0
- .word 0
- .word 59870
- .word 38783
- .word 12663
- .word 0
- .word 0
- .word 0
- .word 26560
- .word 33165
- .word 12632
- .word 0
- .word 0
- .word 0
- .word 58666
- .word 37666
- .word 12601
- .word 0
- .word 0
- .word 0
- .word 58728
- .word 39788
- .word 12569
- .word 0
- .word 0
- .word 0
- .word 9048
- .word 43530
- .word 12538
- .word 0
- .word 0
- .word 0
- .word 58496
- .word 57659
- .word 12505
- .word 0
- .word 0
- .word 0
- .word 12324
- .word 37025
- .word 12477
- .word 0
- .word 0
- .word 0
- .word 38432
- .word 55856
- .word 12445
- .word 0
- .word 0
- .word 0
- .word 35210
- .word 45960
- .word 12415
- .word 0
- .word 0
- .word 0
- .word 45644
- .word 51345
- .word 12384
- .word 0
- .word 0
- .word 0
- .word 32854
- .word 63883
- .word 12353
- .word 0
- .word 0
- .word 0
- .word 29348
- .word 41450
- .word 12321
- .word 0
- .word 0
- .word 0
- .word 27384
- .word 38024
- .word 12289
- .word 0
- .word 0
- .word 0
- .word 57356
- .word 57291
- .word 12260
- .word 0
- .word 0
- .word 0
- .word 61164
- .word 51521
- .word 12228
- .word 0
- .word 0
- .word 0
- .word 21472
- .word 59151
- .word 12196
- .word 0
- .word 0
- .word 0
- .word 36704
- .word 39943
- .word 12165
- .word 0
- .word 0
- .word 0
- .word 45864
- .word 50151
- .word 12136
- .word 0
- .word 0
- .word 0
- .word 37892
- .word 63687
- .word 12104
- .word 0
- .word 0
- .word 0
- .word 14560
- .word 51615
- .word 12073
- .word 0
- .word 0
- .word 0
- .word 38776
- .word 55684
- .word 12041
- .word 0
- .word 0
- .word 0
- .word 59136
- .word 53570
- .word 12010
- .word 0
- .word 0
- .word 0
- .word 55556
- .word 37955
- .word 11981
- .word 0
- .word 0
- .word 0
- .word 54458
- .word 44670
- .word 11950
- .word 0
- .word 0
- .word 0
- .word 36446
- .word 34084
- .word 11919
- .word 0
- .word 0
- .word 0
- .word 46416
- .word 51693
- .word 11886
- .word 0
- .word 0
- .word 0
- .word 21432
- .word 34376
- .word 11857
- .word 0
- .word 0
- .word 0
- .word 56036
- .word 34809
- .word 11826
- .word 0
- .word 0
- .word 0
- .word 10562
- .word 55654
- .word 11795
- .word 0
- .word 0
- .word 0
- .word 20264
- .word 53052
- .word 11763
- .word 0
- .word 0
- .word 0
- .word 64064
- .word 50415
- .word 11729
- .word 0
- .word 0
- .word 0
- .word 17444
- .word 48295
- .word 11701
- .word 0
- .word 0
- .word 0
- .word 11874
- .word 52677
- .word 11671
- .word 0
- .word 0
- .word 0
- .word 60808
- .word 39275
- .word 11640
- .word 0
- .word 0
- .word 0
- .word 31792
- .word 55677
- .word 11606
- .word 0
- .word 0
- .word 0
- .word 60710
- .word 49006
- .word 11578
- .word 0
- .word 0
- .word 0
- .word 10520
- .word 37403
- .word 11546
- .word 0
- .word 0
- .word 0
- .word 20004
- .word 59470
- .word 11515
- .word 0
- .word 0
- .word 0
- .word 28096
- .word 37612
- .word 11485
- .word 0
- .word 0
- .word 0
- .word 20268
- .word 44280
- .word 11453
- .word 0
- .word 0
- .word 0
- .word 50740
- .word 61588
- .word 11422
- .word 0
- .word 0
- .word 0
- .word 56432
- .word 58835
- .word 11390
- .word 0
- .word 0
- .word 0
- .word 8576
- .word 42496
- .word 11355
- .word 0
- .word 0
- .word 0
- .word 33920
- .word 54912
- .word 11324
- .word 0
- .word 0
- .word 0
- .word 35620
- .word 54843
- .word 11298
- .word 0
- .word 0
- .word 0
- .word 736
- .word 43591
- .word 11264
- .word 0
- .word 0
- .word 0
- .word 39632
- .word 61060
- .word 11235
- .word 0
- .word 0
- .word 0
- .word 63452
- .word 63129
- .word 11206
- .word 0
- .word 0
- .word 0
- .word 56798
- .word 58512
- .word 11175
- .word 0
- .word 0
- .word 0
- .word 13472
- .word 46333
- .word 11141
- .word 0
- .word 0
- .word 0
- .word 37300
- .word 36598
- .word 11112
- .word 0
- .word 0
- .word 0
- .word 41952
- .word 41639
- .word 11079
- .word 0
- .word 0
- .word 0
- .word 52452
- .word 33459
- .word 11050
- .word 0
- .word 0
- .word 0
- .word 58558
- .word 33287
- .word 11020
- .word 0
- .word 0
- .word 0
- .word 7570
- .word 43843
- .word 10989
- .word 0
- .word 0
- .word 0
- .word 59416
- .word 63990
- .word 10957
- .word 0
- .word 0
- .word 0
- .word 65298
- .word 47744
- .word 10927
- .word 0
- .word 0
- .word 0
- .word 21076
- .word 34089
- .word 10896
- .word 0
- .word 0
- .word 0
- .word 7048
- .word 57394
- .word 10865
- .word 0
- .word 0
- .word 0
- .word 12872
- .word 55405
- .word 10832
- .word 0
- .word 0
- .word 0
- .word 12608
- .word 51669
- .word 10798
- .word 0
- .word 0
- .word 0
- .word 5350
- .word 48455
- .word 10772
- .word 0
- .word 0
- .word 0
- .word 23568
- .word 58692
- .word 10740
- .word 0
- .word 0
- .word 0
- .word 40784
- .word 37046
- .word 10708
- .word 0
- .word 0
- .word 0
- .word 38992
- .word 43861
- .word 10678
- .word 0
- .word 0
- .word 0
- .word 10064
- .word 40199
- .word 10648
- .word 0
- .word 0
- .word 0
- .word 26368
- .word 35771
- .word 10611
- .word 0
- .word 0
- .word 0
- .word 23994
- .word 60721
- .word 10586
- .word 0
- .word 0
- .word 0
- .word 25052
- .word 34302
- .word 10554
- .word 0
- .word 0
- .word 0
- .word 39842
- .word 54964
- .word 10524
- .word 0
- .word 0
- .word 0
- .word 11568
- .word 58277
- .word 10491
- .word 0
- .word 0
- .word 0
- .word 26160
- .word 46438
- .word 10461
- .word 0
- .word 0
- .word 0
- .word 23252
- .word 43049
- .word 10431
- .word 0
- .word 0
- .word 0
- .word 35288
- .word 58000
- .word 10400
- .word 0
- .word 0
- .word 0
- .word 14614
- .word 50216
- .word 10369
- .word 0
- .word 0
- .word 0
- .word 1168
- .word 48804
- .word 10336
- .word 0
- .word 0
- .word 0
- .word 60934
- .word 33006
- .word 10307
- .word 0
- .word 0
- .word 0
- .word 64512
- .word 62247
- .word 10272
- .word 0
- .word 0
- .word 0
- .word 59968
- .word 43121
- .word 10240
- .word 0
- .word 0
- .word 0
- .word 25560
- .word 39974
- .word 10212
- .word 0
- .word 0
- .word 0
- .word 1978
- .word 49353
- .word 10183
- .word 0
- .word 0
- .word 0
- .word 16290
- .word 38807
- .word 10152
- .word 0
- .word 0
- .word 0
- .word 8646
- .word 65226
- .word 10121
- .word 0
- .word 0
- .word 0
- .word 56896
- .word 34317
- .word 10088
- .word 0
- .word 0
- .word 0
- .word 40136
- .word 39118
- .word 10057
- .word 0
- .word 0
- .word 0
- .word 14200
- .word 41756
- .word 10026
- .word 0
- .word 0
- .word 0
- .word 59256
- .word 63202
- .word 9995
- .word 0
- .word 0
- .word 0
- .word 22968
- .word 63553
- .word 9965
- .word 0
- .word 0
- .word 0
- .word 736
- .word 44292
- .word 9933
- .word 0
- .word 0
- .word 0
- .word 23186
- .word 37760
- .word 9904
- .word 0
- .word 0
- .word 0
- .word 51008
- .word 34950
- .word 9869
- .word 0
- .word 0
- .word 0
- .word 1664
- .word 64248
- .word 9836
- .word 0
- .word 0
- .word 0
- .word 64352
- .word 35199
- .word 9811
- .word 0
- .word 0
- .word 0
- .word 34656
- .word 63747
- .word 9780
- .word 0
- .word 0
- .word 0
- .word 44330
- .word 49864
- .word 9749
- .word 0
- .word 0
- .word 0
- .word 11654
- .word 35567
- .word 9718
- .word 0
- .word 0
- .word 0
- .word 7924
- .word 58919
- .word 9686
- .word 0
- .word 0
- .word 0
- .word 2532
- .word 32800
- .word 9655
- .word 0
- .word 0
- .word 0
- .word 30024
- .word 53799
- .word 9624
- .word 0
- .word 0
- .word 0
- .word 30172
- .word 64347
- .word 9593
- .word 0
- .word 0
- .word 0
- .word 60036
- .word 51382
- .word 9562
- .word 0
- .word 0
- .word 0
- .word 58576
- .word 33093
- .word 9531
- .word 0
- .word 0
- .word 0
- .word 13888
- .word 38760
- .word 9500
- .word 0
- .word 0
- .word 0
- .word 9322
- .word 52460
- .word 9470
- .word 0
- .word 0
- .word 0
- .word 20944
- .word 41077
- .word 9437
- .word 0
- .word 0
- .word 0
- .word 17976
- .word 41861
- .word 9407
- .word 0
- .word 0
- .word 0
- .word 55176
- .word 55158
- .word 9377
- .word 0
- .word 0
- .word 0
- .word 4976
- .word 35223
- .word 9346
- .word 0
- .word 0
- .word 0
- .word 7816
- .word 39783
- .word 9314
- .word 0
- .word 0
- .word 0
- .word 27656
- .word 55669
- .word 9284
- .word 0
- .word 0
- .word 0
- .word 64944
- .word 53184
- .word 9250
- .word 0
- .word 0
- .word 0
- .word 12544
- .word 49190
- .word 9222
- .word 0
- .word 0
- .word 0
- .word 50612
- .word 44644
- .word 9190
- .word 0
- .word 0
- .word 0
- .word 8832
- .word 63111
- .word 9155
- .word 0
- .word 0
- .word 0
- .word 11744
- .word 36870
- .word 9129
- .word 0
- .word 0
- .word 0
- .word 9404
- .word 63025
- .word 9098
- .word 0
- .word 0
- .word 0
- .word 47316
- .word 43381
- .word 9067
- .word 0
- .word 0
- .word 0
- .word 55716
- .word 47433
- .word 9035
- .word 0
- .word 0
- .word 0
- .word 46414
- .word 48441
- .word 9005
- .word 0
- .word 0
- .word 0
- .word 19116
- .word 39506
- .word 8974
- .word 0
- .word 0
- .word 0
- .word 48060
- .word 53381
- .word 8943
- .word 0
- .word 0
- .word 0
- .word 57112
- .word 50739
- .word 8911
- .word 0
- .word 0
- .word 0
- .word 5840
- .word 60581
- .word 8879
- .word 0
- .word 0
- .word 0
- .word 62112
- .word 57199
- .word 8846
- .word 0
- .word 0
- .word 0
- .word 35908
- .word 59499
- .word 8818
- .word 0
- .word 0
- .word 0
- .word 13760
- .word 48116
- .word 8787
- .word 0
- .word 0
- .word 0
- .word 3136
- .word 56059
- .word 8752
- .word 0
- .word 0
- .word 0
- .word 37596
- .word 39221
- .word 8726
- .word 0
- .word 0
- .word 0
- .word 3232
- .word 48550
- .word 8691
- .word 0
- .word 0
- .word 0
- .word 22872
- .word 42749
- .word 8662
- .word 0
- .word 0
- .word 0
- .word 41948
- .word 40319
- .word 8633
- .word 0
- .word 0
- .word 0
- .word 31196
- .word 64693
- .word 8601
- .word 0
- .word 0
- .word 0
- .word 62052
- .word 52923
- .word 8571
- .word 0
- .word 0
- .word 0
- .word 2750
- .word 33544
- .word 8540
- .word 0
- .word 0
- .word 0
- .word 12462
- .word 46179
- .word 8509
- .word 0
- .word 0
- .word 0
- .word 25128
- .word 45120
- .word 8476
- .word 0
- .word 0
- .word 0
- .word 51634
- .word 62523
- .word 8447
- .word 0
- .word 0
- .word 0
- .word 15758
- .word 42163
- .word 8416
- .word 0
- .word 0
- .word 0
- .word 34022
- .word 36267
- .word 8385
- .word 0
- .word 0
- .word 0
- .word 41252
- .word 39796
- .word 8353
- .word 0
- .word 0
- .word 0
- .word 49782
- .word 54423
- .word 8323
- .word 0
- .word 0
- .word 0
- .word 25428
- .word 42086
- .word 8291
- .word 0
- .word 0
- .word 0
- .word 34388
- .word 44810
- .word 8260
- .word 0
- .word 0
- .word 0
- .word 7456
- .word 64092
- .word 8228
- .word 0
- .word 0
- .word 0
- .word 48336
- .word 62448
- .word 8196
- .word 0
- .word 0
- .word 0
- .word 60912
- .word 61622
- .word 8167
- .word 0
- .word 0
- .word 0
- .word 17852
- .word 37250
- .word 8137
- .word 0
- .word 0
- .word 0
- .word 57940
- .word 56453
- .word 8106
- .word 0
- .word 0
- .word 0
- .word 47256
- .word 59825
- .word 8074
- .word 0
- .word 0
- .word 0
- .word 3774
- .word 59120
- .word 8044
- .word 0
- .word 0
- .word 0
- .word 43448
- .word 62852
- .word 8012
- .word 0
- .word 0
- .word 0
- .word 4840
- .word 57195
- .word 7982
- .word 0
- .word 0
- .word 0
- .word 40862
- .word 52565
- .word 7951
- .word 0
- .word 0
- .word 0
- .word 1440
- .word 60474
- .word 7919
- .word 0
- .word 0
- .word 0
- .word 55520
- .word 38648
- .word 7889
- .word 0
- .word 0
- .word 0
- .word 15316
- .word 52422
- .word 7857
- .word 0
- .word 0
- .word 0
- .word 18704
- .word 47227
- .word 7827
- .word 0
- .word 0
- .word 0
- .word 48892
- .word 54283
- .word 7795
- .word 0
- .word 0
- .word 0
- .word 12670
- .word 41990
- .word 7765
- .word 0
- .word 0
- .word 0
- .word 27570
- .word 49842
- .word 7734
- .word 0
- .word 0
- .word 0
- .word 47230
- .word 47992
- .word 7703
- .word 0
- .word 0
- .word 0
- .word 41020
- .word 56253
- .word 7671
- .word 0
- .word 0
- .word 0
- .word 23404
- .word 58312
- .word 7641
- .word 0
- .word 0
- .word 0
- .word 35176
- .word 51854
- .word 7610
- .word 0
- .word 0
- .word 0
- .word 49188
- .word 59051
- .word 7578
- .word 0
- .word 0
- .word 0
- .word 16656
- .word 54507
- .word 7546
- .word 0
- .word 0
- .word 0
- .word 41320
- .word 48565
- .word 7517
- .word 0
- .word 0
- .word 0
- .word 302
- .word 42490
- .word 7486
- .word 0
- .word 0
- .word 0
- .word 26680
- .word 39967
- .word 7454
- .word 0
- .word 0
- .word 0
- .word 41304
- .word 43638
- .word 7424
- .word 0
- .word 0
- .word 0
- .word 2314
- .word 48533
- .word 7393
- .word 0
- .word 0
- .word 0
- .word 63294
- .word 35693
- .word 7362
- .word 0
- .word 0
- .word 0
- .word 24538
- .word 48319
- .word 7331
- .word 0
- .word 0
- .word 0
- .word 56296
- .word 47263
- .word 7300
- .word 0
- .word 0
- .word 0
- .word 28236
- .word 38599
- .word 7268
- .word 0
- .word 0
- .word 0
- .word 6594
- .word 62116
- .word 7238
- .word 0
- .word 0
- .word 0
- .word 47104
- .word 63573
- .word 7198
- .word 0
- .word 0
- .word 0
- .word 34812
- .word 34303
- .word 7176
- .word 0
- .word 0
- .word 0
- .word 5144
- .word 33695
- .word 7145
- .word 0
- .word 0
- .word 0
- .word 24966
- .word 55768
- .word 7114
- .word 0
- .word 0
- .word 0
- .word 62720
- .word 43946
- .word 7078
- .word 0
- .word 0
- .word 0
- .word 31542
- .word 56062
- .word 7052
- .word 0
- .word 0
- .word 0
- .word 62356
- .word 59096
- .word 7020
- .word 0
- .word 0
- .word 0
- .word 28412
- .word 40533
- .word 6990
- .word 0
- .word 0
- .word 0
- .word 24080
- .word 50467
- .word 6958
- .word 0
- .word 0
- .word 0
- .word 33296
- .word 46841
- .word 6925
- .word 0
- .word 0
- .word 0
- .word 39600
- .word 38627
- .word 6897
- .word 0
- .word 0
- .word 0
- .word 14436
- .word 37607
- .word 6865
- .word 0
- .word 0
- .word 0
- .word 39032
- .word 56421
- .word 6833
- .word 0
- .word 0
- .word 0
- .word 64032
- .word 54987
- .word 6804
- .word 0
- .word 0
- .word 0
- .word 27648
- .word 42212
- .word 6768
- .word 0
- .word 0
- .word 0
- .word 43840
- .word 46107
- .word 6739
- .word 0
- .word 0
- .word 0
- .word 17316
- .word 36574
- .word 6711
- .word 0
- .word 0
- .word 0
- .word 8928
- .word 37652
- .word 6677
- .word 0
- .word 0
- .word 0
- .word 24944
- .word 47433
- .word 6648
- .word 0
- .word 0
- .word 0
- .word 27392
- .word 57430
- .word 6616
- .word 0
- .word 0
- .word 0
- .word 39848
- .word 43340
- .word 6585
- .word 0
- .word 0
- .word 0
- .word 64160
- .word 43542
- .word 6555
- .word 0
- .word 0
- .word 0
- .word 35226
- .word 63015
- .word 6525
- .word 0
- .word 0
- .word 0
- .word 40736
- .word 64368
- .word 6493
- .word 0
- .word 0
- .word 0
- .word 42168
- .word 49526
- .word 6462
- .word 0
- .word 0
- .word 0
- .word 45596
- .word 34243
- .word 6432
- .word 0
- .word 0
- .word 0
- .word 20690
- .word 39705
- .word 6401
- .word 0
- .word 0
- .word 0
- .word 54448
- .word 46856
- .word 6368
- .word 0
- .word 0
- .word 0
- .word 64392
- .word 62736
- .word 6337
- .word 0
- .word 0
- .word 0
- .word 12780
- .word 56461
- .word 6307
- .word 0
- .word 0
- .word 0
- .word 15360
- .word 49145
- .word 6277
- .word 0
- .word 0
- .word 0
- .word 20512
- .word 49931
- .word 6242
- .word 0
- .word 0
- .word 0
- .word 54512
- .word 55820
- .word 6212
- .word 0
- .word 0
- .word 0
- .word 8402
- .word 39333
- .word 6184
- .word 0
- .word 0
- .word 0
- .word 34094
- .word 53593
- .word 6153
- .word 0
- .word 0
- .word 0
- .word 31960
- .word 38817
- .word 6121
- .word 0
- .word 0
- .word 0
- .word 16954
- .word 39291
- .word 6091
- .word 0
- .word 0
- .word 0
- .word 49600
- .word 48765
- .word 6056
- .word 0
- .word 0
- .word 0
- .word 59580
- .word 56541
- .word 6029
- .word 0
- .word 0
- .word 0
- .word 35624
- .word 44550
- .word 5998
- .word 0
- .word 0
- .word 0
- .word 4142
- .word 47316
- .word 5967
- .word 0
- .word 0
- .word 0
- .word 43520
- .word 43612
- .word 5935
- .word 0
- .word 0
- .word 0
- .word 20976
- .word 40896
- .word 5902
- .word 0
- .word 0
- .word 0
- .word 63576
- .word 57729
- .word 5874
- .word 0
- .word 0
- .word 0
- .word 37288
- .word 33122
- .word 5843
- .word 0
- .word 0
- .word 0
- .word 24384
- .word 52079
- .word 5809
- .word 0
- .word 0
- .word 0
- .word 47952
- .word 58719
- .word 5779
- .word 0
- .word 0
- .word 0
- .word 44242
- .word 55445
- .word 5750
- .word 0
- .word 0
- .word 0
- .word 61232
- .word 38847
- .word 5716
- .word 0
- .word 0
- .word 0
- .word 63232
- .word 46039
- .word 5683
- .word 0
- .word 0
- .word 0
- .word 13396
- .word 42933
- .word 5657
- .word 0
- .word 0
- .word 0
- .word 27392
- .word 43305
- .word 5622
- .word 0
- .word 0
- .word 0
- .word 40708
- .word 35319
- .word 5595
- .word 0
- .word 0
- .word 0
- .word 44408
- .word 55685
- .word 5564
- .word 0
- .word 0
- .word 0
- .word 42090
- .word 44607
- .word 5533
- .word 0
- .word 0
- .word 0
- .word 25504
- .word 53466
- .word 5500
- .word 0
- .word 0
- .word 0
- .word 24208
- .word 33149
- .word 5470
- .word 0
- .word 0
- .word 0
- .word 5268
- .word 45375
- .word 5440
- .word 0
- .word 0
- .word 0
- .word 144
- .word 40000
- .word 5409
- .word 0
- .word 0
- .word 0
- .word 56688
- .word 52358
- .word 5376
- .word 0
- .word 0
- .word 0
- .word 25848
- .word 56175
- .word 5345
- .word 0
- .word 0
- .word 0
- .word 57900
- .word 44055
- .word 5315
- .word 0
- .word 0
- .word 0
- .word 24800
- .word 43437
- .word 5283
- .word 0
- .word 0
- .word 0
- .word 17984
- .word 54872
- .word 5249
- .word 0
- .word 0
- .word 0
- .word 25744
- .word 41345
- .word 5223
- .word 0
- .word 0
- .word 0
- .word 7668
- .word 43682
- .word 5191
- .word 0
- .word 0
- .word 0
- .word 47434
- .word 36705
- .word 5161
- .word 0
- .word 0
- .word 0
- .word 20888
- .word 40323
- .word 5129
- .word 0
- .word 0
- .word 0
- .word 3962
- .word 43032
- .word 5099
- .word 0
- .word 0
- .word 0
- .word 50270
- .word 49260
- .word 5068
- .word 0
- .word 0
- .word 0
- .word 20160
- .word 64041
- .word 5032
- .word 0
- .word 0
- .word 0
- .word 25624
- .word 36013
- .word 5004
- .word 0
- .word 0
- .word 0
- .word 48328
- .word 59345
- .word 4975
- .word 0
- .word 0
- .word 0
- .word 51508
- .word 63920
- .word 4943
- .word 0
- .word 0
- .word 0
- .word 27872
- .word 39135
- .word 4913
- .word 0
- .word 0
- .word 0
- .word 13590
- .word 58857
- .word 4882
- .word 0
- .word 0
- .word 0
- .word 50880
- .word 61323
- .word 4847
- .word 0
- .word 0
- .word 0
- .word 44802
- .word 37181
- .word 4820
- .word 0
- .word 0
- .word 0
- .word 53808
- .word 57813
- .word 4789
- .word 0
- .word 0
- .word 0
- .word 64424
- .word 49714
- .word 4757
- .word 0
- .word 0
- .word 0
- .word 31652
- .word 44011
- .word 4727
- .word 0
- .word 0
- .word 0
- .word 28252
- .word 50834
- .word 4696
- .word 0
- .word 0
- .word 0
- .word 30370
- .word 38742
- .word 4665
- .word 0
- .word 0
- .word 0
- .word 57728
- .word 58403
- .word 4628
- .word 0
- .word 0
- .word 0
- .word 35900
- .word 37112
- .word 4603
- .word 0
- .word 0
- .word 0
- .word 40764
- .word 40914
- .word 4572
- .word 0
- .word 0
- .word 0
- .word 21472
- .word 46910
- .word 4541
- .word 0
- .word 0
- .word 0
- .word 17854
- .word 35030
- .word 4510
- .word 0
- .word 0
- .word 0
- .word 4378
- .word 35776
- .word 4479
- .word 0
- .word 0
- .word 0
- .word 57962
- .word 55295
- .word 4448
- .word 0
- .word 0
- .word 0
- .word 64352
- .word 56717
- .word 4415
- .word 0
- .word 0
- .word 0
- .word 37744
- .word 49416
- .word 4384
- .word 0
- .word 0
- .word 0
- .word 38484
- .word 35759
- .word 4355
- .word 0
- .word 0
- .word 0
- .word 55020
- .word 54969
- .word 4324
- .word 0
- .word 0
- .word 0
- .word 9188
- .word 55223
- .word 4292
- .word 0
- .word 0
- .word 0
- .word 6822
- .word 43079
- .word 4262
- .word 0
- .word 0
- .word 0
- .word 48870
- .word 40943
- .word 4231
- .word 0
- .word 0
- .word 0
- .word 9936
- .word 42731
- .word 4198
- .word 0
- .word 0
- .word 0
- .word 23430
- .word 43136
- .word 4169
- .word 0
- .word 0
- .word 0
- .word 4700
- .word 55665
- .word 4137
- .word 0
- .word 0
- .word 0
- .word 8056
- .word 40216
- .word 4106
- .word 0
- .word 0
- .word 0
- .word 3716
- .word 45403
- .word 4075
- .word 0
- .word 0
- .word 0
- .word 53440
- .word 49488
- .word 4044
- .word 0
- .word 0
- .word 0
- .word 41776
- .word 50188
- .word 4013
- .word 0
- .word 0
- .word 0
- .word 20994
- .word 64556
- .word 3983
- .word 0
- .word 0
- .word 0
- .word 16252
- .word 60661
- .word 3951
- .word 0
- .word 0
- .word 0
- .word 61252
- .word 65021
- .word 3920
- .word 0
- .word 0
- .word 0
- .word 16236
- .word 43803
- .word 3889
- .word 0
- .word 0
- .word 0
- .word 63064
- .word 35308
- .word 3857
- .word 0
- .word 0
- .word 0
- .word 49096
- .word 39848
- .word 3828
- .word 0
- .word 0
- .word 0
- .word 15680
- .word 48673
- .word 3797
- .word 0
- .word 0
- .word 0
- .word 48068
- .word 50957
- .word 3766
- .word 0
- .word 0
- .word 0
- .word 20824
- .word 56086
- .word 3734
- .word 0
- .word 0
- .word 0
- .word 46504
- .word 43224
- .word 3704
- .word 0
- .word 0
- .word 0
- .word 52428
- .word 46094
- .word 3672
- .word 0
- .word 0
- .word 0
- .word 17548
- .word 52066
- .word 3642
- .word 0
- .word 0
- .word 0
- .word 61738
- .word 35565
- .word 3611
- .word 0
- .word 0
- .word 0
- .word 31184
- .word 50588
- .word 3579
- .word 0
- .word 0
- .word 0
- .word 1716
- .word 52681
- .word 3549
- .word 0
- .word 0
- .word 0
- .word 44656
- .word 43385
- .word 3518
- .word 0
- .word 0
- .word 0
- .word 12668
- .word 43259
- .word 3486
- .word 0
- .word 0
- .word 0
- .word 24544
- .word 35408
- .word 3453
- .word 0
- .word 0
- .word 0
- .word 28854
- .word 65018
- .word 3425
- .word 0
- .word 0
- .word 0
- .word 5696
- .word 40391
- .word 3393
- .word 0
- .word 0
- .word 0
- .word 39580
- .word 56400
- .word 3363
- .word 0
- .word 0
- .word 0
- .word 20428
- .word 39579
- .word 3332
- .word 0
- .word 0
- .word 0
- .word 32328
- .word 36727
- .word 3301
- .word 0
- .word 0
- .word 0
- .word 34020
- .word 54457
- .word 3270
- .word 0
- .word 0
- .word 0
- .word 34016
- .word 48400
- .word 3238
- .word 0
- .word 0
- .word 0
- .word 6922
- .word 51417
- .word 3208
- .word 0
- .word 0
- .word 0
- .word 27208
- .word 64641
- .word 3176
- .word 0
- .word 0
- .word 0
- .word 1802
- .word 48886
- .word 3146
- .word 0
- .word 0
- .word 0
- .word 35440
- .word 61590
- .word 3115
- .word 0
- .word 0
- .word 0
- .word 60610
- .word 51604
- .word 3084
- .word 0
- .word 0
- .word 0
- .word 5440
- .word 38199
- .word 3050
- .word 0
- .word 0
- .word 0
- .word 6914
- .word 43867
- .word 3022
- .word 0
- .word 0
- .word 0
- .word 24000
- .word 45256
- .word 2989
- .word 0
- .word 0
- .word 0
- .word 51496
- .word 57396
- .word 2959
- .word 0
- .word 0
- .word 0
- .word 11538
- .word 46256
- .word 2929
- .word 0
- .word 0
- .word 0
- .word 36802
- .word 48020
- .word 2898
- .word 0
- .word 0
- .word 0
- .word 57910
- .word 57903
- .word 2867
- .word 0
- .word 0
- .word 0
- .word 47484
- .word 48798
- .word 2835
- .word 0
- .word 0
- .word 0
- .word 57766
- .word 57709
- .word 2805
- .word 0
- .word 0
- .word 0
- .word 54064
- .word 47856
- .word 2774
- .word 0
- .word 0
- .word 0
- .word 49340
- .word 48080
- .word 2743
- .word 0
- .word 0
- .word 0
- .word 36454
- .word 56731
- .word 2712
- .word 0
- .word 0
- .word 0
- .word 51548
- .word 63385
- .word 2681
- .word 0
- .word 0
- .word 0
- .word 56000
- .word 48716
- .word 2645
- .word 0
- .word 0
- .word 0
- .word 44992
- .word 50040
- .word 2615
- .word 0
- .word 0
- .word 0
- .word 43136
- .word 58177
- .word 2585
- .word 0
- .word 0
- .word 0
- .word 49730
- .word 33270
- .word 2557
- .word 0
- .word 0
- .word 0
- .word 29808
- .word 51063
- .word 2526
- .word 0
- .word 0
- .word 0
- .word 25276
- .word 46724
- .word 2494
- .word 0
- .word 0
- .word 0
- .word 17324
- .word 35928
- .word 2463
- .word 0
- .word 0
- .word 0
- .word 52284
- .word 63916
- .word 2433
- .word 0
- .word 0
- .word 0
- .word 5414
- .word 46704
- .word 2402
- .word 0
- .word 0
- .word 0
- .word 51710
- .word 57168
- .word 2371
- .word 0
- .word 0
- .word 0
- .word 27366
- .word 49253
- .word 2340
- .word 0
- .word 0
- .word 0
- .word 45332
- .word 53033
- .word 2309
- .word 0
- .word 0
- .word 0
- .word 54152
- .word 37418
- .word 2276
- .word 0
- .word 0
- .word 0
- .word 53076
- .word 47398
- .word 2247
- .word 0
- .word 0
- .word 0
- .word 14374
- .word 59477
- .word 2216
- .word 0
- .word 0
- .word 0
- .word 59336
- .word 33435
- .word 2184
- .word 0
- .word 0
- .word 0
- .word 21612
- .word 43267
- .word 2154
- .word 0
- .word 0
- .word 0
- .word 34664
- .word 39372
- .word 2121
- .word 0
- .word 0
- .word 0
- .word 172
- .word 62761
- .word 2091
- .word 0
- .word 0
- .word 0
- .word 9816
- .word 40715
- .word 2060
- .word 0
- .word 0
- .word 0
- .word 65116
- .word 40481
- .word 2030
- .word 0
- .word 0
- .word 0
- .word 28066
- .word 39184
- .word 1999
- .word 0
- .word 0
- .word 0
- .word 37408
- .word 63923
- .word 1968
- .word 0
- .word 0
- .word 0
- .word 15760
- .word 42305
- .word 1937
- .word 0
- .word 0
- .word 0
- .word 28236
- .word 59340
- .word 1905
- .word 0
- .word 0
- .word 0
- .word 43258
- .word 59402
- .word 1875
- .word 0
- .word 0
- .word 0
- .word 19988
- .word 50087
- .word 1844
- .word 0
- .word 0
- .word 0
- .word 63456
- .word 47833
- .word 1810
- .word 0
- .word 0
- .word 0
- .word 65184
- .word 61426
- .word 1781
- .word 0
- .word 0
- .word 0
- .word 52982
- .word 48456
- .word 1751
- .word 0
- .word 0
- .word 0
- .word 30020
- .word 62809
- .word 1719
- .word 0
- .word 0
- .word 0
- .word 9096
- .word 63061
- .word 1688
- .word 0
- .word 0
- .word 0
- .word 59648
- .word 44374
- .word 1654
- .word 0
- .word 0
- .word 0
- .word 11456
- .word 33847
- .word 1625
- .word 0
- .word 0
- .word 0
- .word 12392
- .word 50500
- .word 1595
- .word 0
- .word 0
- .word 0
- .word 56432
- .word 59196
- .word 1563
- .word 0
- .word 0
- .word 0
- .word 61008
- .word 40265
- .word 1532
- .word 0
- .word 0
- .word 0
- .word 37842
- .word 33270
- .word 1503
- .word 0
- .word 0
- .word 0
- .word 37916
- .word 44543
- .word 1471
- .word 0
- .word 0
- .word 0
- .word 11490
- .word 36421
- .word 1441
- .word 0
- .word 0
- .word 0
- .word 19040
- .word 38397
- .word 1409
- .word 0
- .word 0
- .word 0
- .word 31224
- .word 47162
- .word 1379
- .word 0
- .word 0
- .word 0
- .word 52056
- .word 41461
- .word 1347
- .word 0
- .word 0
- .word 0
- .word 10810
- .word 56374
- .word 1317
- .word 0
- .word 0
- .word 0
- .word 5358
- .word 35086
- .word 1286
- .word 0
- .word 0
- .word 0
- .word 36640
- .word 50226
- .word 1251
- .word 0
- .word 0
- .word 0
- .word 33856
- .word 45597
- .word 1222
- .word 0
- .word 0
- .word 0
- .word 21552
- .word 63128
- .word 1191
- .word 0
- .word 0
- .word 0
- .word 1198
- .word 35616
- .word 1162
- .word 0
- .word 0
- .word 0
- .word 1232
- .word 59506
- .word 1131
- .word 0
- .word 0
- .word 0
- .word 51086
- .word 34963
- .word 1100
- .word 0
- .word 0
- .word 0
- .word 3960
- .word 39061
- .word 1067
- .word 0
- .word 0
- .word 0
- .word 4564
- .word 57134
- .word 1037
- .word 0
- .word 0
- .word 0
- .word 59468
- .word 35285
- .word 1007
- .word 0
- .word 0
- .word 0
- .word 63422
- .word 35431
- .word 976
- .word 0
- .word 0
- .word 0
- .word 38352
- .word 51462
- .word 945
- .word 0
- .word 0
- .word 0
- .word 25806
- .word 55660
- .word 914
- .word 0
- .word 0
- .word 0
- .word 38842
- .word 41327
- .word 883
- .word 0
- .word 0
- .word 0
- .word 17980
- .word 50458
- .word 852
- .word 0
- .word 0
- .word 0
- .word 61194
- .word 59710
- .word 821
- .word 0
- .word 0
- .word 0
- .word 21098
- .word 42086
- .word 790
- .word 0
- .word 0
- .word 0
- .word 16704
- .word 43341
- .word 757
- .word 0
- .word 0
- .word 0
- .word 46316
- .word 52840
- .word 728
- .word 0
- .word 0
- .word 0
- .word 20386
- .word 33936
- .word 697
- .word 0
- .word 0
- .word 0
- .word 20064
- .word 51864
- .word 664
- .word 0
- .word 0
- .word 0
- .word 2268
- .word 57500
- .word 634
- .word 0
- .word 0
- .word 0
- .word 11152
- .word 51171
- .word 604
- .word 0
- .word 0
- .word 0
- .word 23164
- .word 63727
- .word 572
- .word 0
- .word 0
- .word 0
- .word 20514
- .word 40280
- .word 542
- .word 0
- .word 0
- .word 0
- .word 21818
- .word 57922
- .word 511
- .word 0
- .word 0
- .word 0
- .word 32366
- .word 46413
- .word 480
- .word 0
- .word 0
- .word 0
- .word 53972
- .word 43148
- .word 449
- .word 0
- .word 0
- .word 0
- .word 30134
- .word 65133
- .word 418
- .word 0
- .word 0
- .word 0
- .word 15282
- .word 61516
- .word 387
- .word 0
- .word 0
- .word 0
- .word 49872
- .word 49222
- .word 355
- .word 0
- .word 0
- .word 0
- .word 9484
- .word 63958
- .word 325
- .word 0
- .word 0
- .word 0
- .word 47028
- .word 35341
- .word 294
- .word 0
- .word 0
- .word 0
- .word 6770
- .word 58613
- .word 263
- .word 0
- .word 0
- .word 0
- .word 33372
- .word 43448
- .word 232
- .word 0
- .word 0
- .word 0
- .word 27792
- .word 51629
- .word 198
- .word 0
- .word 0
- .word 0
- .word 19712
- .word 53691
- .word 170
- .word 0
- .word 0
- .word 0
- .word 42144
- .word 60929
- .word 135
- .word 0
- .word 0
- .word 0
- .word 35240
- .word 48799
- .word 107
- .word 0
- .word 0
- .word 0
- .word 910
- .word 51212
- .word 77
- .word 0
- .word 0
- .word 0
- .word 65062
- .word 33668
- .word 46
- .word 0
- .word 0
- .word 0
- .word 52624
- .word 51799
- .word 14
- .word 0
- .type __4onpi_31l,@object
- .size __4onpi_31l,6444
- .data
- .section .note.GNU-stack, "",@progbits
-# End
diff --git a/libm/x86/libm_sincos_huge.S b/libm/x86/libm_sincos_huge.S
deleted file mode 100644
index 4601b87..0000000
--- a/libm/x86/libm_sincos_huge.S
+++ /dev/null
@@ -1,668 +0,0 @@
-/*
-Copyright (c) 2014, Intel Corporation
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
-
- * Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
-
- * Neither the name of Intel Corporation nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
-ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-# -- Begin __libm_sincos_huge
- .text
- .align 16,0x90
- .hidden __libm_sincos_huge
- .globl __libm_sincos_huge
-__libm_sincos_huge:
-# parameter 1: 8 + %ebp
-# parameter 2: 16 + %ebp
-# parameter 3: 20 + %ebp
-..B1.1:
- pushl %ebp
- movl %esp, %ebp
- andl $-64, %esp
- pushl %esi
- pushl %edi
- pushl %ebx
- subl $52, %esp
- movl 16(%ebp), %eax
- movl 20(%ebp), %edx
- movl %eax, 32(%esp)
- movl %edx, 36(%esp)
-..B1.2:
- fnstcw 30(%esp)
-..B1.3:
- call ..L2
-..L2:
- popl %edi
- lea _GLOBAL_OFFSET_TABLE_+[. - ..L2](%edi), %edi
- movsd 8(%ebp), %xmm1
- movl 12(%ebp), %esi
- movl %esi, %eax
- andl $2147483647, %eax
- andps .L_2il0floatpacket.0@GOTOFF(%edi), %xmm1
- shrl $31, %esi
- movl %eax, 40(%esp)
- cmpl $1104150528, %eax
- movsd %xmm1, 8(%ebp)
- jae ..B1.11
-..B1.4:
- movsd _Pi4Inv@GOTOFF(%edi), %xmm0
- mulsd %xmm1, %xmm0
- movzwl 30(%esp), %edx
- movl %edx, %eax
- andl $768, %eax
- movsd %xmm0, (%esp)
- cmpl $768, %eax
- je ..B1.42
-..B1.5:
- orl $-64768, %edx
- movw %dx, 28(%esp)
-..B1.6:
- fldcw 28(%esp)
-..B1.7:
- movsd 8(%ebp), %xmm1
- movl $1, %ebx
-..B1.8:
- movl %ebx, 12(%esp)
- movl 4(%esp), %ebx
- movl %ebx, %eax
- movl %esi, 8(%esp)
- movl %ebx, %esi
- shrl $20, %esi
- andl $1048575, %eax
- movl %esi, %ecx
- orl $1048576, %eax
- negl %ecx
- movl %eax, %edx
- addl $19, %ecx
- addl $13, %esi
- movl %ecx, 24(%esp)
- shrl %cl, %edx
- movl %esi, %ecx
- shll %cl, %eax
- movl 24(%esp), %ecx
- movl (%esp), %esi
- shrl %cl, %esi
- orl %esi, %eax
- cmpl $1094713344, %ebx
- movsd %xmm1, 16(%esp)
- fldl 16(%esp)
- cmovb %edx, %eax
- movl 8(%esp), %esi
- lea 1(%eax), %edx
- movl %edx, %ebx
- andl $-2, %ebx
- movl %ebx, 16(%esp)
- fildl 16(%esp)
- movl 12(%esp), %ebx
- cmpl $1094713344, 40(%esp)
- jae ..B1.10
-..B1.9:
- fldl _Pi4x3@GOTOFF(%edi)
- fmul %st(1), %st
- faddp %st, %st(2)
- fldl 8+_Pi4x3@GOTOFF(%edi)
- fmul %st(1), %st
- faddp %st, %st(2)
- fldl 16+_Pi4x3@GOTOFF(%edi)
- fmulp %st, %st(1)
- faddp %st, %st(1)
- jmp ..B1.17
-..B1.10:
- fldl _Pi4x4@GOTOFF(%edi)
- fmul %st(1), %st
- faddp %st, %st(2)
- fldl 8+_Pi4x4@GOTOFF(%edi)
- fmul %st(1), %st
- faddp %st, %st(2)
- fldl 16+_Pi4x4@GOTOFF(%edi)
- fmul %st(1), %st
- faddp %st, %st(2)
- fldl 24+_Pi4x4@GOTOFF(%edi)
- fmulp %st, %st(1)
- faddp %st, %st(1)
- jmp ..B1.17
-..B1.11:
- movzwl 30(%esp), %edx
- movl %edx, %eax
- andl $768, %eax
- cmpl $768, %eax
- je ..B1.43
-..B1.12:
- orl $-64768, %edx
- movw %dx, 28(%esp)
-..B1.13:
- fldcw 28(%esp)
-..B1.14:
- movsd 8(%ebp), %xmm1
- movl $1, %ebx
-..B1.15:
- movsd %xmm1, 16(%esp)
- fldl 16(%esp)
- addl $-32, %esp
- lea 32(%esp), %eax
- fstpt (%esp)
- movl $0, 12(%esp)
- movl %eax, 16(%esp)
- call __libm_reduce_pi04l
-..B1.46:
- addl $32, %esp
-..B1.16:
- fldl (%esp)
- lea 1(%eax), %edx
- fldl 8(%esp)
- faddp %st, %st(1)
-..B1.17:
- movl %edx, %ecx
- addl $3, %eax
- shrl $2, %ecx
- andl $1, %ecx
- shrl $2, %eax
- xorl %ecx, %esi
- movl 36(%esp), %ecx
- andl $1, %eax
- andl $3, %ecx
- cmpl $3, %ecx
- jne ..B1.25
-..B1.18:
- fldt 84+_SP@GOTOFF(%edi)
- fld %st(1)
- fmul %st(2), %st
- testb $2, %dl
- fmul %st, %st(1)
- fldt 72+_SP@GOTOFF(%edi)
- faddp %st, %st(2)
- fmul %st, %st(1)
- fldt 60+_SP@GOTOFF(%edi)
- faddp %st, %st(2)
- fmul %st, %st(1)
- fldt 48+_SP@GOTOFF(%edi)
- faddp %st, %st(2)
- fmul %st, %st(1)
- fldt 36+_SP@GOTOFF(%edi)
- faddp %st, %st(2)
- fmul %st, %st(1)
- fldt 24+_SP@GOTOFF(%edi)
- faddp %st, %st(2)
- fmul %st, %st(1)
- fldt 12+_SP@GOTOFF(%edi)
- faddp %st, %st(2)
- fmul %st, %st(1)
- fldt _SP@GOTOFF(%edi)
- faddp %st, %st(2)
- fmul %st, %st(1)
- fldt 84+_CP@GOTOFF(%edi)
- fmul %st(1), %st
- fldt 72+_CP@GOTOFF(%edi)
- faddp %st, %st(1)
- fmul %st(1), %st
- fldt 60+_CP@GOTOFF(%edi)
- faddp %st, %st(1)
- fmul %st(1), %st
- fldt 48+_CP@GOTOFF(%edi)
- faddp %st, %st(1)
- fmul %st(1), %st
- fldt 36+_CP@GOTOFF(%edi)
- faddp %st, %st(1)
- fmul %st(1), %st
- fldt 24+_CP@GOTOFF(%edi)
- faddp %st, %st(1)
- fmul %st(1), %st
- fldt 12+_CP@GOTOFF(%edi)
- faddp %st, %st(1)
- fmul %st(1), %st
- fldt _CP@GOTOFF(%edi)
- faddp %st, %st(1)
- fmulp %st, %st(1)
- fldl _ones@GOTOFF(%edi,%esi,8)
- fldl _ones@GOTOFF(%edi,%eax,8)
- je ..B1.22
-..B1.19:
- fmulp %st, %st(4)
- testl %ebx, %ebx
- fxch %st(2)
- fmul %st(3), %st
- movl 32(%esp), %eax
- faddp %st, %st(3)
- fxch %st(2)
- fstpl (%eax)
- fmul %st, %st(1)
- faddp %st, %st(1)
- fstpl 8(%eax)
- je ..B1.21
-..B1.20:
- fldcw 30(%esp)
-..B1.21:
- addl $52, %esp
- popl %ebx
- popl %edi
- popl %esi
- movl %ebp, %esp
- popl %ebp
- ret
-..B1.22:
- fxch %st(1)
- fmulp %st, %st(4)
- testl %ebx, %ebx
- fxch %st(2)
- fmul %st(3), %st
- movl 32(%esp), %eax
- faddp %st, %st(3)
- fxch %st(2)
- fstpl 8(%eax)
- fmul %st, %st(1)
- faddp %st, %st(1)
- fstpl (%eax)
- je ..B1.24
-..B1.23:
- fldcw 30(%esp)
-..B1.24:
- addl $52, %esp
- popl %ebx
- popl %edi
- popl %esi
- movl %ebp, %esp
- popl %ebp
- ret
-..B1.25:
- testb $2, 36(%esp)
- je ..B1.33
-..B1.26:
- fld %st(0)
- testb $2, %dl
- fmul %st(1), %st
- fld %st(0)
- fmul %st(1), %st
- je ..B1.30
-..B1.27:
- fstp %st(2)
- fldt 84+_CP@GOTOFF(%edi)
- testl %ebx, %ebx
- fmul %st(2), %st
- fldt 72+_CP@GOTOFF(%edi)
- fmul %st(3), %st
- fldt 60+_CP@GOTOFF(%edi)
- movl 32(%esp), %eax
- faddp %st, %st(2)
- fxch %st(1)
- fmul %st(3), %st
- fldt 48+_CP@GOTOFF(%edi)
- faddp %st, %st(2)
- fxch %st(1)
- fmul %st(3), %st
- fldt 36+_CP@GOTOFF(%edi)
- faddp %st, %st(2)
- fxch %st(1)
- fmul %st(3), %st
- fldt 24+_CP@GOTOFF(%edi)
- faddp %st, %st(2)
- fxch %st(1)
- fmul %st(3), %st
- fldt 12+_CP@GOTOFF(%edi)
- faddp %st, %st(2)
- fxch %st(1)
- fmulp %st, %st(3)
- fldt _CP@GOTOFF(%edi)
- faddp %st, %st(1)
- fmulp %st, %st(1)
- faddp %st, %st(1)
- fldl _ones@GOTOFF(%edi,%esi,8)
- fmul %st, %st(1)
- faddp %st, %st(1)
- fstpl 8(%eax)
- je ..B1.29
-..B1.28:
- fldcw 30(%esp)
-..B1.29:
- addl $52, %esp
- popl %ebx
- popl %edi
- popl %esi
- movl %ebp, %esp
- popl %ebp
- ret
-..B1.30:
- fldt 84+_SP@GOTOFF(%edi)
- testl %ebx, %ebx
- fmul %st(1), %st
- fldt 72+_SP@GOTOFF(%edi)
- fmul %st(2), %st
- fldt 60+_SP@GOTOFF(%edi)
- movl 32(%esp), %eax
- faddp %st, %st(2)
- fxch %st(1)
- fmul %st(2), %st
- fldt 48+_SP@GOTOFF(%edi)
- faddp %st, %st(2)
- fxch %st(1)
- fmul %st(2), %st
- fldt 36+_SP@GOTOFF(%edi)
- faddp %st, %st(2)
- fxch %st(1)
- fmul %st(2), %st
- fldt 24+_SP@GOTOFF(%edi)
- faddp %st, %st(2)
- fxch %st(1)
- fmul %st(2), %st
- fldt 12+_SP@GOTOFF(%edi)
- faddp %st, %st(2)
- fxch %st(1)
- fmulp %st, %st(2)
- fldt _SP@GOTOFF(%edi)
- faddp %st, %st(1)
- fmulp %st, %st(2)
- faddp %st, %st(1)
- fldl _ones@GOTOFF(%edi,%esi,8)
- fmulp %st, %st(2)
- fmul %st(1), %st
- faddp %st, %st(1)
- fstpl 8(%eax)
- je ..B1.32
-..B1.31:
- fldcw 30(%esp)
-..B1.32:
- addl $52, %esp
- popl %ebx
- popl %edi
- popl %esi
- movl %ebp, %esp
- popl %ebp
- ret
-..B1.33:
- testb $1, 36(%esp)
- je ..B1.41
-..B1.34:
- fld %st(0)
- testb $2, %dl
- fmul %st(1), %st
- fld %st(0)
- fmul %st(1), %st
- je ..B1.38
-..B1.35:
- fldt 84+_SP@GOTOFF(%edi)
- testl %ebx, %ebx
- fmul %st(1), %st
- fldt 72+_SP@GOTOFF(%edi)
- fmul %st(2), %st
- fldt 60+_SP@GOTOFF(%edi)
- faddp %st, %st(2)
- fxch %st(1)
- fmul %st(2), %st
- fldt 48+_SP@GOTOFF(%edi)
- faddp %st, %st(2)
- fxch %st(1)
- fmul %st(2), %st
- fldt 36+_SP@GOTOFF(%edi)
- faddp %st, %st(2)
- fxch %st(1)
- fmul %st(2), %st
- fldt 24+_SP@GOTOFF(%edi)
- faddp %st, %st(2)
- fxch %st(1)
- fmul %st(2), %st
- fldt 12+_SP@GOTOFF(%edi)
- faddp %st, %st(2)
- fxch %st(1)
- fmulp %st, %st(2)
- fldt _SP@GOTOFF(%edi)
- faddp %st, %st(1)
- fmulp %st, %st(2)
- faddp %st, %st(1)
- fldl _ones@GOTOFF(%edi,%eax,8)
- fmulp %st, %st(2)
- fmul %st(1), %st
- movl 32(%esp), %eax
- faddp %st, %st(1)
- fstpl (%eax)
- je ..B1.37
-..B1.36:
- fldcw 30(%esp)
-..B1.37:
- addl $52, %esp
- popl %ebx
- popl %edi
- popl %esi
- movl %ebp, %esp
- popl %ebp
- ret
-..B1.38:
- fstp %st(2)
- fldt 84+_CP@GOTOFF(%edi)
- testl %ebx, %ebx
- fmul %st(2), %st
- fldt 72+_CP@GOTOFF(%edi)
- fmul %st(3), %st
- fldt 60+_CP@GOTOFF(%edi)
- faddp %st, %st(2)
- fxch %st(1)
- fmul %st(3), %st
- fldt 48+_CP@GOTOFF(%edi)
- faddp %st, %st(2)
- fxch %st(1)
- fmul %st(3), %st
- fldt 36+_CP@GOTOFF(%edi)
- faddp %st, %st(2)
- fxch %st(1)
- fmul %st(3), %st
- fldt 24+_CP@GOTOFF(%edi)
- faddp %st, %st(2)
- fxch %st(1)
- fmul %st(3), %st
- fldt 12+_CP@GOTOFF(%edi)
- faddp %st, %st(2)
- fxch %st(1)
- fmulp %st, %st(3)
- fldt _CP@GOTOFF(%edi)
- faddp %st, %st(1)
- fmulp %st, %st(1)
- faddp %st, %st(1)
- fldl _ones@GOTOFF(%edi,%eax,8)
- fmul %st, %st(1)
- movl 32(%esp), %eax
- faddp %st, %st(1)
- fstpl (%eax)
- je ..B1.40
-..B1.39:
- fldcw 30(%esp)
-..B1.40:
- addl $52, %esp
- popl %ebx
- popl %edi
- popl %esi
- movl %ebp, %esp
- popl %ebp
- ret
-..B1.41:
- fstp %st(0)
- addl $52, %esp
- popl %ebx
- popl %edi
- popl %esi
- movl %ebp, %esp
- popl %ebp
- ret
-..B1.42:
- xorl %ebx, %ebx
- jmp ..B1.8
-..B1.43:
- xorl %ebx, %ebx
- jmp ..B1.15
- .align 16,0x90
- .type __libm_sincos_huge,@function
- .size __libm_sincos_huge,.-__libm_sincos_huge
- .data
-# -- End __libm_sincos_huge
- .section .rodata, "a"
- .align 16
- .align 16
-.L_2il0floatpacket.0:
- .long 0xffffffff,0x7fffffff,0x00000000,0x00000000
- .type .L_2il0floatpacket.0,@object
- .size .L_2il0floatpacket.0,16
- .align 16
-_Pi4Inv:
- .long 1841940611
- .long 1072979760
- .type _Pi4Inv,@object
- .size _Pi4Inv,8
- .space 8, 0x00 # pad
- .align 16
-_Pi4x3:
- .long 1413754880
- .long 3219726843
- .long 993632256
- .long 1027030475
- .long 3773204808
- .long 3129236486
- .type _Pi4x3,@object
- .size _Pi4x3,24
- .space 8, 0x00 # pad
- .align 16
-_Pi4x4:
- .long 1413480448
- .long 3219726843
- .long 442499072
- .long 3183522913
- .long 771751936
- .long 3146979722
- .long 622873025
- .long 3110831002
- .type _Pi4x4,@object
- .size _Pi4x4,32
- .align 16
-_SP:
- .word 43691
- .word 43690
- .word 43690
- .word 43690
- .word 49148
- .word 0
- .word 34951
- .word 34952
- .word 34952
- .word 34952
- .word 16376
- .word 0
- .word 50471
- .word 3328
- .word 208
- .word 53261
- .word 49138
- .word 0
- .word 17910
- .word 46614
- .word 7466
- .word 47343
- .word 16364
- .word 0
- .word 33371
- .word 14743
- .word 11071
- .word 55090
- .word 49125
- .word 0
- .word 48947
- .word 35764
- .word 12250
- .word 45202
- .word 16350
- .word 0
- .word 17574
- .word 60698
- .word 10735
- .word 55102
- .word 49110
- .word 0
- .word 34320
- .word 12415
- .word 25249
- .word 51489
- .word 16334
- .word 0
- .type _SP,@object
- .size _SP,96
- .align 16
-_CP:
- .word 0
- .word 0
- .word 0
- .word 32768
- .word 49150
- .word 0
- .word 43685
- .word 43690
- .word 43690
- .word 43690
- .word 16378
- .word 0
- .word 39983
- .word 2912
- .word 24758
- .word 46603
- .word 49141
- .word 0
- .word 61476
- .word 3244
- .word 208
- .word 53261
- .word 16367
- .word 0
- .word 1022
- .word 16229
- .word 32187
- .word 37874
- .word 49129
- .word 0
- .word 55373
- .word 44526
- .word 50840
- .word 36726
- .word 16354
- .word 0
- .word 55994
- .word 65145
- .word 59958
- .word 51657
- .word 49114
- .word 0
- .word 15046
- .word 2976
- .word 1998
- .word 54661
- .word 16338
- .word 0
- .type _CP,@object
- .size _CP,96
- .align 16
-_ones:
- .long 0
- .long 1072693248
- .long 0
- .long 3220176896
- .type _ones,@object
- .size _ones,16
- .data
- .hidden __libm_reduce_pi04l
- .section .note.GNU-stack, "",@progbits
-# End
diff --git a/libm/x86/libm_tancot_huge.S b/libm/x86/libm_tancot_huge.S
deleted file mode 100644
index cdaa820..0000000
--- a/libm/x86/libm_tancot_huge.S
+++ /dev/null
@@ -1,750 +0,0 @@
-/*
-Copyright (c) 2014, Intel Corporation
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
-
- * Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
-
- * Neither the name of Intel Corporation nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
-ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-# -- Begin __libm_tancot_huge
- .text
- .align 16,0x90
- .hidden __libm_tancot_huge
- .globl __libm_tancot_huge
-__libm_tancot_huge:
-# parameter 1: 8 + %ebp
-# parameter 2: 16 + %ebp
-# parameter 3: 20 + %ebp
-..B1.1:
- pushl %ebp
- movl %esp, %ebp
- andl $-64, %esp
- pushl %esi
- pushl %edi
- pushl %ebx
- subl $52, %esp
- movl 16(%ebp), %eax
- movl 20(%ebp), %ebx
- movl %eax, 40(%esp)
-..B1.2:
- fnstcw 38(%esp)
-..B1.3:
- movl 12(%ebp), %edx
- movl %edx, %eax
- andl $2147483647, %eax
- shrl $31, %edx
- movl %edx, 44(%esp)
- cmpl $1104150528, %eax
- call ..L2
-..L2:
- popl %esi
- lea _GLOBAL_OFFSET_TABLE_+[. - ..L2](%esi), %esi
- jae ..B1.11
-..B1.4:
- movsd 8(%ebp), %xmm1
- movzwl 38(%esp), %ecx
- movl %ecx, %edx
- andl $768, %edx
- andps .L_2il0floatpacket.0@GOTOFF(%esi), %xmm1
- cmpl $768, %edx
- movsd _Pi4Inv@GOTOFF(%esi), %xmm0
- mulsd %xmm1, %xmm0
- movsd %xmm1, 8(%ebp)
- movsd %xmm0, (%esp)
- je ..B1.39
-..B1.5:
- orl $-64768, %ecx
- movw %cx, 36(%esp)
-..B1.6:
- fldcw 36(%esp)
-..B1.7:
- movsd 8(%ebp), %xmm1
- movl $1, %edi
-..B1.8:
- movl %esi, 12(%esp)
- movl 4(%esp), %esi
- movl %esi, %edx
- movl %edi, 24(%esp)
- movl %esi, %edi
- shrl $20, %edi
- andl $1048575, %edx
- movl %edi, %ecx
- orl $1048576, %edx
- negl %ecx
- addl $13, %edi
- movl %ebx, 8(%esp)
- addl $19, %ecx
- movl %edx, %ebx
- movl %ecx, 28(%esp)
- shrl %cl, %ebx
- movl %edi, %ecx
- shll %cl, %edx
- movl 28(%esp), %ecx
- movl (%esp), %edi
- shrl %cl, %edi
- orl %edi, %edx
- cmpl $1094713344, %esi
- movsd %xmm1, 16(%esp)
- fldl 16(%esp)
- cmovb %ebx, %edx
- movl 24(%esp), %edi
- movl 12(%esp), %esi
- lea 1(%edx), %ebx
- andl $-2, %ebx
- movl %ebx, 16(%esp)
- cmpl $1094713344, %eax
- fildl 16(%esp)
- movl 8(%esp), %ebx
- jae ..B1.10
-..B1.9:
- fldl _Pi4x3@GOTOFF(%esi)
- fmul %st(1), %st
- faddp %st, %st(2)
- fldl 8+_Pi4x3@GOTOFF(%esi)
- fmul %st(1), %st
- faddp %st, %st(2)
- fldl 16+_Pi4x3@GOTOFF(%esi)
- fmulp %st, %st(1)
- faddp %st, %st(1)
- jmp ..B1.17
-..B1.10:
- fldl _Pi4x4@GOTOFF(%esi)
- fmul %st(1), %st
- faddp %st, %st(2)
- fldl 8+_Pi4x4@GOTOFF(%esi)
- fmul %st(1), %st
- faddp %st, %st(2)
- fldl 16+_Pi4x4@GOTOFF(%esi)
- fmul %st(1), %st
- faddp %st, %st(2)
- fldl 24+_Pi4x4@GOTOFF(%esi)
- fmulp %st, %st(1)
- faddp %st, %st(1)
- jmp ..B1.17
-..B1.11:
- movzwl 38(%esp), %edx
- movl %edx, %eax
- andl $768, %eax
- cmpl $768, %eax
- je ..B1.40
-..B1.12:
- orl $-64768, %edx
- movw %dx, 36(%esp)
-..B1.13:
- fldcw 36(%esp)
-..B1.14:
- movl $1, %edi
-..B1.15:
- movsd 8(%ebp), %xmm0
- addl $-32, %esp
- andps .L_2il0floatpacket.0@GOTOFF(%esi), %xmm0
- lea 32(%esp), %eax
- movsd %xmm0, 16(%eax)
- fldl 16(%eax)
- fstpt (%esp)
- movl $0, 12(%esp)
- movl %eax, 16(%esp)
- call __libm_reduce_pi04l
-..B1.43:
- movl %eax, %edx
- addl $32, %esp
-..B1.16:
- fldl (%esp)
- fldl 8(%esp)
- faddp %st, %st(1)
-..B1.17:
- movl %ebx, %eax
- andl $3, %eax
- cmpl $3, %eax
- jne ..B1.24
-..B1.18:
- fldl _ones@GOTOFF(%esi)
- incl %edx
- fdiv %st(1), %st
- testb $2, %dl
- fstpt 24(%esp)
- fld %st(0)
- fmul %st(1), %st
- fld %st(0)
- fmul %st(1), %st
- fldt 36+_TP@GOTOFF(%esi)
- fmul %st(2), %st
- fldt 24+_TP@GOTOFF(%esi)
- faddp %st, %st(1)
- fmul %st(2), %st
- fldt 12+_TP@GOTOFF(%esi)
- faddp %st, %st(1)
- fmul %st(2), %st
- fldt 36+_TQ@GOTOFF(%esi)
- fmul %st(3), %st
- fldt 24+_TQ@GOTOFF(%esi)
- faddp %st, %st(1)
- fmul %st(3), %st
- fldt 12+_TQ@GOTOFF(%esi)
- faddp %st, %st(1)
- fmul %st(3), %st
- fldt _TQ@GOTOFF(%esi)
- faddp %st, %st(1)
- fldt _TP@GOTOFF(%esi)
- faddp %st, %st(2)
- fldt 132+_GP@GOTOFF(%esi)
- fmul %st(3), %st
- fldt 120+_GP@GOTOFF(%esi)
- fmul %st(4), %st
- fldt 108+_GP@GOTOFF(%esi)
- faddp %st, %st(2)
- fxch %st(1)
- fmul %st(4), %st
- fldt 96+_GP@GOTOFF(%esi)
- faddp %st, %st(2)
- fxch %st(1)
- fmul %st(4), %st
- fldt 84+_GP@GOTOFF(%esi)
- faddp %st, %st(2)
- fxch %st(1)
- fmul %st(4), %st
- fldt 72+_GP@GOTOFF(%esi)
- faddp %st, %st(2)
- fxch %st(1)
- fmul %st(4), %st
- fldt 60+_GP@GOTOFF(%esi)
- faddp %st, %st(2)
- fxch %st(1)
- fmul %st(4), %st
- fldt 48+_GP@GOTOFF(%esi)
- faddp %st, %st(2)
- fxch %st(1)
- fmul %st(4), %st
- fldt 36+_GP@GOTOFF(%esi)
- faddp %st, %st(2)
- fxch %st(1)
- fmul %st(4), %st
- fldt 24+_GP@GOTOFF(%esi)
- faddp %st, %st(2)
- fxch %st(1)
- fmulp %st, %st(4)
- fldt 12+_GP@GOTOFF(%esi)
- faddp %st, %st(1)
- fmul %st(4), %st
- fmul %st(5), %st
- fldt _GP@GOTOFF(%esi)
- faddp %st, %st(4)
- fxch %st(3)
- fmul %st(5), %st
- faddp %st, %st(3)
- je ..B1.20
-..B1.19:
- fldt 24(%esp)
- fxch %st(1)
- fdivrp %st, %st(2)
- fxch %st(1)
- fmulp %st, %st(3)
- movl 44(%esp), %eax
- xorl $1, %eax
- fxch %st(2)
- fmul %st(3), %st
- fldl _ones@GOTOFF(%esi,%eax,8)
- fmul %st, %st(2)
- fmul %st, %st(3)
- fxch %st(3)
- faddp %st, %st(2)
- fxch %st(1)
- fstpl 16(%esp)
- fmul %st(1), %st
- fxch %st(1)
- fmulp %st, %st(2)
- movsd 16(%esp), %xmm0
- faddp %st, %st(1)
- fstpl 16(%esp)
- movsd 16(%esp), %xmm1
- jmp ..B1.21
-..B1.20:
- fdivrp %st, %st(1)
- fmulp %st, %st(2)
- fxch %st(1)
- fmul %st(2), %st
- movl 44(%esp), %eax
- fldl _ones@GOTOFF(%esi,%eax,8)
- fmul %st, %st(1)
- fmul %st, %st(3)
- fxch %st(3)
- faddp %st, %st(1)
- fstpl 16(%esp)
- fmul %st(1), %st
- fldt 24(%esp)
- fmulp %st, %st(2)
- movsd 16(%esp), %xmm0
- faddp %st, %st(1)
- fstpl 16(%esp)
- movsd 16(%esp), %xmm1
-..B1.21:
- testl %edi, %edi
- je ..B1.23
-..B1.22:
- fldcw 38(%esp)
-..B1.23:
- movl 40(%esp), %eax
- movsd %xmm0, (%eax)
- movsd %xmm1, 8(%eax)
- addl $52, %esp
- popl %ebx
- popl %edi
- popl %esi
- movl %ebp, %esp
- popl %ebp
- ret
-..B1.24:
- testb $2, %bl
- je ..B1.31
-..B1.25:
- incl %edx
- fld %st(0)
- fmul %st(1), %st
- testb $2, %dl
- je ..B1.27
-..B1.26:
- fldl _ones@GOTOFF(%esi)
- fdiv %st(2), %st
- fld %st(1)
- fmul %st(2), %st
- fldt 132+_GP@GOTOFF(%esi)
- fmul %st(1), %st
- fldt 120+_GP@GOTOFF(%esi)
- fmul %st(2), %st
- fldt 108+_GP@GOTOFF(%esi)
- movl 44(%esp), %eax
- faddp %st, %st(2)
- fxch %st(1)
- fmul %st(2), %st
- xorl $1, %eax
- fldt 96+_GP@GOTOFF(%esi)
- faddp %st, %st(2)
- fxch %st(1)
- fmul %st(2), %st
- fldt 84+_GP@GOTOFF(%esi)
- faddp %st, %st(2)
- fxch %st(1)
- fmul %st(2), %st
- fldt 72+_GP@GOTOFF(%esi)
- faddp %st, %st(2)
- fxch %st(1)
- fmul %st(2), %st
- fldt 60+_GP@GOTOFF(%esi)
- faddp %st, %st(2)
- fxch %st(1)
- fmul %st(2), %st
- fldt 48+_GP@GOTOFF(%esi)
- faddp %st, %st(2)
- fxch %st(1)
- fmul %st(2), %st
- fldt 36+_GP@GOTOFF(%esi)
- faddp %st, %st(2)
- fxch %st(1)
- fmul %st(2), %st
- fldt 24+_GP@GOTOFF(%esi)
- faddp %st, %st(2)
- fxch %st(1)
- fmulp %st, %st(2)
- fldt 12+_GP@GOTOFF(%esi)
- faddp %st, %st(1)
- fmulp %st, %st(3)
- fldt _GP@GOTOFF(%esi)
- faddp %st, %st(1)
- fmul %st(3), %st
- fxch %st(2)
- fmulp %st, %st(3)
- fxch %st(1)
- faddp %st, %st(2)
- fldl _ones@GOTOFF(%esi,%eax,8)
- fmul %st, %st(2)
- fmulp %st, %st(1)
- faddp %st, %st(1)
- fstpl 16(%esp)
- movsd 16(%esp), %xmm0
- jmp ..B1.28
-..B1.27:
- fldt 36+_TP@GOTOFF(%esi)
- fmul %st(1), %st
- fldt 24+_TP@GOTOFF(%esi)
- movl 44(%esp), %eax
- faddp %st, %st(1)
- fmul %st(1), %st
- fldt 36+_TQ@GOTOFF(%esi)
- fmul %st(2), %st
- fldt 24+_TQ@GOTOFF(%esi)
- faddp %st, %st(1)
- fmul %st(2), %st
- fldt 12+_TQ@GOTOFF(%esi)
- faddp %st, %st(1)
- fmul %st(2), %st
- fldt _TQ@GOTOFF(%esi)
- faddp %st, %st(1)
- fldt 12+_TP@GOTOFF(%esi)
- faddp %st, %st(2)
- fxch %st(1)
- fmul %st(2), %st
- fldt _TP@GOTOFF(%esi)
- faddp %st, %st(1)
- fdivp %st, %st(1)
- fmulp %st, %st(1)
- fmul %st(1), %st
- fldl _ones@GOTOFF(%esi,%eax,8)
- fmul %st, %st(1)
- fmulp %st, %st(2)
- faddp %st, %st(1)
- fstpl 16(%esp)
- movsd 16(%esp), %xmm0
-..B1.28:
- testl %edi, %edi
- je ..B1.30
-..B1.29:
- fldcw 38(%esp)
-..B1.30:
- movl 40(%esp), %eax
- movsd %xmm0, (%eax)
- addl $52, %esp
- popl %ebx
- popl %edi
- popl %esi
- movl %ebp, %esp
- popl %ebp
- ret
-..B1.31:
- testb $1, %bl
- je ..B1.38
-..B1.32:
- incl %edx
- fld %st(0)
- fmul %st(1), %st
- testb $2, %dl
- je ..B1.34
-..B1.33:
- fldt 36+_TP@GOTOFF(%esi)
- fmul %st(1), %st
- fldt 24+_TP@GOTOFF(%esi)
- movl 44(%esp), %eax
- faddp %st, %st(1)
- fmul %st(1), %st
- xorl $1, %eax
- fldt 36+_TQ@GOTOFF(%esi)
- fmul %st(2), %st
- fldt 24+_TQ@GOTOFF(%esi)
- faddp %st, %st(1)
- fmul %st(2), %st
- fldt 12+_TQ@GOTOFF(%esi)
- faddp %st, %st(1)
- fmul %st(2), %st
- fldt _TQ@GOTOFF(%esi)
- faddp %st, %st(1)
- fldt 12+_TP@GOTOFF(%esi)
- faddp %st, %st(2)
- fxch %st(1)
- fmul %st(2), %st
- fldt _TP@GOTOFF(%esi)
- faddp %st, %st(1)
- fdivp %st, %st(1)
- fmulp %st, %st(1)
- fmul %st(1), %st
- fldl _ones@GOTOFF(%esi,%eax,8)
- fmul %st, %st(1)
- fmulp %st, %st(2)
- faddp %st, %st(1)
- fstpl 16(%esp)
- movsd 16(%esp), %xmm0
- jmp ..B1.35
-..B1.34:
- fldl _ones@GOTOFF(%esi)
- fdiv %st(2), %st
- fld %st(1)
- fmul %st(2), %st
- fldt 132+_GP@GOTOFF(%esi)
- fmul %st(1), %st
- fldt 120+_GP@GOTOFF(%esi)
- fmul %st(2), %st
- fldt 108+_GP@GOTOFF(%esi)
- movl 44(%esp), %eax
- faddp %st, %st(2)
- fxch %st(1)
- fmul %st(2), %st
- fldt 96+_GP@GOTOFF(%esi)
- faddp %st, %st(2)
- fxch %st(1)
- fmul %st(2), %st
- fldt 84+_GP@GOTOFF(%esi)
- faddp %st, %st(2)
- fxch %st(1)
- fmul %st(2), %st
- fldt 72+_GP@GOTOFF(%esi)
- faddp %st, %st(2)
- fxch %st(1)
- fmul %st(2), %st
- fldt 60+_GP@GOTOFF(%esi)
- faddp %st, %st(2)
- fxch %st(1)
- fmul %st(2), %st
- fldt 48+_GP@GOTOFF(%esi)
- faddp %st, %st(2)
- fxch %st(1)
- fmul %st(2), %st
- fldt 36+_GP@GOTOFF(%esi)
- faddp %st, %st(2)
- fxch %st(1)
- fmul %st(2), %st
- fldt 24+_GP@GOTOFF(%esi)
- faddp %st, %st(2)
- fxch %st(1)
- fmulp %st, %st(2)
- fldt 12+_GP@GOTOFF(%esi)
- faddp %st, %st(1)
- fmulp %st, %st(3)
- fldt _GP@GOTOFF(%esi)
- faddp %st, %st(1)
- fmul %st(3), %st
- fxch %st(2)
- fmulp %st, %st(3)
- fxch %st(1)
- faddp %st, %st(2)
- fldl _ones@GOTOFF(%esi,%eax,8)
- fmul %st, %st(2)
- fmulp %st, %st(1)
- faddp %st, %st(1)
- fstpl 16(%esp)
- movsd 16(%esp), %xmm0
-..B1.35:
- testl %edi, %edi
- je ..B1.37
-..B1.36:
- fldcw 38(%esp)
-..B1.37:
- movl 40(%esp), %eax
- movsd %xmm0, 8(%eax)
- addl $52, %esp
- popl %ebx
- popl %edi
- popl %esi
- movl %ebp, %esp
- popl %ebp
- ret
-..B1.38:
- fstp %st(0)
- addl $52, %esp
- popl %ebx
- popl %edi
- popl %esi
- movl %ebp, %esp
- popl %ebp
- ret
-..B1.39:
- xorl %edi, %edi
- jmp ..B1.8
-..B1.40:
- xorl %edi, %edi
- jmp ..B1.15
- .align 16,0x90
- .type __libm_tancot_huge,@function
- .size __libm_tancot_huge,.-__libm_tancot_huge
- .data
-# -- End __libm_tancot_huge
- .section .rodata, "a"
- .align 16
- .align 16
-.L_2il0floatpacket.0:
- .long 0xffffffff,0x7fffffff,0x00000000,0x00000000
- .type .L_2il0floatpacket.0,@object
- .size .L_2il0floatpacket.0,16
- .align 16
-_Pi4Inv:
- .long 1841940611
- .long 1072979760
- .type _Pi4Inv,@object
- .size _Pi4Inv,8
- .space 8, 0x00 # pad
- .align 16
-_Pi4x3:
- .long 1413754880
- .long 3219726843
- .long 993632256
- .long 1027030475
- .long 3773204808
- .long 3129236486
- .type _Pi4x3,@object
- .size _Pi4x3,24
- .space 8, 0x00 # pad
- .align 16
-_Pi4x4:
- .long 1413480448
- .long 3219726843
- .long 442499072
- .long 3183522913
- .long 771751936
- .long 3146979722
- .long 622873025
- .long 3110831002
- .type _Pi4x4,@object
- .size _Pi4x4,32
- .align 16
-_ones:
- .long 0
- .long 1072693248
- .long 0
- .long 3220176896
- .type _ones,@object
- .size _ones,16
- .align 16
-_TP:
- .word 19670
- .word 44908
- .word 50960
- .word 50786
- .word 49149
- .word 0
- .word 19206
- .word 45228
- .word 54194
- .word 52268
- .word 16377
- .word 0
- .word 227
- .word 51280
- .word 43560
- .word 38195
- .word 49139
- .word 0
- .word 12272
- .word 18029
- .word 6715
- .word 45670
- .word 16357
- .word 0
- .type _TP,@object
- .size _TP,48
- .align 16
-_TQ:
- .word 14748
- .word 33681
- .word 5452
- .word 38090
- .word 49151
- .word 0
- .word 46755
- .word 50026
- .word 17634
- .word 35372
- .word 16382
- .word 0
- .word 46863
- .word 53352
- .word 42702
- .word 59869
- .word 49145
- .word 0
- .word 33295
- .word 20942
- .word 32118
- .word 39935
- .word 16371
- .word 0
- .type _TQ,@object
- .size _TQ,48
- .align 16
-_GP:
- .word 43691
- .word 43690
- .word 43690
- .word 43690
- .word 49149
- .word 0
- .word 46639
- .word 2912
- .word 24758
- .word 46603
- .word 49145
- .word 0
- .word 57255
- .word 2218
- .word 21984
- .word 35507
- .word 49142
- .word 0
- .word 34208
- .word 43033
- .word 48281
- .word 56811
- .word 49138
- .word 0
- .word 28773
- .word 27191
- .word 31071
- .word 45908
- .word 49135
- .word 0
- .word 43257
- .word 33777
- .word 11976
- .word 37184
- .word 49132
- .word 0
- .word 62410
- .word 35990
- .word 36363
- .word 60269
- .word 49128
- .word 0
- .word 13659
- .word 55568
- .word 26569
- .word 48851
- .word 49125
- .word 0
- .word 10347
- .word 46238
- .word 47188
- .word 39576
- .word 49122
- .word 0
- .word 2161
- .word 6703
- .word 25719
- .word 64708
- .word 49118
- .word 0
- .word 42329
- .word 7593
- .word 44754
- .word 47734
- .word 49115
- .word 0
- .word 163
- .word 32746
- .word 39875
- .word 61957
- .word 49112
- .word 0
- .type _GP,@object
- .size _GP,144
- .data
- .hidden __libm_reduce_pi04l
- .section .note.GNU-stack, "",@progbits
-# End
diff --git a/libm/x86/s_atan.S b/libm/x86/s_atan.S
deleted file mode 100644
index 71ca4db..0000000
--- a/libm/x86/s_atan.S
+++ /dev/null
@@ -1,934 +0,0 @@
-/*
-Copyright (c) 2014, Intel Corporation
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
-
- * Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
-
- * Neither the name of Intel Corporation nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
-ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/******************************************************************************/
-// ALGORITHM DESCRIPTION
-// ---------------------
-//
-// This implementation uses the main path for |x| in [2^{-5},2^65).
-// For |x| in [2^{-64},2^{-5}), a secondary path is used.
-// For the biased exponent of X within 3FFH-64 and 3FF+64, we use one branch.
-// We use the following definition of B and X` so that the formula
-// atan(X) = Tau + atan( (X`-B) / (One + BX) ) is correct
-//
-// X = (-1)^s * 2^k * 1. x1 x2 ... x52
-//
-// Define X` = 0 if k >= 5; and X` = |X| otherwise
-// Define One = 0 if k >= 5; and One = 1 otherwise
-// Define B = 0 if k <= -6; B = 2^k * 1.x1 x2 x3 x4 1 if -5 <= k <= 4
-// Define B = 2^5 * 1.0 0 ... 0 if k >= 5
-//
-// Tau is 0 if k <= -6;
-// Tau is atan( B ) if -5 <= k <= 4
-// Tau is pi/2 if k >= 5
-//
-// Special cases:
-// atan(NaN) = quiet NaN
-// atan(+/-INF) = +/-Pi/2
-// atan(+/-0) = +/-0
-//
-/******************************************************************************/
-
-#include <private/bionic_asm.h>
-# -- Begin static_func
- .text
- .align __bionic_asm_align
- .type static_func, @function
-static_func:
-..B1.1:
- call ..L2
-..L2:
- popl %eax
- lea _GLOBAL_OFFSET_TABLE_+[. - ..L2](%eax), %eax
- lea static_const_table@GOTOFF(%eax), %eax
- ret
- .size static_func,.-static_func
-# -- End static_func
-
-# -- Begin atan
-ENTRY(atan)
-# parameter 1: 8 + %ebp
-..B2.1:
-..B2.2:
- pushl %ebp
- movl %esp, %ebp
- subl $104, %esp
- movl %ebx, 48(%esp)
- call static_func
- movl %eax, %ebx
- movsd 112(%esp), %xmm0
- movsd 2640(%ebx), %xmm3
- movsd 2624(%ebx), %xmm5
- movsd 2656(%ebx), %xmm4
- movsd %xmm0, 8(%esp)
- pextrw $3, %xmm0, %edx
- andpd %xmm0, %xmm3
- pshufd $68, %xmm0, %xmm1
- orpd %xmm4, %xmm3
- movl %edx, %eax
- andl $32767, %edx
- subl $16288, %edx
- cmpl $159, %edx
- ja .L_2TAG_PACKET_0.0.2
- mulsd %xmm3, %xmm1
- subsd %xmm3, %xmm0
- addsd %xmm5, %xmm1
- divsd %xmm1, %xmm0
- addl $1, %edx
- movsd 2672(%ebx), %xmm2
- movsd 2688(%ebx), %xmm4
- andl $32768, %eax
- xorpd %xmm7, %xmm7
- pinsrw $3, %eax, %xmm7
- addl %edx, %edx
- movsd (%ebx,%edx,8), %xmm6
- movsd 8(%ebx,%edx,8), %xmm5
- xorpd %xmm7, %xmm5
- xorpd %xmm7, %xmm6
- movsd 2680(%ebx), %xmm7
- pshufd $68, %xmm0, %xmm1
- mulsd %xmm0, %xmm0
- pshufd $68, %xmm1, %xmm3
- addsd %xmm6, %xmm1
- mulsd %xmm0, %xmm2
- addsd %xmm0, %xmm4
- subsd %xmm1, %xmm6
- mulsd %xmm0, %xmm4
- addsd %xmm7, %xmm2
- mulsd %xmm3, %xmm0
- addsd %xmm3, %xmm6
- mulsd %xmm2, %xmm0
- addsd 2696(%ebx), %xmm4
- addsd %xmm5, %xmm6
- mulsd %xmm4, %xmm0
- addsd %xmm6, %xmm0
- addsd %xmm1, %xmm0
- movsd %xmm0, (%esp)
- fldl (%esp)
- jmp .L_2TAG_PACKET_1.0.2
-.L_2TAG_PACKET_0.0.2:
- addl $944, %edx
- cmpl $1103, %edx
- ja .L_2TAG_PACKET_2.0.2
- movsd 2672(%ebx), %xmm4
- movsd 2688(%ebx), %xmm7
- movsd 8(%esp), %xmm0
- mulsd %xmm1, %xmm1
- movsd 2680(%ebx), %xmm2
- movsd 2696(%ebx), %xmm5
- mulsd %xmm1, %xmm4
- addsd %xmm1, %xmm7
- movapd %xmm1, %xmm6
- mulsd %xmm0, %xmm1
- addsd %xmm4, %xmm2
- mulsd %xmm6, %xmm7
- mulsd %xmm1, %xmm2
- addsd %xmm5, %xmm7
- mulsd %xmm7, %xmm2
- addsd %xmm2, %xmm0
- movsd %xmm0, (%esp)
- fldl (%esp)
- jmp .L_2TAG_PACKET_1.0.2
-.L_2TAG_PACKET_2.0.2:
- addl $15344, %edx
- cmpl $16368, %edx
- ja .L_2TAG_PACKET_3.0.2
- movsd 8(%esp), %xmm0
- movsd 8(%esp), %xmm1
- cmpl $16, %edx
- jae .L_2TAG_PACKET_4.0.2
- mulsd %xmm0, %xmm1
-.L_2TAG_PACKET_4.0.2:
- movsd %xmm0, (%esp)
- fldl (%esp)
- jmp .L_2TAG_PACKET_1.0.2
-.L_2TAG_PACKET_3.0.2:
- cmpl $17392, %edx
- jae .L_2TAG_PACKET_5.0.2
- xorpd %xmm1, %xmm1
- movl $49136, %ecx
- pinsrw $3, %ecx, %xmm1
- divsd %xmm0, %xmm1
- movsd 2672(%ebx), %xmm2
- movsd 2688(%ebx), %xmm4
- andl $32768, %eax
- xorpd %xmm7, %xmm7
- pinsrw $3, %eax, %xmm7
- addl %edx, %edx
- movsd 2592(%ebx), %xmm6
- movsd 2600(%ebx), %xmm5
- xorpd %xmm7, %xmm5
- xorpd %xmm7, %xmm6
- movsd 2680(%ebx), %xmm7
- pshufd $68, %xmm1, %xmm0
- mulsd %xmm1, %xmm1
- pshufd $68, %xmm0, %xmm3
- addsd %xmm6, %xmm0
- mulsd %xmm1, %xmm2
- addsd %xmm1, %xmm4
- subsd %xmm0, %xmm6
- mulsd %xmm1, %xmm4
- addsd %xmm7, %xmm2
- mulsd %xmm3, %xmm1
- addsd %xmm3, %xmm6
- mulsd %xmm2, %xmm1
- addsd 2696(%ebx), %xmm4
- addsd %xmm5, %xmm6
- mulsd %xmm4, %xmm1
- addsd %xmm6, %xmm1
- addsd %xmm1, %xmm0
- movsd %xmm0, (%esp)
- fldl (%esp)
- jmp .L_2TAG_PACKET_1.0.2
-.L_2TAG_PACKET_5.0.2:
- movsd 8(%esp), %xmm4
- movsd 2608(%ebx), %xmm0
- movsd 2592(%ebx), %xmm2
- movsd 2600(%ebx), %xmm3
- movd %xmm1, %eax
- psrlq $32, %xmm1
- movd %xmm1, %edx
- andl $2147483647, %edx
- cmpl $2146435072, %edx
- jae .L_2TAG_PACKET_6.0.2
-.L_2TAG_PACKET_7.0.2:
- andnpd %xmm4, %xmm0
- orpd %xmm0, %xmm2
- orpd %xmm3, %xmm0
- addsd %xmm2, %xmm0
- movsd %xmm0, (%esp)
- fldl (%esp)
- jmp .L_2TAG_PACKET_1.0.2
-.L_2TAG_PACKET_6.0.2:
- subl $2146435072, %edx
- orl %edx, %eax
- cmpl $0, %eax
- je .L_2TAG_PACKET_7.0.2
- movapd %xmm4, %xmm0
- addsd %xmm0, %xmm0
- movsd %xmm0, (%esp)
- fldl (%esp)
-.L_2TAG_PACKET_1.0.2:
- movl 48(%esp), %ebx
- movl %ebp, %esp
- popl %ebp
- ret
-..B2.3:
-END(atan)
-# -- End atan
-
-# Start file scope ASM
-ALIAS_SYMBOL(atanl, atan);
-# End file scope ASM
- .section .rodata, "a"
- .align 16
- .align 16
-static_const_table:
- .long 0
- .long 0
- .long 0
- .long 0
- .long 3819695742
- .long 1067482761
- .long 2398680355
- .long 3155462074
- .long 2998791009
- .long 1067548225
- .long 3868465248
- .long 3157182472
- .long 3339424991
- .long 1067613680
- .long 3296670360
- .long 1010752543
- .long 2710002256
- .long 1067679126
- .long 3403896007
- .long 1010910768
- .long 3275701428
- .long 1067744562
- .long 119959933
- .long 1011482843
- .long 2908636881
- .long 1067809988
- .long 2464489612
- .long 1011545526
- .long 3777889398
- .long 1067875403
- .long 3262682165
- .long 1009703919
- .long 3759667419
- .long 1067940807
- .long 1838130851
- .long 3157373556
- .long 732369940
- .long 1068006200
- .long 1203428313
- .long 1010055371
- .long 1166616461
- .long 1068071580
- .long 2901274051
- .long 3158549977
- .long 2945472892
- .long 1068136947
- .long 3726120658
- .long 1009762715
- .long 3954480976
- .long 1068202301
- .long 1289173457
- .long 1009429861
- .long 2081752829
- .long 1068267642
- .long 1836909874
- .long 1006212095
- .long 3807999788
- .long 1068332968
- .long 2172459940
- .long 3156162078
- .long 2731789884
- .long 1068398280
- .long 3450718392
- .long 3159216547
- .long 1044477961
- .long 1068463577
- .long 2230553229
- .long 1011424339
- .long 1486930287
- .long 1068530218
- .long 2861547474
- .long 1012041376
- .long 2293016881
- .long 1068595466
- .long 136843272
- .long 1012684797
- .long 201518157
- .long 1068660680
- .long 63231984
- .long 1012427198
- .long 4054234584
- .long 1068725856
- .long 3927006960
- .long 1011878955
- .long 1246477213
- .long 1068790995
- .long 1494265652
- .long 3155219350
- .long 678186699
- .long 1068856093
- .long 1264361424
- .long 3159256693
- .long 2690594995
- .long 1068921148
- .long 3906996379
- .long 1009288267
- .long 3362611517
- .long 1068986159
- .long 1650970041
- .long 3158331771
- .long 3102162111
- .long 1069051124
- .long 365917035
- .long 3160264153
- .long 2352611067
- .long 1069116041
- .long 4008970190
- .long 3159478182
- .long 1594134794
- .long 1069180908
- .long 466690178
- .long 1012526501
- .long 1345079306
- .long 1069245723
- .long 2268273568
- .long 3160164092
- .long 2163300970
- .long 1069310484
- .long 2750834800
- .long 3158113482
- .long 352522716
- .long 1069375190
- .long 1750411372
- .long 1011790845
- .long 848541647
- .long 1069439838
- .long 2164207573
- .long 1011698350
- .long 40647312
- .long 1069504427
- .long 2949165434
- .long 3159107267
- .long 2216766270
- .long 1069574357
- .long 2197920765
- .long 3161055954
- .long 1090914384
- .long 1069638757
- .long 2330454674
- .long 1013365998
- .long 387601244
- .long 1069703022
- .long 3185681168
- .long 1013434071
- .long 3991640484
- .long 1069767144
- .long 1313211590
- .long 3161087959
- .long 3322489502
- .long 1069831118
- .long 3013977995
- .long 1013053011
- .long 3121698570
- .long 1069894936
- .long 4069015667
- .long 1013023362
- .long 4289964660
- .long 1069958591
- .long 1736191156
- .long 3158266731
- .long 3903312386
- .long 1070022077
- .long 1833592413
- .long 3159731471
- .long 3818449864
- .long 1070085387
- .long 851036429
- .long 3159730451
- .long 2097480306
- .long 1070148515
- .long 3506390884
- .long 3160462302
- .long 1611694502
- .long 1070211454
- .long 2785735540
- .long 3160465144
- .long 1464694796
- .long 1070274198
- .long 4229277299
- .long 3159907000
- .long 1299612775
- .long 1070336741
- .long 4116653788
- .long 3160427739
- .long 1310544789
- .long 1070399077
- .long 1064430331
- .long 1013218202
- .long 2253168030
- .long 1070461200
- .long 1405044609
- .long 3157623179
- .long 1159567373
- .long 1070523105
- .long 2353445521
- .long 3159992176
- .long 1359373750
- .long 1070605818
- .long 1748171336
- .long 3161879263
- .long 908341706
- .long 1070667034
- .long 3372710815
- .long 3161775245
- .long 1743027350
- .long 1070727765
- .long 687089934
- .long 3160507171
- .long 2055355646
- .long 1070787992
- .long 2392855242
- .long 1013682469
- .long 690426164
- .long 1070847697
- .long 1103926666
- .long 1014052810
- .long 1483247847
- .long 1070906862
- .long 2082645847
- .long 3161345479
- .long 392040270
- .long 1070965472
- .long 2407720023
- .long 1014053754
- .long 2673846014
- .long 1071023511
- .long 1293605532
- .long 3158464385
- .long 1384215810
- .long 1071080967
- .long 2446095872
- .long 3159216407
- .long 3101660631
- .long 1071137826
- .long 698040758
- .long 1014855328
- .long 2094057058
- .long 1071194078
- .long 2282048339
- .long 1014040385
- .long 1712750594
- .long 1071249712
- .long 1204372378
- .long 3162276464
- .long 1411515787
- .long 1071304719
- .long 949080808
- .long 1015006403
- .long 931538085
- .long 1071359091
- .long 3027127039
- .long 1014307233
- .long 179139065
- .long 1071412821
- .long 4285547492
- .long 3161934731
- .long 3387721259
- .long 1071465902
- .long 373225773
- .long 1013486625
- .long 2132236852
- .long 1071544299
- .long 3250533429
- .long 1014031677
- .long 1942070284
- .long 1071645596
- .long 1237964179
- .long 3163239113
- .long 1532707802
- .long 1071695380
- .long 330645583
- .long 1012495610
- .long 2294184979
- .long 1071743834
- .long 3959472897
- .long 1015833116
- .long 3805060714
- .long 1071790961
- .long 2671256142
- .long 1013727772
- .long 2215037898
- .long 1071836770
- .long 2683359117
- .long 1015831902
- .long 483661594
- .long 1071881273
- .long 836288326
- .long 3162648643
- .long 1534679894
- .long 1071924486
- .long 373258696
- .long 3162470096
- .long 1538714628
- .long 1071966430
- .long 3199433068
- .long 1015325501
- .long 527642555
- .long 1072007128
- .long 3636832592
- .long 3161843145
- .long 291339150
- .long 1072046605
- .long 890169537
- .long 3160586117
- .long 2450210201
- .long 1072084888
- .long 1636353294
- .long 3163193400
- .long 2411367951
- .long 1072122007
- .long 374899873
- .long 1011331750
- .long 681549971
- .long 1072157992
- .long 506411689
- .long 1015373954
- .long 1466745541
- .long 1072192873
- .long 2143860931
- .long 1013364334
- .long 2845622366
- .long 1072226682
- .long 2869178209
- .long 3162423682
- .long 2838871438
- .long 1072275456
- .long 3742223599
- .long 1014338577
- .long 4200275274
- .long 1072337034
- .long 1566539915
- .long 3161839550
- .long 3034733530
- .long 1072394897
- .long 652621408
- .long 3162261964
- .long 3207412993
- .long 1072449290
- .long 3206124665
- .long 1014408733
- .long 624461478
- .long 1072500450
- .long 932437485
- .long 1015204343
- .long 767665908
- .long 1072548600
- .long 1037911952
- .long 3163527627
- .long 1110773639
- .long 1072593952
- .long 2371517912
- .long 3160465741
- .long 1940828530
- .long 1072636704
- .long 2731408428
- .long 3162895795
- .long 1911329388
- .long 1072677041
- .long 1773089615
- .long 3159569267
- .long 1764715788
- .long 1072704191
- .long 691346949
- .long 3164069946
- .long 3332979233
- .long 1072722195
- .long 3550733983
- .long 1014770628
- .long 1321870254
- .long 1072739231
- .long 1415315820
- .long 1016224052
- .long 3657429030
- .long 1072755365
- .long 3910539033
- .long 1015966402
- .long 4197624557
- .long 1072770661
- .long 2333399254
- .long 3164546480
- .long 1512059493
- .long 1072785177
- .long 2701510318
- .long 1016178092
- .long 453379037
- .long 1072798965
- .long 4046344253
- .long 3162814364
- .long 1942345162
- .long 1072818388
- .long 621134147
- .long 1016335195
- .long 4210176273
- .long 1072842164
- .long 2701013387
- .long 3164326619
- .long 4185644010
- .long 1072863795
- .long 4163699341
- .long 1016203112
- .long 679688788
- .long 1072883543
- .long 4147276762
- .long 1014066750
- .long 29432865
- .long 1072901630
- .long 970415797
- .long 1016902063
- .long 4070721092
- .long 1072918247
- .long 2539004411
- .long 3163736096
- .long 2252468843
- .long 1072933561
- .long 3424082887
- .long 3163407177
- .long 2929724825
- .long 1072947712
- .long 3661482235
- .long 3163846989
- .long 1377513368
- .long 1072960824
- .long 3987926680
- .long 1013647908
- .long 1031632908
- .long 1072973003
- .long 3672217151
- .long 1016614619
- .long 2516508130
- .long 1072984342
- .long 545855020
- .long 3162728930
- .long 3792452178
- .long 1072994923
- .long 3420119467
- .long 1016471430
- .long 3147791459
- .long 1073004818
- .long 1342204979
- .long 1013937254
- .long 999189752
- .long 1073014090
- .long 1006335472
- .long 3162850919
- .long 711011011
- .long 1073022794
- .long 4633488
- .long 3162966895
- .long 15640363
- .long 1073030980
- .long 1686389560
- .long 3164376226
- .long 1218463589
- .long 1073042382
- .long 1526837110
- .long 3163533985
- .long 2538470555
- .long 1073056144
- .long 2273304406
- .long 3163784996
- .long 1229720947
- .long 1073068489
- .long 2971628206
- .long 3162356540
- .long 3115427016
- .long 1073079621
- .long 4215132957
- .long 3164282762
- .long 4030612557
- .long 1073089709
- .long 1913251691
- .long 3163671292
- .long 2728521257
- .long 1073098892
- .long 2861089500
- .long 1015454459
- .long 1118696283
- .long 1073107285
- .long 1628948053
- .long 1016179658
- .long 2682711255
- .long 1073114984
- .long 2906306266
- .long 1014142643
- .long 2073898081
- .long 1073122072
- .long 1322740454
- .long 3164497217
- .long 1403700297
- .long 1073128618
- .long 416137895
- .long 3162781466
- .long 2502685617
- .long 1073134681
- .long 3242008732
- .long 1014593495
- .long 1531926851
- .long 1073140313
- .long 1362708094
- .long 1016517604
- .long 3572814411
- .long 1073145557
- .long 3709790527
- .long 1012646874
- .long 1695536111
- .long 1073150453
- .long 3980346340
- .long 1016705136
- .long 2363057203
- .long 1073155033
- .long 2551194792
- .long 1012569695
- .long 2873365682
- .long 1073159327
- .long 3181154748
- .long 1017041450
- .long 1053384691
- .long 1073165288
- .long 3074536879
- .long 1016965660
- .long 3270542712
- .long 1073172451
- .long 2535319415
- .long 3163051778
- .long 1353631484
- .long 1073178850
- .long 1173833755
- .long 1015534537
- .long 3511218460
- .long 1073184599
- .long 1243608109
- .long 3161592122
- .long 4121259284
- .long 1073189793
- .long 398584912
- .long 3163829923
- .long 1193862106
- .long 1073194509
- .long 1873745539
- .long 3163802819
- .long 3861949790
- .long 1073198808
- .long 3841261147
- .long 1015587248
- .long 1486904578
- .long 1073202745
- .long 1634726776
- .long 3163847886
- .long 2879153715
- .long 1073206362
- .long 200456242
- .long 3164138657
- .long 385353253
- .long 1073209698
- .long 1186355517
- .long 1014887155
- .long 1125865839
- .long 1073212783
- .long 203561262
- .long 3161244927
- .long 1221361475
- .long 1073215645
- .long 3382476563
- .long 1014936138
- .long 2077323573
- .long 1073218307
- .long 1005121005
- .long 3164430752
- .long 215611373
- .long 1073220790
- .long 353198764
- .long 3164485137
- .long 2347419265
- .long 1073223110
- .long 1103143360
- .long 1016542137
- .long 1379112765
- .long 1073225284
- .long 381583533
- .long 3162870833
- .long 3891198463
- .long 1073228298
- .long 1771275754
- .long 1014654681
- .long 3395914051
- .long 1073231917
- .long 2350900914
- .long 3164013978
- .long 2799919478
- .long 1073235146
- .long 2893950164
- .long 3163260901
- .long 1138673476
- .long 1073238045
- .long 2622204785
- .long 3164174388
- .long 3408855940
- .long 1073240661
- .long 2800881650
- .long 1016008624
- .long 2044858738
- .long 1073243035
- .long 604544785
- .long 1017022901
- .long 2578795176
- .long 1073245198
- .long 2557332925
- .long 1016135165
- .long 4196285314
- .long 1073247177
- .long 2032365307
- .long 1016194735
- .long 224877747
- .long 1073248996
- .long 497926916
- .long 1016947111
- .long 3271386490
- .long 1073250671
- .long 2689994846
- .long 1016631513
- .long 813635989
- .long 1073252221
- .long 747035277
- .long 3164530136
- .long 369829519
- .long 1073253658
- .long 2182033858
- .long 3163190340
- .long 1187679052
- .long 1073254994
- .long 673954443
- .long 1016149821
- .long 4232586098
- .long 1073256239
- .long 497775200
- .long 3162179015
- .long 426690558
- .long 1073257404
- .long 3063343247
- .long 1016865578
- .long 1624065902
- .long 1073258494
- .long 1354224996
- .long 3163503778
- .long 1413754136
- .long 1073291771
- .long 856972295
- .long 1016178214
- .long 1413754136
- .long 1073291771
- .long 856972295
- .long 1016178214
- .long 4294967295
- .long 2147483647
- .long 0
- .long 0
- .long 0
- .long 1072693248
- .long 0
- .long 0
- .long 0
- .long 4294901760
- .long 0
- .long 0
- .long 0
- .long 32768
- .long 0
- .long 0
- .long 2006262985
- .long 1069310863
- .long 2358449471
- .long 3217342131
- .long 3845454352
- .long 1069952297
- .long 2829679149
- .long 1073771565
- .type static_const_table,@object
- .size static_const_table,2704
- .data
- .section .note.GNU-stack, "",@progbits
-# End
diff --git a/libm/x86/s_cbrt.S b/libm/x86/s_cbrt.S
deleted file mode 100644
index 53d3cc2..0000000
--- a/libm/x86/s_cbrt.S
+++ /dev/null
@@ -1,738 +0,0 @@
-/*
-Copyright (c) 2014, Intel Corporation
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
-
- * Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
-
- * Neither the name of Intel Corporation nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
-ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/******************************************************************************/
-// ALGORITHM DESCRIPTION
-// ---------------------
-//
-// Assume x=2^{3*k+j} * 1.b1 b2 ... b5 b6 ... b52, where j = 0,1,2.
-// Let r=(x*2^{-3k-j} - 1.b1 b2 ... b5 1)* rcp[b1 b2 ..b5],
-// where rcp[b1 b2 .. b5]=1/(1.b1 b2 b3 b4 b5 1) in double precision
-// cbrt(2^j * 1. b1 b2 .. b5 1) is approximated as T[j][b1..b5]+D[j][b1..b5]
-// (T stores the high 53 bits, D stores the low order bits)
-// Result=2^k*T+(2^k*T*r)*P+2^k*D
-// where P=p1+p2*r+..+p8*r^7
-//
-// Special cases:
-// cbrt(NaN) = quiet NaN, and raise invalid exception
-// cbrt(INF) = that INF
-// cbrt(+/-0) = +/-0
-//
-/******************************************************************************/
-
-#include <private/bionic_asm.h>
-# -- Begin static_func
- .text
- .align __bionic_asm_align
- .type static_func, @function
-static_func:
-..B1.1:
- call ..L2
-..L2:
- popl %eax
- lea _GLOBAL_OFFSET_TABLE_+[. - ..L2](%eax), %eax
- lea static_const_table@GOTOFF(%eax), %eax
- ret
- .size static_func,.-static_func
-# -- End static_func
-
-# -- Begin cbrt
-ENTRY(cbrt)
-# parameter 1: 8 + %ebp
-..B2.1:
-..B2.2:
- pushl %ebp
- movl %esp, %ebp
- subl $120, %esp
- movl %esi, 52(%esp)
- call static_func
- movl %eax, %esi
- movsd 128(%esp), %xmm0
- movapd %xmm0, %xmm7
- movsd %xmm0, 8(%esp)
- movl $524032, %edx
- movsd 64(%esi), %xmm5
- movsd 80(%esi), %xmm3
- psrlq $44, %xmm7
- pextrw $0, %xmm7, %ecx
- movd %xmm7, %eax
- movsd 96(%esi), %xmm1
- movsd 112(%esi), %xmm2
- movl %ebx, 16(%esp)
- andl $248, %ecx
- movsd 128(%ecx,%esi), %xmm4
- movl %eax, %ebx
- andl %eax, %edx
- cmpl $0, %edx
- je .L_2TAG_PACKET_0.0.2
- cmpl $524032, %edx
- je .L_2TAG_PACKET_1.0.2
- shrl $8, %edx
- shrl $8, %ebx
- andpd %xmm0, %xmm2
- andpd %xmm5, %xmm0
- orpd %xmm2, %xmm3
- orpd %xmm0, %xmm1
- movapd (%esi), %xmm5
- movl $5462, %eax
- movapd 16(%esi), %xmm6
- mull %edx
- movl %ebx, %edx
- andl $2047, %ebx
- shrl $14, %eax
- andl $2048, %edx
- subl %eax, %ebx
- subl %eax, %ebx
- subl %eax, %ebx
- shll $8, %ebx
- addl $682, %eax
- orl %edx, %eax
- movd %eax, %xmm7
- addl %ebx, %ecx
- psllq $52, %xmm7
-.L_2TAG_PACKET_2.0.2:
- movapd 32(%esi), %xmm2
- movapd 48(%esi), %xmm0
- subsd %xmm3, %xmm1
- movq %xmm7, %xmm3
- mulsd 384(%ecx,%esi), %xmm7
- mulsd %xmm4, %xmm1
- mulsd 1152(%ecx,%esi), %xmm3
- movapd %xmm1, %xmm4
- unpcklpd %xmm1, %xmm1
- mulpd %xmm1, %xmm5
- mulpd %xmm1, %xmm6
- mulpd %xmm1, %xmm1
- addpd %xmm5, %xmm2
- addpd %xmm6, %xmm0
- mulpd %xmm1, %xmm2
- mulpd %xmm1, %xmm1
- mulsd %xmm7, %xmm4
- addpd %xmm2, %xmm0
- movl 16(%esp), %ebx
- mulsd %xmm0, %xmm1
- unpckhpd %xmm0, %xmm0
- addsd %xmm1, %xmm0
- mulsd %xmm4, %xmm0
- addsd %xmm3, %xmm0
- addsd %xmm7, %xmm0
- movsd %xmm0, (%esp)
- fldl (%esp)
- jmp .L_2TAG_PACKET_3.0.2
-.L_2TAG_PACKET_0.0.2:
- mulsd 1984(%esi), %xmm0
- movq %xmm0, %xmm7
- movl $524032, %edx
- psrlq $44, %xmm7
- pextrw $0, %xmm7, %ecx
- movd %xmm7, %eax
- andl $248, %ecx
- movsd 128(%ecx,%esi), %xmm4
- movl %eax, %ebx
- andl %eax, %edx
- shrl $8, %edx
- shrl $8, %ebx
- cmpl $0, %edx
- je .L_2TAG_PACKET_4.0.2
- andpd %xmm0, %xmm2
- andpd %xmm5, %xmm0
- orpd %xmm2, %xmm3
- orpd %xmm0, %xmm1
- movapd (%esi), %xmm5
- movl $5462, %eax
- movapd 16(%esi), %xmm6
- mull %edx
- movl %ebx, %edx
- andl $2047, %ebx
- shrl $14, %eax
- andl $2048, %edx
- subl %eax, %ebx
- subl %eax, %ebx
- subl %eax, %ebx
- shll $8, %ebx
- addl $661, %eax
- orl %edx, %eax
- movd %eax, %xmm7
- addl %ebx, %ecx
- psllq $52, %xmm7
- jmp .L_2TAG_PACKET_2.0.2
-.L_2TAG_PACKET_4.0.2:
- cmpl $0, %ebx
- jne .L_2TAG_PACKET_5.0.2
- movl 16(%esp), %ebx
- fldl 1952(%esi)
- jmp .L_2TAG_PACKET_3.0.2
-.L_2TAG_PACKET_5.0.2:
- movl 16(%esp), %ebx
- fldl 1968(%esi)
- jmp .L_2TAG_PACKET_3.0.2
-.L_2TAG_PACKET_1.0.2:
- movl 16(%esp), %ebx
- movl 132(%esp), %eax
- movl 128(%esp), %edx
- movl %eax, %ecx
- andl $2147483647, %ecx
- cmpl $2146435072, %ecx
- ja .L_2TAG_PACKET_6.0.2
- cmpl $0, %edx
- jne .L_2TAG_PACKET_6.0.2
- cmpl $2146435072, %eax
- jne .L_2TAG_PACKET_7.0.2
- fldl 1920(%esi)
- jmp .L_2TAG_PACKET_3.0.2
-.L_2TAG_PACKET_7.0.2:
- fldl 1936(%esi)
- jmp .L_2TAG_PACKET_3.0.2
-.L_2TAG_PACKET_6.0.2:
- movsd 8(%esp), %xmm0
- addsd %xmm0, %xmm0
- movsd %xmm0, (%esp)
- fldl (%esp)
-.L_2TAG_PACKET_3.0.2:
- movl 52(%esp), %esi
- movl %ebp, %esp
- popl %ebp
- ret
-..B2.3:
-END(cbrt)
-# -- End cbrt
-
-# Start file scope ASM
-ALIAS_SYMBOL(cbrtl, cbrt);
-# End file scope ASM
- .section .rodata, "a"
- .align 16
- .align 16
-static_const_table:
- .long 1553778919
- .long 3213899486
- .long 3534952507
- .long 3215266280
- .long 1646371399
- .long 3214412045
- .long 477218588
- .long 3216798151
- .long 3582521621
- .long 1066628362
- .long 1007461464
- .long 1068473053
- .long 889629714
- .long 1067378449
- .long 1431655765
- .long 1070945621
- .long 4294967295
- .long 1048575
- .long 0
- .long 0
- .long 0
- .long 3220193280
- .long 0
- .long 0
- .long 0
- .long 3220176896
- .long 0
- .long 0
- .long 0
- .long 1032192
- .long 0
- .long 0
- .long 528611360
- .long 3220144632
- .long 2884679527
- .long 3220082993
- .long 1991868891
- .long 3220024928
- .long 2298714891
- .long 3219970134
- .long 58835168
- .long 3219918343
- .long 3035110223
- .long 3219869313
- .long 1617585086
- .long 3219822831
- .long 2500867033
- .long 3219778702
- .long 4241943008
- .long 3219736752
- .long 258732970
- .long 3219696825
- .long 404232216
- .long 3219658776
- .long 2172167368
- .long 3219622476
- .long 1544257904
- .long 3219587808
- .long 377579543
- .long 3219554664
- .long 1616385542
- .long 3219522945
- .long 813783277
- .long 3219492562
- .long 3940743189
- .long 3219463431
- .long 2689777499
- .long 3219435478
- .long 1700977147
- .long 3219408632
- .long 3169102082
- .long 3219382828
- .long 327235604
- .long 3219358008
- .long 1244336319
- .long 3219334115
- .long 1300311200
- .long 3219311099
- .long 3095471925
- .long 3219288912
- .long 2166487928
- .long 3219267511
- .long 2913108253
- .long 3219246854
- .long 293672978
- .long 3219226904
- .long 288737297
- .long 3219207624
- .long 1810275472
- .long 3219188981
- .long 174592167
- .long 3219170945
- .long 3539053052
- .long 3219153485
- .long 2164392968
- .long 3219136576
- .long 572345495
- .long 1072698681
- .long 1998204467
- .long 1072709382
- .long 3861501553
- .long 1072719872
- .long 2268192434
- .long 1072730162
- .long 2981979308
- .long 1072740260
- .long 270859143
- .long 1072750176
- .long 2958651392
- .long 1072759916
- .long 313113243
- .long 1072769490
- .long 919449400
- .long 1072778903
- .long 2809328903
- .long 1072788162
- .long 2222981587
- .long 1072797274
- .long 2352530781
- .long 1072806244
- .long 594152517
- .long 1072815078
- .long 1555767199
- .long 1072823780
- .long 4282421314
- .long 1072832355
- .long 2355578597
- .long 1072840809
- .long 1162590619
- .long 1072849145
- .long 797864051
- .long 1072857367
- .long 431273680
- .long 1072865479
- .long 2669831148
- .long 1072873484
- .long 733477752
- .long 1072881387
- .long 4280220604
- .long 1072889189
- .long 801961634
- .long 1072896896
- .long 2915370760
- .long 1072904508
- .long 1159613482
- .long 1072912030
- .long 2689944798
- .long 1072919463
- .long 1248687822
- .long 1072926811
- .long 2967951030
- .long 1072934075
- .long 630170432
- .long 1072941259
- .long 3760898254
- .long 1072948363
- .long 0
- .long 1072955392
- .long 2370273294
- .long 1072962345
- .long 1261754802
- .long 1072972640
- .long 546334065
- .long 1072986123
- .long 1054893830
- .long 1072999340
- .long 1571187597
- .long 1073012304
- .long 1107975175
- .long 1073025027
- .long 3606909377
- .long 1073037519
- .long 1113616747
- .long 1073049792
- .long 4154744632
- .long 1073061853
- .long 3358931423
- .long 1073073713
- .long 4060702372
- .long 1073085379
- .long 747576176
- .long 1073096860
- .long 3023138255
- .long 1073108161
- .long 1419988548
- .long 1073119291
- .long 1914185305
- .long 1073130255
- .long 294389948
- .long 1073141060
- .long 3761802570
- .long 1073151710
- .long 978281566
- .long 1073162213
- .long 823148820
- .long 1073172572
- .long 2420954441
- .long 1073182792
- .long 3815449908
- .long 1073192878
- .long 2046058587
- .long 1073202835
- .long 1807524753
- .long 1073212666
- .long 2628681401
- .long 1073222375
- .long 3225667357
- .long 1073231966
- .long 1555307421
- .long 1073241443
- .long 3454043099
- .long 1073250808
- .long 1208137896
- .long 1073260066
- .long 3659916772
- .long 1073269218
- .long 1886261264
- .long 1073278269
- .long 3593647839
- .long 1073287220
- .long 3086012205
- .long 1073296075
- .long 2769796922
- .long 1073304836
- .long 888716057
- .long 1073317807
- .long 2201465623
- .long 1073334794
- .long 164369365
- .long 1073351447
- .long 3462666733
- .long 1073367780
- .long 2773905457
- .long 1073383810
- .long 1342879088
- .long 1073399550
- .long 2543933975
- .long 1073415012
- .long 1684477781
- .long 1073430209
- .long 3532178543
- .long 1073445151
- .long 1147747300
- .long 1073459850
- .long 1928031793
- .long 1073474314
- .long 2079717015
- .long 1073488553
- .long 4016765315
- .long 1073502575
- .long 3670431139
- .long 1073516389
- .long 3549227225
- .long 1073530002
- .long 11637607
- .long 1073543422
- .long 588220169
- .long 1073556654
- .long 2635407503
- .long 1073569705
- .long 2042029317
- .long 1073582582
- .long 1925128962
- .long 1073595290
- .long 4136375664
- .long 1073607834
- .long 759964600
- .long 1073620221
- .long 4257606771
- .long 1073632453
- .long 297278907
- .long 1073644538
- .long 3655053093
- .long 1073656477
- .long 2442253172
- .long 1073668277
- .long 1111876799
- .long 1073679941
- .long 3330973139
- .long 1073691472
- .long 3438879452
- .long 1073702875
- .long 3671565478
- .long 1073714153
- .long 1317849547
- .long 1073725310
- .long 1642364115
- .long 1073736348
- .long 4050900474
- .long 1014427190
- .long 1157977860
- .long 1016444461
- .long 1374568199
- .long 1017271387
- .long 2809163288
- .long 1016882676
- .long 3742377377
- .long 1013168191
- .long 3101606597
- .long 1017541672
- .long 65224358
- .long 1017217597
- .long 2691591250
- .long 1017266643
- .long 4020758549
- .long 1017689313
- .long 1316310992
- .long 1018030788
- .long 1031537856
- .long 1014090882
- .long 3261395239
- .long 1016413641
- .long 886424999
- .long 1016313335
- .long 3114776834
- .long 1014195875
- .long 1681120620
- .long 1017825416
- .long 1329600273
- .long 1016625740
- .long 465474623
- .long 1017097119
- .long 4251633980
- .long 1017169077
- .long 1986990133
- .long 1017710645
- .long 752958613
- .long 1017159641
- .long 2216216792
- .long 1018020163
- .long 4282860129
- .long 1015924861
- .long 1557627859
- .long 1016039538
- .long 3889219754
- .long 1018086237
- .long 3684996408
- .long 1017353275
- .long 723532103
- .long 1017717141
- .long 2951149676
- .long 1012528470
- .long 831890937
- .long 1017830553
- .long 1031212645
- .long 1017387331
- .long 2741737450
- .long 1017604974
- .long 2863311531
- .long 1003776682
- .long 4276736099
- .long 1013153088
- .long 4111778382
- .long 1015673686
- .long 1728065769
- .long 1016413986
- .long 2708718031
- .long 1018078833
- .long 1069335005
- .long 1015291224
- .long 700037144
- .long 1016482032
- .long 2904566452
- .long 1017226861
- .long 4074156649
- .long 1017622651
- .long 25019565
- .long 1015245366
- .long 3601952608
- .long 1015771755
- .long 3267129373
- .long 1017904664
- .long 503203103
- .long 1014921629
- .long 2122011730
- .long 1018027866
- .long 3927295461
- .long 1014189456
- .long 2790625147
- .long 1016024251
- .long 1330460186
- .long 1016940346
- .long 4033568463
- .long 1015538390
- .long 3695818227
- .long 1017509621
- .long 257573361
- .long 1017208868
- .long 3227697852
- .long 1017337964
- .long 234118548
- .long 1017169577
- .long 4009025803
- .long 1017278524
- .long 1948343394
- .long 1017749310
- .long 678398162
- .long 1018144239
- .long 3083864863
- .long 1016669086
- .long 2415453452
- .long 1017890370
- .long 175467344
- .long 1017330033
- .long 3197359580
- .long 1010339928
- .long 2071276951
- .long 1015941358
- .long 268372543
- .long 1016737773
- .long 938132959
- .long 1017389108
- .long 1816750559
- .long 1017337448
- .long 4119203749
- .long 1017152174
- .long 2578653878
- .long 1013108497
- .long 2470331096
- .long 1014678606
- .long 123855735
- .long 1016553320
- .long 1265650889
- .long 1014782687
- .long 3414398172
- .long 1017182638
- .long 1040773369
- .long 1016158401
- .long 3483628886
- .long 1016886550
- .long 4140499405
- .long 1016191425
- .long 3893477850
- .long 1016964495
- .long 3935319771
- .long 1009634717
- .long 2978982660
- .long 1015027112
- .long 2452709923
- .long 1017990229
- .long 3190365712
- .long 1015835149
- .long 4237588139
- .long 1015832925
- .long 2610678389
- .long 1017962711
- .long 2127316774
- .long 1017405770
- .long 824267502
- .long 1017959463
- .long 2165924042
- .long 1017912225
- .long 2774007076
- .long 1013257418
- .long 4123916326
- .long 1017582284
- .long 1976417958
- .long 1016959909
- .long 4092806412
- .long 1017711279
- .long 119251817
- .long 1015363631
- .long 3475418768
- .long 1017675415
- .long 1972580503
- .long 1015470684
- .long 815541017
- .long 1017517969
- .long 2429917451
- .long 1017397776
- .long 4062888482
- .long 1016749897
- .long 68284153
- .long 1017925678
- .long 2207779246
- .long 1016320298
- .long 1183466520
- .long 1017408657
- .long 143326427
- .long 1017060403
- .long 0
- .long 2146435072
- .long 0
- .long 0
- .long 0
- .long 4293918720
- .long 0
- .long 0
- .long 0
- .long 0
- .long 0
- .long 0
- .long 0
- .long 2147483648
- .long 0
- .long 0
- .long 0
- .long 1138753536
- .long 0
- .long 0
- .type static_const_table,@object
- .size static_const_table,2000
- .data
- .section .note.GNU-stack, "",@progbits
-# End
diff --git a/libm/x86/s_cos.S b/libm/x86/s_cos.S
deleted file mode 100644
index e47c63e..0000000
--- a/libm/x86/s_cos.S
+++ /dev/null
@@ -1,892 +0,0 @@
-/*
-Copyright (c) 2014, Intel Corporation
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
-
- * Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
-
- * Neither the name of Intel Corporation nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
-ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/******************************************************************************/
-// ALGORITHM DESCRIPTION
-// ---------------------
-//
-// 1. RANGE REDUCTION
-//
-// We perform an initial range reduction from X to r with
-//
-// X =~= N * pi/32 + r
-//
-// so that |r| <= pi/64 + epsilon. We restrict inputs to those
-// where |N| <= 932560. Beyond this, the range reduction is
-// insufficiently accurate. For extremely small inputs,
-// denormalization can occur internally, impacting performance.
-// This means that the main path is actually only taken for
-// 2^-252 <= |X| < 90112.
-//
-// To avoid branches, we perform the range reduction to full
-// accuracy each time.
-//
-// X - N * (P_1 + P_2 + P_3)
-//
-// where P_1 and P_2 are 32-bit numbers (so multiplication by N
-// is exact) and P_3 is a 53-bit number. Together, these
-// approximate pi well enough for all cases in the restricted
-// range.
-//
-// The main reduction sequence is:
-//
-// y = 32/pi * x
-// N = integer(y)
-// (computed by adding and subtracting off SHIFTER)
-//
-// m_1 = N * P_1
-// m_2 = N * P_2
-// r_1 = x - m_1
-// r = r_1 - m_2
-// (this r can be used for most of the calculation)
-//
-// c_1 = r_1 - r
-// m_3 = N * P_3
-// c_2 = c_1 - m_2
-// c = c_2 - m_3
-//
-// 2. MAIN ALGORITHM
-//
-// The algorithm uses a table lookup based on B = M * pi / 32
-// where M = N mod 64. The stored values are:
-// sigma closest power of 2 to cos(B)
-// C_hl 53-bit cos(B) - sigma
-// S_hi + S_lo 2 * 53-bit sin(B)
-//
-// The computation is organized as follows:
-//
-// sin(B + r + c) = [sin(B) + sigma * r] +
-// r * (cos(B) - sigma) +
-// sin(B) * [cos(r + c) - 1] +
-// cos(B) * [sin(r + c) - r]
-//
-// which is approximately:
-//
-// [S_hi + sigma * r] +
-// C_hl * r +
-// S_lo + S_hi * [(cos(r) - 1) - r * c] +
-// (C_hl + sigma) * [(sin(r) - r) + c]
-//
-// and this is what is actually computed. We separate this sum
-// into four parts:
-//
-// hi + med + pols + corr
-//
-// where
-//
-// hi = S_hi + sigma r
-// med = C_hl * r
-// pols = S_hi * (cos(r) - 1) + (C_hl + sigma) * (sin(r) - r)
-// corr = S_lo + c * ((C_hl + sigma) - S_hi * r)
-//
-// 3. POLYNOMIAL
-//
-// The polynomial S_hi * (cos(r) - 1) + (C_hl + sigma) *
-// (sin(r) - r) can be rearranged freely, since it is quite
-// small, so we exploit parallelism to the fullest.
-//
-// psc4 = SC_4 * r_1
-// msc4 = psc4 * r
-// r2 = r * r
-// msc2 = SC_2 * r2
-// r4 = r2 * r2
-// psc3 = SC_3 + msc4
-// psc1 = SC_1 + msc2
-// msc3 = r4 * psc3
-// sincospols = psc1 + msc3
-// pols = sincospols *
-// <S_hi * r^2 | (C_hl + sigma) * r^3>
-//
-// 4. CORRECTION TERM
-//
-// This is where the "c" component of the range reduction is
-// taken into account; recall that just "r" is used for most of
-// the calculation.
-//
-// -c = m_3 - c_2
-// -d = S_hi * r - (C_hl + sigma)
-// corr = -c * -d + S_lo
-//
-// 5. COMPENSATED SUMMATIONS
-//
-// The two successive compensated summations add up the high
-// and medium parts, leaving just the low parts to add up at
-// the end.
-//
-// rs = sigma * r
-// res_int = S_hi + rs
-// k_0 = S_hi - res_int
-// k_2 = k_0 + rs
-// med = C_hl * r
-// res_hi = res_int + med
-// k_1 = res_int - res_hi
-// k_3 = k_1 + med
-//
-// 6. FINAL SUMMATION
-//
-// We now add up all the small parts:
-//
-// res_lo = pols(hi) + pols(lo) + corr + k_1 + k_3
-//
-// Now the overall result is just:
-//
-// res_hi + res_lo
-//
-// 7. SMALL ARGUMENTS
-//
-// Inputs with |X| < 2^-252 are treated specially as
-// 1 - |x|.
-//
-// Special cases:
-// cos(NaN) = quiet NaN, and raise invalid exception
-// cos(INF) = NaN and raise invalid exception
-// cos(0) = 1
-//
-/******************************************************************************/
-
-#include <private/bionic_asm.h>
-# -- Begin static_func
- .text
- .align __bionic_asm_align
- .type static_func, @function
-static_func:
-..B1.1:
- call ..L2
-..L2:
- popl %eax
- lea _GLOBAL_OFFSET_TABLE_+[. - ..L2](%eax), %eax
- lea static_const_table@GOTOFF(%eax), %eax
- ret
- .size static_func,.-static_func
-# -- End static_func
-
-# -- Begin cos
-ENTRY(cos)
-# parameter 1: 8 + %ebp
-..B2.1:
-..B2.2:
- pushl %ebp
- movl %esp, %ebp
- subl $120, %esp
- movl %ebx, 56(%esp)
- call static_func
- movl %eax, %ebx
- movsd 128(%esp), %xmm0
- pextrw $3, %xmm0, %eax
- andl $32767, %eax
- subl $12336, %eax
- cmpl $4293, %eax
- ja .L_2TAG_PACKET_0.0.2
- movsd 2160(%ebx), %xmm1
- mulsd %xmm0, %xmm1
- movapd 2240(%ebx), %xmm5
- movsd 2224(%ebx), %xmm4
- andpd %xmm0, %xmm4
- orps %xmm4, %xmm5
- movsd 2128(%ebx), %xmm3
- movapd 2112(%ebx), %xmm2
- addpd %xmm5, %xmm1
- cvttsd2si %xmm1, %edx
- cvtsi2sdl %edx, %xmm1
- mulsd %xmm1, %xmm3
- unpcklpd %xmm1, %xmm1
- addl $1865232, %edx
- movapd %xmm0, %xmm4
- andl $63, %edx
- movapd 2096(%ebx), %xmm5
- lea (%ebx), %eax
- shll $5, %edx
- addl %edx, %eax
- mulpd %xmm1, %xmm2
- subsd %xmm3, %xmm0
- mulsd 2144(%ebx), %xmm1
- subsd %xmm3, %xmm4
- movsd 8(%eax), %xmm7
- unpcklpd %xmm0, %xmm0
- movapd %xmm4, %xmm3
- subsd %xmm2, %xmm4
- mulpd %xmm0, %xmm5
- subpd %xmm2, %xmm0
- movapd 2064(%ebx), %xmm6
- mulsd %xmm4, %xmm7
- subsd %xmm4, %xmm3
- mulpd %xmm0, %xmm5
- mulpd %xmm0, %xmm0
- subsd %xmm2, %xmm3
- movapd (%eax), %xmm2
- subsd %xmm3, %xmm1
- movsd 24(%eax), %xmm3
- addsd %xmm3, %xmm2
- subsd %xmm2, %xmm7
- mulsd %xmm4, %xmm2
- mulpd %xmm0, %xmm6
- mulsd %xmm4, %xmm3
- mulpd %xmm0, %xmm2
- mulpd %xmm0, %xmm0
- addpd 2080(%ebx), %xmm5
- mulsd (%eax), %xmm4
- addpd 2048(%ebx), %xmm6
- mulpd %xmm0, %xmm5
- movapd %xmm3, %xmm0
- addsd 8(%eax), %xmm3
- mulpd %xmm7, %xmm1
- movapd %xmm4, %xmm7
- addsd %xmm3, %xmm4
- addpd %xmm5, %xmm6
- movsd 8(%eax), %xmm5
- subsd %xmm3, %xmm5
- subsd %xmm4, %xmm3
- addsd 16(%eax), %xmm1
- mulpd %xmm2, %xmm6
- addsd %xmm0, %xmm5
- addsd %xmm7, %xmm3
- addsd %xmm5, %xmm1
- addsd %xmm3, %xmm1
- addsd %xmm6, %xmm1
- unpckhpd %xmm6, %xmm6
- addsd %xmm6, %xmm1
- addsd %xmm1, %xmm4
- movsd %xmm4, (%esp)
- fldl (%esp)
- jmp .L_2TAG_PACKET_1.0.2
-.L_2TAG_PACKET_0.0.2:
- jg .L_2TAG_PACKET_2.0.2
- pextrw $3, %xmm0, %eax
- andl $32767, %eax
- pinsrw $3, %eax, %xmm0
- movsd 2192(%ebx), %xmm1
- subsd %xmm0, %xmm1
- movsd %xmm1, (%esp)
- fldl (%esp)
- jmp .L_2TAG_PACKET_1.0.2
-.L_2TAG_PACKET_2.0.2:
- movl 132(%esp), %eax
- andl $2146435072, %eax
- cmpl $2146435072, %eax
- je .L_2TAG_PACKET_3.0.2
- subl $32, %esp
- movsd %xmm0, (%esp)
- lea 40(%esp), %eax
- movl %eax, 8(%esp)
- movl $1, %eax
- movl %eax, 12(%esp)
- call __libm_sincos_huge
- addl $32, %esp
- fldl 8(%esp)
- jmp .L_2TAG_PACKET_1.0.2
-.L_2TAG_PACKET_3.0.2:
- fldl 128(%esp)
- fmull 2208(%ebx)
-.L_2TAG_PACKET_1.0.2:
- movl 56(%esp), %ebx
- movl %ebp, %esp
- popl %ebp
- ret
-..B2.3:
-END(cos)
-# -- End cos
-
-# Start file scope ASM
-ALIAS_SYMBOL(cosl, cos);
-# End file scope ASM
- .section .rodata, "a"
- .align 16
- .align 16
-static_const_table:
- .long 0
- .long 0
- .long 0
- .long 0
- .long 0
- .long 0
- .long 0
- .long 1072693248
- .long 393047345
- .long 3212032302
- .long 3156849708
- .long 1069094822
- .long 3758096384
- .long 3158189848
- .long 0
- .long 1072693248
- .long 18115067
- .long 3214126342
- .long 1013556747
- .long 1070135480
- .long 3221225472
- .long 3160567065
- .long 0
- .long 1072693248
- .long 2476548698
- .long 3215330282
- .long 785751814
- .long 1070765062
- .long 2684354560
- .long 3161838221
- .long 0
- .long 1072693248
- .long 2255197647
- .long 3216211105
- .long 2796464483
- .long 1071152610
- .long 3758096384
- .long 3160878317
- .long 0
- .long 1072693248
- .long 1945768569
- .long 3216915048
- .long 939980347
- .long 1071524701
- .long 536870912
- .long 1012796809
- .long 0
- .long 1072693248
- .long 1539668340
- .long 3217396327
- .long 967731400
- .long 1071761211
- .long 536870912
- .long 1015752157
- .long 0
- .long 1072693248
- .long 1403757309
- .long 3217886718
- .long 621354454
- .long 1071926515
- .long 536870912
- .long 1013450602
- .long 0
- .long 1072693248
- .long 2583490354
- .long 1070236281
- .long 1719614413
- .long 1072079006
- .long 536870912
- .long 3163282740
- .long 0
- .long 1071644672
- .long 2485417816
- .long 1069626316
- .long 1796544321
- .long 1072217216
- .long 536870912
- .long 3162686945
- .long 0
- .long 1071644672
- .long 2598800519
- .long 1068266419
- .long 688824739
- .long 1072339814
- .long 3758096384
- .long 1010431536
- .long 0
- .long 1071644672
- .long 2140183630
- .long 3214756396
- .long 4051746225
- .long 1072445618
- .long 2147483648
- .long 3161907377
- .long 0
- .long 1071644672
- .long 1699043957
- .long 3216902261
- .long 3476196678
- .long 1072533611
- .long 536870912
- .long 1014257638
- .long 0
- .long 1071644672
- .long 1991047213
- .long 1067753521
- .long 1455828442
- .long 1072602945
- .long 3758096384
- .long 1015505073
- .long 0
- .long 1070596096
- .long 240740309
- .long 3215727903
- .long 3489094832
- .long 1072652951
- .long 536870912
- .long 1014325783
- .long 0
- .long 1070596096
- .long 257503056
- .long 3214647653
- .long 2748392742
- .long 1072683149
- .long 1073741824
- .long 3163061750
- .long 0
- .long 1069547520
- .long 0
- .long 0
- .long 0
- .long 1072693248
- .long 0
- .long 0
- .long 0
- .long 0
- .long 257503056
- .long 1067164005
- .long 2748392742
- .long 1072683149
- .long 1073741824
- .long 3163061750
- .long 0
- .long 3217031168
- .long 240740309
- .long 1068244255
- .long 3489094832
- .long 1072652951
- .long 536870912
- .long 1014325783
- .long 0
- .long 3218079744
- .long 1991047213
- .long 3215237169
- .long 1455828442
- .long 1072602945
- .long 3758096384
- .long 1015505073
- .long 0
- .long 3218079744
- .long 1699043957
- .long 1069418613
- .long 3476196678
- .long 1072533611
- .long 536870912
- .long 1014257638
- .long 0
- .long 3219128320
- .long 2140183630
- .long 1067272748
- .long 4051746225
- .long 1072445618
- .long 2147483648
- .long 3161907377
- .long 0
- .long 3219128320
- .long 2598800519
- .long 3215750067
- .long 688824739
- .long 1072339814
- .long 3758096384
- .long 1010431536
- .long 0
- .long 3219128320
- .long 2485417816
- .long 3217109964
- .long 1796544321
- .long 1072217216
- .long 536870912
- .long 3162686945
- .long 0
- .long 3219128320
- .long 2583490354
- .long 3217719929
- .long 1719614413
- .long 1072079006
- .long 536870912
- .long 3163282740
- .long 0
- .long 3219128320
- .long 1403757309
- .long 1070403070
- .long 621354454
- .long 1071926515
- .long 536870912
- .long 1013450602
- .long 0
- .long 3220176896
- .long 1539668340
- .long 1069912679
- .long 967731400
- .long 1071761211
- .long 536870912
- .long 1015752157
- .long 0
- .long 3220176896
- .long 1945768569
- .long 1069431400
- .long 939980347
- .long 1071524701
- .long 536870912
- .long 1012796809
- .long 0
- .long 3220176896
- .long 2255197647
- .long 1068727457
- .long 2796464483
- .long 1071152610
- .long 3758096384
- .long 3160878317
- .long 0
- .long 3220176896
- .long 2476548698
- .long 1067846634
- .long 785751814
- .long 1070765062
- .long 2684354560
- .long 3161838221
- .long 0
- .long 3220176896
- .long 18115067
- .long 1066642694
- .long 1013556747
- .long 1070135480
- .long 3221225472
- .long 3160567065
- .long 0
- .long 3220176896
- .long 393047345
- .long 1064548654
- .long 3156849708
- .long 1069094822
- .long 3758096384
- .long 3158189848
- .long 0
- .long 3220176896
- .long 0
- .long 0
- .long 0
- .long 0
- .long 0
- .long 0
- .long 0
- .long 3220176896
- .long 393047345
- .long 1064548654
- .long 3156849708
- .long 3216578470
- .long 3758096384
- .long 1010706200
- .long 0
- .long 3220176896
- .long 18115067
- .long 1066642694
- .long 1013556747
- .long 3217619128
- .long 3221225472
- .long 1013083417
- .long 0
- .long 3220176896
- .long 2476548698
- .long 1067846634
- .long 785751814
- .long 3218248710
- .long 2684354560
- .long 1014354573
- .long 0
- .long 3220176896
- .long 2255197647
- .long 1068727457
- .long 2796464483
- .long 3218636258
- .long 3758096384
- .long 1013394669
- .long 0
- .long 3220176896
- .long 1945768569
- .long 1069431400
- .long 939980347
- .long 3219008349
- .long 536870912
- .long 3160280457
- .long 0
- .long 3220176896
- .long 1539668340
- .long 1069912679
- .long 967731400
- .long 3219244859
- .long 536870912
- .long 3163235805
- .long 0
- .long 3220176896
- .long 1403757309
- .long 1070403070
- .long 621354454
- .long 3219410163
- .long 536870912
- .long 3160934250
- .long 0
- .long 3220176896
- .long 2583490354
- .long 3217719929
- .long 1719614413
- .long 3219562654
- .long 536870912
- .long 1015799092
- .long 0
- .long 3219128320
- .long 2485417816
- .long 3217109964
- .long 1796544321
- .long 3219700864
- .long 536870912
- .long 1015203297
- .long 0
- .long 3219128320
- .long 2598800519
- .long 3215750067
- .long 688824739
- .long 3219823462
- .long 3758096384
- .long 3157915184
- .long 0
- .long 3219128320
- .long 2140183630
- .long 1067272748
- .long 4051746225
- .long 3219929266
- .long 2147483648
- .long 1014423729
- .long 0
- .long 3219128320
- .long 1699043957
- .long 1069418613
- .long 3476196678
- .long 3220017259
- .long 536870912
- .long 3161741286
- .long 0
- .long 3219128320
- .long 1991047213
- .long 3215237169
- .long 1455828442
- .long 3220086593
- .long 3758096384
- .long 3162988721
- .long 0
- .long 3218079744
- .long 240740309
- .long 1068244255
- .long 3489094832
- .long 3220136599
- .long 536870912
- .long 3161809431
- .long 0
- .long 3218079744
- .long 257503056
- .long 1067164005
- .long 2748392742
- .long 3220166797
- .long 1073741824
- .long 1015578102
- .long 0
- .long 3217031168
- .long 0
- .long 0
- .long 0
- .long 3220176896
- .long 0
- .long 0
- .long 0
- .long 0
- .long 257503056
- .long 3214647653
- .long 2748392742
- .long 3220166797
- .long 1073741824
- .long 1015578102
- .long 0
- .long 1069547520
- .long 240740309
- .long 3215727903
- .long 3489094832
- .long 3220136599
- .long 536870912
- .long 3161809431
- .long 0
- .long 1070596096
- .long 1991047213
- .long 1067753521
- .long 1455828442
- .long 3220086593
- .long 3758096384
- .long 3162988721
- .long 0
- .long 1070596096
- .long 1699043957
- .long 3216902261
- .long 3476196678
- .long 3220017259
- .long 536870912
- .long 3161741286
- .long 0
- .long 1071644672
- .long 2140183630
- .long 3214756396
- .long 4051746225
- .long 3219929266
- .long 2147483648
- .long 1014423729
- .long 0
- .long 1071644672
- .long 2598800519
- .long 1068266419
- .long 688824739
- .long 3219823462
- .long 3758096384
- .long 3157915184
- .long 0
- .long 1071644672
- .long 2485417816
- .long 1069626316
- .long 1796544321
- .long 3219700864
- .long 536870912
- .long 1015203297
- .long 0
- .long 1071644672
- .long 2583490354
- .long 1070236281
- .long 1719614413
- .long 3219562654
- .long 536870912
- .long 1015799092
- .long 0
- .long 1071644672
- .long 1403757309
- .long 3217886718
- .long 621354454
- .long 3219410163
- .long 536870912
- .long 3160934250
- .long 0
- .long 1072693248
- .long 1539668340
- .long 3217396327
- .long 967731400
- .long 3219244859
- .long 536870912
- .long 3163235805
- .long 0
- .long 1072693248
- .long 1945768569
- .long 3216915048
- .long 939980347
- .long 3219008349
- .long 536870912
- .long 3160280457
- .long 0
- .long 1072693248
- .long 2255197647
- .long 3216211105
- .long 2796464483
- .long 3218636258
- .long 3758096384
- .long 1013394669
- .long 0
- .long 1072693248
- .long 2476548698
- .long 3215330282
- .long 785751814
- .long 3218248710
- .long 2684354560
- .long 1014354573
- .long 0
- .long 1072693248
- .long 18115067
- .long 3214126342
- .long 1013556747
- .long 3217619128
- .long 3221225472
- .long 1013083417
- .long 0
- .long 1072693248
- .long 393047345
- .long 3212032302
- .long 3156849708
- .long 3216578470
- .long 3758096384
- .long 1010706200
- .long 0
- .long 1072693248
- .long 1431655765
- .long 3217380693
- .long 0
- .long 3219128320
- .long 286331153
- .long 1065423121
- .long 1431655765
- .long 1067799893
- .long 436314138
- .long 3207201184
- .long 381774871
- .long 3210133868
- .long 2773927732
- .long 1053236707
- .long 436314138
- .long 1056571808
- .long 442499072
- .long 1032893537
- .long 442499072
- .long 1032893537
- .long 1413480448
- .long 1069097467
- .long 0
- .long 0
- .long 771977331
- .long 996350346
- .long 0
- .long 0
- .long 1841940611
- .long 1076125488
- .long 0
- .long 0
- .long 0
- .long 1127743488
- .long 0
- .long 0
- .long 0
- .long 1072693248
- .long 0
- .long 0
- .long 0
- .long 2147483648
- .long 0
- .long 0
- .long 0
- .long 2147483648
- .long 0
- .long 0
- .long 0
- .long 1071644672
- .long 0
- .long 1071644672
- .type static_const_table,@object
- .size static_const_table,2256
- .data
- .hidden __libm_sincos_huge
- .section .note.GNU-stack, "",@progbits
-# End
diff --git a/libm/x86/s_expm1.S b/libm/x86/s_expm1.S
deleted file mode 100644
index 1816f59..0000000
--- a/libm/x86/s_expm1.S
+++ /dev/null
@@ -1,702 +0,0 @@
-/*
-Copyright (c) 2014, Intel Corporation
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
-
- * Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
-
- * Neither the name of Intel Corporation nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
-ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/******************************************************************************/
-// ALGORITHM DESCRIPTION
-// ---------------------
-//
-// Description:
-// Let K = 64 (table size).
-//
-// Four sub-domains:
-// 1. |x| < 1/(2*K)
-// expm1(x) ~ P(x)
-// 2. 1/(2*K) <= |x| <= 56*log(2)
-// x x/log(2) n
-// e - 1 = 2 = 2 * T[j] * (1 + P(y)) - 1
-// 3. 56*log(2) < x < MAX_LOG
-// x x x/log(2) n
-// e - 1 ~ e = 2 = 2 * T[j] * (1 + P(y))
-// 4. x < -56*log(2)
-// x x
-// e - 1 = -1 + e ~ -1
-// where
-// x = m*log(2)/K + y, y in [-log(2)/K..log(2)/K]
-// m = n*K + j, m,n,j - signed integer, j in [-K/2..K/2]
-// j/K
-// values of 2 are tabulated as T[j] = T_hi[j] ( 1 + T_lo[j]).
-//
-// P(y) is a minimax polynomial approximation of exp(x)-1
-// on small interval [-log(2)/K..log(2)/K] (were calculated by Maple V).
-//
-// In case 3, to avoid problems with arithmetic overflow and underflow,
-// n n1 n2
-// value of 2 is safely computed as 2 * 2 where n1 in [-BIAS/2..BIAS/2]
-// and BIAS is a value of exponent bias.
-//
-// Special cases:
-// expm1(NaN) is NaN
-// expm1(+INF) is +INF
-// expm1(-INF) is -1
-// expm1(x) is x for subnormals
-// for finite argument, only expm1(0)=0 is exact.
-// For IEEE double
-// if x > 709.782712893383973096 then expm1(x) overflow
-//
-/******************************************************************************/
-
-#include <private/bionic_asm.h>
-# -- Begin static_func
- .text
- .align __bionic_asm_align
- .type static_func, @function
-static_func:
-..B1.1:
- call ..L2
-..L2:
- popl %eax
- lea _GLOBAL_OFFSET_TABLE_+[. - ..L2](%eax), %eax
- lea static_const_table@GOTOFF(%eax), %eax
- ret
- .size static_func,.-static_func
-# -- End static_func
-
-# -- Begin expm1
-ENTRY(expm1)
-# parameter 1: 8 + %ebp
-..B2.1:
-..B2.2:
- pushl %ebp
- movl %esp, %ebp
- subl $120, %esp
- movl %ebx, 64(%esp)
- call static_func
- movl %eax, %ebx
- movsd 128(%esp), %xmm0
- unpcklpd %xmm0, %xmm0
- movapd 64(%ebx), %xmm1
- movapd 48(%ebx), %xmm6
- movapd 80(%ebx), %xmm2
- movapd 96(%ebx), %xmm3
- pextrw $3, %xmm0, %eax
- andl $32767, %eax
- movl $16527, %edx
- subl %eax, %edx
- subl $16304, %eax
- orl %eax, %edx
- cmpl $-2147483648, %edx
- jae .L_2TAG_PACKET_0.0.2
- mulpd %xmm0, %xmm1
- addpd %xmm6, %xmm1
- movapd %xmm1, %xmm7
- subpd %xmm6, %xmm1
- mulpd %xmm1, %xmm2
- movapd 112(%ebx), %xmm4
- mulpd %xmm1, %xmm3
- movapd 128(%ebx), %xmm5
- subpd %xmm2, %xmm0
- movd %xmm7, %eax
- movl %eax, %ecx
- andl $63, %ecx
- shll $4, %ecx
- sarl $6, %eax
- movl %eax, %edx
- subpd %xmm3, %xmm0
- movapd 160(%ebx,%ecx), %xmm2
- movsd 144(%ebx), %xmm3
- mulpd %xmm0, %xmm4
- movapd %xmm0, %xmm1
- mulpd %xmm0, %xmm0
- mulsd %xmm0, %xmm3
- addpd %xmm4, %xmm5
- mulsd %xmm0, %xmm0
- movapd %xmm2, %xmm4
- unpckhpd %xmm2, %xmm2
- movdqa 16(%ebx), %xmm6
- pand %xmm6, %xmm7
- movdqa 32(%ebx), %xmm6
- paddq %xmm6, %xmm7
- psllq $46, %xmm7
- mulsd %xmm0, %xmm3
- mulpd %xmm5, %xmm0
- addl $894, %edx
- cmpl $1916, %edx
- ja .L_2TAG_PACKET_1.0.2
- addsd %xmm3, %xmm0
- xorpd %xmm3, %xmm3
- movl $16368, %eax
- pinsrw $3, %eax, %xmm3
- orpd %xmm7, %xmm2
- mulsd %xmm4, %xmm7
- movapd %xmm3, %xmm6
- addsd %xmm1, %xmm3
- pextrw $3, %xmm2, %edx
- pshufd $238, %xmm0, %xmm5
- psrlq $38, %xmm3
- psllq $38, %xmm3
- movapd %xmm2, %xmm4
- subsd %xmm3, %xmm6
- addsd %xmm5, %xmm0
- addsd %xmm6, %xmm1
- addsd %xmm7, %xmm4
- mulsd %xmm3, %xmm7
- mulsd %xmm2, %xmm3
- xorpd %xmm5, %xmm5
- movl $16368, %eax
- pinsrw $3, %eax, %xmm5
- addsd %xmm1, %xmm0
- movl $17184, %ecx
- subl %edx, %ecx
- subl $16256, %edx
- orl %edx, %ecx
- jl .L_2TAG_PACKET_2.0.2
- mulsd %xmm4, %xmm0
- subsd %xmm5, %xmm3
- addsd %xmm7, %xmm0
- addsd %xmm3, %xmm0
-.L_2TAG_PACKET_3.0.2:
- jmp .L_2TAG_PACKET_4.0.2
-.L_2TAG_PACKET_2.0.2:
- cmpl $0, %edx
- jl .L_2TAG_PACKET_5.0.2
- mulsd %xmm4, %xmm0
- subsd %xmm5, %xmm7
- addsd %xmm7, %xmm0
- addsd %xmm3, %xmm0
- jmp .L_2TAG_PACKET_3.0.2
-.L_2TAG_PACKET_5.0.2:
- mulsd %xmm4, %xmm0
- addsd %xmm7, %xmm0
- addsd %xmm3, %xmm0
- subsd %xmm5, %xmm0
- jmp .L_2TAG_PACKET_3.0.2
-.L_2TAG_PACKET_1.0.2:
- movl 132(%esp), %ecx
- addsd %xmm0, %xmm1
- unpckhpd %xmm0, %xmm0
- addsd %xmm1, %xmm0
- cmpl $0, %ecx
- jl .L_2TAG_PACKET_6.0.2
- fstcw 24(%esp)
- movzwl 24(%esp), %edx
- orl $768, %edx
- movw %dx, 28(%esp)
- fldcw 28(%esp)
- movl %eax, %edx
- sarl $1, %eax
- subl %eax, %edx
- movdqa (%ebx), %xmm6
- pandn %xmm2, %xmm6
- addl $1023, %eax
- movd %eax, %xmm3
- psllq $52, %xmm3
- orpd %xmm3, %xmm6
- mulsd %xmm3, %xmm4
- movsd %xmm0, 8(%esp)
- fldl 8(%esp)
- movsd %xmm6, 16(%esp)
- fldl 16(%esp)
- movsd %xmm4, 16(%esp)
- fldl 16(%esp)
- addl $1023, %edx
- movd %edx, %xmm4
- psllq $52, %xmm4
- faddp %st, %st(1)
- fmul %st, %st(1)
- faddp %st, %st(1)
- movsd %xmm4, 8(%esp)
- fldl 8(%esp)
- fmulp %st, %st(1)
- fstpl 8(%esp)
- movsd 8(%esp), %xmm0
- fldcw 24(%esp)
- pextrw $3, %xmm0, %ecx
- andl $32752, %ecx
- cmpl $32752, %ecx
- jae .L_2TAG_PACKET_7.0.2
- jmp .L_2TAG_PACKET_4.0.2
- cmpl $-2147483648, %ecx
- jb .L_2TAG_PACKET_7.0.2
- jmp .L_2TAG_PACKET_4.0.2
-.L_2TAG_PACKET_7.0.2:
- movl $41, %edx
-.L_2TAG_PACKET_8.0.2:
- movsd %xmm0, (%esp)
- movsd 128(%esp), %xmm0
- fldl (%esp)
- jmp .L_2TAG_PACKET_9.0.2
-.L_2TAG_PACKET_10.0.2:
- cmpl $2146435072, %eax
- jae .L_2TAG_PACKET_11.0.2
- movsd 1272(%ebx), %xmm0
- mulsd %xmm0, %xmm0
- movl $41, %edx
- jmp .L_2TAG_PACKET_8.0.2
-.L_2TAG_PACKET_11.0.2:
- movl 132(%esp), %eax
- movl 128(%esp), %edx
- movl %eax, %ecx
- andl $2147483647, %eax
- cmpl $2146435072, %eax
- ja .L_2TAG_PACKET_12.0.2
- cmpl $0, %edx
- jne .L_2TAG_PACKET_12.0.2
- cmpl $0, %ecx
- jl .L_2TAG_PACKET_13.0.2
- movsd 1256(%ebx), %xmm0
- jmp .L_2TAG_PACKET_4.0.2
-.L_2TAG_PACKET_13.0.2:
- jmp .L_2TAG_PACKET_6.0.2
-.L_2TAG_PACKET_12.0.2:
- movsd 128(%esp), %xmm0
- addsd %xmm0, %xmm0
- jmp .L_2TAG_PACKET_4.0.2
-.L_2TAG_PACKET_14.0.2:
- addl $16304, %eax
- cmpl $15504, %eax
- jb .L_2TAG_PACKET_15.0.2
- movapd 1184(%ebx), %xmm2
- pshufd $68, %xmm0, %xmm1
- movapd 1200(%ebx), %xmm3
- movapd 1216(%ebx), %xmm4
- movsd 1232(%ebx), %xmm5
- mulsd %xmm1, %xmm1
- xorpd %xmm6, %xmm6
- movl $16352, %eax
- pinsrw $3, %eax, %xmm6
- mulpd %xmm0, %xmm2
- xorpd %xmm7, %xmm7
- movl $16368, %edx
- pinsrw $3, %edx, %xmm7
- addpd %xmm3, %xmm2
- mulsd %xmm1, %xmm5
- pshufd $228, %xmm1, %xmm3
- mulpd %xmm1, %xmm1
- mulsd %xmm0, %xmm6
- mulpd %xmm0, %xmm2
- addpd %xmm4, %xmm2
- movapd %xmm7, %xmm4
- addsd %xmm6, %xmm7
- mulpd %xmm3, %xmm1
- psrlq $27, %xmm7
- psllq $27, %xmm7
- movsd 1288(%ebx), %xmm3
- subsd %xmm7, %xmm4
- mulpd %xmm1, %xmm2
- addsd %xmm4, %xmm6
- pshufd $238, %xmm2, %xmm1
- addsd %xmm2, %xmm6
- andpd %xmm0, %xmm3
- movapd %xmm0, %xmm4
- addsd %xmm6, %xmm1
- subsd %xmm3, %xmm0
- addsd %xmm5, %xmm1
- mulsd %xmm7, %xmm3
- mulsd %xmm7, %xmm0
- mulsd %xmm1, %xmm4
- addsd %xmm4, %xmm0
- addsd %xmm3, %xmm0
- jmp .L_2TAG_PACKET_4.0.2
-.L_2TAG_PACKET_15.0.2:
- cmpl $16, %eax
- jae .L_2TAG_PACKET_3.0.2
- movapd %xmm0, %xmm2
- movd %xmm0, %eax
- psrlq $31, %xmm2
- movd %xmm2, %ecx
- orl %ecx, %eax
- je .L_2TAG_PACKET_3.0.2
- movl $16, %edx
- xorpd %xmm1, %xmm1
- pinsrw $3, %edx, %xmm1
- mulsd %xmm1, %xmm1
- movl $42, %edx
- jmp .L_2TAG_PACKET_8.0.2
-.L_2TAG_PACKET_0.0.2:
- cmpl $0, %eax
- jl .L_2TAG_PACKET_14.0.2
- movl 132(%esp), %eax
- cmpl $1083179008, %eax
- jge .L_2TAG_PACKET_10.0.2
- cmpl $-1048576, %eax
- jae .L_2TAG_PACKET_11.0.2
-.L_2TAG_PACKET_6.0.2:
- xorpd %xmm0, %xmm0
- movl $49136, %eax
- pinsrw $3, %eax, %xmm0
- jmp .L_2TAG_PACKET_4.0.2
-.L_2TAG_PACKET_4.0.2:
- movsd %xmm0, 48(%esp)
- fldl 48(%esp)
-.L_2TAG_PACKET_9.0.2:
- movl 64(%esp), %ebx
- movl %ebp, %esp
- popl %ebp
- ret
-..B2.3:
-END(expm1)
-# -- End expm1
-
-# Start file scope ASM
-ALIAS_SYMBOL(expm1l, expm1);
-# End file scope ASM
- .section .rodata, "a"
- .align 16
- .align 16
-static_const_table:
- .long 0
- .long 4293918720
- .long 0
- .long 4293918720
- .long 4294967232
- .long 0
- .long 4294967232
- .long 0
- .long 65472
- .long 0
- .long 65472
- .long 0
- .long 0
- .long 1127743488
- .long 0
- .long 1127743488
- .long 1697350398
- .long 1079448903
- .long 1697350398
- .long 1079448903
- .long 4277796864
- .long 1065758274
- .long 4277796864
- .long 1065758274
- .long 3164486458
- .long 1025308570
- .long 3164486458
- .long 1025308570
- .long 1963358694
- .long 1065423121
- .long 1431655765
- .long 1069897045
- .long 1431655765
- .long 1067799893
- .long 0
- .long 1071644672
- .long 381774871
- .long 1062650220
- .long 381774871
- .long 1062650220
- .long 0
- .long 0
- .long 0
- .long 0
- .long 1000070955
- .long 1042145304
- .long 1040187392
- .long 11418
- .long 988267849
- .long 1039500660
- .long 3539992576
- .long 22960
- .long 36755401
- .long 1042114290
- .long 402653184
- .long 34629
- .long 3634769483
- .long 1042178627
- .long 1820327936
- .long 46424
- .long 2155991225
- .long 1041560680
- .long 847249408
- .long 58348
- .long 2766913307
- .long 1039293264
- .long 3489660928
- .long 70401
- .long 3651174602
- .long 1040488175
- .long 2927624192
- .long 82586
- .long 3073892131
- .long 1042240606
- .long 1006632960
- .long 94904
- .long 1328391742
- .long 1042019037
- .long 3942645760
- .long 107355
- .long 2650893825
- .long 1041903210
- .long 822083584
- .long 119943
- .long 2397289153
- .long 1041802037
- .long 2281701376
- .long 132667
- .long 430997175
- .long 1042110606
- .long 1845493760
- .long 145530
- .long 1230936525
- .long 1041801015
- .long 1702887424
- .long 158533
- .long 740675935
- .long 1040178913
- .long 4110417920
- .long 171677
- .long 3489810261
- .long 1041825986
- .long 2793406464
- .long 184965
- .long 2532600530
- .long 1040767882
- .long 167772160
- .long 198398
- .long 3542557060
- .long 1041827263
- .long 2986344448
- .long 211976
- .long 1401563777
- .long 1041061093
- .long 922746880
- .long 225703
- .long 3129406026
- .long 1041852413
- .long 880803840
- .long 239579
- .long 900993572
- .long 1039283234
- .long 1275068416
- .long 253606
- .long 2115029358
- .long 1042140042
- .long 562036736
- .long 267786
- .long 1086643152
- .long 1041785419
- .long 1610612736
- .long 282120
- .long 82864366
- .long 1041256244
- .long 3045064704
- .long 296610
- .long 2392968152
- .long 1040913683
- .long 3573547008
- .long 311258
- .long 2905856183
- .long 1040002214
- .long 1988100096
- .long 326066
- .long 3742008261
- .long 1040011137
- .long 1451229184
- .long 341035
- .long 863393794
- .long 1040880621
- .long 914358272
- .long 356167
- .long 1446136837
- .long 1041372426
- .long 3707764736
- .long 371463
- .long 927855201
- .long 1040617636
- .long 360710144
- .long 386927
- .long 1492679939
- .long 1041050306
- .long 2952790016
- .long 402558
- .long 608827001
- .long 1041582217
- .long 2181038080
- .long 418360
- .long 606260204
- .long 1042271987
- .long 1711276032
- .long 434334
- .long 3163044019
- .long 1041843851
- .long 1006632960
- .long 450482
- .long 4148747325
- .long 1041962972
- .long 3900702720
- .long 466805
- .long 802924201
- .long 1041275378
- .long 1442840576
- .long 483307
- .long 3052749833
- .long 1041940577
- .long 1937768448
- .long 499988
- .long 2216116399
- .long 1041486744
- .long 914358272
- .long 516851
- .long 2729697836
- .long 1041445764
- .long 2566914048
- .long 533897
- .long 540608356
- .long 1041310907
- .long 2600468480
- .long 551129
- .long 2916344493
- .long 1040535661
- .long 1107296256
- .long 568549
- .long 731391814
- .long 1039497014
- .long 2566914048
- .long 586158
- .long 1024722704
- .long 1041461625
- .long 2961178624
- .long 603959
- .long 3806831748
- .long 1041732499
- .long 2675965952
- .long 621954
- .long 238953304
- .long 1040316488
- .long 2189426688
- .long 640145
- .long 749123235
- .long 1041725785
- .long 2063597568
- .long 658534
- .long 1168187977
- .long 1041175214
- .long 2986344448
- .long 677123
- .long 3506096399
- .long 1042186095
- .long 1426063360
- .long 695915
- .long 1470221620
- .long 1041675499
- .long 2566914048
- .long 714911
- .long 3182425146
- .long 1041483134
- .long 3087007744
- .long 734114
- .long 3131698208
- .long 1042208657
- .long 4068474880
- .long 753526
- .long 2300504125
- .long 1041428596
- .long 2415919104
- .long 773150
- .long 2290297931
- .long 1037388400
- .long 3716153344
- .long 792987
- .long 3532148223
- .long 1041626194
- .long 771751936
- .long 813041
- .long 1161884404
- .long 1042015258
- .long 3699376128
- .long 833312
- .long 876383176
- .long 1037968878
- .long 1241513984
- .long 853805
- .long 3379986796
- .long 1042213153
- .long 3699376128
- .long 874520
- .long 1545797737
- .long 1041681569
- .long 58720256
- .long 895462
- .long 2925146801
- .long 1042212567
- .long 855638016
- .long 916631
- .long 1316627971
- .long 1038516204
- .long 3883925504
- .long 938030
- .long 3267869137
- .long 1040337004
- .long 2726297600
- .long 959663
- .long 3720868999
- .long 1041782409
- .long 3992977408
- .long 981531
- .long 433316142
- .long 1041994064
- .long 1526726656
- .long 1003638
- .long 781232103
- .long 1040093400
- .long 2172649472
- .long 1025985
- .long 2773927732
- .long 1053236707
- .long 381774871
- .long 1062650220
- .long 379653899
- .long 1056571845
- .long 286331153
- .long 1065423121
- .long 436314138
- .long 1059717536
- .long 1431655765
- .long 1067799893
- .long 1431655765
- .long 1069897045
- .long 0
- .long 1071644672
- .long 0
- .long 1072693248
- .long 0
- .long 2146435072
- .long 0
- .long 0
- .long 4294967295
- .long 2146435071
- .long 0
- .long 1048576
- .long 4227858432
- .long 4294967295
- .type static_const_table,@object
- .size static_const_table,1296
- .data
- .section .note.GNU-stack, "",@progbits
-# End
diff --git a/libm/x86/s_log1p.S b/libm/x86/s_log1p.S
deleted file mode 100644
index de7b87b..0000000
--- a/libm/x86/s_log1p.S
+++ /dev/null
@@ -1,827 +0,0 @@
-/*
-Copyright (c) 2014, Intel Corporation
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
-
- * Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
-
- * Neither the name of Intel Corporation nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
-ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/******************************************************************************/
-// ALGORITHM DESCRIPTION
-// ---------------------
-//
-// Let x=2^k * mx, mx in [1,2)
-//
-// Get B~1/mx based on the output of rcpps instruction (B0)
-// B = int((B0*2^7+0.5))/2^7
-//
-// Reduced argument: r=B*mx-1.0 (computed accurately in high and low parts)
-//
-// Result: k*log(2) - log(B) + p(r)
-// p(r) is a degree 7 polynomial
-// -log(B) read from data table (high, low parts)
-// Result is formed from high and low parts
-//
-// Special cases:
-// log1p(NaN) = quiet NaN, and raise invalid exception
-// log1p(+INF) = that INF
-// log1p(x) = NaN if x < -1 or x = -INF, and raises invalid exception
-// log1p(-1) = -INF, and raises divide-by-zero exception
-// log1p(+/-0) = +/-0
-//
-/******************************************************************************/
-
-#include <private/bionic_asm.h>
-# -- Begin static_func
- .text
- .align __bionic_asm_align
- .type static_func, @function
-static_func:
-..B1.1:
- call ..L2
-..L2:
- popl %eax
- lea _GLOBAL_OFFSET_TABLE_+[. - ..L2](%eax), %eax
- lea static_const_table@GOTOFF(%eax), %eax
- ret
- .size static_func,.-static_func
-# -- End static_func
-
-# -- Begin log1p
-ENTRY(log1p)
-# parameter 1: 8 + %ebp
-..B2.1:
-..B2.2:
- pushl %ebp
- movl %esp, %ebp
- subl $104, %esp
- movl %ebx, 40(%esp)
- call static_func
- movl %eax, %ebx
- movsd 112(%esp), %xmm0
- xorpd %xmm2, %xmm2
- movl $16368, %eax
- pinsrw $3, %eax, %xmm2
- xorpd %xmm3, %xmm3
- movl $32768, %ecx
- movd %ecx, %xmm4
- movsd 2128(%ebx), %xmm5
- pshufd $68, %xmm0, %xmm7
- movapd %xmm2, %xmm6
- pextrw $3, %xmm0, %ecx
- addsd %xmm2, %xmm0
- movapd %xmm0, %xmm1
- pextrw $3, %xmm0, %eax
- subsd %xmm0, %xmm6
- orpd %xmm2, %xmm0
- psllq $5, %xmm0
- psrlq $34, %xmm0
- subl $16, %eax
- cmpl $32736, %eax
- jae .L_2TAG_PACKET_0.0.2
- addsd %xmm6, %xmm7
- rcpss %xmm0, %xmm0
- psllq $12, %xmm1
- pshufd $228, %xmm5, %xmm6
- psrlq $12, %xmm1
- andl $32752, %ecx
- cmpl $16256, %ecx
- jb .L_2TAG_PACKET_1.0.2
- andl $32752, %eax
- movl $32720, %ecx
- subl %eax, %ecx
- pinsrw $3, %ecx, %xmm3
-.L_2TAG_PACKET_2.0.2:
- mulsd %xmm3, %xmm7
- paddd %xmm4, %xmm0
- xorpd %xmm4, %xmm4
- movl $14336, %ecx
- pinsrw $3, %ecx, %xmm4
- orpd %xmm2, %xmm1
- movd %xmm0, %edx
- psllq $29, %xmm0
- andpd %xmm1, %xmm5
- andpd %xmm6, %xmm0
- subsd %xmm5, %xmm1
- paddd %xmm4, %xmm0
- mulsd %xmm0, %xmm5
- movl $16352, %ecx
- subl %ecx, %eax
- cvtsi2sdl %eax, %xmm4
- mulsd %xmm0, %xmm7
- mulsd %xmm0, %xmm1
- movsd 2064(%ebx), %xmm6
- movapd 2080(%ebx), %xmm3
- subsd %xmm2, %xmm5
- andl $16711680, %edx
- shrl $12, %edx
- movapd (%ebx,%edx), %xmm0
- movapd 2096(%ebx), %xmm2
- addsd %xmm5, %xmm1
- movapd %xmm1, %xmm5
- addsd %xmm7, %xmm1
- subsd %xmm1, %xmm5
- addsd %xmm5, %xmm7
- mulsd %xmm4, %xmm6
- mulsd 2072(%ebx), %xmm4
- mulsd %xmm1, %xmm3
- pshufd $68, %xmm1, %xmm5
- addsd %xmm6, %xmm0
- mulpd %xmm5, %xmm2
- mulpd %xmm5, %xmm5
- pshufd $228, %xmm0, %xmm6
- addsd %xmm1, %xmm0
- addpd 2112(%ebx), %xmm2
- mulpd %xmm5, %xmm3
- subsd %xmm0, %xmm6
- mulsd %xmm1, %xmm2
- addsd %xmm7, %xmm4
- mulsd %xmm1, %xmm7
- addsd %xmm6, %xmm1
- pshufd $238, %xmm0, %xmm6
- mulsd %xmm5, %xmm5
- addsd %xmm6, %xmm4
- subsd %xmm7, %xmm1
- addpd %xmm3, %xmm2
- addsd %xmm4, %xmm1
- mulpd %xmm5, %xmm2
- addsd %xmm2, %xmm1
- pshufd $238, %xmm2, %xmm5
- addsd %xmm5, %xmm1
- addsd %xmm1, %xmm0
- jmp .L_2TAG_PACKET_3.0.2
-.L_2TAG_PACKET_0.0.2:
- movsd 112(%esp), %xmm0
- movapd %xmm0, %xmm1
- addl $16, %eax
- cmpl $32768, %eax
- jae .L_2TAG_PACKET_4.0.2
- cmpl $0, %eax
- je .L_2TAG_PACKET_5.0.2
-.L_2TAG_PACKET_6.0.2:
- addsd %xmm0, %xmm0
- jmp .L_2TAG_PACKET_3.0.2
-.L_2TAG_PACKET_7.0.2:
- ja .L_2TAG_PACKET_6.0.2
- cmpl $0, %edx
- ja .L_2TAG_PACKET_6.0.2
- jmp .L_2TAG_PACKET_8.0.2
-.L_2TAG_PACKET_4.0.2:
- movd %xmm1, %edx
- psrlq $32, %xmm1
- movd %xmm1, %ecx
- addl %ecx, %ecx
- cmpl $-2097152, %ecx
- jae .L_2TAG_PACKET_7.0.2
- orl %ecx, %edx
- cmpl $0, %edx
- je .L_2TAG_PACKET_5.0.2
-.L_2TAG_PACKET_8.0.2:
- xorpd %xmm1, %xmm1
- xorpd %xmm0, %xmm0
- movl $32752, %eax
- pinsrw $3, %eax, %xmm1
- movl $141, %edx
- mulsd %xmm1, %xmm0
-.L_2TAG_PACKET_9.0.2:
- movsd %xmm0, (%esp)
- movsd 112(%esp), %xmm0
- fldl (%esp)
- jmp .L_2TAG_PACKET_10.0.2
-.L_2TAG_PACKET_5.0.2:
- xorpd %xmm1, %xmm1
- xorpd %xmm0, %xmm0
- movl $49136, %eax
- pinsrw $3, %eax, %xmm0
- divsd %xmm1, %xmm0
- movl $140, %edx
- jmp .L_2TAG_PACKET_9.0.2
-.L_2TAG_PACKET_1.0.2:
- movsd 112(%esp), %xmm0
- cmpl $15504, %ecx
- jb .L_2TAG_PACKET_11.0.2
- movapd 2144(%ebx), %xmm1
- pshufd $68, %xmm0, %xmm0
- movapd 2160(%ebx), %xmm2
- pshufd $68, %xmm0, %xmm4
- movapd 2176(%ebx), %xmm3
- mulpd %xmm0, %xmm1
- xorpd %xmm6, %xmm6
- mulpd %xmm4, %xmm4
- addpd %xmm2, %xmm1
- pshufd $68, %xmm4, %xmm5
- mulpd %xmm0, %xmm4
- movl $49120, %eax
- pinsrw $3, %eax, %xmm6
- mulpd %xmm0, %xmm1
- mulsd %xmm4, %xmm4
- addpd %xmm3, %xmm1
- mulsd %xmm6, %xmm5
- mulpd %xmm4, %xmm1
- pshufd $238, %xmm1, %xmm7
- addsd %xmm7, %xmm1
- addsd %xmm5, %xmm1
- addsd %xmm1, %xmm0
- jmp .L_2TAG_PACKET_3.0.2
-.L_2TAG_PACKET_11.0.2:
- cmpl $16, %ecx
- jb .L_2TAG_PACKET_12.0.2
- jmp .L_2TAG_PACKET_3.0.2
-.L_2TAG_PACKET_12.0.2:
- movapd %xmm0, %xmm1
- mulsd %xmm1, %xmm1
- jmp .L_2TAG_PACKET_3.0.2
-.L_2TAG_PACKET_3.0.2:
- movsd %xmm0, 24(%esp)
- fldl 24(%esp)
-.L_2TAG_PACKET_10.0.2:
- movl 40(%esp), %ebx
- movl %ebp, %esp
- popl %ebp
- ret
-..B2.3:
-END(log1p)
-# -- End log1p
-
-# Start file scope ASM
-ALIAS_SYMBOL(log1pl, log1p);
-# End file scope ASM
- .section .rodata, "a"
- .align 16
- .align 16
-static_const_table:
- .long 4277811200
- .long 1072049730
- .long 2479318832
- .long 1026487127
- .long 2854492160
- .long 1072033410
- .long 215631550
- .long 1025638968
- .long 1547061248
- .long 1072017216
- .long 2886781435
- .long 1026423395
- .long 649825280
- .long 1072001146
- .long 4281533405
- .long 1024038923
- .long 646346752
- .long 1071985198
- .long 1562735921
- .long 1023790276
- .long 2203734016
- .long 1071969370
- .long 1838397691
- .long 3173936209
- .long 1872169984
- .long 1071953661
- .long 3981202460
- .long 1022325013
- .long 669557760
- .long 1071938069
- .long 4182597802
- .long 3173174122
- .long 4076413952
- .long 1071922591
- .long 1209029111
- .long 3170736207
- .long 556125184
- .long 1071907228
- .long 821086028
- .long 3173437049
- .long 204914688
- .long 1071891976
- .long 2097025986
- .long 3171071798
- .long 387545088
- .long 1071876834
- .long 3142936996
- .long 3173092218
- .long 2912783360
- .long 1071861800
- .long 2502420140
- .long 1024505919
- .long 1144260608
- .long 1071846874
- .long 3315658140
- .long 3173469843
- .long 1471209472
- .long 1071832053
- .long 129621009
- .long 3172443877
- .long 1829683200
- .long 1071817336
- .long 3885467693
- .long 1025535275
- .long 288676864
- .long 1071802722
- .long 86139472
- .long 3171639793
- .long 3636378624
- .long 1071788208
- .long 1850238587
- .long 1024654342
- .long 1606817792
- .long 1071773795
- .long 3388899795
- .long 3173675586
- .long 1236164608
- .long 1071759480
- .long 3983599207
- .long 1020046558
- .long 1089616896
- .long 1071745262
- .long 4171974224
- .long 1024773198
- .long 4143093760
- .long 1071731139
- .long 2727587401
- .long 3173965207
- .long 600267776
- .long 1071717112
- .long 3147685042
- .long 3173353031
- .long 2249313280
- .long 1071703177
- .long 125835074
- .long 1025255832
- .long 3805303808
- .long 1071689334
- .long 2289991207
- .long 1025460331
- .long 87278592
- .long 1071675583
- .long 1106114045
- .long 1025933602
- .long 3195405312
- .long 1071661920
- .long 3885316576
- .long 3171206239
- .long 3853649920
- .long 1071648346
- .long 2977069852
- .long 3171236771
- .long 2944026624
- .long 1071625048
- .long 1008093493
- .long 1023444474
- .long 3993180160
- .long 1071598247
- .long 1862355595
- .long 1024642533
- .long 1454641152
- .long 1071571617
- .long 1514603089
- .long 1026500596
- .long 3286085632
- .long 1071545154
- .long 1400028424
- .long 3173279056
- .long 438773760
- .long 1071518858
- .long 120727864
- .long 3172148914
- .long 1212979200
- .long 1071492725
- .long 1625055594
- .long 3172901933
- .long 1189017600
- .long 1071466754
- .long 3920062376
- .long 1025727407
- .long 403064832
- .long 1071440943
- .long 1053271728
- .long 3171391427
- .long 3343210496
- .long 1071415289
- .long 3243395502
- .long 3173627613
- .long 1765777408
- .long 1071389792
- .long 2145968512
- .long 1026354304
- .long 461430784
- .long 1071364449
- .long 4094322285
- .long 1026021467
- .long 71706624
- .long 1071339258
- .long 763632021
- .long 1024496933
- .long 1380503552
- .long 1071314217
- .long 1383547992
- .long 3173088453
- .long 1015732224
- .long 1071289325
- .long 3198646877
- .long 1025390322
- .long 35977216
- .long 1071264580
- .long 2141026805
- .long 1025754693
- .long 3927306240
- .long 1071239979
- .long 282116272
- .long 3173394334
- .long 1125341184
- .long 1071215523
- .long 2768427504
- .long 3172279059
- .long 1666971648
- .long 1071191208
- .long 786837629
- .long 3172427445
- .long 2827694080
- .long 1071167033
- .long 3857122416
- .long 3173014241
- .long 2003683328
- .long 1071142997
- .long 859010954
- .long 1026545007
- .long 1004017664
- .long 1071119098
- .long 3356644970
- .long 3173458064
- .long 1753020416
- .long 1071095334
- .long 788338552
- .long 1026157693
- .long 1992718336
- .long 1071071704
- .long 1239179443
- .long 1026394889
- .long 3870234624
- .long 1071048206
- .long 2082614663
- .long 1024926053
- .long 1050437632
- .long 1071024840
- .long 660007840
- .long 1025548499
- .long 188395520
- .long 1071001603
- .long 3878792704
- .long 3173889571
- .long 3747176448
- .long 1070978493
- .long 144991708
- .long 3171552042
- .long 1405669376
- .long 1070955511
- .long 3999088879
- .long 1025486317
- .long 121151488
- .long 1070932654
- .long 2170865497
- .long 1026473584
- .long 2652319744
- .long 1070909920
- .long 453695652
- .long 3173916809
- .long 3262236672
- .long 1070887309
- .long 157800053
- .long 3173984206
- .long 601221120
- .long 1070864820
- .long 3968917661
- .long 1023992886
- .long 1999843328
- .long 1070842450
- .long 3053895004
- .long 1024998228
- .long 1992167424
- .long 1070820199
- .long 2968614856
- .long 1024552653
- .long 3788726272
- .long 1070798065
- .long 3542170808
- .long 3173573242
- .long 2094829568
- .long 1070776048
- .long 1246758132
- .long 1026202874
- .long 288675840
- .long 1070754146
- .long 3747328950
- .long 1026331585
- .long 1829681152
- .long 1070732357
- .long 3125197546
- .long 1024100318
- .long 1666869248
- .long 1070710681
- .long 1363656119
- .long 1026336493
- .long 3417110528
- .long 1070689116
- .long 4154791553
- .long 1026267853
- .long 2183653376
- .long 1070667662
- .long 1671819292
- .long 3173785870
- .long 1734434816
- .long 1070646317
- .long 373091049
- .long 1025972363
- .long 1615681536
- .long 1070625080
- .long 384650897
- .long 1022926043
- .long 1445382144
- .long 1070603950
- .long 344320330
- .long 3172397196
- .long 1823715328
- .long 1070569756
- .long 3389841200
- .long 1025231852
- .long 3839688704
- .long 1070527917
- .long 1706790417
- .long 3167363349
- .long 4293332992
- .long 1070486286
- .long 1614935088
- .long 1019351591
- .long 2966720512
- .long 1070444861
- .long 4145393717
- .long 3173711658
- .long 4066729984
- .long 1070403639
- .long 1974925028
- .long 3171437182
- .long 3337621504
- .long 1070362619
- .long 3314953170
- .long 3169971314
- .long 943448064
- .long 1070321799
- .long 1498682038
- .long 3173862340
- .long 1465634816
- .long 1070281176
- .long 1319952810
- .long 3171693965
- .long 1015734272
- .long 1070240749
- .long 1347821929
- .long 3173544515
- .long 118001664
- .long 1070200516
- .long 1751482746
- .long 1026134093
- .long 3707174912
- .long 1070160474
- .long 1486946159
- .long 1023930920
- .long 3946381312
- .long 1070120623
- .long 2867408081
- .long 3171368276
- .long 1699848192
- .long 1070080961
- .long 2590187139
- .long 1025379803
- .long 2235846656
- .long 1070041485
- .long 1888568069
- .long 3172754960
- .long 2339729408
- .long 1070002194
- .long 3852214753
- .long 3173323149
- .long 3196850176
- .long 1069963086
- .long 742141560
- .long 1025101707
- .long 1800683520
- .long 1069924160
- .long 3949500444
- .long 3172102179
- .long 3835801600
- .long 1069885413
- .long 3848895943
- .long 1025913832
- .long 2201202688
- .long 1069846845
- .long 1425913464
- .long 1025868665
- .long 2778279936
- .long 1069808453
- .long 2120889677
- .long 3173831128
- .long 2954203136
- .long 1069770236
- .long 592147081
- .long 1019621288
- .long 210141184
- .long 1069732193
- .long 3414275233
- .long 1023647084
- .long 709476352
- .long 1069694321
- .long 2413027164
- .long 1024462115
- .long 2116284416
- .long 1069656619
- .long 1144559924
- .long 1026336654
- .long 2183651328
- .long 1069619086
- .long 3459057650
- .long 1025634168
- .long 3047047168
- .long 1069581720
- .long 1879674924
- .long 3173508573
- .long 970711040
- .long 1069541521
- .long 1335954173
- .long 3173332182
- .long 2198478848
- .long 1069467449
- .long 2951103968
- .long 3173892200
- .long 1669611520
- .long 1069393703
- .long 531044147
- .long 1025149248
- .long 29114368
- .long 1069320280
- .long 3327831251
- .long 1025918673
- .long 2376949760
- .long 1069247176
- .long 737634533
- .long 3172176000
- .long 1085390848
- .long 1069174390
- .long 3108243400
- .long 3171828406
- .long 1566130176
- .long 1069101918
- .long 985483226
- .long 1025708380
- .long 792780800
- .long 1069029758
- .long 4184866295
- .long 1024426204
- .long 183156736
- .long 1068957907
- .long 2845699378
- .long 1022107277
- .long 1301782528
- .long 1068886362
- .long 1012735262
- .long 3173804294
- .long 1562411008
- .long 1068815121
- .long 2197086703
- .long 3170187813
- .long 2815549440
- .long 1068744181
- .long 2782613207
- .long 1026345054
- .long 2756124672
- .long 1068673540
- .long 2929486205
- .long 3173037800
- .long 3511050240
- .long 1068603195
- .long 1443733147
- .long 3173331549
- .long 3047047168
- .long 1068533144
- .long 1879674924
- .long 3172459997
- .long 3221667840
- .long 1068427825
- .long 1338588027
- .long 3171815742
- .long 3453861888
- .long 1068288883
- .long 1205348359
- .long 3172624626
- .long 3506110464
- .long 1068150514
- .long 893105198
- .long 1025571866
- .long 346013696
- .long 1068012714
- .long 3495569021
- .long 3172563349
- .long 4074029056
- .long 1067875476
- .long 3961106338
- .long 3171065595
- .long 3559784448
- .long 1067738798
- .long 1975385384
- .long 3173783155
- .long 797769728
- .long 1067602675
- .long 3760305787
- .long 1026047642
- .long 2313633792
- .long 1067467101
- .long 1559353171
- .long 1023480256
- .long 3960766464
- .long 1067213778
- .long 1067365107
- .long 1025865926
- .long 684261376
- .long 1066944805
- .long 844762164
- .long 3173687482
- .long 630718464
- .long 1066676905
- .long 2458269694
- .long 1024033081
- .long 1486061568
- .long 1066410070
- .long 115537874
- .long 3173243995
- .long 2743664640
- .long 1065886792
- .long 3665098304
- .long 3173471607
- .long 1971912704
- .long 1065357333
- .long 2577214440
- .long 3171993451
- .long 1498939392
- .long 1064306693
- .long 3409036923
- .long 1025599151
- .long 0
- .long 0
- .long 0
- .long 2147483648
- .long 4277811200
- .long 1067855426
- .long 2479318832
- .long 1022292823
- .long 2454267026
- .long 1069697316
- .long 0
- .long 3218079744
- .long 1030730101
- .long 3217380702
- .long 1431655765
- .long 1070945621
- .long 2576980378
- .long 1070176665
- .long 0
- .long 3219128320
- .long 0
- .long 4294959104
- .long 0
- .long 4294959104
- .long 0
- .long 3217031168
- .long 2576980378
- .long 1070176665
- .long 2454267026
- .long 1069697316
- .long 0
- .long 3218079744
- .long 1431655765
- .long 3217380693
- .long 1431655765
- .long 1070945621
- .type static_const_table,@object
- .size static_const_table,2192
- .data
- .section .note.GNU-stack, "",@progbits
-# End
diff --git a/libm/x86/s_sin.S b/libm/x86/s_sin.S
deleted file mode 100644
index 74d1b86..0000000
--- a/libm/x86/s_sin.S
+++ /dev/null
@@ -1,907 +0,0 @@
-/*
-Copyright (c) 2014, Intel Corporation
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
-
- * Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
-
- * Neither the name of Intel Corporation nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
-ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/******************************************************************************/
-// ALGORITHM DESCRIPTION
-// ---------------------
-//
-// 1. RANGE REDUCTION
-//
-// We perform an initial range reduction from X to r with
-//
-// X =~= N * pi/32 + r
-//
-// so that |r| <= pi/64 + epsilon. We restrict inputs to those
-// where |N| <= 932560. Beyond this, the range reduction is
-// insufficiently accurate. For extremely small inputs,
-// denormalization can occur internally, impacting performance.
-// This means that the main path is actually only taken for
-// 2^-252 <= |X| < 90112.
-//
-// To avoid branches, we perform the range reduction to full
-// accuracy each time.
-//
-// X - N * (P_1 + P_2 + P_3)
-//
-// where P_1 and P_2 are 32-bit numbers (so multiplication by N
-// is exact) and P_3 is a 53-bit number. Together, these
-// approximate pi well enough for all cases in the restricted
-// range.
-//
-// The main reduction sequence is:
-//
-// y = 32/pi * x
-// N = integer(y)
-// (computed by adding and subtracting off SHIFTER)
-//
-// m_1 = N * P_1
-// m_2 = N * P_2
-// r_1 = x - m_1
-// r = r_1 - m_2
-// (this r can be used for most of the calculation)
-//
-// c_1 = r_1 - r
-// m_3 = N * P_3
-// c_2 = c_1 - m_2
-// c = c_2 - m_3
-//
-// 2. MAIN ALGORITHM
-//
-// The algorithm uses a table lookup based on B = M * pi / 32
-// where M = N mod 64. The stored values are:
-// sigma closest power of 2 to cos(B)
-// C_hl 53-bit cos(B) - sigma
-// S_hi + S_lo 2 * 53-bit sin(B)
-//
-// The computation is organized as follows:
-//
-// sin(B + r + c) = [sin(B) + sigma * r] +
-// r * (cos(B) - sigma) +
-// sin(B) * [cos(r + c) - 1] +
-// cos(B) * [sin(r + c) - r]
-//
-// which is approximately:
-//
-// [S_hi + sigma * r] +
-// C_hl * r +
-// S_lo + S_hi * [(cos(r) - 1) - r * c] +
-// (C_hl + sigma) * [(sin(r) - r) + c]
-//
-// and this is what is actually computed. We separate this sum
-// into four parts:
-//
-// hi + med + pols + corr
-//
-// where
-//
-// hi = S_hi + sigma r
-// med = C_hl * r
-// pols = S_hi * (cos(r) - 1) + (C_hl + sigma) * (sin(r) - r)
-// corr = S_lo + c * ((C_hl + sigma) - S_hi * r)
-//
-// 3. POLYNOMIAL
-//
-// The polynomial S_hi * (cos(r) - 1) + (C_hl + sigma) *
-// (sin(r) - r) can be rearranged freely, since it is quite
-// small, so we exploit parallelism to the fullest.
-//
-// psc4 = SC_4 * r_1
-// msc4 = psc4 * r
-// r2 = r * r
-// msc2 = SC_2 * r2
-// r4 = r2 * r2
-// psc3 = SC_3 + msc4
-// psc1 = SC_1 + msc2
-// msc3 = r4 * psc3
-// sincospols = psc1 + msc3
-// pols = sincospols *
-// <S_hi * r^2 | (C_hl + sigma) * r^3>
-//
-// 4. CORRECTION TERM
-//
-// This is where the "c" component of the range reduction is
-// taken into account; recall that just "r" is used for most of
-// the calculation.
-//
-// -c = m_3 - c_2
-// -d = S_hi * r - (C_hl + sigma)
-// corr = -c * -d + S_lo
-//
-// 5. COMPENSATED SUMMATIONS
-//
-// The two successive compensated summations add up the high
-// and medium parts, leaving just the low parts to add up at
-// the end.
-//
-// rs = sigma * r
-// res_int = S_hi + rs
-// k_0 = S_hi - res_int
-// k_2 = k_0 + rs
-// med = C_hl * r
-// res_hi = res_int + med
-// k_1 = res_int - res_hi
-// k_3 = k_1 + med
-//
-// 6. FINAL SUMMATION
-//
-// We now add up all the small parts:
-//
-// res_lo = pols(hi) + pols(lo) + corr + k_1 + k_3
-//
-// Now the overall result is just:
-//
-// res_hi + res_lo
-//
-// 7. SMALL ARGUMENTS
-//
-// If |x| < SNN (SNN meaning the smallest normal number), we
-// simply perform 0.1111111 cdots 1111 * x. For SNN <= |x|, we
-// do 2^-55 * (2^55 * x - x).
-//
-// Special cases:
-// sin(NaN) = quiet NaN, and raise invalid exception
-// sin(INF) = NaN and raise invalid exception
-// sin(+/-0) = +/-0
-//
-/******************************************************************************/
-
-#include <private/bionic_asm.h>
-# -- Begin static_func
- .text
- .align __bionic_asm_align
- .type static_func, @function
-static_func:
-..B1.1:
- call ..L2
-..L2:
- popl %eax
- lea _GLOBAL_OFFSET_TABLE_+[. - ..L2](%eax), %eax
- lea static_const_table@GOTOFF(%eax), %eax
- ret
- .size static_func,.-static_func
-# -- End static_func
-
-# -- Begin sin
-ENTRY(sin)
-# parameter 1: 8 + %ebp
-..B2.1:
-..B2.2:
- pushl %ebp
- movl %esp, %ebp
- subl $120, %esp
- movl %ebx, 56(%esp)
- call static_func
- movl %eax, %ebx
- movsd 128(%esp), %xmm0
- pextrw $3, %xmm0, %eax
- andl $32767, %eax
- subl $12336, %eax
- cmpl $4293, %eax
- ja .L_2TAG_PACKET_0.0.2
- movsd 2160(%ebx), %xmm1
- mulsd %xmm0, %xmm1
- movsd 2272(%ebx), %xmm5
- movapd 2256(%ebx), %xmm4
- andpd %xmm0, %xmm4
- orps %xmm4, %xmm5
- movsd 2128(%ebx), %xmm3
- movapd 2112(%ebx), %xmm2
- addpd %xmm5, %xmm1
- cvttsd2si %xmm1, %edx
- cvtsi2sdl %edx, %xmm1
- mulsd %xmm1, %xmm3
- unpcklpd %xmm1, %xmm1
- addl $1865216, %edx
- movapd %xmm0, %xmm4
- andl $63, %edx
- movapd 2096(%ebx), %xmm5
- lea (%ebx), %eax
- shll $5, %edx
- addl %edx, %eax
- mulpd %xmm1, %xmm2
- subsd %xmm3, %xmm0
- mulsd 2144(%ebx), %xmm1
- subsd %xmm3, %xmm4
- movsd 8(%eax), %xmm7
- unpcklpd %xmm0, %xmm0
- movapd %xmm4, %xmm3
- subsd %xmm2, %xmm4
- mulpd %xmm0, %xmm5
- subpd %xmm2, %xmm0
- movapd 2064(%ebx), %xmm6
- mulsd %xmm4, %xmm7
- subsd %xmm4, %xmm3
- mulpd %xmm0, %xmm5
- mulpd %xmm0, %xmm0
- subsd %xmm2, %xmm3
- movapd (%eax), %xmm2
- subsd %xmm3, %xmm1
- movsd 24(%eax), %xmm3
- addsd %xmm3, %xmm2
- subsd %xmm2, %xmm7
- mulsd %xmm4, %xmm2
- mulpd %xmm0, %xmm6
- mulsd %xmm4, %xmm3
- mulpd %xmm0, %xmm2
- mulpd %xmm0, %xmm0
- addpd 2080(%ebx), %xmm5
- mulsd (%eax), %xmm4
- addpd 2048(%ebx), %xmm6
- mulpd %xmm0, %xmm5
- movapd %xmm3, %xmm0
- addsd 8(%eax), %xmm3
- mulpd %xmm7, %xmm1
- movapd %xmm4, %xmm7
- addsd %xmm3, %xmm4
- addpd %xmm5, %xmm6
- movsd 8(%eax), %xmm5
- subsd %xmm3, %xmm5
- subsd %xmm4, %xmm3
- addsd 16(%eax), %xmm1
- mulpd %xmm2, %xmm6
- addsd %xmm0, %xmm5
- addsd %xmm7, %xmm3
- addsd %xmm5, %xmm1
- addsd %xmm3, %xmm1
- addsd %xmm6, %xmm1
- unpckhpd %xmm6, %xmm6
- addsd %xmm6, %xmm1
- addsd %xmm1, %xmm4
- movsd %xmm4, (%esp)
- fldl (%esp)
- jmp .L_2TAG_PACKET_1.0.2
-.L_2TAG_PACKET_0.0.2:
- jg .L_2TAG_PACKET_2.0.2
- shrl $4, %eax
- cmpl $268434685, %eax
- jne .L_2TAG_PACKET_3.0.2
- movsd %xmm0, (%esp)
- fldl (%esp)
- jmp .L_2TAG_PACKET_1.0.2
-.L_2TAG_PACKET_3.0.2:
- movsd 2192(%ebx), %xmm3
- mulsd %xmm0, %xmm3
- subsd %xmm0, %xmm3
- mulsd 2208(%ebx), %xmm3
- movsd %xmm0, (%esp)
- fldl (%esp)
- jmp .L_2TAG_PACKET_1.0.2
-.L_2TAG_PACKET_2.0.2:
- movl 132(%esp), %eax
- andl $2146435072, %eax
- cmpl $2146435072, %eax
- je .L_2TAG_PACKET_4.0.2
- subl $32, %esp
- movsd %xmm0, (%esp)
- lea 40(%esp), %eax
- movl %eax, 8(%esp)
- movl $2, %eax
- movl %eax, 12(%esp)
- call __libm_sincos_huge
- addl $32, %esp
- fldl 16(%esp)
- jmp .L_2TAG_PACKET_1.0.2
-.L_2TAG_PACKET_4.0.2:
- fldl 128(%esp)
- fmull 2240(%ebx)
-.L_2TAG_PACKET_1.0.2:
- movl 56(%esp), %ebx
- movl %ebp, %esp
- popl %ebp
- ret
-..B2.3:
-END(sin)
-# -- End sin
-
-# Start file scope ASM
-ALIAS_SYMBOL(sinl, sin);
-# End file scope ASM
- .section .rodata, "a"
- .align 16
- .align 16
-static_const_table:
- .long 0
- .long 0
- .long 0
- .long 0
- .long 0
- .long 0
- .long 0
- .long 1072693248
- .long 393047345
- .long 3212032302
- .long 3156849708
- .long 1069094822
- .long 3758096384
- .long 3158189848
- .long 0
- .long 1072693248
- .long 18115067
- .long 3214126342
- .long 1013556747
- .long 1070135480
- .long 3221225472
- .long 3160567065
- .long 0
- .long 1072693248
- .long 2476548698
- .long 3215330282
- .long 785751814
- .long 1070765062
- .long 2684354560
- .long 3161838221
- .long 0
- .long 1072693248
- .long 2255197647
- .long 3216211105
- .long 2796464483
- .long 1071152610
- .long 3758096384
- .long 3160878317
- .long 0
- .long 1072693248
- .long 1945768569
- .long 3216915048
- .long 939980347
- .long 1071524701
- .long 536870912
- .long 1012796809
- .long 0
- .long 1072693248
- .long 1539668340
- .long 3217396327
- .long 967731400
- .long 1071761211
- .long 536870912
- .long 1015752157
- .long 0
- .long 1072693248
- .long 1403757309
- .long 3217886718
- .long 621354454
- .long 1071926515
- .long 536870912
- .long 1013450602
- .long 0
- .long 1072693248
- .long 2583490354
- .long 1070236281
- .long 1719614413
- .long 1072079006
- .long 536870912
- .long 3163282740
- .long 0
- .long 1071644672
- .long 2485417816
- .long 1069626316
- .long 1796544321
- .long 1072217216
- .long 536870912
- .long 3162686945
- .long 0
- .long 1071644672
- .long 2598800519
- .long 1068266419
- .long 688824739
- .long 1072339814
- .long 3758096384
- .long 1010431536
- .long 0
- .long 1071644672
- .long 2140183630
- .long 3214756396
- .long 4051746225
- .long 1072445618
- .long 2147483648
- .long 3161907377
- .long 0
- .long 1071644672
- .long 1699043957
- .long 3216902261
- .long 3476196678
- .long 1072533611
- .long 536870912
- .long 1014257638
- .long 0
- .long 1071644672
- .long 1991047213
- .long 1067753521
- .long 1455828442
- .long 1072602945
- .long 3758096384
- .long 1015505073
- .long 0
- .long 1070596096
- .long 240740309
- .long 3215727903
- .long 3489094832
- .long 1072652951
- .long 536870912
- .long 1014325783
- .long 0
- .long 1070596096
- .long 257503056
- .long 3214647653
- .long 2748392742
- .long 1072683149
- .long 1073741824
- .long 3163061750
- .long 0
- .long 1069547520
- .long 0
- .long 0
- .long 0
- .long 1072693248
- .long 0
- .long 0
- .long 0
- .long 0
- .long 257503056
- .long 1067164005
- .long 2748392742
- .long 1072683149
- .long 1073741824
- .long 3163061750
- .long 0
- .long 3217031168
- .long 240740309
- .long 1068244255
- .long 3489094832
- .long 1072652951
- .long 536870912
- .long 1014325783
- .long 0
- .long 3218079744
- .long 1991047213
- .long 3215237169
- .long 1455828442
- .long 1072602945
- .long 3758096384
- .long 1015505073
- .long 0
- .long 3218079744
- .long 1699043957
- .long 1069418613
- .long 3476196678
- .long 1072533611
- .long 536870912
- .long 1014257638
- .long 0
- .long 3219128320
- .long 2140183630
- .long 1067272748
- .long 4051746225
- .long 1072445618
- .long 2147483648
- .long 3161907377
- .long 0
- .long 3219128320
- .long 2598800519
- .long 3215750067
- .long 688824739
- .long 1072339814
- .long 3758096384
- .long 1010431536
- .long 0
- .long 3219128320
- .long 2485417816
- .long 3217109964
- .long 1796544321
- .long 1072217216
- .long 536870912
- .long 3162686945
- .long 0
- .long 3219128320
- .long 2583490354
- .long 3217719929
- .long 1719614413
- .long 1072079006
- .long 536870912
- .long 3163282740
- .long 0
- .long 3219128320
- .long 1403757309
- .long 1070403070
- .long 621354454
- .long 1071926515
- .long 536870912
- .long 1013450602
- .long 0
- .long 3220176896
- .long 1539668340
- .long 1069912679
- .long 967731400
- .long 1071761211
- .long 536870912
- .long 1015752157
- .long 0
- .long 3220176896
- .long 1945768569
- .long 1069431400
- .long 939980347
- .long 1071524701
- .long 536870912
- .long 1012796809
- .long 0
- .long 3220176896
- .long 2255197647
- .long 1068727457
- .long 2796464483
- .long 1071152610
- .long 3758096384
- .long 3160878317
- .long 0
- .long 3220176896
- .long 2476548698
- .long 1067846634
- .long 785751814
- .long 1070765062
- .long 2684354560
- .long 3161838221
- .long 0
- .long 3220176896
- .long 18115067
- .long 1066642694
- .long 1013556747
- .long 1070135480
- .long 3221225472
- .long 3160567065
- .long 0
- .long 3220176896
- .long 393047345
- .long 1064548654
- .long 3156849708
- .long 1069094822
- .long 3758096384
- .long 3158189848
- .long 0
- .long 3220176896
- .long 0
- .long 0
- .long 0
- .long 0
- .long 0
- .long 0
- .long 0
- .long 3220176896
- .long 393047345
- .long 1064548654
- .long 3156849708
- .long 3216578470
- .long 3758096384
- .long 1010706200
- .long 0
- .long 3220176896
- .long 18115067
- .long 1066642694
- .long 1013556747
- .long 3217619128
- .long 3221225472
- .long 1013083417
- .long 0
- .long 3220176896
- .long 2476548698
- .long 1067846634
- .long 785751814
- .long 3218248710
- .long 2684354560
- .long 1014354573
- .long 0
- .long 3220176896
- .long 2255197647
- .long 1068727457
- .long 2796464483
- .long 3218636258
- .long 3758096384
- .long 1013394669
- .long 0
- .long 3220176896
- .long 1945768569
- .long 1069431400
- .long 939980347
- .long 3219008349
- .long 536870912
- .long 3160280457
- .long 0
- .long 3220176896
- .long 1539668340
- .long 1069912679
- .long 967731400
- .long 3219244859
- .long 536870912
- .long 3163235805
- .long 0
- .long 3220176896
- .long 1403757309
- .long 1070403070
- .long 621354454
- .long 3219410163
- .long 536870912
- .long 3160934250
- .long 0
- .long 3220176896
- .long 2583490354
- .long 3217719929
- .long 1719614413
- .long 3219562654
- .long 536870912
- .long 1015799092
- .long 0
- .long 3219128320
- .long 2485417816
- .long 3217109964
- .long 1796544321
- .long 3219700864
- .long 536870912
- .long 1015203297
- .long 0
- .long 3219128320
- .long 2598800519
- .long 3215750067
- .long 688824739
- .long 3219823462
- .long 3758096384
- .long 3157915184
- .long 0
- .long 3219128320
- .long 2140183630
- .long 1067272748
- .long 4051746225
- .long 3219929266
- .long 2147483648
- .long 1014423729
- .long 0
- .long 3219128320
- .long 1699043957
- .long 1069418613
- .long 3476196678
- .long 3220017259
- .long 536870912
- .long 3161741286
- .long 0
- .long 3219128320
- .long 1991047213
- .long 3215237169
- .long 1455828442
- .long 3220086593
- .long 3758096384
- .long 3162988721
- .long 0
- .long 3218079744
- .long 240740309
- .long 1068244255
- .long 3489094832
- .long 3220136599
- .long 536870912
- .long 3161809431
- .long 0
- .long 3218079744
- .long 257503056
- .long 1067164005
- .long 2748392742
- .long 3220166797
- .long 1073741824
- .long 1015578102
- .long 0
- .long 3217031168
- .long 0
- .long 0
- .long 0
- .long 3220176896
- .long 0
- .long 0
- .long 0
- .long 0
- .long 257503056
- .long 3214647653
- .long 2748392742
- .long 3220166797
- .long 1073741824
- .long 1015578102
- .long 0
- .long 1069547520
- .long 240740309
- .long 3215727903
- .long 3489094832
- .long 3220136599
- .long 536870912
- .long 3161809431
- .long 0
- .long 1070596096
- .long 1991047213
- .long 1067753521
- .long 1455828442
- .long 3220086593
- .long 3758096384
- .long 3162988721
- .long 0
- .long 1070596096
- .long 1699043957
- .long 3216902261
- .long 3476196678
- .long 3220017259
- .long 536870912
- .long 3161741286
- .long 0
- .long 1071644672
- .long 2140183630
- .long 3214756396
- .long 4051746225
- .long 3219929266
- .long 2147483648
- .long 1014423729
- .long 0
- .long 1071644672
- .long 2598800519
- .long 1068266419
- .long 688824739
- .long 3219823462
- .long 3758096384
- .long 3157915184
- .long 0
- .long 1071644672
- .long 2485417816
- .long 1069626316
- .long 1796544321
- .long 3219700864
- .long 536870912
- .long 1015203297
- .long 0
- .long 1071644672
- .long 2583490354
- .long 1070236281
- .long 1719614413
- .long 3219562654
- .long 536870912
- .long 1015799092
- .long 0
- .long 1071644672
- .long 1403757309
- .long 3217886718
- .long 621354454
- .long 3219410163
- .long 536870912
- .long 3160934250
- .long 0
- .long 1072693248
- .long 1539668340
- .long 3217396327
- .long 967731400
- .long 3219244859
- .long 536870912
- .long 3163235805
- .long 0
- .long 1072693248
- .long 1945768569
- .long 3216915048
- .long 939980347
- .long 3219008349
- .long 536870912
- .long 3160280457
- .long 0
- .long 1072693248
- .long 2255197647
- .long 3216211105
- .long 2796464483
- .long 3218636258
- .long 3758096384
- .long 1013394669
- .long 0
- .long 1072693248
- .long 2476548698
- .long 3215330282
- .long 785751814
- .long 3218248710
- .long 2684354560
- .long 1014354573
- .long 0
- .long 1072693248
- .long 18115067
- .long 3214126342
- .long 1013556747
- .long 3217619128
- .long 3221225472
- .long 1013083417
- .long 0
- .long 1072693248
- .long 393047345
- .long 3212032302
- .long 3156849708
- .long 3216578470
- .long 3758096384
- .long 1010706200
- .long 0
- .long 1072693248
- .long 1431655765
- .long 3217380693
- .long 0
- .long 3219128320
- .long 286331153
- .long 1065423121
- .long 1431655765
- .long 1067799893
- .long 436314138
- .long 3207201184
- .long 381774871
- .long 3210133868
- .long 2773927732
- .long 1053236707
- .long 436314138
- .long 1056571808
- .long 442499072
- .long 1032893537
- .long 442499072
- .long 1032893537
- .long 1413480448
- .long 1069097467
- .long 0
- .long 0
- .long 771977331
- .long 996350346
- .long 0
- .long 0
- .long 1841940611
- .long 1076125488
- .long 0
- .long 0
- .long 0
- .long 1127743488
- .long 0
- .long 0
- .long 0
- .long 1130364928
- .long 0
- .long 0
- .long 0
- .long 1015021568
- .long 0
- .long 0
- .long 4294967295
- .long 1072693247
- .long 0
- .long 0
- .long 0
- .long 2147483648
- .long 0
- .long 0
- .long 0
- .long 2147483648
- .long 0
- .long 2147483648
- .long 0
- .long 1071644672
- .long 0
- .long 1071644672
- .type static_const_table,@object
- .size static_const_table,2288
- .data
- .hidden __libm_sincos_huge
- .section .note.GNU-stack, "",@progbits
-# End
diff --git a/libm/x86/s_tan.S b/libm/x86/s_tan.S
deleted file mode 100644
index 7935efe..0000000
--- a/libm/x86/s_tan.S
+++ /dev/null
@@ -1,1766 +0,0 @@
-/*
-Copyright (c) 2014, Intel Corporation
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
-
- * Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
-
- * Neither the name of Intel Corporation nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
-ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/******************************************************************************/
-// ALGORITHM DESCRIPTION
-// ---------------------
-//
-// Polynomials coefficients and other constants.
-//
-// Note that in this algorithm, there is a different polynomial for
-// each breakpoint, so there are 32 sets of polynomial coefficients
-// as well as 32 instances of the other constants.
-//
-// The polynomial coefficients and constants are offset from the start
-// of the main block as follows:
-//
-// 0: c8 | c0
-// 16: c9 | c1
-// 32: c10 | c2
-// 48: c11 | c3
-// 64: c12 | c4
-// 80: c13 | c5
-// 96: c14 | c6
-// 112: c15 | c7
-// 128: T_hi
-// 136: T_lo
-// 144: Sigma
-// 152: T_hl
-// 160: Tau
-// 168: Mask
-// 176: (end of block)
-//
-// The total table size is therefore 5632 bytes.
-//
-// Note that c0 and c1 are always zero. We could try storing
-// other constants here, and just loading the low part of the
-// SIMD register in these cases, after ensuring the high part
-// is zero.
-//
-// The higher terms of the polynomial are computed in the *low*
-// part of the SIMD register. This is so we can overlap the
-// multiplication by r^8 and the unpacking of the other part.
-//
-// The constants are:
-// T_hi + T_lo = accurate constant term in power series
-// Sigma + T_hl = accurate coefficient of r in power series (Sigma=1 bit)
-// Tau = multiplier for the reciprocal, always -1 or 0
-//
-// The basic reconstruction formula using these constants is:
-//
-// High = tau * recip_hi + t_hi
-// Med = (sgn * r + t_hl * r)_hi
-// Low = (sgn * r + t_hl * r)_lo +
-// tau * recip_lo + T_lo + (T_hl + sigma) * c + pol
-//
-// where pol = c0 + c1 * r + c2 * r^2 + ... + c15 * r^15
-//
-// (c0 = c1 = 0, but using them keeps SIMD regularity)
-//
-// We then do a compensated sum High + Med, add the low parts together
-// and then do the final sum.
-//
-// Here recip_hi + recip_lo is an accurate reciprocal of the remainder
-// modulo pi/2
-//
-// Special cases:
-// tan(NaN) = quiet NaN, and raise invalid exception
-// tan(INF) = NaN and raise invalid exception
-// tan(+/-0) = +/-0
-//
-/******************************************************************************/
-
-#include <private/bionic_asm.h>
-# -- Begin static_func
- .text
- .align __bionic_asm_align
- .type static_func, @function
-static_func:
-..B1.1:
- call ..L2
-..L2:
- popl %eax
- lea _GLOBAL_OFFSET_TABLE_+[. - ..L2](%eax), %eax
- lea static_const_table@GOTOFF(%eax), %eax
- ret
- .size static_func,.-static_func
-# -- End static_func
-
-# -- Begin tan
-ENTRY(tan)
-# parameter 1: 8 + %ebp
-..B2.1:
-..B2.2:
- pushl %ebp
- movl %esp, %ebp
- subl $120, %esp
- movl %ebx, 56(%esp)
- call static_func
- movl %eax, %ebx
- movsd 128(%esp), %xmm0
- pextrw $3, %xmm0, %eax
- andl $32767, %eax
- subl $14368, %eax
- cmpl $2216, %eax
- ja .L_2TAG_PACKET_0.0.2
- movapd 5840(%ebx), %xmm5
- movapd 5856(%ebx), %xmm6
- unpcklpd %xmm0, %xmm0
- movapd 5712(%ebx), %xmm4
- andpd %xmm0, %xmm4
- movapd 5632(%ebx), %xmm1
- mulpd %xmm0, %xmm1
- orpd %xmm4, %xmm5
- addpd %xmm5, %xmm1
- movapd %xmm1, %xmm7
- unpckhpd %xmm7, %xmm7
- cvttsd2si %xmm7, %edx
- cvttpd2dq %xmm1, %xmm1
- cvtdq2pd %xmm1, %xmm1
- mulpd %xmm6, %xmm1
- movapd 5664(%ebx), %xmm3
- movsd 5728(%ebx), %xmm5
- addl $469248, %edx
- movapd 5680(%ebx), %xmm4
- mulpd %xmm1, %xmm3
- andl $31, %edx
- mulsd %xmm1, %xmm5
- movl %edx, %ecx
- mulpd %xmm1, %xmm4
- shll $1, %ecx
- subpd %xmm3, %xmm0
- mulpd 5696(%ebx), %xmm1
- addl %ecx, %edx
- shll $2, %ecx
- addl %ecx, %edx
- addsd %xmm0, %xmm5
- movapd %xmm0, %xmm2
- subpd %xmm4, %xmm0
- movsd 5744(%ebx), %xmm6
- shll $4, %edx
- lea (%ebx), %eax
- andpd 5776(%ebx), %xmm5
- movapd %xmm0, %xmm3
- addl %edx, %eax
- subpd %xmm0, %xmm2
- unpckhpd %xmm0, %xmm0
- divsd %xmm5, %xmm6
- subpd %xmm4, %xmm2
- movapd 16(%eax), %xmm7
- subsd %xmm5, %xmm3
- mulpd %xmm0, %xmm7
- subpd %xmm1, %xmm2
- movapd 48(%eax), %xmm1
- mulpd %xmm0, %xmm1
- movapd 96(%eax), %xmm4
- mulpd %xmm0, %xmm4
- addsd %xmm3, %xmm2
- movapd %xmm0, %xmm3
- mulpd %xmm0, %xmm0
- addpd (%eax), %xmm7
- addpd 32(%eax), %xmm1
- mulpd %xmm0, %xmm1
- addpd 80(%eax), %xmm4
- addpd %xmm1, %xmm7
- movapd 112(%eax), %xmm1
- mulpd %xmm0, %xmm1
- mulpd %xmm0, %xmm0
- addpd %xmm1, %xmm4
- movapd 64(%eax), %xmm1
- mulpd %xmm0, %xmm1
- addpd %xmm1, %xmm7
- movapd %xmm3, %xmm1
- mulpd %xmm0, %xmm3
- mulsd %xmm0, %xmm0
- mulpd 144(%eax), %xmm1
- mulpd %xmm3, %xmm4
- movapd %xmm1, %xmm3
- addpd %xmm4, %xmm7
- movapd %xmm1, %xmm4
- mulsd %xmm7, %xmm0
- unpckhpd %xmm7, %xmm7
- addsd %xmm7, %xmm0
- unpckhpd %xmm1, %xmm1
- addsd %xmm1, %xmm3
- subsd %xmm3, %xmm4
- addsd %xmm4, %xmm1
- movapd %xmm2, %xmm4
- movsd 144(%eax), %xmm7
- unpckhpd %xmm2, %xmm2
- addsd 152(%eax), %xmm7
- mulsd %xmm2, %xmm7
- addsd 136(%eax), %xmm7
- addsd %xmm1, %xmm7
- addsd %xmm7, %xmm0
- movsd 5744(%ebx), %xmm7
- mulsd %xmm6, %xmm4
- movsd 168(%eax), %xmm2
- andpd %xmm6, %xmm2
- mulsd %xmm2, %xmm5
- mulsd 160(%eax), %xmm6
- subsd %xmm5, %xmm7
- subsd 128(%eax), %xmm2
- subsd %xmm4, %xmm7
- mulsd %xmm6, %xmm7
- movapd %xmm3, %xmm4
- subsd %xmm2, %xmm3
- addsd %xmm3, %xmm2
- subsd %xmm2, %xmm4
- addsd %xmm4, %xmm0
- subsd %xmm7, %xmm0
- addsd %xmm3, %xmm0
- movsd %xmm0, (%esp)
- fldl (%esp)
- jmp .L_2TAG_PACKET_1.0.2
-.L_2TAG_PACKET_0.0.2:
- jg .L_2TAG_PACKET_2.0.2
- shrl $4, %eax
- cmpl $268434558, %eax
- jne .L_2TAG_PACKET_3.0.2
- movapd %xmm0, %xmm3
- mulsd 5808(%ebx), %xmm3
-.L_2TAG_PACKET_3.0.2:
- movsd 5792(%ebx), %xmm3
- mulsd %xmm0, %xmm3
- addsd %xmm0, %xmm3
- mulsd 5808(%ebx), %xmm3
- movsd %xmm3, (%esp)
- fldl (%esp)
- jmp .L_2TAG_PACKET_1.0.2
-.L_2TAG_PACKET_2.0.2:
- movq 5712(%ebx), %xmm7
- andpd %xmm0, %xmm7
- xorpd %xmm0, %xmm7
- ucomisd 5760(%ebx), %xmm7
- je .L_2TAG_PACKET_4.0.2
- subl $32, %esp
- movsd %xmm0, (%esp)
- lea 40(%esp), %eax
- movl %eax, 8(%esp)
- movl $2, %eax
- movl %eax, 12(%esp)
- call __libm_tancot_huge
- addl $32, %esp
- fldl 8(%esp)
- jmp .L_2TAG_PACKET_1.0.2
-.L_2TAG_PACKET_4.0.2:
- movq %xmm0, (%esp)
- fldl (%esp)
- fsubl (%esp)
-.L_2TAG_PACKET_1.0.2:
- movl 56(%esp), %ebx
- movl %ebp, %esp
- popl %ebp
- ret
-..B2.3:
-END(tan)
-# -- End tan
-
-# Start file scope ASM
-ALIAS_SYMBOL(tanl, tan);
-# End file scope ASM
- .section .rodata, "a"
- .align 16
- .align 16
-static_const_table:
- .long 0
- .long 0
- .long 0
- .long 0
- .long 2284589306
- .long 1066820852
- .long 0
- .long 0
- .long 0
- .long 0
- .long 0
- .long 0
- .long 1441186365
- .long 1065494243
- .long 1431655765
- .long 1070945621
- .long 0
- .long 0
- .long 0
- .long 0
- .long 236289504
- .long 1064135997
- .long 286331153
- .long 1069617425
- .long 0
- .long 0
- .long 0
- .long 0
- .long 1160476131
- .long 1062722102
- .long 463583772
- .long 1068212666
- .long 0
- .long 0
- .long 0
- .long 0
- .long 0
- .long 1072693248
- .long 0
- .long 0
- .long 0
- .long 0
- .long 0
- .long 0
- .long 1313038235
- .long 1066745731
- .long 0
- .long 0
- .long 1013878342
- .long 1067152618
- .long 0
- .long 0
- .long 3663426833
- .long 1065725283
- .long 3693284251
- .long 1069118808
- .long 650852232
- .long 1065882376
- .long 1996245381
- .long 1071000265
- .long 2008746170
- .long 1064664197
- .long 3055842593
- .long 1068578846
- .long 1495406348
- .long 1064652437
- .long 2269530157
- .long 1069711235
- .long 285563696
- .long 1063576465
- .long 1046897440
- .long 1067705865
- .long 233429731
- .long 1063453151
- .long 522045958
- .long 1068476590
- .long 2354785698
- .long 1069102779
- .long 1317599141
- .long 1012432133
- .long 0
- .long 1072693248
- .long 2828230105
- .long 1065606626
- .long 0
- .long 0
- .long 0
- .long 0
- .long 1512545955
- .long 1068119047
- .long 0
- .long 0
- .long 1127048698
- .long 1067909459
- .long 0
- .long 0
- .long 2300200450
- .long 1067254767
- .long 3593250296
- .long 1070233561
- .long 3009365544
- .long 1066902117
- .long 1127373050
- .long 1071173457
- .long 3046103305
- .long 1066371299
- .long 24583402
- .long 1069723988
- .long 4082511758
- .long 1065914199
- .long 3223889699
- .long 1070020367
- .long 548927984
- .long 1065415756
- .long 558065897
- .long 1068949418
- .long 680073315
- .long 1064940726
- .long 388873200
- .long 1068944270
- .long 3763679576
- .long 1070167541
- .long 1497360404
- .long 1009710547
- .long 0
- .long 1072693248
- .long 64931152
- .long 1067729411
- .long 0
- .long 0
- .long 0
- .long 0
- .long 2467582782
- .long 1069256389
- .long 0
- .long 0
- .long 162150096
- .long 1068946420
- .long 0
- .long 0
- .long 3702794237
- .long 1068579152
- .long 3631919291
- .long 1070936926
- .long 3456821413
- .long 1068217218
- .long 2031366438
- .long 1071495745
- .long 1596664020
- .long 1067799281
- .long 1509038701
- .long 1070601643
- .long 583171477
- .long 1067510148
- .long 3785344682
- .long 1070618476
- .long 2402036048
- .long 1067075736
- .long 3233018412
- .long 1069913186
- .long 411280568
- .long 1066710556
- .long 1065584192
- .long 1069747896
- .long 895247324
- .long 1070819848
- .long 500078909
- .long 3161288781
- .long 0
- .long 1072693248
- .long 729983843
- .long 1068994194
- .long 0
- .long 0
- .long 0
- .long 0
- .long 1458794562
- .long 1070398550
- .long 0
- .long 0
- .long 2857777489
- .long 1070137637
- .long 0
- .long 0
- .long 1024359517
- .long 1069876531
- .long 2616040238
- .long 1071582937
- .long 1609024636
- .long 1069675088
- .long 2529240549
- .long 1071836633
- .long 1510128600
- .long 1069440113
- .long 2251697184
- .long 1071253687
- .long 1262761453
- .long 1069142850
- .long 1263091857
- .long 1071190461
- .long 3043383486
- .long 1068885191
- .long 2476932470
- .long 1070842002
- .long 3659995028
- .long 1068669200
- .long 855891755
- .long 1070696894
- .long 2583490354
- .long 1071284857
- .long 3062633575
- .long 1014008623
- .long 0
- .long 1072693248
- .long 2550940471
- .long 1069938201
- .long 0
- .long 0
- .long 0
- .long 0
- .long 3422807297
- .long 1071640847
- .long 0
- .long 0
- .long 1151658053
- .long 1071494715
- .long 0
- .long 0
- .long 929607071
- .long 1071346340
- .long 1037049034
- .long 1072037305
- .long 2786928657
- .long 1071215282
- .long 1447406859
- .long 1072265209
- .long 3490952107
- .long 1071090851
- .long 3205232916
- .long 1071968658
- .long 1297344304
- .long 1070977120
- .long 1066110976
- .long 1071946035
- .long 3803721480
- .long 1070871082
- .long 1496754229
- .long 1071807201
- .long 2982550683
- .long 1070773243
- .long 4014441989
- .long 1071736222
- .long 419968236
- .long 1071717047
- .long 3451266538
- .long 3163444811
- .long 0
- .long 1072693248
- .long 2960267235
- .long 1070745841
- .long 0
- .long 0
- .long 0
- .long 0
- .long 724322768
- .long 1072881308
- .long 0
- .long 0
- .long 643153048
- .long 1072905816
- .long 0
- .long 0
- .long 4285079458
- .long 1072928558
- .long 3912524733
- .long 1072622983
- .long 118362272
- .long 1072952754
- .long 4107767972
- .long 1072827408
- .long 2689502883
- .long 1072976922
- .long 946523347
- .long 1072772766
- .long 573204189
- .long 1073001761
- .long 581531518
- .long 1072826391
- .long 1386236526
- .long 1073026959
- .long 3718905905
- .long 1072832823
- .long 1145558140
- .long 1073052673
- .long 513572637
- .long 1072861969
- .long 716700048
- .long 1071997368
- .long 547126769
- .long 1015523525
- .long 0
- .long 1072693248
- .long 1097907398
- .long 1071420120
- .long 0
- .long 0
- .long 0
- .long 0
- .long 3349892442
- .long 1074290212
- .long 0
- .long 0
- .long 3913197405
- .long 1074501181
- .long 0
- .long 0
- .long 2494034522
- .long 1074739170
- .long 1264738763
- .long 1073084804
- .long 1520293906
- .long 1074899632
- .long 1958936600
- .long 1073411493
- .long 2133649635
- .long 1075052171
- .long 4270740730
- .long 1073574708
- .long 1728930189
- .long 1075224844
- .long 1303998552
- .long 1073799186
- .long 618611933
- .long 1075420255
- .long 1769828046
- .long 1073938542
- .long 2200537986
- .long 1075641421
- .long 433361110
- .long 1074105369
- .long 719595600
- .long 1072317184
- .long 294527206
- .long 3162140088
- .long 0
- .long 1073741824
- .long 3811788216
- .long 3218400550
- .long 0
- .long 0
- .long 0
- .long 0
- .long 1704352102
- .long 1075943001
- .long 0
- .long 0
- .long 2284589306
- .long 1076258036
- .long 0
- .long 0
- .long 2211264291
- .long 1076659010
- .long 0
- .long 1073741824
- .long 1441186365
- .long 1077028579
- .long 1431655765
- .long 1074091349
- .long 876943673
- .long 1077353622
- .long 2863311531
- .long 1074440874
- .long 236289504
- .long 1077767485
- .long 286331153
- .long 1074860305
- .long 2805473311
- .long 1078115278
- .long 95443718
- .long 1075163227
- .long 1160476131
- .long 1078450742
- .long 463583772
- .long 1075552698
- .long 0
- .long 1072693248
- .long 0
- .long 0
- .long 0
- .long 1073741824
- .long 0
- .long 0
- .long 0
- .long 0
- .long 0
- .long 0
- .long 1330165971
- .long 3207850745
- .long 0
- .long 0
- .long 217536623
- .long 1059109098
- .long 0
- .long 0
- .long 3492120849
- .long 3205151475
- .long 602185705
- .long 3215678092
- .long 760422958
- .long 1056312597
- .long 555127889
- .long 1067545266
- .long 3139784124
- .long 3202470837
- .long 3690544014
- .long 3213150171
- .long 95707915
- .long 1053635428
- .long 4003114407
- .long 1064581412
- .long 2034926231
- .long 3199711161
- .long 3759536023
- .long 3210559989
- .long 3826928214
- .long 1050893819
- .long 3837960785
- .long 1061790379
- .long 1526325248
- .long 3217967566
- .long 2356426521
- .long 1025423456
- .long 0
- .long 0
- .long 457728975
- .long 1071088276
- .long 0
- .long 1072693248
- .long 0
- .long 4294967288
- .long 1398462608
- .long 3207303968
- .long 0
- .long 0
- .long 26205983
- .long 1058461213
- .long 0
- .long 0
- .long 56226238
- .long 3204528612
- .long 2754706541
- .long 3215359511
- .long 2187799823
- .long 1055634437
- .long 790323742
- .long 1067402587
- .long 1372385848
- .long 3201651479
- .long 4097292716
- .long 3212856302
- .long 3348210357
- .long 1052830099
- .long 2442796466
- .long 1064337602
- .long 862608142
- .long 3198830754
- .long 170296152
- .long 3210060867
- .long 3755571428
- .long 1049933343
- .long 3614866008
- .long 1061361670
- .long 719978496
- .long 3217669096
- .long 1998842465
- .long 3174703977
- .long 0
- .long 0
- .long 3749156607
- .long 1071048258
- .long 0
- .long 1072693248
- .long 0
- .long 4294967288
- .long 3120498638
- .long 3206749304
- .long 0
- .long 0
- .long 2773578114
- .long 1058009312
- .long 0
- .long 0
- .long 2030783676
- .long 3203817873
- .long 2223654598
- .long 3215071936
- .long 2976134650
- .long 1054987244
- .long 706390066
- .long 1067217386
- .long 4258437615
- .long 3200900378
- .long 1066252975
- .long 3212391267
- .long 815777514
- .long 1051989462
- .long 3202745457
- .long 1064010682
- .long 2493556375
- .long 3198004753
- .long 1046243251
- .long 3209678971
- .long 2593078846
- .long 1049017717
- .long 2763962276
- .long 1060970161
- .long 701480960
- .long 3217377742
- .long 3205862232
- .long 3174660915
- .long 0
- .long 0
- .long 2267016812
- .long 1071015664
- .long 0
- .long 1072693248
- .long 0
- .long 4294967288
- .long 2107155798
- .long 3206166872
- .long 0
- .long 0
- .long 2642992129
- .long 1057424578
- .long 0
- .long 0
- .long 1936992811
- .long 3203204426
- .long 1485063559
- .long 3214682643
- .long 1432914553
- .long 1054319398
- .long 3996381654
- .long 1067075828
- .long 2833029256
- .long 3200223545
- .long 2866066872
- .long 3211982662
- .long 2432888737
- .long 1051234178
- .long 3669764559
- .long 1063748136
- .long 2458496952
- .long 3197170774
- .long 1948234989
- .long 3209098147
- .long 2843698787
- .long 1048163519
- .long 3398041407
- .long 1060559728
- .long 2829230080
- .long 3217092115
- .long 1034046433
- .long 3174271903
- .long 0
- .long 0
- .long 298675305
- .long 1070989821
- .long 0
- .long 1072693248
- .long 0
- .long 4294967288
- .long 437603223
- .long 3205589761
- .long 0
- .long 0
- .long 759330352
- .long 1057048511
- .long 0
- .long 0
- .long 3107463368
- .long 3202507988
- .long 3144465176
- .long 3214191500
- .long 2290961810
- .long 1053841035
- .long 1618153340
- .long 1066971547
- .long 3836869393
- .long 3199400272
- .long 584032116
- .long 3211469261
- .long 1245704358
- .long 1050626462
- .long 4247487438
- .long 1063561943
- .long 1669034927
- .long 3196274812
- .long 3844233498
- .long 3208626322
- .long 2706958524
- .long 1047411374
- .long 3857199098
- .long 1060281647
- .long 3593904128
- .long 3216590719
- .long 3267547836
- .long 3172163321
- .long 0
- .long 0
- .long 4076712227
- .long 1070970214
- .long 0
- .long 1072693248
- .long 0
- .long 4294967288
- .long 3290090340
- .long 3204793485
- .long 0
- .long 0
- .long 3685760367
- .long 1056668370
- .long 0
- .long 0
- .long 2655163949
- .long 3201674917
- .long 628750575
- .long 3213566872
- .long 680140505
- .long 1053299777
- .long 2954464709
- .long 1066900026
- .long 803201619
- .long 3198516435
- .long 1466315631
- .long 3210837162
- .long 1611220163
- .long 1049972438
- .long 2766187256
- .long 1063437894
- .long 1804579484
- .long 3195331491
- .long 3695969289
- .long 3207854418
- .long 2617238373
- .long 1046675948
- .long 3095830084
- .long 1060095334
- .long 3789570048
- .long 3216034914
- .long 23826559
- .long 3172048060
- .long 0
- .long 0
- .long 3870939386
- .long 1070956467
- .long 0
- .long 1072693248
- .long 0
- .long 4294967288
- .long 1571758758
- .long 3203672535
- .long 0
- .long 0
- .long 113026373
- .long 1056416381
- .long 0
- .long 0
- .long 1913766298
- .long 3200523326
- .long 2507068734
- .long 3212502004
- .long 4000648818
- .long 1053003803
- .long 2446607349
- .long 1066858259
- .long 912662124
- .long 3197333001
- .long 1349489537
- .long 3209765608
- .long 3412972607
- .long 1049641401
- .long 1721283327
- .long 1063366855
- .long 1466691883
- .long 3194116746
- .long 3852528092
- .long 3206760861
- .long 285443293
- .long 1046158380
- .long 1758739894
- .long 1059895449
- .long 1858781184
- .long 3214984212
- .long 3447575948
- .long 1024675855
- .long 0
- .long 0
- .long 2242038011
- .long 1070948320
- .long 0
- .long 1072693248
- .long 0
- .long 4294967288
- .long 0
- .long 0
- .long 0
- .long 0
- .long 737611454
- .long 1056336527
- .long 0
- .long 0
- .long 0
- .long 0
- .long 0
- .long 0
- .long 3594790527
- .long 1052911621
- .long 381774871
- .long 1066844524
- .long 0
- .long 0
- .long 0
- .long 0
- .long 3303051618
- .long 1049456050
- .long 3154187623
- .long 1063343722
- .long 0
- .long 0
- .long 0
- .long 0
- .long 528061788
- .long 1045944910
- .long 2469719819
- .long 1059831159
- .long 0
- .long 0
- .long 0
- .long 0
- .long 0
- .long 0
- .long 1431655765
- .long 1070945621
- .long 0
- .long 1072693248
- .long 0
- .long 4294967288
- .long 1571758758
- .long 1056188887
- .long 0
- .long 0
- .long 113026373
- .long 1056416381
- .long 0
- .long 0
- .long 1913766298
- .long 1053039678
- .long 2507068734
- .long 1065018356
- .long 4000648818
- .long 1053003803
- .long 2446607349
- .long 1066858259
- .long 912662124
- .long 1049849353
- .long 1349489537
- .long 1062281960
- .long 3412972607
- .long 1049641401
- .long 1721283327
- .long 1063366855
- .long 1466691883
- .long 1046633098
- .long 3852528092
- .long 1059277213
- .long 285443293
- .long 1046158380
- .long 1758739894
- .long 1059895449
- .long 1858781184
- .long 1067500564
- .long 3447575948
- .long 3172159503
- .long 0
- .long 0
- .long 2242038011
- .long 1070948320
- .long 0
- .long 1072693248
- .long 0
- .long 4294967288
- .long 3290090340
- .long 1057309837
- .long 0
- .long 0
- .long 3685760367
- .long 1056668370
- .long 0
- .long 0
- .long 2655163949
- .long 1054191269
- .long 628750575
- .long 1066083224
- .long 680140505
- .long 1053299777
- .long 2954464709
- .long 1066900026
- .long 803201619
- .long 1051032787
- .long 1466315631
- .long 1063353514
- .long 1611220163
- .long 1049972438
- .long 2766187256
- .long 1063437894
- .long 1804579484
- .long 1047847843
- .long 3695969289
- .long 1060370770
- .long 2617238373
- .long 1046675948
- .long 3095830084
- .long 1060095334
- .long 3789570048
- .long 1068551266
- .long 23826559
- .long 1024564412
- .long 0
- .long 0
- .long 3870939386
- .long 1070956467
- .long 0
- .long 1072693248
- .long 0
- .long 4294967288
- .long 437603223
- .long 1058106113
- .long 0
- .long 0
- .long 759330352
- .long 1057048511
- .long 0
- .long 0
- .long 3107463368
- .long 1055024340
- .long 3144465176
- .long 1066707852
- .long 2290961810
- .long 1053841035
- .long 1618153340
- .long 1066971547
- .long 3836869393
- .long 1051916624
- .long 584032116
- .long 1063985613
- .long 1245704358
- .long 1050626462
- .long 4247487438
- .long 1063561943
- .long 1669034927
- .long 1048791164
- .long 3844233498
- .long 1061142674
- .long 2706958524
- .long 1047411374
- .long 3857199098
- .long 1060281647
- .long 3593904128
- .long 1069107071
- .long 3267547836
- .long 1024679673
- .long 0
- .long 0
- .long 4076712227
- .long 1070970214
- .long 0
- .long 1072693248
- .long 0
- .long 4294967288
- .long 2107155798
- .long 1058683224
- .long 0
- .long 0
- .long 2642992129
- .long 1057424578
- .long 0
- .long 0
- .long 1936992811
- .long 1055720778
- .long 1485063559
- .long 1067198995
- .long 1432914553
- .long 1054319398
- .long 3996381654
- .long 1067075828
- .long 2833029256
- .long 1052739897
- .long 2866066872
- .long 1064499014
- .long 2432888737
- .long 1051234178
- .long 3669764559
- .long 1063748136
- .long 2458496952
- .long 1049687126
- .long 1948234989
- .long 1061614499
- .long 2843698787
- .long 1048163519
- .long 3398041407
- .long 1060559728
- .long 2829230080
- .long 1069608467
- .long 1034046433
- .long 1026788255
- .long 0
- .long 0
- .long 298675305
- .long 1070989821
- .long 0
- .long 1072693248
- .long 0
- .long 4294967288
- .long 3120498638
- .long 1059265656
- .long 0
- .long 0
- .long 2773578114
- .long 1058009312
- .long 0
- .long 0
- .long 2030783676
- .long 1056334225
- .long 2223654598
- .long 1067588288
- .long 2976134650
- .long 1054987244
- .long 706390066
- .long 1067217386
- .long 4258437615
- .long 1053416730
- .long 1066252975
- .long 1064907619
- .long 815777514
- .long 1051989462
- .long 3202745457
- .long 1064010682
- .long 2493556375
- .long 1050521105
- .long 1046243251
- .long 1062195323
- .long 2593078846
- .long 1049017717
- .long 2763962276
- .long 1060970161
- .long 701480960
- .long 1069894094
- .long 3205862232
- .long 1027177267
- .long 0
- .long 0
- .long 2267016812
- .long 1071015664
- .long 0
- .long 1072693248
- .long 0
- .long 4294967288
- .long 1398462608
- .long 1059820320
- .long 0
- .long 0
- .long 26205983
- .long 1058461213
- .long 0
- .long 0
- .long 56226238
- .long 1057044964
- .long 2754706541
- .long 1067875863
- .long 2187799823
- .long 1055634437
- .long 790323742
- .long 1067402587
- .long 1372385848
- .long 1054167831
- .long 4097292716
- .long 1065372654
- .long 3348210357
- .long 1052830099
- .long 2442796466
- .long 1064337602
- .long 862608142
- .long 1051347106
- .long 170296152
- .long 1062577219
- .long 3755571428
- .long 1049933343
- .long 3614866008
- .long 1061361670
- .long 719978496
- .long 1070185448
- .long 1998842465
- .long 1027220329
- .long 0
- .long 0
- .long 3749156607
- .long 1071048258
- .long 0
- .long 1072693248
- .long 0
- .long 4294967288
- .long 1330165971
- .long 1060367097
- .long 0
- .long 0
- .long 217536623
- .long 1059109098
- .long 0
- .long 0
- .long 3492120849
- .long 1057667827
- .long 602185705
- .long 1068194444
- .long 760422958
- .long 1056312597
- .long 555127889
- .long 1067545266
- .long 3139784124
- .long 1054987189
- .long 3690544014
- .long 1065666523
- .long 95707915
- .long 1053635428
- .long 4003114407
- .long 1064581412
- .long 2034926231
- .long 1052227513
- .long 3759536023
- .long 1063076341
- .long 3826928214
- .long 1050893819
- .long 3837960785
- .long 1061790379
- .long 1526325248
- .long 1070483918
- .long 2356426521
- .long 3172907104
- .long 0
- .long 0
- .long 457728975
- .long 1071088276
- .long 0
- .long 1072693248
- .long 0
- .long 4294967288
- .long 1704352102
- .long 3223426649
- .long 0
- .long 0
- .long 2284589306
- .long 1076258036
- .long 0
- .long 0
- .long 2211264291
- .long 3224142658
- .long 0
- .long 3221225472
- .long 1441186365
- .long 1077028579
- .long 1431655765
- .long 1074091349
- .long 876943673
- .long 3224837270
- .long 2863311531
- .long 3221924522
- .long 236289504
- .long 1077767485
- .long 286331153
- .long 1074860305
- .long 2805473311
- .long 3225598926
- .long 95443718
- .long 3222646875
- .long 1160476131
- .long 1078450742
- .long 463583772
- .long 1075552698
- .long 0
- .long 3220176896
- .long 0
- .long 0
- .long 0
- .long 1073741824
- .long 0
- .long 0
- .long 0
- .long 0
- .long 0
- .long 0
- .long 3349892442
- .long 3221773860
- .long 0
- .long 0
- .long 3913197405
- .long 1074501181
- .long 0
- .long 0
- .long 2494034522
- .long 3222222818
- .long 1264738763
- .long 3220568452
- .long 1520293906
- .long 1074899632
- .long 1958936600
- .long 1073411493
- .long 2133649635
- .long 3222535819
- .long 4270740730
- .long 3221058356
- .long 1728930189
- .long 1075224844
- .long 1303998552
- .long 1073799186
- .long 618611933
- .long 3222903903
- .long 1769828046
- .long 3221422190
- .long 2200537986
- .long 1075641421
- .long 433361110
- .long 1074105369
- .long 719595600
- .long 3219800832
- .long 294527206
- .long 1014656440
- .long 0
- .long 1073741824
- .long 3811788216
- .long 3218400550
- .long 0
- .long 0
- .long 0
- .long 0
- .long 724322768
- .long 3220364956
- .long 0
- .long 0
- .long 643153048
- .long 1072905816
- .long 0
- .long 0
- .long 4285079458
- .long 3220412206
- .long 3912524733
- .long 3220106631
- .long 118362272
- .long 1072952754
- .long 4107767972
- .long 1072827408
- .long 2689502883
- .long 3220460570
- .long 946523347
- .long 3220256414
- .long 573204189
- .long 1073001761
- .long 581531518
- .long 1072826391
- .long 1386236526
- .long 3220510607
- .long 3718905905
- .long 3220316471
- .long 1145558140
- .long 1073052673
- .long 513572637
- .long 1072861969
- .long 716700048
- .long 3219481016
- .long 547126769
- .long 3163007173
- .long 0
- .long 1072693248
- .long 1097907398
- .long 1071420120
- .long 0
- .long 0
- .long 0
- .long 0
- .long 3422807297
- .long 3219124495
- .long 0
- .long 0
- .long 1151658053
- .long 1071494715
- .long 0
- .long 0
- .long 929607071
- .long 3218829988
- .long 1037049034
- .long 3219520953
- .long 2786928657
- .long 1071215282
- .long 1447406859
- .long 1072265209
- .long 3490952107
- .long 3218574499
- .long 3205232916
- .long 3219452306
- .long 1297344304
- .long 1070977120
- .long 1066110976
- .long 1071946035
- .long 3803721480
- .long 3218354730
- .long 1496754229
- .long 3219290849
- .long 2982550683
- .long 1070773243
- .long 4014441989
- .long 1071736222
- .long 419968236
- .long 3219200695
- .long 3451266538
- .long 1015961163
- .long 0
- .long 1072693248
- .long 2960267235
- .long 1070745841
- .long 0
- .long 0
- .long 0
- .long 0
- .long 1458794562
- .long 3217882198
- .long 0
- .long 0
- .long 2857777489
- .long 1070137637
- .long 0
- .long 0
- .long 1024359517
- .long 3217360179
- .long 2616040238
- .long 3219066585
- .long 1609024636
- .long 1069675088
- .long 2529240549
- .long 1071836633
- .long 1510128600
- .long 3216923761
- .long 2251697184
- .long 3218737335
- .long 1262761453
- .long 1069142850
- .long 1263091857
- .long 1071190461
- .long 3043383486
- .long 3216368839
- .long 2476932470
- .long 3218325650
- .long 3659995028
- .long 1068669200
- .long 855891755
- .long 1070696894
- .long 2583490354
- .long 3218768505
- .long 3062633575
- .long 3161492271
- .long 0
- .long 1072693248
- .long 2550940471
- .long 1069938201
- .long 0
- .long 0
- .long 0
- .long 0
- .long 2467582782
- .long 3216740037
- .long 0
- .long 0
- .long 162150096
- .long 1068946420
- .long 0
- .long 0
- .long 3702794237
- .long 3216062800
- .long 3631919291
- .long 3218420574
- .long 3456821413
- .long 1068217218
- .long 2031366438
- .long 1071495745
- .long 1596664020
- .long 3215282929
- .long 1509038701
- .long 3218085291
- .long 583171477
- .long 1067510148
- .long 3785344682
- .long 1070618476
- .long 2402036048
- .long 3214559384
- .long 3233018412
- .long 3217396834
- .long 411280568
- .long 1066710556
- .long 1065584192
- .long 1069747896
- .long 895247324
- .long 3218303496
- .long 500078909
- .long 1013805133
- .long 0
- .long 1072693248
- .long 729983843
- .long 1068994194
- .long 0
- .long 0
- .long 0
- .long 0
- .long 1512545955
- .long 3215602695
- .long 0
- .long 0
- .long 1127048698
- .long 1067909459
- .long 0
- .long 0
- .long 2300200450
- .long 3214738415
- .long 3593250296
- .long 3217717209
- .long 3009365544
- .long 1066902117
- .long 1127373050
- .long 1071173457
- .long 3046103305
- .long 3213854947
- .long 24583402
- .long 3217207636
- .long 4082511758
- .long 1065914199
- .long 3223889699
- .long 1070020367
- .long 548927984
- .long 3212899404
- .long 558065897
- .long 3216433066
- .long 680073315
- .long 1064940726
- .long 388873200
- .long 1068944270
- .long 3763679576
- .long 3217651189
- .long 1497360404
- .long 3157194195
- .long 0
- .long 1072693248
- .long 64931152
- .long 1067729411
- .long 0
- .long 0
- .long 0
- .long 0
- .long 1313038235
- .long 3214229379
- .long 0
- .long 0
- .long 1013878342
- .long 1067152618
- .long 0
- .long 0
- .long 3663426833
- .long 3213208931
- .long 3693284251
- .long 3216602456
- .long 650852232
- .long 1065882376
- .long 1996245381
- .long 1071000265
- .long 2008746170
- .long 3212147845
- .long 3055842593
- .long 3216062494
- .long 1495406348
- .long 1064652437
- .long 2269530157
- .long 1069711235
- .long 285563696
- .long 3211060113
- .long 1046897440
- .long 3215189513
- .long 233429731
- .long 1063453151
- .long 522045958
- .long 1068476590
- .long 2354785698
- .long 3216586427
- .long 1317599141
- .long 3159915781
- .long 0
- .long 1072693248
- .long 2828230105
- .long 1065606626
- .long 0
- .long 0
- .long 0
- .long 0
- .long 1841940611
- .long 1071931184
- .long 1841940611
- .long 1076125488
- .long 0
- .long 1131937792
- .long 0
- .long 1127743488
- .long 1413758976
- .long 1069097467
- .long 1413742592
- .long 1069097467
- .long 1734819840
- .long 3174229945
- .long 1280049152
- .long 1028033571
- .long 923219018
- .long 984130272
- .long 57701189
- .long 988383790
- .long 0
- .long 2147483648
- .long 0
- .long 2147483648
- .long 1734816687
- .long 1026746297
- .long 0
- .long 0
- .long 0
- .long 1072693248
- .long 0
- .long 0
- .long 0
- .long 2146435072
- .long 0
- .long 0
- .long 4294705152
- .long 4294967295
- .long 0
- .long 0
- .long 0
- .long 1130364928
- .long 0
- .long 0
- .long 0
- .long 1015021568
- .long 0
- .long 0
- .long 0
- .long 1017118720
- .long 0
- .long 0
- .long 0
- .long 1071644672
- .long 0
- .long 1071644672
- .long 0
- .long 1076887552
- .long 0
- .long 1072693248
- .type static_const_table,@object
- .size static_const_table,5872
- .data
- .hidden __libm_tancot_huge
- .section .note.GNU-stack, "",@progbits
-# End
diff --git a/libm/x86/s_tanh.S b/libm/x86/s_tanh.S
deleted file mode 100644
index 777519f..0000000
--- a/libm/x86/s_tanh.S
+++ /dev/null
@@ -1,1361 +0,0 @@
-/*
-Copyright (c) 2014, Intel Corporation
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
-
- * Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
-
- * Neither the name of Intel Corporation nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
-ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/******************************************************************************/
-// ALGORITHM DESCRIPTION
-// ---------------------
-//
-// tanh(x)=(exp(x)-exp(-x))/(exp(x)+exp(-x))=(1-exp(-2*x))/(1+exp(-2*x))
-//
-// Let |x|=xH+xL (upper 26 bits, lower 27 bits)
-// log2(e) rounded to 26 bits (high part) plus a double precision low part is
-// L2EH+L2EL (upper 26, lower 53 bits)
-//
-// Let xH*L2EH=k+f+r`, where (k+f)*2^8*2=int(xH*L2EH*2^9),
-// f=0.b1 b2 ... b8, k integer
-// 2^{-f} is approximated as Tn[f]+Dn[f]
-// Tn stores the high 53 bits, Dn stores (2^{-f}-Tn[f]) rounded to double precision
-//
-// r=r`+xL*L2EH+|x|*L2EL, |r|<2^{-9}+2^{-14},
-// for |x| in [23/64,3*2^7)
-// e^{-2*|x|}=2^{-k-f}*2^{-r} ~ 2^{-k}*(Tn+Dn)*(1+p)=(T0+D0)*(1+p)
-//
-// For |x| in [2^{-4},2^5):
-// 2^{-r}-1 ~ p=c1*r+c2*r^2+..+c5*r^5
-// Let R=1/(1+T0+p*T0), truncated to 35 significant bits
-// R=1/(1+T0+D0+p*(T0+D0))*(1+eps), |eps|<2^{-33}
-// 1+T0+D0+p*(T0+D0)=KH+KL, where
-// KH=(1+T0+c1*r*T0)_high (leading 17 bits)
-// KL=T0_low+D0+(c1*r*T0)_low+c1*r*D0+(c2*r^2+..c5*r^5)*T0
-// eps ~ (R*KH-1)+R*KL
-// 1/(1+T0+D0+p*(T0+D0)) ~ R-R*eps
-// The result is approximated as (1-T0-D0-(T0+D0)*p)*(R-R*eps)
-// 1-T0-D0-(T0+D0)*p=-((KH-2)+KL)
-// The result is formed as
-// (KH-2)*R+(-(KH-2)*R*eps+(KL*R-KL*R*eps)), with the correct sign
-// set at the end
-//
-// For |x| in [2^{-64},2^{-4}):
-// A Taylor series expansion is used (x+p3*x^3+..+p13*x^{13})
-//
-// For |x|<2^{-64}: x is returned
-//
-// For |x|>=2^32: return +/-1
-//
-// Special cases:
-// tanh(NaN) = quiet NaN, and raise invalid exception
-// tanh(INF) = that INF
-// tanh(+/-0) = +/-0
-//
-/******************************************************************************/
-
-#include <private/bionic_asm.h>
-# -- Begin static_func
- .text
- .align __bionic_asm_align
- .type static_func, @function
-static_func:
-..B1.1:
- call ..L2
-..L2:
- popl %eax
- lea _GLOBAL_OFFSET_TABLE_+[. - ..L2](%eax), %eax
- lea static_const_table@GOTOFF(%eax), %eax
- ret
- .size static_func,.-static_func
-# -- End static_func
-
-# -- Begin tanh
-ENTRY(tanh)
-# parameter 1: 8 + %ebp
-..B2.1:
-..B2.2:
- pushl %ebp
- movl %esp, %ebp
- subl $104, %esp
- movl %ebx, 40(%esp)
- call static_func
- movl %eax, %ebx
- movsd 112(%esp), %xmm0
- movsd 4256(%ebx), %xmm3
- xorpd %xmm4, %xmm4
- movsd 4112(%ebx), %xmm1
- movsd 4120(%ebx), %xmm2
- movl $32768, %eax
- pinsrw $3, %eax, %xmm4
- movsd 4096(%ebx), %xmm6
- pextrw $3, %xmm0, %ecx
- andpd %xmm0, %xmm3
- andnpd %xmm0, %xmm4
- pshufd $68, %xmm4, %xmm5
- movl $32768, %edx
- andl %ecx, %edx
- andl $32767, %ecx
- subl $16304, %ecx
- cmpl $144, %ecx
- jae .L_2TAG_PACKET_0.0.2
- subsd %xmm3, %xmm4
- mulsd %xmm1, %xmm3
- mulsd %xmm5, %xmm2
- cvtsd2si %xmm3, %eax
- movapd %xmm3, %xmm7
- addsd %xmm6, %xmm3
- mulsd %xmm4, %xmm1
- movsd 4264(%ebx), %xmm4
- subsd %xmm6, %xmm3
- xorpd %xmm0, %xmm0
- addsd %xmm1, %xmm2
- subsd %xmm3, %xmm7
- movapd 4128(%ebx), %xmm6
- addsd %xmm7, %xmm2
- movl $255, %ecx
- andl %eax, %ecx
- addl %ecx, %ecx
- movapd (%ebx,%ecx,8), %xmm5
- shrl $4, %eax
- andl $65520, %eax
- subl $16368, %eax
- negl %eax
- pinsrw $3, %eax, %xmm0
- movapd 4144(%ebx), %xmm1
- pshufd $68, %xmm0, %xmm0
- mulpd %xmm5, %xmm0
- movsd 4160(%ebx), %xmm7
- pshufd $68, %xmm2, %xmm2
- movapd %xmm4, %xmm5
- addsd %xmm0, %xmm4
- mulpd %xmm2, %xmm6
- mulsd %xmm2, %xmm7
- mulpd %xmm2, %xmm2
- addpd %xmm6, %xmm1
- mulsd %xmm2, %xmm2
- movsd 4264(%ebx), %xmm3
- mulpd %xmm2, %xmm1
- pshufd $78, %xmm1, %xmm6
- addsd %xmm6, %xmm1
- movapd %xmm1, %xmm6
- addsd %xmm7, %xmm1
- mulsd %xmm0, %xmm1
- addsd %xmm4, %xmm1
- andpd 4224(%ebx), %xmm4
- divsd %xmm1, %xmm5
- subsd %xmm4, %xmm3
- pshufd $238, %xmm0, %xmm1
- addsd %xmm0, %xmm3
- movapd %xmm4, %xmm2
- addsd %xmm1, %xmm3
- mulsd %xmm7, %xmm1
- mulsd %xmm0, %xmm7
- addsd %xmm1, %xmm3
- addsd %xmm7, %xmm4
- movsd 4240(%ebx), %xmm1
- mulsd %xmm0, %xmm6
- andpd 4224(%ebx), %xmm4
- addsd %xmm6, %xmm3
- movapd %xmm4, %xmm6
- subsd %xmm4, %xmm2
- addsd %xmm7, %xmm2
- movsd 4264(%ebx), %xmm7
- andpd %xmm1, %xmm5
- addsd %xmm2, %xmm3
- mulsd %xmm5, %xmm4
- xorpd %xmm2, %xmm2
- mulsd %xmm5, %xmm3
- subsd 4272(%ebx), %xmm6
- subsd %xmm7, %xmm4
- xorl $32768, %edx
- pinsrw $3, %edx, %xmm2
- addsd %xmm3, %xmm4
- mulsd %xmm5, %xmm6
- movapd %xmm3, %xmm1
- mulsd %xmm4, %xmm3
- movapd %xmm6, %xmm0
- mulsd %xmm4, %xmm6
- subsd %xmm3, %xmm1
- subsd %xmm6, %xmm1
- addsd %xmm1, %xmm0
- xorpd %xmm2, %xmm0
- jmp .L_2TAG_PACKET_1.0.2
-.L_2TAG_PACKET_0.0.2:
- addl $960, %ecx
- cmpl $1104, %ecx
- jae .L_2TAG_PACKET_2.0.2
- movapd 4176(%ebx), %xmm2
- pshufd $68, %xmm0, %xmm1
- movapd 4192(%ebx), %xmm3
- mulpd %xmm1, %xmm1
- movapd 4208(%ebx), %xmm4
- mulpd %xmm1, %xmm2
- pshufd $68, %xmm1, %xmm5
- addpd %xmm3, %xmm2
- mulsd %xmm5, %xmm5
- mulpd %xmm1, %xmm2
- mulsd %xmm5, %xmm5
- addpd %xmm4, %xmm2
- mulpd %xmm5, %xmm2
- pshufd $238, %xmm2, %xmm5
- addsd %xmm5, %xmm2
- mulsd %xmm0, %xmm2
- addsd %xmm2, %xmm0
- jmp .L_2TAG_PACKET_1.0.2
-.L_2TAG_PACKET_2.0.2:
- addl $15344, %ecx
- cmpl $16448, %ecx
- jae .L_2TAG_PACKET_3.0.2
- cmpl $16, %ecx
- jb .L_2TAG_PACKET_4.0.2
- xorpd %xmm2, %xmm2
- movl $17392, %eax
- pinsrw $3, %eax, %xmm2
- mulsd %xmm0, %xmm2
- addsd %xmm0, %xmm2
- jmp .L_2TAG_PACKET_1.0.2
-.L_2TAG_PACKET_4.0.2:
- movapd %xmm0, %xmm2
- mulsd %xmm2, %xmm2
- jmp .L_2TAG_PACKET_1.0.2
-.L_2TAG_PACKET_3.0.2:
- cmpl $32752, %ecx
- jae .L_2TAG_PACKET_5.0.2
- xorpd %xmm2, %xmm2
- movl $15344, %ecx
- pinsrw $3, %ecx, %xmm2
- movapd %xmm2, %xmm3
- mulsd %xmm2, %xmm2
- addsd %xmm3, %xmm2
-.L_2TAG_PACKET_6.0.2:
- xorpd %xmm0, %xmm0
- orl $16368, %edx
- pinsrw $3, %edx, %xmm0
- jmp .L_2TAG_PACKET_1.0.2
-.L_2TAG_PACKET_5.0.2:
- movapd %xmm0, %xmm2
- movd %xmm0, %eax
- psrlq $20, %xmm2
- movd %xmm2, %ecx
- orl %eax, %ecx
- cmpl $0, %ecx
- je .L_2TAG_PACKET_6.0.2
- addsd %xmm0, %xmm0
- jmp .L_2TAG_PACKET_1.0.2
-.L_2TAG_PACKET_1.0.2:
- movsd %xmm0, 24(%esp)
- fldl 24(%esp)
-.L_2TAG_PACKET_7.0.2:
- movl 40(%esp), %ebx
- movl %ebp, %esp
- popl %ebp
- ret
-..B2.3:
-END(tanh)
-# -- End tanh
-
-# Start file scope ASM
-ALIAS_SYMBOL(tanhl, tanh);
-# End file scope ASM
- .section .rodata, "a"
- .align 16
- .align 16
-static_const_table:
- .long 0
- .long 1072693248
- .long 0
- .long 0
- .long 1797923801
- .long 1072687577
- .long 1950547427
- .long 1013229059
- .long 730821105
- .long 1072681922
- .long 2523232743
- .long 1012067188
- .long 915592468
- .long 1072676282
- .long 352947894
- .long 3161024371
- .long 2174652632
- .long 1072670657
- .long 4087714590
- .long 1014450259
- .long 35929225
- .long 1072665048
- .long 2809788041
- .long 3159436968
- .long 2912730644
- .long 1072659453
- .long 3490067722
- .long 3163405074
- .long 2038973688
- .long 1072653874
- .long 892941374
- .long 1016046459
- .long 1533953344
- .long 1072648310
- .long 769171851
- .long 1015665633
- .long 1222472308
- .long 1072642761
- .long 1054357470
- .long 3161021018
- .long 929806999
- .long 1072637227
- .long 3205336643
- .long 1015259557
- .long 481706282
- .long 1072631708
- .long 1696079173
- .long 3162710528
- .long 3999357479
- .long 1072626203
- .long 2258941616
- .long 1015924724
- .long 2719515920
- .long 1072620714
- .long 2760332941
- .long 1015137933
- .long 764307441
- .long 1072615240
- .long 3021057420
- .long 3163329523
- .long 2256325230
- .long 1072609780
- .long 580117746
- .long 1015317295
- .long 2728693978
- .long 1072604335
- .long 396109971
- .long 3163462691
- .long 2009970496
- .long 1072598905
- .long 2159039665
- .long 3162572948
- .long 4224142467
- .long 1072593489
- .long 3389820386
- .long 1015207202
- .long 610758006
- .long 1072588089
- .long 1965209397
- .long 3161866232
- .long 3884662774
- .long 1072582702
- .long 2158611599
- .long 1014210185
- .long 991358482
- .long 1072577331
- .long 838715019
- .long 3163157668
- .long 351641897
- .long 1072571974
- .long 2172261526
- .long 3163010599
- .long 1796832535
- .long 1072566631
- .long 3176955716
- .long 3160585513
- .long 863738719
- .long 1072561303
- .long 1326992220
- .long 3162613197
- .long 1679558232
- .long 1072555989
- .long 2390342287
- .long 3163333970
- .long 4076975200
- .long 1072550689
- .long 2029000899
- .long 1015208535
- .long 3594158869
- .long 1072545404
- .long 2456521700
- .long 3163256561
- .long 64696965
- .long 1072540134
- .long 1768797490
- .long 1015816960
- .long 1912561781
- .long 1072534877
- .long 3147495102
- .long 1015678253
- .long 382305176
- .long 1072529635
- .long 2347622376
- .long 3162578625
- .long 3898795731
- .long 1072524406
- .long 1249994144
- .long 1011869818
- .long 3707479175
- .long 1072519192
- .long 3613079303
- .long 1014164738
- .long 3939148246
- .long 1072513992
- .long 3210352148
- .long 1015274323
- .long 135105010
- .long 1072508807
- .long 1906148728
- .long 3163375739
- .long 721996136
- .long 1072503635
- .long 563754734
- .long 1015371318
- .long 1242007932
- .long 1072498477
- .long 1132034716
- .long 3163339831
- .long 1532734324
- .long 1072493333
- .long 3094216535
- .long 3163162857
- .long 1432208378
- .long 1072488203
- .long 1401068914
- .long 3162363963
- .long 778901109
- .long 1072483087
- .long 2248183955
- .long 3161268751
- .long 3706687593
- .long 1072477984
- .long 3521726940
- .long 1013253067
- .long 1464976603
- .long 1072472896
- .long 3507292405
- .long 3161977534
- .long 2483480501
- .long 1072467821
- .long 1216371780
- .long 1013034172
- .long 2307442995
- .long 1072462760
- .long 3190117721
- .long 3162404539
- .long 777507147
- .long 1072457713
- .long 4282924205
- .long 1015187533
- .long 2029714210
- .long 1072452679
- .long 613660079
- .long 1015099143
- .long 1610600570
- .long 1072447659
- .long 3766732298
- .long 1015760183
- .long 3657065772
- .long 1072442652
- .long 399025623
- .long 3162957078
- .long 3716502172
- .long 1072437659
- .long 2303740125
- .long 1014042725
- .long 1631695677
- .long 1072432680
- .long 2717633076
- .long 3162344026
- .long 1540824585
- .long 1072427714
- .long 1064017011
- .long 3163487690
- .long 3287523847
- .long 1072422761
- .long 1625971539
- .long 3157009955
- .long 2420883922
- .long 1072417822
- .long 2049810052
- .long 1014119888
- .long 3080351519
- .long 1072412896
- .long 3379126788
- .long 3157218001
- .long 815859274
- .long 1072407984
- .long 240396590
- .long 3163487443
- .long 4062661092
- .long 1072403084
- .long 1422616006
- .long 3163255318
- .long 4076559943
- .long 1072398198
- .long 2119478331
- .long 3160758351
- .long 703710506
- .long 1072393326
- .long 1384660846
- .long 1015195891
- .long 2380618042
- .long 1072388466
- .long 3149557219
- .long 3163320799
- .long 364333489
- .long 1072383620
- .long 3923737744
- .long 3161421373
- .long 3092190715
- .long 1072378786
- .long 814012168
- .long 3159523422
- .long 1822067026
- .long 1072373966
- .long 1241994956
- .long 1015340290
- .long 697153126
- .long 1072369159
- .long 1283515429
- .long 3163283189
- .long 3861050111
- .long 1072364364
- .long 254893773
- .long 3162813180
- .long 2572866477
- .long 1072359583
- .long 878562433
- .long 1015521741
- .long 977020788
- .long 1072354815
- .long 3065100517
- .long 1015541563
- .long 3218338682
- .long 1072350059
- .long 3404164304
- .long 3162477108
- .long 557149882
- .long 1072345317
- .long 3672720709
- .long 1014537265
- .long 1434058175
- .long 1072340587
- .long 251133233
- .long 1015085769
- .long 1405169241
- .long 1072335870
- .long 2998539689
- .long 3162830951
- .long 321958744
- .long 1072331166
- .long 3401933767
- .long 1015794558
- .long 2331271250
- .long 1072326474
- .long 812057446
- .long 1012207446
- .long 2990417245
- .long 1072321795
- .long 3683467745
- .long 3163369326
- .long 2152073944
- .long 1072317129
- .long 1486860576
- .long 3163203456
- .long 3964284211
- .long 1072312475
- .long 2111583915
- .long 1015427164
- .long 3985553595
- .long 1072307834
- .long 4002146062
- .long 1015834136
- .long 2069751141
- .long 1072303206
- .long 1562170675
- .long 3162724681
- .long 2366108318
- .long 1072298590
- .long 2867985102
- .long 3161762254
- .long 434316067
- .long 1072293987
- .long 2028358766
- .long 1013458122
- .long 424392917
- .long 1072289396
- .long 2749202995
- .long 3162838718
- .long 2191782032
- .long 1072284817
- .long 2960257726
- .long 1013742662
- .long 1297350157
- .long 1072280251
- .long 1308022040
- .long 3163412558
- .long 1892288442
- .long 1072275697
- .long 2446255666
- .long 3162600381
- .long 3833209506
- .long 1072271155
- .long 2722920684
- .long 1013754842
- .long 2682146384
- .long 1072266626
- .long 2082178513
- .long 3163363419
- .long 2591453363
- .long 1072262109
- .long 2132396182
- .long 3159074198
- .long 3418903055
- .long 1072257604
- .long 2527457337
- .long 3160820604
- .long 727685349
- .long 1072253112
- .long 2038246809
- .long 3162358742
- .long 2966275557
- .long 1072248631
- .long 2176155324
- .long 3159842759
- .long 1403662306
- .long 1072244163
- .long 2788809599
- .long 3161671007
- .long 194117574
- .long 1072239707
- .long 777528612
- .long 3163412089
- .long 3492293770
- .long 1072235262
- .long 2248032210
- .long 1015386826
- .long 2568320822
- .long 1072230830
- .long 2732824428
- .long 1014352915
- .long 1577608921
- .long 1072226410
- .long 1875489510
- .long 3162968394
- .long 380978316
- .long 1072222002
- .long 854188970
- .long 3160462686
- .long 3134592888
- .long 1072217605
- .long 4232266862
- .long 1015991134
- .long 1110089947
- .long 1072213221
- .long 1451641639
- .long 1015474673
- .long 2759350287
- .long 1072208848
- .long 1148526634
- .long 1015894933
- .long 3649726105
- .long 1072204487
- .long 4085036346
- .long 1015649474
- .long 3643909174
- .long 1072200138
- .long 3537586109
- .long 1014354647
- .long 2604962541
- .long 1072195801
- .long 2614425274
- .long 3163539192
- .long 396319521
- .long 1072191476
- .long 4172420816
- .long 3159074632
- .long 1176749997
- .long 1072187162
- .long 2738998779
- .long 3162035844
- .long 515457527
- .long 1072182860
- .long 836709333
- .long 1015651226
- .long 2571947539
- .long 1072178569
- .long 3558159064
- .long 3163376669
- .long 2916157145
- .long 1072174290
- .long 219487565
- .long 1015309367
- .long 1413356050
- .long 1072170023
- .long 1651349291
- .long 3162668166
- .long 2224145553
- .long 1072165767
- .long 3482522030
- .long 3161489169
- .long 919555682
- .long 1072161523
- .long 3121969534
- .long 1012948226
- .long 1660913392
- .long 1072157290
- .long 4218599604
- .long 1015135707
- .long 19972402
- .long 1072153069
- .long 3507899862
- .long 1016009292
- .long 158781403
- .long 1072148859
- .long 2221464712
- .long 3163286453
- .long 1944781191
- .long 1072144660
- .long 3993278767
- .long 3161724279
- .long 950803702
- .long 1072140473
- .long 1655364926
- .long 1015237032
- .long 1339972927
- .long 1072136297
- .long 167908909
- .long 1015572152
- .long 2980802057
- .long 1072132132
- .long 378619896
- .long 1015773303
- .long 1447192521
- .long 1072127979
- .long 1462857171
- .long 3162514521
- .long 903334909
- .long 1072123837
- .long 1636462108
- .long 1015039997
- .long 1218806132
- .long 1072119706
- .long 1818613052
- .long 3162548441
- .long 2263535754
- .long 1072115586
- .long 752233586
- .long 3162639008
- .long 3907805044
- .long 1072111477
- .long 2257091225
- .long 3161550407
- .long 1727278727
- .long 1072107380
- .long 3562710623
- .long 1011471940
- .long 4182873220
- .long 1072103293
- .long 629542646
- .long 3161996303
- .long 2555984613
- .long 1072099218
- .long 2652555442
- .long 3162552692
- .long 1013258799
- .long 1072095154
- .long 1748797611
- .long 3160129082
- .long 3721688645
- .long 1072091100
- .long 3069276937
- .long 1015839401
- .long 1963711167
- .long 1072087058
- .long 1744767757
- .long 3160574294
- .long 4201977662
- .long 1072083026
- .long 748330254
- .long 1013594357
- .long 1719614413
- .long 1072079006
- .long 330458198
- .long 3163282740
- .long 2979960120
- .long 1072074996
- .long 2599109725
- .long 1014498493
- .long 3561793907
- .long 1072070997
- .long 1157054053
- .long 1011890350
- .long 3339203574
- .long 1072067009
- .long 1483497780
- .long 3162408754
- .long 2186617381
- .long 1072063032
- .long 2270764084
- .long 3163272713
- .long 4273770423
- .long 1072059065
- .long 3383180809
- .long 3163218901
- .long 885834528
- .long 1072055110
- .long 1973258547
- .long 3162261564
- .long 488188413
- .long 1072051165
- .long 3199821029
- .long 1015564048
- .long 2956612997
- .long 1072047230
- .long 2118169751
- .long 3162735553
- .long 3872257780
- .long 1072043306
- .long 1253592103
- .long 1015958334
- .long 3111574537
- .long 1072039393
- .long 2606161479
- .long 3162759746
- .long 551349105
- .long 1072035491
- .long 3821916050
- .long 3162106589
- .long 363667784
- .long 1072031599
- .long 813753950
- .long 1015785209
- .long 2425981843
- .long 1072027717
- .long 2830390851
- .long 3163346599
- .long 2321106615
- .long 1072023846
- .long 2171176610
- .long 1009535771
- .long 4222122499
- .long 1072019985
- .long 1277378074
- .long 3163256737
- .long 3712504873
- .long 1072016135
- .long 88491949
- .long 1015427660
- .long 671025100
- .long 1072012296
- .long 3832014351
- .long 3163022030
- .long 3566716925
- .long 1072008466
- .long 1536826856
- .long 1014142433
- .long 3689071823
- .long 1072004647
- .long 2321004996
- .long 3162552716
- .long 917841882
- .long 1072000839
- .long 18715565
- .long 1015659308
- .long 3723038930
- .long 1071997040
- .long 378465264
- .long 3162569582
- .long 3395129871
- .long 1071993252
- .long 4025345435
- .long 3162335388
- .long 4109806887
- .long 1071989474
- .long 422403966
- .long 1014469229
- .long 1453150082
- .long 1071985707
- .long 498154669
- .long 3161488062
- .long 3896463087
- .long 1071981949
- .long 1139797873
- .long 3161233805
- .long 2731501122
- .long 1071978202
- .long 1774031855
- .long 3162470021
- .long 2135241198
- .long 1071974465
- .long 1236747871
- .long 1013589147
- .long 1990012071
- .long 1071970738
- .long 3529070563
- .long 3162813193
- .long 2178460671
- .long 1071967021
- .long 777878098
- .long 3162842493
- .long 2583551245
- .long 1071963314
- .long 3161094195
- .long 1015606491
- .long 3088564500
- .long 1071959617
- .long 1762311517
- .long 1015045673
- .long 3577096743
- .long 1071955930
- .long 2951496418
- .long 1013793687
- .long 3933059031
- .long 1071952253
- .long 2133366768
- .long 3161531832
- .long 4040676318
- .long 1071948586
- .long 4090609238
- .long 1015663458
- .long 3784486610
- .long 1071944929
- .long 1581883040
- .long 3161698953
- .long 3049340112
- .long 1071941282
- .long 3062915824
- .long 1013170595
- .long 1720398391
- .long 1071937645
- .long 3980678963
- .long 3163300080
- .long 3978100823
- .long 1071934017
- .long 3513027190
- .long 1015845963
- .long 1118294578
- .long 1071930400
- .long 2197495694
- .long 3159909401
- .long 1617004845
- .long 1071926792
- .long 82804944
- .long 1010342778
- .long 1065662932
- .long 1071923194
- .long 2533670915
- .long 1014530238
- .long 3645941911
- .long 1071919605
- .long 3814685081
- .long 3161573341
- .long 654919306
- .long 1071916027
- .long 3232961757
- .long 3163047469
- .long 569847338
- .long 1071912458
- .long 472945272
- .long 3159290729
- .long 3278348324
- .long 1071908898
- .long 3069497416
- .long 1014750712
- .long 78413852
- .long 1071905349
- .long 4183226867
- .long 3163017251
- .long 3743175029
- .long 1071901808
- .long 2072812490
- .long 3162175075
- .long 1276261410
- .long 1071898278
- .long 300981948
- .long 1014684169
- .long 1156440435
- .long 1071894757
- .long 2351451249
- .long 1013967056
- .long 3272845541
- .long 1071891245
- .long 928852419
- .long 3163488248
- .long 3219942644
- .long 1071887743
- .long 3798990616
- .long 1015368806
- .long 887463927
- .long 1071884251
- .long 3596744163
- .long 3160794166
- .long 460407023
- .long 1071880768
- .long 4237175092
- .long 3163138469
- .long 1829099622
- .long 1071877294
- .long 1016661181
- .long 3163461005
- .long 589198666
- .long 1071873830
- .long 2664346172
- .long 3163157962
- .long 926591435
- .long 1071870375
- .long 3208833762
- .long 3162913514
- .long 2732492859
- .long 1071866929
- .long 2691479646
- .long 3162255684
- .long 1603444721
- .long 1071863493
- .long 1548633640
- .long 3162201326
- .long 1726216749
- .long 1071860066
- .long 2466808228
- .long 3161676405
- .long 2992903935
- .long 1071856648
- .long 2218154406
- .long 1015228193
- .long 1000925746
- .long 1071853240
- .long 1018491672
- .long 3163309544
- .long 4232894513
- .long 1071849840
- .long 2383938684
- .long 1014668519
- .long 3991843581
- .long 1071846450
- .long 4092853457
- .long 1014585763
- .long 171030293
- .long 1071843070
- .long 3526460132
- .long 1014428778
- .long 1253935211
- .long 1071839698
- .long 1395382931
- .long 3159702613
- .long 2839424854
- .long 1071836335
- .long 1171596163
- .long 1013041679
- .long 526652809
- .long 1071832982
- .long 4223459736
- .long 1015879375
- .long 2799960843
- .long 1071829637
- .long 1423655381
- .long 1015022151
- .long 964107055
- .long 1071826302
- .long 2800439588
- .long 3162833221
- .long 3504003472
- .long 1071822975
- .long 3594001060
- .long 3157330652
- .long 1724976915
- .long 1071819658
- .long 420909223
- .long 3163117379
- .long 4112506593
- .long 1071816349
- .long 2947355221
- .long 1014371048
- .long 1972484976
- .long 1071813050
- .long 675290301
- .long 3161640050
- .long 3790955393
- .long 1071809759
- .long 2352942462
- .long 3163180090
- .long 874372905
- .long 1071806478
- .long 100263788
- .long 1015940732
- .long 1709341917
- .long 1071803205
- .long 2571168217
- .long 1014152499
- .long 1897844341
- .long 1071799941
- .long 1254300460
- .long 1015275938
- .long 1337108031
- .long 1071796686
- .long 3203724452
- .long 1014677845
- .long 4219606026
- .long 1071793439
- .long 2434574742
- .long 1014681548
- .long 1853186616
- .long 1071790202
- .long 3066496371
- .long 1015656574
- .long 2725843665
- .long 1071786973
- .long 1433917087
- .long 1014838523
- .long 2440944790
- .long 1071783753
- .long 2492769774
- .long 1014147454
- .long 897099801
- .long 1071780542
- .long 754756297
- .long 1015241005
- .long 2288159958
- .long 1071777339
- .long 2169144469
- .long 1014876021
- .long 2218315341
- .long 1071774145
- .long 2694295388
- .long 3163288868
- .long 586995997
- .long 1071770960
- .long 41662348
- .long 3162627992
- .long 1588871207
- .long 1071767783
- .long 143439582
- .long 3162963416
- .long 828946858
- .long 1071764615
- .long 10642492
- .long 1015939438
- .long 2502433899
- .long 1071761455
- .long 2148595913
- .long 1015023991
- .long 2214878420
- .long 1071758304
- .long 892270087
- .long 3163116422
- .long 4162030108
- .long 1071755161
- .long 2763428480
- .long 1015529349
- .long 3949972341
- .long 1071752027
- .long 2068408548
- .long 1014913868
- .long 1480023343
- .long 1071748902
- .long 2247196168
- .long 1015327453
- .long 948735466
- .long 1071745785
- .long 3516338028
- .long 3162574883
- .long 2257959872
- .long 1071742676
- .long 3802946148
- .long 1012964927
- .long 1014845819
- .long 1071739576
- .long 3117910646
- .long 3161559105
- .long 1416741826
- .long 1071736484
- .long 2196380210
- .long 1011413563
- .long 3366293073
- .long 1071733400
- .long 3119426314
- .long 1014120554
- .long 2471440686
- .long 1071730325
- .long 968836267
- .long 3162214888
- .long 2930322912
- .long 1071727258
- .long 2599499422
- .long 3162714047
- .long 351405227
- .long 1071724200
- .long 3125337328
- .long 3159822479
- .long 3228316108
- .long 1071721149
- .long 3010241991
- .long 3158422804
- .long 2875075254
- .long 1071718107
- .long 4144233330
- .long 3163333716
- .long 3490863953
- .long 1071715073
- .long 960797498
- .long 3162948880
- .long 685187902
- .long 1071712048
- .long 378731989
- .long 1014843115
- .long 2952712987
- .long 1071709030
- .long 3293494651
- .long 3160120301
- .long 1608493509
- .long 1071706021
- .long 3159622171
- .long 3162807737
- .long 852742562
- .long 1071703020
- .long 667253586
- .long 1009793559
- .long 590962156
- .long 1071700027
- .long 3829346666
- .long 3163275597
- .long 728909815
- .long 1071697042
- .long 383930225
- .long 1015029468
- .long 1172597893
- .long 1071694065
- .long 114433263
- .long 1015347593
- .long 1828292879
- .long 1071691096
- .long 1255956747
- .long 1015588398
- .long 2602514713
- .long 1071688135
- .long 2268929336
- .long 1014354284
- .long 3402036099
- .long 1071685182
- .long 405889334
- .long 1015105656
- .long 4133881824
- .long 1071682237
- .long 2148155345
- .long 3162931299
- .long 410360776
- .long 1071679301
- .long 1269990655
- .long 1011975870
- .long 728934454
- .long 1071676372
- .long 1413842688
- .long 1014178612
- .long 702412510
- .long 1071673451
- .long 3803266087
- .long 3162280415
- .long 238821257
- .long 1071670538
- .long 1469694871
- .long 3162884987
- .long 3541402996
- .long 1071667632
- .long 2759177317
- .long 1014854626
- .long 1928746161
- .long 1071664735
- .long 983617676
- .long 1014285177
- .long 3899555717
- .long 1071661845
- .long 427280750
- .long 3162546972
- .long 772914124
- .long 1071658964
- .long 4004372762
- .long 1012230161
- .long 1048019041
- .long 1071656090
- .long 1398474845
- .long 3160510595
- .long 339411585
- .long 1071653224
- .long 264588982
- .long 3161636657
- .long 2851812149
- .long 1071650365
- .long 2595802551
- .long 1015767337
- .long 4200250559
- .long 1071647514
- .long 2808127345
- .long 3161781938
- .long 0
- .long 1127743488
- .long 0
- .long 3275227136
- .long 1610612736
- .long 1082594631
- .long 4166901572
- .long 1055174155
- .long 3884607281
- .long 3168131199
- .long 3607404735
- .long 3190582024
- .long 1874480759
- .long 1032041131
- .long 4286760334
- .long 1053736893
- .long 4277811695
- .long 3211144770
- .long 0
- .long 0
- .long 236289503
- .long 1064135997
- .long 463583772
- .long 3215696314
- .long 1441186365
- .long 3212977891
- .long 286331153
- .long 1069617425
- .long 2284589306
- .long 1066820852
- .long 1431655765
- .long 3218429269
- .long 0
- .long 4294967280
- .long 0
- .long 4294967280
- .long 4294705152
- .long 4294967295
- .long 4294705152
- .long 4294967295
- .long 4160749568
- .long 2147483647
- .long 0
- .long 1072693248
- .long 0
- .long 1073741824
- .type static_const_table,@object
- .size static_const_table,4280
- .data
- .section .note.GNU-stack, "",@progbits
-# End
diff --git a/libm/x86_64/e_acos.S b/libm/x86_64/e_acos.S
deleted file mode 100644
index 57c910e..0000000
--- a/libm/x86_64/e_acos.S
+++ /dev/null
@@ -1,1957 +0,0 @@
-/*
-Copyright (c) 2014, Intel Corporation
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
-
- * Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
-
- * Neither the name of Intel Corporation nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
-ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/******************************************************************************/
-// ALGORITHM DESCRIPTION
-// ---------------------
-//
-// To compute acos(s), separate schemes are used when s is in different
-// intervals.
-//
-// |s| in [2^{-4}, sqrt(3)/2):
-// Let t=2^k*1.b1 b2..b6 1, where s=2^k*1.b1 b2 .. b52
-// acos(s)=pi/2-asin(t)-asin(r), where r=s*sqrt(1-t^2)-t*sqrt(1-s^2)
-// asin(r)-r evaluated as 7-degree polynomial (c3*r^3+c5*r^5+c7*r^7)
-// For the first degree term, r is evaluated as
-// R=(s^2-t^2)/(sqrt(1-t^2)*s+sqrt(1-s^2)*t)
-// (sqrt(1-t^2) read from table)
-// The main source of error is still R (may still be affected by up to 3 ulps
-// of rounding error). The table size must be sufficiently large, to minimize
-// this effect.
-//
-// |s| in [sqrt(3)/2, 255/256):
-// Let t=2^k*1.b1 b2..b6 1, where sqrt(1-s^2)=2^k*1.b1 b2 .. b52 (rounded)
-// acos(|s|)=asin(t)-asin(r), r=s*t-sqrt(1-s^2)*sqrt(1-t^2)
-// acos(-|s|)=pi-acos(|s|)
-// (The -PI constant, or 0, is added to the result. The sign is set at
-// the end)
-// asin(r) evaluated as a polynomial (same as above)
-// The first degree term is evaluated as
-// r=(s^2+t^2-1)/(s*t+sqrt(1-s^2)*sqrt(1-t^2))
-//
-// |s|<2^{-4}: acos(s)=pi/2-asin(s)
-// evaluate asin(s) as 13-degree polynomial
-//
-// |s| in [255/256,1): acos(|s|)=2*asin(q), where q=sqrt((1-|s|)/2)
-// asin(q) is evaluated as 13-degree polynomial
-// q^2=(1-|s|)/2 is obtained in advance
-// 2*q*eps ~ ((1-|s|)/2-q^2)/q used for first term
-// acos(-|s|)=pi-acos(|s|)
-// (The -PI constant, or 0, is added to the result. The sign is set at
-// the end)
-//
-// Special cases:
-// acos(NaN) = quiet NaN, and raise invalid exception
-// acos(INF) = QNaN and raise invalid exception
-// acos(x) = QNaN and raise invalid exception, for |x|>1.0
-// acos(1) = +0
-//
-/******************************************************************************/
-
-#include <private/bionic_asm.h>
-# -- Begin acos
-ENTRY(acos)
-# parameter 1: %xmm0
-..B1.1:
-..___tag_value_acos.1:
- subq $24, %rsp
-..___tag_value_acos.3:
- movsd %xmm0, (%rsp)
-..B1.2:
- movsd ABSVALMASK(%rip), %xmm4
- movsd ONEMASK(%rip), %xmm3
- xorpd %xmm5, %xmm5
- movsd TMASK(%rip), %xmm2
- movq %xmm0, %xmm1
- psrlq $44, %xmm0
- movd %xmm0, %edx
- movq %xmm1, %xmm7
- movl $8192, %ecx
- pinsrw $2, %ecx, %xmm5
- movq %xmm1, %xmm0
- movl $524287, %eax
- andl %edx, %eax
- subl $260864, %eax
- cmpl $955, %eax
- jae .L_2TAG_PACKET_0.0.2
- mulsd %xmm1, %xmm1
- andl $65535, %edx
- subsd %xmm1, %xmm3
- sqrtsd %xmm3, %xmm3
- andpd %xmm7, %xmm2
- andl $-4, %edx
- subl $64256, %edx
- lea T_table(%rip), %r8
- movsd (%r8,%rdx,2), %xmm1
- orpd %xmm5, %xmm2
- lea Tbl_addr(%rip), %r8
- movapd (%r8,%rdx,4), %xmm4
- movq %xmm7, %xmm6
- addsd %xmm2, %xmm7
- subsd %xmm2, %xmm0
- mulsd %xmm0, %xmm7
- mulsd %xmm1, %xmm6
- mulsd %xmm2, %xmm3
- movq %xmm6, %xmm1
- addsd %xmm3, %xmm6
- divsd %xmm6, %xmm7
- movsd 24+cv(%rip), %xmm0
- movsd 8+cv(%rip), %xmm5
- subsd %xmm3, %xmm1
- psrlq $63, %xmm2
- movq %xmm1, %xmm3
- psllq $63, %xmm2
- mulsd %xmm1, %xmm1
- pshufd $68, %xmm2, %xmm2
- movsd 16+cv(%rip), %xmm6
- mulsd %xmm1, %xmm3
- mulsd %xmm1, %xmm0
- xorpd %xmm2, %xmm4
- mulsd %xmm3, %xmm5
- subpd PI_BY_2(%rip), %xmm4
- mulsd %xmm1, %xmm3
- addsd %xmm6, %xmm0
- mulsd %xmm3, %xmm0
- subsd %xmm4, %xmm5
- pshufd $238, %xmm4, %xmm4
- addsd %xmm5, %xmm0
- subsd %xmm7, %xmm0
- subsd %xmm4, %xmm0
- jmp ..B1.5
-.L_2TAG_PACKET_0.0.2:
- subl $955, %eax
- cmpl $65, %eax
- jae .L_2TAG_PACKET_1.0.2
- psrlq $38, %xmm7
- psllq $38, %xmm7
- pmovmskb %xmm0, %eax
- andnpd %xmm0, %xmm4
- subsd %xmm7, %xmm1
- movq %xmm7, %xmm6
- mulsd %xmm7, %xmm7
- addsd %xmm6, %xmm0
- orpd %xmm4, %xmm5
- subsd %xmm7, %xmm3
- mulsd %xmm1, %xmm0
- movq %xmm3, %xmm4
- subsd %xmm0, %xmm3
- sqrtsd %xmm3, %xmm3
- andl $128, %eax
- shrl $7, %eax
- negl %eax
- movq %xmm3, %xmm7
- andpd %xmm3, %xmm2
- psllq $2, %xmm3
- pextrw $3, %xmm3, %edx
- orpd %xmm5, %xmm2
- movd %eax, %xmm3
- pshufd $0, %xmm3, %xmm3
- subl $65216, %edx
- addl %edx, %edx
- lea T_table(%rip), %r8
- mulsd (%r8,%rdx,4), %xmm7
- mulsd %xmm2, %xmm6
- mulsd %xmm2, %xmm1
- mulsd %xmm2, %xmm2
- subsd %xmm7, %xmm6
- andpd NEG_PI(%rip), %xmm3
- addsd %xmm1, %xmm6
- subsd %xmm2, %xmm4
- addsd %xmm7, %xmm7
- movsd 8+cv(%rip), %xmm5
- subsd %xmm0, %xmm4
- addsd %xmm6, %xmm7
- movsd 24+cv(%rip), %xmm0
- divsd %xmm7, %xmm4
- movsd 16+cv(%rip), %xmm2
- lea Tbl_addr(%rip), %r8
- addpd (%r8,%rdx,8), %xmm3
- movq %xmm6, %xmm1
- mulsd %xmm6, %xmm6
- mulsd %xmm6, %xmm0
- mulsd %xmm6, %xmm1
- mulsd %xmm1, %xmm5
- mulsd %xmm6, %xmm1
- addsd %xmm2, %xmm0
- pxor %xmm6, %xmm6
- mulsd %xmm1, %xmm0
- addsd %xmm3, %xmm5
- addsd %xmm5, %xmm0
- andl $32768, %eax
- pinsrw $3, %eax, %xmm6
- movq %xmm4, %xmm5
- pshufd $238, %xmm3, %xmm3
- addsd %xmm3, %xmm4
- subsd %xmm4, %xmm3
- addsd %xmm3, %xmm5
- addsd %xmm5, %xmm0
- addsd %xmm4, %xmm0
- xorpd %xmm6, %xmm0
- jmp ..B1.5
-.L_2TAG_PACKET_1.0.2:
- addl $15291, %eax
- cmpl $14336, %eax
- jae .L_2TAG_PACKET_2.0.2
- unpcklpd %xmm0, %xmm0
- movapd cv2(%rip), %xmm6
- unpcklpd %xmm0, %xmm1
- movapd 16+cv2(%rip), %xmm2
- movapd 32+cv2(%rip), %xmm4
- mulpd %xmm0, %xmm0
- movapd PI_BY_2(%rip), %xmm5
- mulpd %xmm0, %xmm1
- mulpd %xmm0, %xmm6
- mulpd %xmm0, %xmm0
- movq %xmm1, %xmm3
- mulsd %xmm1, %xmm1
- addpd %xmm2, %xmm6
- mulpd %xmm0, %xmm4
- mulsd %xmm3, %xmm1
- addpd %xmm4, %xmm6
- pshufd $238, %xmm5, %xmm0
- mulpd %xmm6, %xmm1
- pshufd $238, %xmm5, %xmm6
- subsd %xmm7, %xmm0
- pshufd $238, %xmm1, %xmm2
- subsd %xmm1, %xmm5
- subsd %xmm0, %xmm6
- subsd %xmm2, %xmm5
- subsd %xmm6, %xmm7
- subsd %xmm7, %xmm5
- addsd %xmm5, %xmm0
- jmp ..B1.5
-.L_2TAG_PACKET_2.0.2:
- subl $15356, %eax
- cmpl $4, %eax
- jae .L_2TAG_PACKET_3.0.2
- xorpd %xmm6, %xmm6
- andpd ABSVALMASK(%rip), %xmm7
- movsd ONE_BY_2(%rip), %xmm4
- movapd cv2(%rip), %xmm1
- mulsd %xmm4, %xmm7
- movapd 16+cv2(%rip), %xmm2
- subsd %xmm7, %xmm4
- movapd 32+cv2(%rip), %xmm3
- pshufd $68, %xmm4, %xmm7
- sqrtsd %xmm4, %xmm4
- mulpd %xmm7, %xmm1
- pshufd $68, %xmm7, %xmm5
- pextrw $3, %xmm0, %eax
- mulpd %xmm7, %xmm7
- addpd %xmm1, %xmm2
- movsd HALFMASK(%rip), %xmm1
- mulpd %xmm7, %xmm3
- cmpsd $1, %xmm6, %xmm0
- mulsd %xmm5, %xmm7
- addpd %xmm3, %xmm2
- pshufd $68, %xmm0, %xmm0
- mulsd %xmm7, %xmm2
- andpd NEG_PI(%rip), %xmm0
- mulpd %xmm5, %xmm2
- andpd %xmm4, %xmm1
- pshufd $68, %xmm4, %xmm3
- subsd %xmm1, %xmm4
- addsd %xmm3, %xmm3
- mulsd %xmm1, %xmm1
- subsd %xmm4, %xmm3
- subsd %xmm1, %xmm5
- mulsd %xmm3, %xmm4
- pshufd $238, %xmm3, %xmm3
- subsd %xmm4, %xmm5
- divsd %xmm3, %xmm5
- addpd %xmm3, %xmm3
- mulpd %xmm3, %xmm2
- pshufd $238, %xmm2, %xmm4
- addsd %xmm0, %xmm2
- andl $32768, %eax
- pinsrw $3, %eax, %xmm6
- pshufd $238, %xmm0, %xmm0
- addsd %xmm4, %xmm2
- addsd %xmm5, %xmm2
- addsd %xmm3, %xmm2
- addsd %xmm2, %xmm0
- xorpd %xmm6, %xmm0
- jmp ..B1.5
-.L_2TAG_PACKET_3.0.2:
- addl $261884, %eax
- cmpl $261888, %eax
- jb .L_2TAG_PACKET_4.0.2
- movd %xmm7, %ecx
- psrlq $32, %xmm7
- movd %xmm7, %edx
- andl $2147483647, %edx
- movl $1072693248, %eax
- subl %edx, %eax
- orl %ecx, %eax
- cmpl $0, %eax
- je .L_2TAG_PACKET_5.0.2
- movsd (%rsp), %xmm2
- movd %xmm2, %edx
- psrlq $32, %xmm2
- movd %xmm2, %ecx
- andl $2147483647, %ecx
- subl $1, %edx
- sbbl $2146435072, %ecx
- cmpl $0, %ecx
- jge .L_2TAG_PACKET_6.0.2
- xorpd %xmm1, %xmm1
- xorpd %xmm0, %xmm0
- movl $32752, %edx
- pinsrw $3, %edx, %xmm1
- mulsd %xmm1, %xmm0
- jmp .L_2TAG_PACKET_7.0.2
-.L_2TAG_PACKET_5.0.2:
- pextrw $1, %xmm7, %edx
- shrl $15, %edx
- negl %edx
- movd %edx, %xmm7
- pshufd $0, %xmm7, %xmm7
- movsd PI(%rip), %xmm2
- movsd 8+PI(%rip), %xmm0
- andpd %xmm7, %xmm2
- andpd %xmm7, %xmm0
- addsd %xmm2, %xmm0
- jmp ..B1.5
-.L_2TAG_PACKET_4.0.2:
- movsd PI_BY_2(%rip), %xmm2
- movsd 8+PI_BY_2(%rip), %xmm0
- addsd %xmm2, %xmm0
- jmp ..B1.5
-.L_2TAG_PACKET_6.0.2:
- xorpd %xmm6, %xmm6
- addsd %xmm6, %xmm0
- jmp ..B1.5
-.L_2TAG_PACKET_7.0.2:
- movq %xmm0, 8(%rsp)
-..B1.3:
- movq 8(%rsp), %xmm0
-.L_2TAG_PACKET_8.0.2:
-..B1.5:
- addq $24, %rsp
-..___tag_value_acos.4:
- ret
-..___tag_value_acos.5:
-END(acos)
-# -- End acos
- .section .rodata, "a"
- .align 16
- .align 16
-ABSVALMASK:
- .long 4294967295
- .long 2147483647
- .long 0
- .long 0
- .type ABSVALMASK,@object
- .size ABSVALMASK,16
- .align 16
-T_table:
- .long 2642784509
- .long 1072689083
- .long 1514442531
- .long 1072688953
- .long 333108933
- .long 1072688821
- .long 3392112024
- .long 1072688686
- .long 2099852862
- .long 1072688550
- .long 749609004
- .long 1072688412
- .long 3634632596
- .long 1072688271
- .long 2163248461
- .long 1072688129
- .long 628657846
- .long 1072687985
- .long 3324036511
- .long 1072687838
- .long 1657632815
- .long 1072687690
- .long 4217538760
- .long 1072687539
- .long 2411951597
- .long 1072687387
- .long 533944872
- .long 1072687233
- .long 2876566508
- .long 1072687076
- .long 847936891
- .long 1072686918
- .long 3036019913
- .long 1072686757
- .long 848884575
- .long 1072686595
- .long 2874443326
- .long 1072686430
- .long 520713666
- .long 1072686264
- .long 2375556481
- .long 1072686095
- .long 4141904948
- .long 1072685924
- .long 1522666382
- .long 1072685752
- .long 3105624104
- .long 1072685577
- .long 298666327
- .long 1072685401
- .long 1689524500
- .long 1072685222
- .long 2981002200
- .long 1072685041
- .long 4170844284
- .long 1072684858
- .long 961802263
- .long 1072684674
- .long 1941503454
- .long 1072684487
- .long 2812647170
- .long 1072684298
- .long 3572873869
- .long 1072684107
- .long 4219797823
- .long 1072683914
- .long 456039788
- .long 1072683720
- .long 869096151
- .long 1072683523
- .long 1161535119
- .long 1072683324
- .long 1330865866
- .long 1072683123
- .long 1374571204
- .long 1072682920
- .long 1290107538
- .long 1072682715
- .long 1074904836
- .long 1072682508
- .long 726366587
- .long 1072682299
- .long 241869763
- .long 1072682088
- .long 3913732079
- .long 1072681874
- .long 3149342765
- .long 1072681659
- .long 2240966306
- .long 1072681442
- .long 1185873216
- .long 1072681223
- .long 4276274591
- .long 1072681001
- .long 2919452883
- .long 1072680778
- .long 1407565635
- .long 1072680553
- .long 4032743551
- .long 1072680325
- .long 2202188565
- .long 1072680096
- .long 207977577
- .long 1072679865
- .long 2342160518
- .long 1072679631
- .long 11858423
- .long 1072679396
- .long 1804034453
- .long 1072679158
- .long 3420722787
- .long 1072678918
- .long 563930456
- .long 1072678677
- .long 1820539192
- .long 1072678433
- .long 2892501606
- .long 1072678187
- .long 3776710320
- .long 1072677939
- .long 175063337
- .long 1072677690
- .long 674333171
- .long 1072677438
- .long 976363026
- .long 1072677184
- .long 1077935934
- .long 1072676928
- .long 1921075490
- .long 1072676540
- .long 881493302
- .long 1072676016
- .long 3275752439
- .long 1072675483
- .long 486855588
- .long 1072674943
- .long 1077229111
- .long 1072674394
- .long 723950308
- .long 1072673837
- .long 3693582199
- .long 1072673271
- .long 1367335316
- .long 1072672698
- .long 2305837020
- .long 1072672116
- .long 2184358641
- .long 1072671526
- .long 972682840
- .long 1072670928
- .long 2935101762
- .long 1072670321
- .long 3745513263
- .long 1072669706
- .long 3372320886
- .long 1072669083
- .long 1783464620
- .long 1072668452
- .long 3241386215
- .long 1072667812
- .long 3418125284
- .long 1072667164
- .long 2280219148
- .long 1072666508
- .long 4088700758
- .long 1072665843
- .long 219227400
- .long 1072665171
- .long 3521816918
- .long 1072664489
- .long 1076205279
- .long 1072663800
- .long 1436484616
- .long 1072663102
- .long 271362610
- .long 1072662396
- .long 1838996688
- .long 1072661681
- .long 1807122518
- .long 1072660958
- .long 137953542
- .long 1072660227
- .long 1088178584
- .long 1072659487
- .long 324057537
- .long 1072658739
- .long 2101288076
- .long 1072657982
- .long 2085133974
- .long 1072657217
- .long 235324451
- .long 1072656444
- .long 806051592
- .long 1072655662
- .long 3756033140
- .long 1072654871
- .long 453542543
- .long 1072654073
- .long 3741177327
- .long 1072653265
- .long 691216109
- .long 1072652450
- .long 4145223372
- .long 1072651625
- .long 1174439091
- .long 1072650793
- .long 324416139
- .long 1072649952
- .long 1550246310
- .long 1072649102
- .long 511524674
- .long 1072648244
- .long 1457248482
- .long 1072647377
- .long 45944955
- .long 1072646502
- .long 525537397
- .long 1072645618
- .long 2848440188
- .long 1072644725
- .long 2671555633
- .long 1072643824
- .long 4241172637
- .long 1072642914
- .long 3213094278
- .long 1072641996
- .long 3832503688
- .long 1072641069
- .long 1754091534
- .long 1072640134
- .long 1221921804
- .long 1072639190
- .long 2184526489
- .long 1072638237
- .long 294902089
- .long 1072637276
- .long 4090375270
- .long 1072636305
- .long 632860906
- .long 1072635327
- .long 2753498702
- .long 1072634339
- .long 1808009252
- .long 1072633343
- .long 2036428672
- .long 1072632338
- .long 3383235626
- .long 1072631324
- .long 1497347484
- .long 1072630302
- .long 617018317
- .long 1072629271
- .long 684933058
- .long 1072628231
- .long 1643170798
- .long 1072627182
- .long 3011066360
- .long 1072625592
- .long 957158713
- .long 1072623442
- .long 1390907941
- .long 1072621256
- .long 3819155270
- .long 1072619034
- .long 3443571196
- .long 1072616777
- .long 4045412458
- .long 1072614484
- .long 805503923
- .long 1072612156
- .long 1778922015
- .long 1072609791
- .long 2125033665
- .long 1072607390
- .long 1287203863
- .long 1072604953
- .long 2992629568
- .long 1072602479
- .long 2367267127
- .long 1072599969
- .long 3115526047
- .long 1072597422
- .long 340219539
- .long 1072594839
- .long 2017215719
- .long 1072592218
- .long 3225443424
- .long 1072589560
- .long 3326565673
- .long 1072586865
- .long 1669811211
- .long 1072584133
- .long 1886735022
- .long 1072581363
- .long 3301071171
- .long 1072578555
- .long 928514283
- .long 1072575710
- .long 2656364059
- .long 1072572826
- .long 3473490507
- .long 1072569904
- .long 2649965606
- .long 1072566944
- .long 3736819052
- .long 1072563945
- .long 1680885175
- .long 1072560908
- .long 4413771
- .long 1072557832
- .long 2214869753
- .long 1072554716
- .long 3214725184
- .long 1072551561
- .long 2186079903
- .long 1072548367
- .long 2590372131
- .long 1072545133
- .long 3578146079
- .long 1072541859
- .long 4283712755
- .long 1072538545
- .long 3824834510
- .long 1072535191
- .long 1302400298
- .long 1072531797
- .long 95058636
- .long 1072528362
- .long 3563906063
- .long 1072524885
- .long 2167230730
- .long 1072521368
- .long 3524918334
- .long 1072517809
- .long 2353304918
- .long 1072514209
- .long 1939625839
- .long 1072510567
- .long 1256714581
- .long 1072506883
- .long 3552525848
- .long 1072503156
- .long 3464809522
- .long 1072499387
- .long 4200542593
- .long 1072495575
- .long 355609124
- .long 1072491721
- .long 3684139099
- .long 1072487822
- .long 148355918
- .long 1072483881
- .long 1457689242
- .long 1072479895
- .long 2118591596
- .long 1072475865
- .long 908848089
- .long 1072471791
- .long 877032689
- .long 1072467672
- .long 752012304
- .long 1072463508
- .long 3532301749
- .long 1072459298
- .long 3600563221
- .long 1072455043
- .long 3902857084
- .long 1072450742
- .long 3063101036
- .long 1072446395
- .long 3972344374
- .long 1072442001
- .long 903183549
- .long 1072437561
- .long 983892938
- .long 1072433073
- .long 2722858568
- .long 1072428537
- .long 302790515
- .long 1072423954
- .long 759811057
- .long 1072419322
- .long 2507809922
- .long 1072414641
- .long 2388408813
- .long 1072407528
- .long 2084492942
- .long 1072397870
- .long 2435703301
- .long 1072388010
- .long 1935433360
- .long 1072377945
- .long 2742047290
- .long 1072367671
- .long 2053284205
- .long 1072357185
- .long 657783367
- .long 1072346483
- .long 2893664841
- .long 1072335560
- .long 3718906405
- .long 1072324413
- .long 1547896303
- .long 1072313038
- .long 2494058440
- .long 1072301429
- .long 3133238742
- .long 1072289582
- .long 3327000086
- .long 1072277492
- .long 1860667274
- .long 1072265154
- .long 665340747
- .long 1072252562
- .long 443347841
- .long 1072239710
- .long 581282618
- .long 1072226592
- .long 3349780465
- .long 1072213201
- .long 914217606
- .long 1072199532
- .long 989797661
- .long 1072185576
- .long 945436416
- .long 1072171326
- .long 549291300
- .long 1072156774
- .long 1814636389
- .long 1072141911
- .long 239092858
- .long 1072126729
- .long 1794680724
- .long 1072111217
- .long 1241534678
- .long 1072095366
- .long 3366566214
- .long 1072079164
- .long 1244090828
- .long 1072062601
- .long 1708448120
- .long 1072045663
- .long 3544260650
- .long 1072028337
- .long 1402741403
- .long 1072010610
- .long 2551936888
- .long 1071992465
- .long 617669739
- .long 1071973887
- .long 794002186
- .long 1071954857
- .long 2021237693
- .long 1071935356
- .long 540450384
- .long 1071915364
- .long 1920555537
- .long 1071894857
- .long 2879585206
- .long 1071873811
- .long 3000237455
- .long 1071852199
- .long 3352974346
- .long 1071829991
- .long 569629937
- .long 1071807155
- .long 2077237208
- .long 1071783653
- .long 2284891805
- .long 1071759446
- .long 1226651784
- .long 1071734489
- .long 1102047405
- .long 1071708731
- .long 2009896384
- .long 1071682115
- .long 927419082
- .long 1071654577
- .long 85010366
- .long 1071607413
- .long 696431025
- .long 1071548180
- .long 2611410541
- .long 1071486585
- .long 2612593658
- .long 1071422396
- .long 3548155306
- .long 1071355336
- .long 3887997484
- .long 1071285073
- .long 244854763
- .long 1071211202
- .long 4214445648
- .long 1071133216
- .long 2303966727
- .long 1071050478
- .long 3991040013
- .long 1070962152
- .long 3126952278
- .long 1070867118
- .long 1817448378
- .long 1070763804
- .long 1793814864
- .long 1070649884
- .long 3507224072
- .long 1070447193
- .long 4027609105
- .long 1070148772
- .long 577507993
- .long 1069779414
- .long 2310232419
- .long 1068931829
- .type T_table,@object
- .size T_table,2048
- .align 16
-Tbl_addr:
- .long 3822952792
- .long 1021639372
- .long 182792448
- .long 1068507836
- .long 2264213271
- .long 1019558908
- .long 649052928
- .long 1068524253
- .long 1797139609
- .long 1022295143
- .long 1243095296
- .long 1068540671
- .long 1415938756
- .long 1021439537
- .long 2033294592
- .long 1068557090
- .long 2356809978
- .long 1021777916
- .long 3088063744
- .long 1068573510
- .long 2669055318
- .long 1022124482
- .long 180888576
- .long 1068589932
- .long 3566445325
- .long 1021358712
- .long 1970196992
- .long 1068606354
- .long 896980323
- .long 1021319659
- .long 4229555456
- .long 1068622777
- .long 436049712
- .long 1021319758
- .long 2732572160
- .long 1068639202
- .long 583123209
- .long 1020797960
- .long 1842831872
- .long 1068655628
- .long 1370449804
- .long 1021429270
- .long 1628994560
- .long 1068672055
- .long 2411391464
- .long 1021057980
- .long 2159763712
- .long 1068688483
- .long 1208692749
- .long 1021943903
- .long 3503886336
- .long 1068704912
- .long 538793309
- .long 1019744063
- .long 1435187200
- .long 1068721343
- .long 4085087612
- .long 1020608419
- .long 317469952
- .long 1068737775
- .long 144386942
- .long 1021440732
- .long 219617280
- .long 1068754208
- .long 2940088361
- .long 1019981122
- .long 1210558208
- .long 1068770642
- .long 2176850347
- .long 1018373705
- .long 3359268352
- .long 1068787077
- .long 2395611454
- .long 1021889042
- .long 2439803648
- .long 1068803514
- .long 1650705253
- .long 1020227966
- .long 2816203520
- .long 1068819952
- .long 3702166386
- .long 1019379914
- .long 262620672
- .long 1068836392
- .long 1855649370
- .long 1020453124
- .long 3438159616
- .long 1068852832
- .long 923063860
- .long 1019273834
- .long 3822105856
- .long 1068869274
- .long 4289947947
- .long 1019434249
- .long 1483729920
- .long 1068885718
- .long 787455814
- .long 1020738379
- .long 787321088
- .long 1068902163
- .long 3321653337
- .long 1021842569
- .long 1802253312
- .long 1068918609
- .long 2653633526
- .long 1021821525
- .long 302985984
- .long 1068935057
- .long 161272028
- .long 1021655149
- .long 653966080
- .long 1068951506
- .long 2566098667
- .long 1020066219
- .long 2924727296
- .long 1068967956
- .long 3646493722
- .long 1014292285
- .long 2889890304
- .long 1068984408
- .long 1081009196
- .long 1022189620
- .long 619098112
- .long 1069000862
- .long 4011643355
- .long 1021773297
- .long 477017600
- .long 1069017317
- .long 4030305534
- .long 1021292252
- .long 2533403904
- .long 1069033773
- .long 2645187591
- .long 1019527099
- .long 2563102208
- .long 1069050231
- .long 3857293792
- .long 1022311697
- .long 635982336
- .long 1069066691
- .long 3625936637
- .long 1017511744
- .long 1116940800
- .long 1069083152
- .long 3653872993
- .long 1022016631
- .long 4075964160
- .long 1069099614
- .long 2468900271
- .long 1021769532
- .long 993165568
- .long 1069116079
- .long 1358104224
- .long 1021199776
- .long 528586752
- .long 1069132545
- .long 2200950332
- .long 1022024872
- .long 2752395776
- .long 1069149012
- .long 3197072454
- .long 1017751319
- .long 3439855616
- .long 1069165481
- .long 1651081806
- .long 1020809338
- .long 2661257728
- .long 1069181952
- .long 539032752
- .long 1021728805
- .long 486957312
- .long 1069198425
- .long 3136045149
- .long 1016888671
- .long 1282340352
- .long 1069214899
- .long 2593963259
- .long 1018956103
- .long 822921728
- .long 1069231375
- .long 2146032737
- .long 1022306465
- .long 3474216192
- .long 1069247852
- .long 3976811625
- .long 1021350207
- .long 716902656
- .long 1069264332
- .long 718267222
- .long 1018624727
- .long 1211594496
- .long 1069280813
- .long 1485641389
- .long 1018447451
- .long 734070272
- .long 1069297296
- .long 354455128
- .long 1021341291
- .long 3650110720
- .long 1069313780
- .long 682185947
- .long 1021651853
- .long 1440663040
- .long 1069330267
- .long 3558574550
- .long 1021615110
- .long 2766612224
- .long 1069346755
- .long 874607978
- .long 1017746872
- .long 3404011008
- .long 1069363245
- .long 4154988502
- .long 1021439906
- .long 3423949056
- .long 1069379737
- .long 2263202309
- .long 1021479615
- .long 2897587712
- .long 1069396231
- .long 2562065031
- .long 1022090363
- .long 1896159232
- .long 1069412727
- .long 3836237663
- .long 1019867288
- .long 490968576
- .long 1069429225
- .long 3322056743
- .long 1006752762
- .long 3048360192
- .long 1069445724
- .long 1152314833
- .long 1013122252
- .long 1049850624
- .long 1069462226
- .long 3601590727
- .long 1022214610
- .long 3156899584
- .long 1069478729
- .long 1855169970
- .long 1019487271
- .long 851173376
- .long 1069495235
- .long 312649594
- .long 1020868604
- .long 2794281728
- .long 1069511742
- .long 1093490181
- .long 1020777577
- .long 468042496
- .long 1069528252
- .long 1152540679
- .long 1021403732
- .long 2534219264
- .long 1069544763
- .long 2292126035
- .long 1021872430
- .long 1376146432
- .long 1069558527
- .long 3293753641
- .long 1020500454
- .long 4175442432
- .long 1069575044
- .long 3626347564
- .long 1021610969
- .long 3523113472
- .long 1069591566
- .long 339956500
- .long 1021119039
- .long 4003350528
- .long 1069608092
- .long 3429333082
- .long 1022813542
- .long 1611067392
- .long 1069624623
- .long 2298017544
- .long 1021977587
- .long 931782144
- .long 1069641158
- .long 2164684743
- .long 1021250988
- .long 2256725504
- .long 1069657697
- .long 1138762335
- .long 1021443776
- .long 1582853120
- .long 1069674241
- .long 1084010382
- .long 1022994693
- .long 3497758720
- .long 1069690789
- .long 406366244
- .long 1022713586
- .long 3999816960
- .long 1069707342
- .long 1488723042
- .long 1023381290
- .long 3383096064
- .long 1069723900
- .long 2541558953
- .long 1019137887
- .long 1942403584
- .long 1069740463
- .long 1879620343
- .long 1022653642
- .long 4268263680
- .long 1069757030
- .long 3039077047
- .long 1022252545
- .long 2067062272
- .long 1069773603
- .long 4190670677
- .long 1020725863
- .long 4225828096
- .long 1069790180
- .long 1998567321
- .long 1022014385
- .long 2452507136
- .long 1069806763
- .long 1511628873
- .long 1021900300
- .long 1340746240
- .long 1069823351
- .long 788367341
- .long 1022726208
- .long 1190035456
- .long 1069839944
- .long 3856337230
- .long 1021834118
- .long 2300688384
- .long 1069856542
- .long 3211396579
- .long 1022621365
- .long 678886400
- .long 1069873146
- .long 4001011887
- .long 1022042646
- .long 921594112
- .long 1069889755
- .long 557811968
- .long 1023065533
- .long 3331668992
- .long 1069906369
- .long 1877060679
- .long 1022419742
- .long 3917875200
- .long 1069922989
- .long 1181055171
- .long 1022752712
- .long 2984829696
- .long 1069939615
- .long 4294526932
- .long 1021499988
- .long 838049024
- .long 1069956247
- .long 3658081878
- .long 1022957952
- .long 2078928384
- .long 1069972884
- .long 820353701
- .long 1019391107
- .long 2719854336
- .long 1069989527
- .long 1644022489
- .long 1023378240
- .long 3069117696
- .long 1070006176
- .long 2771393702
- .long 1019319954
- .long 3435962368
- .long 1070022831
- .long 3876394145
- .long 1023024433
- .long 4130595328
- .long 1070039492
- .long 1630447748
- .long 1021465882
- .long 1169236224
- .long 1070056160
- .long 2828355997
- .long 1020458120
- .long 3453997312
- .long 1070072833
- .long 164091641
- .long 1020388279
- .long 2708127744
- .long 1070089513
- .long 3036550223
- .long 1023328684
- .long 3540797696
- .long 1070106199
- .long 3710949463
- .long 1022568805
- .long 1972276736
- .long 1070122892
- .long 3885277950
- .long 1019761674
- .long 2613815552
- .long 1070139591
- .long 2764165077
- .long 1022921023
- .long 1487791616
- .long 1070156297
- .long 1330644769
- .long 1023162679
- .long 3207593472
- .long 1070173009
- .long 3911007221
- .long 1022993496
- .long 3797764608
- .long 1070189728
- .long 979712598
- .long 1022554580
- .long 3578920448
- .long 1070206454
- .long 2825738223
- .long 1020223708
- .long 2872795648
- .long 1070223187
- .long 392451124
- .long 1022666279
- .long 2002258432
- .long 1070239927
- .long 3730407632
- .long 1023148291
- .long 1291326464
- .long 1070256674
- .long 3723802980
- .long 1022514089
- .long 1065180928
- .long 1070273428
- .long 2635617463
- .long 1022654470
- .long 1650181632
- .long 1070290189
- .long 2061982883
- .long 1022853411
- .long 3373882880
- .long 1070306957
- .long 319732785
- .long 1022017175
- .long 2270081280
- .long 1070323733
- .long 2237757411
- .long 1023064087
- .long 2963732736
- .long 1070340516
- .long 468839165
- .long 1023293774
- .long 1491099904
- .long 1070357307
- .long 1502657946
- .long 1021533479
- .long 2479636480
- .long 1070374105
- .long 482913562
- .long 1021986286
- .long 1968133632
- .long 1070390911
- .long 3281474337
- .long 1022646400
- .long 291639040
- .long 1070407725
- .long 2453320259
- .long 1022812423
- .long 2081472512
- .long 1070424546
- .long 2939989570
- .long 1023091888
- .long 3380340480
- .long 1070441375
- .long 2850707499
- .long 1021921109
- .long 232287488
- .long 1070458213
- .long 3674625342
- .long 1020725130
- .long 1567614208
- .long 1070475058
- .long 9347334
- .long 1022024009
- .long 3433091072
- .long 1070491911
- .long 282524999
- .long 1021433523
- .long 1876877312
- .long 1070508773
- .long 3470449440
- .long 1019309721
- .long 1538472192
- .long 1070525643
- .long 2089486825
- .long 1019698916
- .long 2763830784
- .long 1070542521
- .long 443498115
- .long 1020505194
- .long 1605381632
- .long 1070559408
- .long 3018871601
- .long 1022869913
- .long 2706946048
- .long 1070576303
- .long 3936260892
- .long 1023175875
- .long 2123887360
- .long 1070593207
- .long 2994220655
- .long 1022825948
- .long 104015104
- .long 1070603108
- .long 335054493
- .long 1023441853
- .long 2904568832
- .long 1070615800
- .long 1451215633
- .long 1023853857
- .long 3456197120
- .long 1070632739
- .long 436334733
- .long 1024026432
- .long 252452352
- .long 1070649697
- .long 34596167
- .long 1024031396
- .long 3328018432
- .long 1070666672
- .long 2644547073
- .long 1024296758
- .long 1255829248
- .long 1070683667
- .long 552832586
- .long 1023763122
- .long 4097058560
- .long 1070700680
- .long 1955640623
- .long 1021394654
- .long 451770112
- .long 1070717714
- .long 3428903777
- .long 1022941142
- .long 408920832
- .long 1070734767
- .long 165503263
- .long 1023894958
- .long 1186960640
- .long 1070751840
- .long 435826450
- .long 1024026134
- .long 19078656
- .long 1070768934
- .long 1834169749
- .long 1022899284
- .long 2743490304
- .long 1070786048
- .long 494581074
- .long 1018818479
- .long 2328961024
- .long 1070803184
- .long 2987908834
- .long 1022581110
- .long 350011392
- .long 1070820342
- .long 240771184
- .long 1024143083
- .long 2692326912
- .long 1070837521
- .long 666056837
- .long 1022394776
- .long 2373274368
- .long 1070854723
- .long 2484337770
- .long 1024228156
- .long 1017131520
- .long 1070871948
- .long 3285648279
- .long 1024025789
- .long 265558272
- .long 1070889196
- .long 392241896
- .long 1024252809
- .long 1778008064
- .long 1070906467
- .long 1536107943
- .long 1023949300
- .long 2937184768
- .long 1070923762
- .long 3541062251
- .long 1019448646
- .long 1144442880
- .long 1070941082
- .long 3691683781
- .long 1022123948
- .long 2410165504
- .long 1070958426
- .long 1804181960
- .long 1023945221
- .long 4174350848
- .long 1070975795
- .long 2016094861
- .long 1021716585
- .long 3897012480
- .long 1070993190
- .long 175294410
- .long 1023703404
- .long 3353623040
- .long 1071010611
- .long 167973242
- .long 1023240839
- .long 45671168
- .long 1071028059
- .long 2166856113
- .long 1021565413
- .long 86063872
- .long 1071045533
- .long 2676254727
- .long 1023985299
- .long 1019772672
- .long 1071063034
- .long 989043593
- .long 1021549587
- .long 414297344
- .long 1071080563
- .long 3960972046
- .long 1024307251
- .long 155173120
- .long 1071098120
- .long 1830919291
- .long 1021592251
- .long 2151562240
- .long 1071115705
- .long 405408666
- .long 1023423128
- .long 4041854720
- .long 1071133319
- .long 2043497827
- .long 1024411503
- .long 3489224192
- .long 1071150963
- .long 3072215864
- .long 1022698635
- .long 2477196288
- .long 1071168637
- .long 1812195139
- .long 1022689192
- .long 3015298816
- .long 1071186341
- .long 764841969
- .long 1021027331
- .long 2844731136
- .long 1071204076
- .long 2878117321
- .long 1019116513
- .long 4028950528
- .long 1071221842
- .long 698911452
- .long 1023265602
- .long 69441536
- .long 1071239641
- .long 3253467847
- .long 1020795075
- .long 1676209920
- .long 1071257471
- .long 4272431167
- .long 1022873982
- .long 2408752384
- .long 1071275334
- .long 648519100
- .long 1024385717
- .long 151623680
- .long 1071293231
- .long 345257017
- .long 1019561408
- .long 1410154240
- .long 1071311161
- .long 197863993
- .long 1023224207
- .long 4131351552
- .long 1071329125
- .long 2620801789
- .long 1024411169
- .long 1999664384
- .long 1071347125
- .long 3952692616
- .long 1024168086
- .long 1617668864
- .long 1071365160
- .long 3019889809
- .long 1021907692
- .long 1032074240
- .long 1071383231
- .long 59469899
- .long 1023656194
- .long 2619492096
- .long 1071401338
- .long 1417526820
- .long 1021457783
- .long 202429440
- .long 1071419483
- .long 2927667935
- .long 1019175447
- .long 525044224
- .long 1071437665
- .long 38166811
- .long 1023981879
- .long 1779258880
- .long 1071455885
- .long 481252500
- .long 1023310234
- .long 2195673600
- .long 1071474144
- .long 3962395981
- .long 1021339088
- .long 44573696
- .long 1071492443
- .long 3936281395
- .long 1023014829
- .long 2226905344
- .long 1071510781
- .long 1515320476
- .long 1024320623
- .long 2800512512
- .long 1071529160
- .long 1225403697
- .long 1021081846
- .long 161113600
- .long 1071547581
- .long 3064809733
- .long 1024173917
- .long 1338410240
- .long 1071566043
- .long 2027604973
- .long 1024362526
- .long 522433280
- .long 1071584548
- .long 2055171723
- .long 1023858825
- .long 539595776
- .long 1071603096
- .long 3868820135
- .long 1022936424
- .long 4264017664
- .long 1071621687
- .long 3228065145
- .long 1023479578
- .long 1733924096
- .long 1071640324
- .long 3511934475
- .long 1022496355
- .long 108880384
- .long 1071651839
- .long 615880967
- .long 1023519706
- .long 3517856512
- .long 1071661202
- .long 3113108559
- .long 1025190289
- .long 4043153152
- .long 1071670589
- .long 1571836218
- .long 1023106116
- .long 3251299072
- .long 1071680000
- .long 3444076102
- .long 1022187841
- .long 2736921600
- .long 1071689435
- .long 272771483
- .long 1025095280
- .long 3897698560
- .long 1071703633
- .long 2075390188
- .long 1022489022
- .long 3209485056
- .long 1071722652
- .long 1438094065
- .long 1021844944
- .long 3781432064
- .long 1071741774
- .long 1675017145
- .long 1024143828
- .long 2684184064
- .long 1071761003
- .long 2259963753
- .long 1024731393
- .long 1840489728
- .long 1071780342
- .long 3372883597
- .long 1023431408
- .long 3764087808
- .long 1071799794
- .long 3307523102
- .long 1024485788
- .long 3006232320
- .long 1071819364
- .long 3088971966
- .long 1025213251
- .long 3374881280
- .long 1071839055
- .long 834437749
- .long 1025236452
- .long 797284864
- .long 1071858872
- .long 3122663941
- .long 1025320473
- .long 545765120
- .long 1071878818
- .long 826539625
- .long 1022450955
- .long 107562240
- .long 1071898898
- .long 339584600
- .long 1022481255
- .long 2123649024
- .long 1071919116
- .long 3912959833
- .long 1024321009
- .long 1562385664
- .long 1071939478
- .long 2846067230
- .long 1023343981
- .long 2963085824
- .long 1071959988
- .long 954548627
- .long 1021475211
- .long 3325550592
- .long 1071980652
- .long 3459651155
- .long 1025305573
- .long 775752448
- .long 1072001476
- .long 3582746667
- .long 1023859460
- .long 3238590720
- .long 1072022464
- .long 634636162
- .long 1024472353
- .long 2758801920
- .long 1072043624
- .long 3078216319
- .long 1025304516
- .long 1370319104
- .long 1072064962
- .long 2570569078
- .long 1025099442
- .long 2615805184
- .long 1072086484
- .long 3729933412
- .long 1024605112
- .long 3077336576
- .long 1072108198
- .long 1948916066
- .long 1024781603
- .long 1099528192
- .long 1072130112
- .long 3139143157
- .long 1023729360
- .long 1231903232
- .long 1072152233
- .long 1349513477
- .long 1024737515
- .long 1507504128
- .long 1072174570
- .long 3484516322
- .long 1024000959
- .long 2214659840
- .long 1072197132
- .long 2563820917
- .long 1025225535
- .long 1804739840
- .long 1072219929
- .long 760038746
- .long 1024482855
- .long 1413746688
- .long 1072242971
- .long 3401734714
- .long 1025129838
- .long 821409536
- .long 1072266269
- .long 3729772551
- .long 1025484796
- .long 3031825664
- .long 1072289834
- .long 122256749
- .long 1024752594
- .long 1710784256
- .long 1072313680
- .long 1518205483
- .long 1024724809
- .long 3025265152
- .long 1072337819
- .long 409951989
- .long 1022835555
- .long 287769088
- .long 1072362267
- .long 800355594
- .long 1022484850
- .long 198179840
- .long 1072387038
- .long 3502926213
- .long 1024209373
- .long 1909130496
- .long 1072412149
- .long 3064694319
- .long 1025380823
- .long 1941732096
- .long 1072437619
- .long 4112930390
- .long 1024294679
- .long 3492010496
- .long 1072463467
- .long 2684918107
- .long 1023220233
- .long 81959680
- .long 1072489716
- .long 220021366
- .long 1020635131
- .long 2297837056
- .long 1072516387
- .long 4027683826
- .long 1021041185
- .long 270404096
- .long 1072543508
- .long 2012766065
- .long 1021780753
- .long 3667376896
- .long 1072571105
- .long 2727981522
- .long 1023009874
- .long 330400256
- .long 1072599212
- .long 2940017003
- .long 1025393439
- .long 1119293952
- .long 1072627861
- .long 1608550416
- .long 1022675612
- .long 3536155904
- .long 1072657091
- .long 349665778
- .long 1025156751
- .long 3078046720
- .long 1072686946
- .long 2016159996
- .long 1022193169
- .long 455228416
- .long 1072705361
- .long 1908539328
- .long 1026126332
- .long 1871505664
- .long 1072720988
- .long 2784700894
- .long 1025922277
- .long 1630994432
- .long 1072737010
- .long 361107678
- .long 1022887244
- .long 2084558336
- .long 1072753462
- .type Tbl_addr,@object
- .size Tbl_addr,3840
- .space 768, 0x00 # pad
- .align 16
-cv:
- .long 0
- .long 0
- .long 1431655765
- .long 3217380693
- .long 858993459
- .long 3216192307
- .long 3067833783
- .long 3215383405
- .type cv,@object
- .size cv,32
- .align 16
-PI_BY_2:
- .long 856972295
- .long 1016178214
- .long 1413754136
- .long 1073291771
- .type PI_BY_2,@object
- .size PI_BY_2,16
- .align 16
-NEG_PI:
- .long 856972295
- .long 3164710438
- .long 1413754136
- .long 3221823995
- .type NEG_PI,@object
- .size NEG_PI,16
- .align 16
-cv2:
- .long 780903145
- .long 1066854586
- .long 858993459
- .long 1068708659
- .long 3340530119
- .long 1067392113
- .long 1431655765
- .long 1069897045
- .long 1321528399
- .long 1066517740
- .long 3067833783
- .long 1067899757
- .long 2021159460
- .long 1065855096
- .long 2576980378
- .long 1066178969
- .type cv2,@object
- .size cv2,64
- .align 16
-HALFMASK:
- .long 4160749568
- .long 4294967295
- .long 4160749568
- .long 4294967295
- .type HALFMASK,@object
- .size HALFMASK,16
- .align 16
-PI:
- .long 856972295
- .long 1017226790
- .long 1413754136
- .long 1074340347
- .type PI,@object
- .size PI,16
- .align 4
-ONEMASK:
- .long 0
- .long 1072693248
- .type ONEMASK,@object
- .size ONEMASK,8
- .align 4
-TMASK:
- .long 0
- .long 4294950912
- .type TMASK,@object
- .size TMASK,8
- .align 4
-ONE_BY_2:
- .long 0
- .long 1071644672
- .type ONE_BY_2,@object
- .size ONE_BY_2,8
- .data
- .section .note.GNU-stack, "",@progbits
-// -- Begin DWARF2 SEGMENT .eh_frame
- .section .eh_frame,"a",@progbits
-.eh_frame_seg:
- .align 1
- .4byte 0x00000014
- .8byte 0x00527a0100000000
- .8byte 0x08070c1b01107801
- .4byte 0x00000190
- .4byte 0x0000001c
- .4byte 0x0000001c
- .4byte ..___tag_value_acos.1-.
- .4byte ..___tag_value_acos.5-..___tag_value_acos.1
- .2byte 0x0400
- .4byte ..___tag_value_acos.3-..___tag_value_acos.1
- .2byte 0x200e
- .byte 0x04
- .4byte ..___tag_value_acos.4-..___tag_value_acos.3
- .2byte 0x080e
- .byte 0x00
-# End
diff --git a/libm/x86_64/e_asin.S b/libm/x86_64/e_asin.S
deleted file mode 100644
index 4242543..0000000
--- a/libm/x86_64/e_asin.S
+++ /dev/null
@@ -1,2036 +0,0 @@
-/*
-Copyright (c) 2014, Intel Corporation
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
-
- * Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
-
- * Neither the name of Intel Corporation nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
-ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/******************************************************************************/
-// ALGORITHM DESCRIPTION
-// ---------------------
-//
-// To compute asin(s), separate schemes are used when s is in different
-// intervals.
-//
-// |s| in [2^{-4}, sqrt(3)/2):
-// Let t=2^k*1.b1 b2..b6 1, where s=2^k*1.b1 b2 .. b52
-// asin(s)=asin(t)+asin(r), where r=s*sqrt(1-t^2)-t*sqrt(1-s^2)
-// asin(r)-r evaluated as 7-degree polynomial (c3*r^3+c5*r^5+c7*r^7)
-// For the first degree term, r is evaluated as
-// R=(s^2-t^2)/(sqrt(1-t^2)*s+sqrt(1-s^2)*t)
-// (sqrt(1-t^2) read from table)
-// The main source of error is still R (may still be affected by up to 3 ulps
-// of rounding error). The table size must be sufficiently large, to minimize
-// this effect.
-//
-// |s| in [sqrt(3)/2, 255/256):
-// Let t=2^k*1.b1 b2..b6 1, where sqrt(1-s^2)=2^k*1.b1 b2 .. b52 (rounded)
-// asin(|s|)=pi/2-asin(t)+asin(r), r=s*t-sqrt(1-s^2)*sqrt(1-t^2)
-// asin(r) evaluated as polynomial (same as above)
-// The first degree term is evaluated as
-// r=(s^2+t^2-1)/(s*t+sqrt(1-s^2)*sqrt(1-t^2))
-//
-// |s|<2^{-4}: evaluate as 13-degree polynomial
-//
-// |s| in [255/256,1): asin(|s|)=pi/2-asin(sqrt(1-s^2))
-// use 17-degree polynomial, get error term
-// Q*eps ~ (1-s^2-Q^2)/(2*Q) for first term
-// ( Q(1+eps)=sqrt(1-s^2) )
-//
-// Special cases:
-// asin(NaN) = quiet NaN, and raise invalid exception
-// asin(INF) = QNaN and raise invalid exception
-// asin(x) = QNaN and raise invalid exception, for |x|>1.0
-// asin(+/-0) = +/-0
-//
-/******************************************************************************/
-
-#include <private/bionic_asm.h>
-# -- Begin asin
-ENTRY(asin)
-# parameter 1: %xmm0
-..B1.1:
-..___tag_value_asin.1:
- subq $24, %rsp
-..___tag_value_asin.3:
- movsd %xmm0, (%rsp)
-..B1.2:
- stmxcsr 16(%rsp)
- movl 16(%rsp), %eax
- andl $-24577, %eax
- cmpl 16(%rsp), %eax
- jne .L_2TAG_PACKET_0.0.2
-.L_2TAG_PACKET_1.0.2:
- movsd ABSVALMASK(%rip), %xmm4
- movsd ONEMASK(%rip), %xmm3
- xorpd %xmm5, %xmm5
- movsd TMASK(%rip), %xmm2
- movl $8192, %ecx
- pinsrw $2, %ecx, %xmm5
- movq %xmm0, %xmm1
- psrlq $44, %xmm0
- movd %xmm0, %edx
- movq %xmm1, %xmm7
- movl $8192, %ecx
- pinsrw $2, %ecx, %xmm5
- movq %xmm1, %xmm0
- movl $524287, %eax
- andl %edx, %eax
- subl $260864, %eax
- cmpl $955, %eax
- jae .L_2TAG_PACKET_2.0.2
- mulsd %xmm1, %xmm1
- andl $65535, %edx
- subsd %xmm1, %xmm3
- sqrtsd %xmm3, %xmm3
- andpd %xmm7, %xmm2
- andl $-4, %edx
- subl $64256, %edx
- lea T_table(%rip), %r8
- movsd (%r8,%rdx,2), %xmm1
- orpd %xmm5, %xmm2
- lea Tbl_addr(%rip), %r8
- movapd (%r8,%rdx,4), %xmm4
- movq %xmm7, %xmm6
- addsd %xmm2, %xmm7
- subsd %xmm2, %xmm0
- mulsd %xmm7, %xmm0
- mulsd %xmm1, %xmm6
- mulsd %xmm2, %xmm3
- movq %xmm6, %xmm1
- addsd %xmm3, %xmm6
- divsd %xmm6, %xmm0
- movsd 16+cv(%rip), %xmm7
- movsd cv(%rip), %xmm5
- subsd %xmm3, %xmm1
- andpd SIGNMASK(%rip), %xmm2
- movq %xmm1, %xmm3
- mulsd %xmm1, %xmm1
- movsd 8+cv(%rip), %xmm6
- mulsd %xmm1, %xmm3
- mulsd %xmm1, %xmm7
- mulsd %xmm3, %xmm5
- xorpd %xmm2, %xmm4
- mulsd %xmm1, %xmm3
- addsd %xmm7, %xmm6
- mulsd %xmm3, %xmm6
- addsd %xmm4, %xmm5
- pshufd $238, %xmm4, %xmm4
- addsd %xmm5, %xmm6
- orpd %xmm2, %xmm4
- addsd %xmm6, %xmm0
- movl 16(%rsp), %eax
- andl $-24577, %eax
- cmpl 16(%rsp), %eax
- je .L_2TAG_PACKET_3.0.2
- stmxcsr 20(%rsp)
- movl 16(%rsp), %eax
- andl $24576, %eax
- orl %eax, 20(%rsp)
- ldmxcsr 20(%rsp)
-.L_2TAG_PACKET_3.0.2:
- addsd %xmm4, %xmm0
- jmp ..B1.5
-.L_2TAG_PACKET_2.0.2:
- subl $955, %eax
- cmpl $67, %eax
- jae .L_2TAG_PACKET_4.0.2
- mulsd %xmm1, %xmm1
- subsd %xmm1, %xmm3
- sqrtsd %xmm3, %xmm3
- movl %edx, %eax
- andpd ABSVALMASK(%rip), %xmm0
- andpd HALFMASK2(%rip), %xmm7
- movq %xmm0, %xmm1
- movsd ONEMASK(%rip), %xmm4
- movq %xmm7, %xmm6
- subsd %xmm7, %xmm1
- mulsd %xmm7, %xmm7
- addsd %xmm6, %xmm0
- subsd %xmm7, %xmm4
- mulsd %xmm1, %xmm0
- movq %xmm3, %xmm7
- andpd %xmm3, %xmm2
- psllq $2, %xmm3
- pextrw $3, %xmm3, %edx
- orpd %xmm5, %xmm2
- subl $65216, %edx
- addl %edx, %edx
- lea T_table(%rip), %r8
- mulsd (%r8,%rdx,4), %xmm7
- mulsd %xmm2, %xmm6
- movapd PI_BY_2(%rip), %xmm3
- mulsd %xmm2, %xmm1
- mulsd %xmm2, %xmm2
- subsd %xmm7, %xmm6
- addsd %xmm1, %xmm6
- subsd %xmm2, %xmm4
- addsd %xmm7, %xmm7
- movsd cv(%rip), %xmm5
- subsd %xmm0, %xmm4
- addsd %xmm6, %xmm7
- movsd 16+cv(%rip), %xmm0
- divsd %xmm7, %xmm4
- movsd 8+cv(%rip), %xmm2
- lea Tbl_addr(%rip), %r8
- subpd (%r8,%rdx,8), %xmm3
- movq %xmm6, %xmm1
- mulsd %xmm6, %xmm6
- andl $524288, %eax
- shrl $4, %eax
- mulsd %xmm6, %xmm0
- mulsd %xmm6, %xmm1
- mulsd %xmm1, %xmm5
- mulsd %xmm6, %xmm1
- addsd %xmm2, %xmm0
- pxor %xmm6, %xmm6
- mulsd %xmm1, %xmm0
- addsd %xmm3, %xmm5
- pinsrw $3, %eax, %xmm6
- addsd %xmm5, %xmm0
- movq %xmm4, %xmm5
- pshufd $238, %xmm3, %xmm3
- subsd %xmm3, %xmm4
- addsd %xmm4, %xmm3
- subsd %xmm3, %xmm5
- subsd %xmm5, %xmm0
- movl 16(%rsp), %eax
- andl $-24577, %eax
- cmpl 16(%rsp), %eax
- je .L_2TAG_PACKET_5.0.2
- stmxcsr 20(%rsp)
- movl 16(%rsp), %eax
- andl $24576, %eax
- orl %eax, 20(%rsp)
- ldmxcsr 20(%rsp)
-.L_2TAG_PACKET_5.0.2:
- xorpd %xmm6, %xmm0
- xorpd %xmm6, %xmm4
- subsd %xmm4, %xmm0
- jmp ..B1.5
-.L_2TAG_PACKET_4.0.2:
- addl $15291, %eax
- cmpl $14336, %eax
- jae .L_2TAG_PACKET_6.0.2
- unpcklpd %xmm7, %xmm7
- movapd cv2(%rip), %xmm1
- movapd %xmm7, %xmm6
- movapd 16+cv2(%rip), %xmm2
- movapd 32+cv2(%rip), %xmm4
- mulpd %xmm7, %xmm7
- mulpd %xmm7, %xmm6
- mulpd %xmm7, %xmm1
- mulpd %xmm7, %xmm7
- movq %xmm6, %xmm3
- mulsd %xmm6, %xmm6
- addpd %xmm2, %xmm1
- mulpd %xmm7, %xmm4
- mulsd %xmm3, %xmm6
- addpd %xmm4, %xmm1
- mulpd %xmm6, %xmm1
- pshufd $238, %xmm1, %xmm2
- addsd %xmm2, %xmm1
- movl 16(%rsp), %eax
- andl $-24577, %eax
- cmpl 16(%rsp), %eax
- je .L_2TAG_PACKET_7.0.2
- stmxcsr 20(%rsp)
- movl 16(%rsp), %eax
- andl $24576, %eax
- orl %eax, 20(%rsp)
- ldmxcsr 20(%rsp)
-.L_2TAG_PACKET_7.0.2:
- addsd %xmm1, %xmm0
- jmp ..B1.5
-.L_2TAG_PACKET_6.0.2:
- subl $15358, %eax
- cmpl $2, %eax
- jae .L_2TAG_PACKET_8.0.2
- mulsd %xmm1, %xmm1
- subsd %xmm1, %xmm3
- sqrtsd %xmm3, %xmm3
- movl %edx, %eax
- andpd HALFMASK(%rip), %xmm7
- pshufd $68, %xmm3, %xmm5
- andpd HALFMASK(%rip), %xmm3
- movq %xmm7, %xmm1
- movsd ONEMASK(%rip), %xmm4
- movq %xmm7, %xmm6
- subsd %xmm7, %xmm0
- mulsd %xmm7, %xmm7
- addsd %xmm1, %xmm1
- mulsd %xmm0, %xmm1
- subsd %xmm7, %xmm4
- movq %xmm3, %xmm6
- mulsd %xmm3, %xmm3
- mulsd %xmm0, %xmm0
- subsd %xmm1, %xmm4
- subsd %xmm5, %xmm6
- addsd %xmm5, %xmm5
- subsd %xmm3, %xmm4
- movapd cv2(%rip), %xmm2
- pshufd $238, %xmm5, %xmm3
- subsd %xmm0, %xmm4
- addsd %xmm6, %xmm5
- pshufd $238, %xmm3, %xmm7
- addsd %xmm3, %xmm3
- mulsd %xmm6, %xmm5
- addsd %xmm5, %xmm4
- pshufd $238, %xmm7, %xmm6
- divsd %xmm3, %xmm4
- movapd 48+cv2(%rip), %xmm1
- movapd 16+cv2(%rip), %xmm5
- movapd 32+cv2(%rip), %xmm0
- mulpd %xmm7, %xmm7
- movq %xmm6, %xmm3
- mulpd %xmm7, %xmm2
- mulpd %xmm7, %xmm6
- shrl $4, %eax
- andl $32768, %eax
- mulsd %xmm7, %xmm1
- mulpd %xmm7, %xmm7
- addpd %xmm2, %xmm5
- movapd %xmm6, %xmm2
- mulsd %xmm6, %xmm6
- mulpd %xmm0, %xmm7
- movapd PI_BY_2(%rip), %xmm0
- mulsd %xmm6, %xmm2
- addpd %xmm5, %xmm7
- pshufd $238, %xmm1, %xmm5
- mulsd %xmm2, %xmm6
- mulpd %xmm2, %xmm7
- addsd %xmm5, %xmm1
- xorpd %xmm5, %xmm5
- pshufd $238, %xmm7, %xmm2
- mulsd %xmm6, %xmm1
- pshufd $238, %xmm0, %xmm6
- addsd %xmm2, %xmm7
- movq %xmm3, %xmm2
- pinsrw $3, %eax, %xmm5
- subsd %xmm6, %xmm3
- addsd %xmm1, %xmm0
- addsd %xmm3, %xmm6
- addsd %xmm4, %xmm7
- subsd %xmm6, %xmm2
- subsd %xmm7, %xmm0
- subsd %xmm2, %xmm0
- movl 16(%rsp), %eax
- andl $-24577, %eax
- cmpl 16(%rsp), %eax
- je .L_2TAG_PACKET_9.0.2
- stmxcsr 20(%rsp)
- movl 16(%rsp), %eax
- andl $24576, %eax
- orl %eax, 20(%rsp)
- ldmxcsr 20(%rsp)
-.L_2TAG_PACKET_9.0.2:
- xorpd %xmm5, %xmm0
- xorpd %xmm5, %xmm3
- subsd %xmm3, %xmm0
- jmp ..B1.5
-.L_2TAG_PACKET_8.0.2:
- addl $261886, %eax
- cmpl $261888, %eax
- jb .L_2TAG_PACKET_10.0.2
- movd %xmm0, %ecx
- psrlq $32, %xmm0
- movd %xmm0, %edx
- andl $2147483647, %edx
- movl $1072693248, %eax
- subl %edx, %eax
- orl %ecx, %eax
- cmpl $0, %eax
- je .L_2TAG_PACKET_11.0.2
- movsd (%rsp), %xmm2
- movd %xmm2, %edx
- psrlq $32, %xmm2
- movd %xmm2, %ecx
- andl $2147483647, %ecx
- subl $1, %edx
- sbbl $2146435072, %ecx
- cmpl $0, %ecx
- jge .L_2TAG_PACKET_10.0.2
- xorpd %xmm1, %xmm1
- xorpd %xmm0, %xmm0
- movl $32752, %edx
- pinsrw $3, %edx, %xmm1
- mulsd %xmm1, %xmm0
- jmp .L_2TAG_PACKET_12.0.2
-.L_2TAG_PACKET_11.0.2:
- movsd ABSVALMASK(%rip), %xmm1
- movsd PI_BY_2(%rip), %xmm2
- movsd 8+PI_BY_2(%rip), %xmm0
- addsd %xmm2, %xmm0
- andnpd %xmm7, %xmm1
- orpd %xmm1, %xmm0
- movl 16(%rsp), %eax
- andl $-24577, %eax
- cmpl 16(%rsp), %eax
- je .L_2TAG_PACKET_13.0.2
- stmxcsr 20(%rsp)
- movl 16(%rsp), %eax
- andl $24576, %eax
- orl %eax, 20(%rsp)
- ldmxcsr 20(%rsp)
-.L_2TAG_PACKET_13.0.2:
- jmp ..B1.5
-.L_2TAG_PACKET_10.0.2:
- movsd (%rsp), %xmm0
- xorpd %xmm6, %xmm6
- movq %xmm0, %xmm7
- movl 16(%rsp), %eax
- andl $-24577, %eax
- cmpl 16(%rsp), %eax
- je .L_2TAG_PACKET_14.0.2
- stmxcsr 20(%rsp)
- movl 16(%rsp), %eax
- andl $24576, %eax
- orl %eax, 20(%rsp)
- ldmxcsr 20(%rsp)
-.L_2TAG_PACKET_14.0.2:
- pextrw $3, %xmm0, %edx
- andl $32752, %edx
- subl $16, %edx
- cmpl $32736, %edx
- jb .L_2TAG_PACKET_15.0.2
- addsd %xmm0, %xmm6
- orpd %xmm6, %xmm0
- mulsd %xmm0, %xmm7
-.L_2TAG_PACKET_15.0.2:
- jmp ..B1.5
-.L_2TAG_PACKET_0.0.2:
- movl %eax, 20(%rsp)
- ldmxcsr 20(%rsp)
- jmp .L_2TAG_PACKET_1.0.2
-.L_2TAG_PACKET_12.0.2:
- movl 16(%rsp), %eax
- andl $-24577, %eax
- cmpl 16(%rsp), %eax
- je .L_2TAG_PACKET_16.0.2
- stmxcsr 20(%rsp)
- movl 16(%rsp), %eax
- andl $24576, %eax
- orl %eax, 20(%rsp)
- ldmxcsr 20(%rsp)
-.L_2TAG_PACKET_16.0.2:
- movq %xmm0, 8(%rsp)
-..B1.3:
- movq 8(%rsp), %xmm0
-.L_2TAG_PACKET_17.0.2:
-..B1.5:
- addq $24, %rsp
-..___tag_value_asin.4:
- ret
-..___tag_value_asin.5:
-END(asin)
-# -- End asin
- .section .rodata, "a"
- .align 16
- .align 16
-ABSVALMASK:
- .long 4294967295
- .long 2147483647
- .long 0
- .long 0
- .type ABSVALMASK,@object
- .size ABSVALMASK,16
- .align 16
-T_table:
- .long 2642784509
- .long 1072689083
- .long 1514442531
- .long 1072688953
- .long 333108933
- .long 1072688821
- .long 3392112024
- .long 1072688686
- .long 2099852862
- .long 1072688550
- .long 749609004
- .long 1072688412
- .long 3634632596
- .long 1072688271
- .long 2163248461
- .long 1072688129
- .long 628657846
- .long 1072687985
- .long 3324036511
- .long 1072687838
- .long 1657632815
- .long 1072687690
- .long 4217538760
- .long 1072687539
- .long 2411951597
- .long 1072687387
- .long 533944872
- .long 1072687233
- .long 2876566508
- .long 1072687076
- .long 847936891
- .long 1072686918
- .long 3036019913
- .long 1072686757
- .long 848884575
- .long 1072686595
- .long 2874443326
- .long 1072686430
- .long 520713666
- .long 1072686264
- .long 2375556481
- .long 1072686095
- .long 4141904948
- .long 1072685924
- .long 1522666382
- .long 1072685752
- .long 3105624104
- .long 1072685577
- .long 298666327
- .long 1072685401
- .long 1689524500
- .long 1072685222
- .long 2981002200
- .long 1072685041
- .long 4170844284
- .long 1072684858
- .long 961802263
- .long 1072684674
- .long 1941503454
- .long 1072684487
- .long 2812647170
- .long 1072684298
- .long 3572873869
- .long 1072684107
- .long 4219797823
- .long 1072683914
- .long 456039788
- .long 1072683720
- .long 869096151
- .long 1072683523
- .long 1161535119
- .long 1072683324
- .long 1330865866
- .long 1072683123
- .long 1374571204
- .long 1072682920
- .long 1290107538
- .long 1072682715
- .long 1074904836
- .long 1072682508
- .long 726366587
- .long 1072682299
- .long 241869763
- .long 1072682088
- .long 3913732079
- .long 1072681874
- .long 3149342765
- .long 1072681659
- .long 2240966306
- .long 1072681442
- .long 1185873216
- .long 1072681223
- .long 4276274591
- .long 1072681001
- .long 2919452883
- .long 1072680778
- .long 1407565635
- .long 1072680553
- .long 4032743551
- .long 1072680325
- .long 2202188565
- .long 1072680096
- .long 207977577
- .long 1072679865
- .long 2342160518
- .long 1072679631
- .long 11858423
- .long 1072679396
- .long 1804034453
- .long 1072679158
- .long 3420722787
- .long 1072678918
- .long 563930456
- .long 1072678677
- .long 1820539192
- .long 1072678433
- .long 2892501606
- .long 1072678187
- .long 3776710320
- .long 1072677939
- .long 175063337
- .long 1072677690
- .long 674333171
- .long 1072677438
- .long 976363026
- .long 1072677184
- .long 1077935934
- .long 1072676928
- .long 1921075490
- .long 1072676540
- .long 881493302
- .long 1072676016
- .long 3275752439
- .long 1072675483
- .long 486855588
- .long 1072674943
- .long 1077229111
- .long 1072674394
- .long 723950308
- .long 1072673837
- .long 3693582199
- .long 1072673271
- .long 1367335316
- .long 1072672698
- .long 2305837020
- .long 1072672116
- .long 2184358641
- .long 1072671526
- .long 972682840
- .long 1072670928
- .long 2935101762
- .long 1072670321
- .long 3745513263
- .long 1072669706
- .long 3372320886
- .long 1072669083
- .long 1783464620
- .long 1072668452
- .long 3241386215
- .long 1072667812
- .long 3418125284
- .long 1072667164
- .long 2280219148
- .long 1072666508
- .long 4088700758
- .long 1072665843
- .long 219227400
- .long 1072665171
- .long 3521816918
- .long 1072664489
- .long 1076205279
- .long 1072663800
- .long 1436484616
- .long 1072663102
- .long 271362610
- .long 1072662396
- .long 1838996688
- .long 1072661681
- .long 1807122518
- .long 1072660958
- .long 137953542
- .long 1072660227
- .long 1088178584
- .long 1072659487
- .long 324057537
- .long 1072658739
- .long 2101288076
- .long 1072657982
- .long 2085133974
- .long 1072657217
- .long 235324451
- .long 1072656444
- .long 806051592
- .long 1072655662
- .long 3756033140
- .long 1072654871
- .long 453542543
- .long 1072654073
- .long 3741177327
- .long 1072653265
- .long 691216109
- .long 1072652450
- .long 4145223372
- .long 1072651625
- .long 1174439091
- .long 1072650793
- .long 324416139
- .long 1072649952
- .long 1550246310
- .long 1072649102
- .long 511524674
- .long 1072648244
- .long 1457248482
- .long 1072647377
- .long 45944955
- .long 1072646502
- .long 525537397
- .long 1072645618
- .long 2848440188
- .long 1072644725
- .long 2671555633
- .long 1072643824
- .long 4241172637
- .long 1072642914
- .long 3213094278
- .long 1072641996
- .long 3832503688
- .long 1072641069
- .long 1754091534
- .long 1072640134
- .long 1221921804
- .long 1072639190
- .long 2184526489
- .long 1072638237
- .long 294902089
- .long 1072637276
- .long 4090375270
- .long 1072636305
- .long 632860906
- .long 1072635327
- .long 2753498702
- .long 1072634339
- .long 1808009252
- .long 1072633343
- .long 2036428672
- .long 1072632338
- .long 3383235626
- .long 1072631324
- .long 1497347484
- .long 1072630302
- .long 617018317
- .long 1072629271
- .long 684933058
- .long 1072628231
- .long 1643170798
- .long 1072627182
- .long 3011066360
- .long 1072625592
- .long 957158713
- .long 1072623442
- .long 1390907941
- .long 1072621256
- .long 3819155270
- .long 1072619034
- .long 3443571196
- .long 1072616777
- .long 4045412458
- .long 1072614484
- .long 805503923
- .long 1072612156
- .long 1778922015
- .long 1072609791
- .long 2125033665
- .long 1072607390
- .long 1287203863
- .long 1072604953
- .long 2992629568
- .long 1072602479
- .long 2367267127
- .long 1072599969
- .long 3115526047
- .long 1072597422
- .long 340219539
- .long 1072594839
- .long 2017215719
- .long 1072592218
- .long 3225443424
- .long 1072589560
- .long 3326565673
- .long 1072586865
- .long 1669811211
- .long 1072584133
- .long 1886735022
- .long 1072581363
- .long 3301071171
- .long 1072578555
- .long 928514283
- .long 1072575710
- .long 2656364059
- .long 1072572826
- .long 3473490507
- .long 1072569904
- .long 2649965606
- .long 1072566944
- .long 3736819052
- .long 1072563945
- .long 1680885175
- .long 1072560908
- .long 4413771
- .long 1072557832
- .long 2214869753
- .long 1072554716
- .long 3214725184
- .long 1072551561
- .long 2186079903
- .long 1072548367
- .long 2590372131
- .long 1072545133
- .long 3578146079
- .long 1072541859
- .long 4283712755
- .long 1072538545
- .long 3824834510
- .long 1072535191
- .long 1302400298
- .long 1072531797
- .long 95058636
- .long 1072528362
- .long 3563906063
- .long 1072524885
- .long 2167230730
- .long 1072521368
- .long 3524918334
- .long 1072517809
- .long 2353304918
- .long 1072514209
- .long 1939625839
- .long 1072510567
- .long 1256714581
- .long 1072506883
- .long 3552525848
- .long 1072503156
- .long 3464809522
- .long 1072499387
- .long 4200542593
- .long 1072495575
- .long 355609124
- .long 1072491721
- .long 3684139099
- .long 1072487822
- .long 148355918
- .long 1072483881
- .long 1457689242
- .long 1072479895
- .long 2118591596
- .long 1072475865
- .long 908848089
- .long 1072471791
- .long 877032689
- .long 1072467672
- .long 752012304
- .long 1072463508
- .long 3532301749
- .long 1072459298
- .long 3600563221
- .long 1072455043
- .long 3902857084
- .long 1072450742
- .long 3063101036
- .long 1072446395
- .long 3972344374
- .long 1072442001
- .long 903183549
- .long 1072437561
- .long 983892938
- .long 1072433073
- .long 2722858568
- .long 1072428537
- .long 302790515
- .long 1072423954
- .long 759811057
- .long 1072419322
- .long 2507809922
- .long 1072414641
- .long 2388408813
- .long 1072407528
- .long 2084492942
- .long 1072397870
- .long 2435703301
- .long 1072388010
- .long 1935433360
- .long 1072377945
- .long 2742047290
- .long 1072367671
- .long 2053284205
- .long 1072357185
- .long 657783367
- .long 1072346483
- .long 2893664841
- .long 1072335560
- .long 3718906405
- .long 1072324413
- .long 1547896303
- .long 1072313038
- .long 2494058440
- .long 1072301429
- .long 3133238742
- .long 1072289582
- .long 3327000086
- .long 1072277492
- .long 1860667274
- .long 1072265154
- .long 665340747
- .long 1072252562
- .long 443347841
- .long 1072239710
- .long 581282618
- .long 1072226592
- .long 3349780465
- .long 1072213201
- .long 914217606
- .long 1072199532
- .long 989797661
- .long 1072185576
- .long 945436416
- .long 1072171326
- .long 549291300
- .long 1072156774
- .long 1814636389
- .long 1072141911
- .long 239092858
- .long 1072126729
- .long 1794680724
- .long 1072111217
- .long 1241534678
- .long 1072095366
- .long 3366566214
- .long 1072079164
- .long 1244090828
- .long 1072062601
- .long 1708448120
- .long 1072045663
- .long 3544260650
- .long 1072028337
- .long 1402741403
- .long 1072010610
- .long 2551936888
- .long 1071992465
- .long 617669739
- .long 1071973887
- .long 794002186
- .long 1071954857
- .long 2021237693
- .long 1071935356
- .long 540450384
- .long 1071915364
- .long 1920555537
- .long 1071894857
- .long 2879585206
- .long 1071873811
- .long 3000237455
- .long 1071852199
- .long 3352974346
- .long 1071829991
- .long 569629937
- .long 1071807155
- .long 2077237208
- .long 1071783653
- .long 2284891805
- .long 1071759446
- .long 1226651784
- .long 1071734489
- .long 1102047405
- .long 1071708731
- .long 2009896384
- .long 1071682115
- .long 927419082
- .long 1071654577
- .long 85010366
- .long 1071607413
- .long 696431025
- .long 1071548180
- .long 2611410541
- .long 1071486585
- .long 2612593658
- .long 1071422396
- .long 3548155306
- .long 1071355336
- .long 3887997484
- .long 1071285073
- .long 244854763
- .long 1071211202
- .long 4214445648
- .long 1071133216
- .long 2303966727
- .long 1071050478
- .long 3991040013
- .long 1070962152
- .long 3126952278
- .long 1070867118
- .long 1817448378
- .long 1070763804
- .long 1793814864
- .long 1070649884
- .long 3507224072
- .long 1070447193
- .long 4027609105
- .long 1070148772
- .long 577507993
- .long 1069779414
- .long 2310232419
- .long 1068931829
- .type T_table,@object
- .size T_table,2048
- .align 16
-Tbl_addr:
- .long 3822952792
- .long 1021639372
- .long 182792448
- .long 1068507836
- .long 2264213271
- .long 1019558908
- .long 649052928
- .long 1068524253
- .long 1797139609
- .long 1022295143
- .long 1243095296
- .long 1068540671
- .long 1415938756
- .long 1021439537
- .long 2033294592
- .long 1068557090
- .long 2356809978
- .long 1021777916
- .long 3088063744
- .long 1068573510
- .long 2669055318
- .long 1022124482
- .long 180888576
- .long 1068589932
- .long 3566445325
- .long 1021358712
- .long 1970196992
- .long 1068606354
- .long 896980323
- .long 1021319659
- .long 4229555456
- .long 1068622777
- .long 436049712
- .long 1021319758
- .long 2732572160
- .long 1068639202
- .long 583123209
- .long 1020797960
- .long 1842831872
- .long 1068655628
- .long 1370449804
- .long 1021429270
- .long 1628994560
- .long 1068672055
- .long 2411391464
- .long 1021057980
- .long 2159763712
- .long 1068688483
- .long 1208692749
- .long 1021943903
- .long 3503886336
- .long 1068704912
- .long 538793309
- .long 1019744063
- .long 1435187200
- .long 1068721343
- .long 4085087612
- .long 1020608419
- .long 317469952
- .long 1068737775
- .long 144386942
- .long 1021440732
- .long 219617280
- .long 1068754208
- .long 2940088361
- .long 1019981122
- .long 1210558208
- .long 1068770642
- .long 2176850347
- .long 1018373705
- .long 3359268352
- .long 1068787077
- .long 2395611454
- .long 1021889042
- .long 2439803648
- .long 1068803514
- .long 1650705253
- .long 1020227966
- .long 2816203520
- .long 1068819952
- .long 3702166386
- .long 1019379914
- .long 262620672
- .long 1068836392
- .long 1855649370
- .long 1020453124
- .long 3438159616
- .long 1068852832
- .long 923063860
- .long 1019273834
- .long 3822105856
- .long 1068869274
- .long 4289947947
- .long 1019434249
- .long 1483729920
- .long 1068885718
- .long 787455814
- .long 1020738379
- .long 787321088
- .long 1068902163
- .long 3321653337
- .long 1021842569
- .long 1802253312
- .long 1068918609
- .long 2653633526
- .long 1021821525
- .long 302985984
- .long 1068935057
- .long 161272028
- .long 1021655149
- .long 653966080
- .long 1068951506
- .long 2566098667
- .long 1020066219
- .long 2924727296
- .long 1068967956
- .long 3646493722
- .long 1014292285
- .long 2889890304
- .long 1068984408
- .long 1081009196
- .long 1022189620
- .long 619098112
- .long 1069000862
- .long 4011643355
- .long 1021773297
- .long 477017600
- .long 1069017317
- .long 4030305534
- .long 1021292252
- .long 2533403904
- .long 1069033773
- .long 2645187591
- .long 1019527099
- .long 2563102208
- .long 1069050231
- .long 3857293792
- .long 1022311697
- .long 635982336
- .long 1069066691
- .long 3625936637
- .long 1017511744
- .long 1116940800
- .long 1069083152
- .long 3653872993
- .long 1022016631
- .long 4075964160
- .long 1069099614
- .long 2468900271
- .long 1021769532
- .long 993165568
- .long 1069116079
- .long 1358104224
- .long 1021199776
- .long 528586752
- .long 1069132545
- .long 2200950332
- .long 1022024872
- .long 2752395776
- .long 1069149012
- .long 3197072454
- .long 1017751319
- .long 3439855616
- .long 1069165481
- .long 1651081806
- .long 1020809338
- .long 2661257728
- .long 1069181952
- .long 539032752
- .long 1021728805
- .long 486957312
- .long 1069198425
- .long 3136045149
- .long 1016888671
- .long 1282340352
- .long 1069214899
- .long 2593963259
- .long 1018956103
- .long 822921728
- .long 1069231375
- .long 2146032737
- .long 1022306465
- .long 3474216192
- .long 1069247852
- .long 3976811625
- .long 1021350207
- .long 716902656
- .long 1069264332
- .long 718267222
- .long 1018624727
- .long 1211594496
- .long 1069280813
- .long 1485641389
- .long 1018447451
- .long 734070272
- .long 1069297296
- .long 354455128
- .long 1021341291
- .long 3650110720
- .long 1069313780
- .long 682185947
- .long 1021651853
- .long 1440663040
- .long 1069330267
- .long 3558574550
- .long 1021615110
- .long 2766612224
- .long 1069346755
- .long 874607978
- .long 1017746872
- .long 3404011008
- .long 1069363245
- .long 4154988502
- .long 1021439906
- .long 3423949056
- .long 1069379737
- .long 2263202309
- .long 1021479615
- .long 2897587712
- .long 1069396231
- .long 2562065031
- .long 1022090363
- .long 1896159232
- .long 1069412727
- .long 3836237663
- .long 1019867288
- .long 490968576
- .long 1069429225
- .long 3322056743
- .long 1006752762
- .long 3048360192
- .long 1069445724
- .long 1152314833
- .long 1013122252
- .long 1049850624
- .long 1069462226
- .long 3601590727
- .long 1022214610
- .long 3156899584
- .long 1069478729
- .long 1855169970
- .long 1019487271
- .long 851173376
- .long 1069495235
- .long 312649594
- .long 1020868604
- .long 2794281728
- .long 1069511742
- .long 1093490181
- .long 1020777577
- .long 468042496
- .long 1069528252
- .long 1152540679
- .long 1021403732
- .long 2534219264
- .long 1069544763
- .long 2292126035
- .long 1021872430
- .long 1376146432
- .long 1069558527
- .long 3293753641
- .long 1020500454
- .long 4175442432
- .long 1069575044
- .long 3626347564
- .long 1021610969
- .long 3523113472
- .long 1069591566
- .long 339956500
- .long 1021119039
- .long 4003350528
- .long 1069608092
- .long 3429333082
- .long 1022813542
- .long 1611067392
- .long 1069624623
- .long 2298017544
- .long 1021977587
- .long 931782144
- .long 1069641158
- .long 2164684743
- .long 1021250988
- .long 2256725504
- .long 1069657697
- .long 1138762335
- .long 1021443776
- .long 1582853120
- .long 1069674241
- .long 1084010382
- .long 1022994693
- .long 3497758720
- .long 1069690789
- .long 406366244
- .long 1022713586
- .long 3999816960
- .long 1069707342
- .long 1488723042
- .long 1023381290
- .long 3383096064
- .long 1069723900
- .long 2541558953
- .long 1019137887
- .long 1942403584
- .long 1069740463
- .long 1879620343
- .long 1022653642
- .long 4268263680
- .long 1069757030
- .long 3039077047
- .long 1022252545
- .long 2067062272
- .long 1069773603
- .long 4190670677
- .long 1020725863
- .long 4225828096
- .long 1069790180
- .long 1998567321
- .long 1022014385
- .long 2452507136
- .long 1069806763
- .long 1511628873
- .long 1021900300
- .long 1340746240
- .long 1069823351
- .long 788367341
- .long 1022726208
- .long 1190035456
- .long 1069839944
- .long 3856337230
- .long 1021834118
- .long 2300688384
- .long 1069856542
- .long 3211396579
- .long 1022621365
- .long 678886400
- .long 1069873146
- .long 4001011887
- .long 1022042646
- .long 921594112
- .long 1069889755
- .long 557811968
- .long 1023065533
- .long 3331668992
- .long 1069906369
- .long 1877060679
- .long 1022419742
- .long 3917875200
- .long 1069922989
- .long 1181055171
- .long 1022752712
- .long 2984829696
- .long 1069939615
- .long 4294526932
- .long 1021499988
- .long 838049024
- .long 1069956247
- .long 3658081878
- .long 1022957952
- .long 2078928384
- .long 1069972884
- .long 820353701
- .long 1019391107
- .long 2719854336
- .long 1069989527
- .long 1644022489
- .long 1023378240
- .long 3069117696
- .long 1070006176
- .long 2771393702
- .long 1019319954
- .long 3435962368
- .long 1070022831
- .long 3876394145
- .long 1023024433
- .long 4130595328
- .long 1070039492
- .long 1630447748
- .long 1021465882
- .long 1169236224
- .long 1070056160
- .long 2828355997
- .long 1020458120
- .long 3453997312
- .long 1070072833
- .long 164091641
- .long 1020388279
- .long 2708127744
- .long 1070089513
- .long 3036550223
- .long 1023328684
- .long 3540797696
- .long 1070106199
- .long 3710949463
- .long 1022568805
- .long 1972276736
- .long 1070122892
- .long 3885277950
- .long 1019761674
- .long 2613815552
- .long 1070139591
- .long 2764165077
- .long 1022921023
- .long 1487791616
- .long 1070156297
- .long 1330644769
- .long 1023162679
- .long 3207593472
- .long 1070173009
- .long 3911007221
- .long 1022993496
- .long 3797764608
- .long 1070189728
- .long 979712598
- .long 1022554580
- .long 3578920448
- .long 1070206454
- .long 2825738223
- .long 1020223708
- .long 2872795648
- .long 1070223187
- .long 392451124
- .long 1022666279
- .long 2002258432
- .long 1070239927
- .long 3730407632
- .long 1023148291
- .long 1291326464
- .long 1070256674
- .long 3723802980
- .long 1022514089
- .long 1065180928
- .long 1070273428
- .long 2635617463
- .long 1022654470
- .long 1650181632
- .long 1070290189
- .long 2061982883
- .long 1022853411
- .long 3373882880
- .long 1070306957
- .long 319732785
- .long 1022017175
- .long 2270081280
- .long 1070323733
- .long 2237757411
- .long 1023064087
- .long 2963732736
- .long 1070340516
- .long 468839165
- .long 1023293774
- .long 1491099904
- .long 1070357307
- .long 1502657946
- .long 1021533479
- .long 2479636480
- .long 1070374105
- .long 482913562
- .long 1021986286
- .long 1968133632
- .long 1070390911
- .long 3281474337
- .long 1022646400
- .long 291639040
- .long 1070407725
- .long 2453320259
- .long 1022812423
- .long 2081472512
- .long 1070424546
- .long 2939989570
- .long 1023091888
- .long 3380340480
- .long 1070441375
- .long 2850707499
- .long 1021921109
- .long 232287488
- .long 1070458213
- .long 3674625342
- .long 1020725130
- .long 1567614208
- .long 1070475058
- .long 9347334
- .long 1022024009
- .long 3433091072
- .long 1070491911
- .long 282524999
- .long 1021433523
- .long 1876877312
- .long 1070508773
- .long 3470449440
- .long 1019309721
- .long 1538472192
- .long 1070525643
- .long 2089486825
- .long 1019698916
- .long 2763830784
- .long 1070542521
- .long 443498115
- .long 1020505194
- .long 1605381632
- .long 1070559408
- .long 3018871601
- .long 1022869913
- .long 2706946048
- .long 1070576303
- .long 3936260892
- .long 1023175875
- .long 2123887360
- .long 1070593207
- .long 2994220655
- .long 1022825948
- .long 104015104
- .long 1070603108
- .long 335054493
- .long 1023441853
- .long 2904568832
- .long 1070615800
- .long 1451215633
- .long 1023853857
- .long 3456197120
- .long 1070632739
- .long 436334733
- .long 1024026432
- .long 252452352
- .long 1070649697
- .long 34596167
- .long 1024031396
- .long 3328018432
- .long 1070666672
- .long 2644547073
- .long 1024296758
- .long 1255829248
- .long 1070683667
- .long 552832586
- .long 1023763122
- .long 4097058560
- .long 1070700680
- .long 1955640623
- .long 1021394654
- .long 451770112
- .long 1070717714
- .long 3428903777
- .long 1022941142
- .long 408920832
- .long 1070734767
- .long 165503263
- .long 1023894958
- .long 1186960640
- .long 1070751840
- .long 435826450
- .long 1024026134
- .long 19078656
- .long 1070768934
- .long 1834169749
- .long 1022899284
- .long 2743490304
- .long 1070786048
- .long 494581074
- .long 1018818479
- .long 2328961024
- .long 1070803184
- .long 2987908834
- .long 1022581110
- .long 350011392
- .long 1070820342
- .long 240771184
- .long 1024143083
- .long 2692326912
- .long 1070837521
- .long 666056837
- .long 1022394776
- .long 2373274368
- .long 1070854723
- .long 2484337770
- .long 1024228156
- .long 1017131520
- .long 1070871948
- .long 3285648279
- .long 1024025789
- .long 265558272
- .long 1070889196
- .long 392241896
- .long 1024252809
- .long 1778008064
- .long 1070906467
- .long 1536107943
- .long 1023949300
- .long 2937184768
- .long 1070923762
- .long 3541062251
- .long 1019448646
- .long 1144442880
- .long 1070941082
- .long 3691683781
- .long 1022123948
- .long 2410165504
- .long 1070958426
- .long 1804181960
- .long 1023945221
- .long 4174350848
- .long 1070975795
- .long 2016094861
- .long 1021716585
- .long 3897012480
- .long 1070993190
- .long 175294410
- .long 1023703404
- .long 3353623040
- .long 1071010611
- .long 167973242
- .long 1023240839
- .long 45671168
- .long 1071028059
- .long 2166856113
- .long 1021565413
- .long 86063872
- .long 1071045533
- .long 2676254727
- .long 1023985299
- .long 1019772672
- .long 1071063034
- .long 989043593
- .long 1021549587
- .long 414297344
- .long 1071080563
- .long 3960972046
- .long 1024307251
- .long 155173120
- .long 1071098120
- .long 1830919291
- .long 1021592251
- .long 2151562240
- .long 1071115705
- .long 405408666
- .long 1023423128
- .long 4041854720
- .long 1071133319
- .long 2043497827
- .long 1024411503
- .long 3489224192
- .long 1071150963
- .long 3072215864
- .long 1022698635
- .long 2477196288
- .long 1071168637
- .long 1812195139
- .long 1022689192
- .long 3015298816
- .long 1071186341
- .long 764841969
- .long 1021027331
- .long 2844731136
- .long 1071204076
- .long 2878117321
- .long 1019116513
- .long 4028950528
- .long 1071221842
- .long 698911452
- .long 1023265602
- .long 69441536
- .long 1071239641
- .long 3253467847
- .long 1020795075
- .long 1676209920
- .long 1071257471
- .long 4272431167
- .long 1022873982
- .long 2408752384
- .long 1071275334
- .long 648519100
- .long 1024385717
- .long 151623680
- .long 1071293231
- .long 345257017
- .long 1019561408
- .long 1410154240
- .long 1071311161
- .long 197863993
- .long 1023224207
- .long 4131351552
- .long 1071329125
- .long 2620801789
- .long 1024411169
- .long 1999664384
- .long 1071347125
- .long 3952692616
- .long 1024168086
- .long 1617668864
- .long 1071365160
- .long 3019889809
- .long 1021907692
- .long 1032074240
- .long 1071383231
- .long 59469899
- .long 1023656194
- .long 2619492096
- .long 1071401338
- .long 1417526820
- .long 1021457783
- .long 202429440
- .long 1071419483
- .long 2927667935
- .long 1019175447
- .long 525044224
- .long 1071437665
- .long 38166811
- .long 1023981879
- .long 1779258880
- .long 1071455885
- .long 481252500
- .long 1023310234
- .long 2195673600
- .long 1071474144
- .long 3962395981
- .long 1021339088
- .long 44573696
- .long 1071492443
- .long 3936281395
- .long 1023014829
- .long 2226905344
- .long 1071510781
- .long 1515320476
- .long 1024320623
- .long 2800512512
- .long 1071529160
- .long 1225403697
- .long 1021081846
- .long 161113600
- .long 1071547581
- .long 3064809733
- .long 1024173917
- .long 1338410240
- .long 1071566043
- .long 2027604973
- .long 1024362526
- .long 522433280
- .long 1071584548
- .long 2055171723
- .long 1023858825
- .long 539595776
- .long 1071603096
- .long 3868820135
- .long 1022936424
- .long 4264017664
- .long 1071621687
- .long 3228065145
- .long 1023479578
- .long 1733924096
- .long 1071640324
- .long 3511934475
- .long 1022496355
- .long 108880384
- .long 1071651839
- .long 615880967
- .long 1023519706
- .long 3517856512
- .long 1071661202
- .long 3113108559
- .long 1025190289
- .long 4043153152
- .long 1071670589
- .long 1571836218
- .long 1023106116
- .long 3251299072
- .long 1071680000
- .long 3444076102
- .long 1022187841
- .long 2736921600
- .long 1071689435
- .long 272771483
- .long 1025095280
- .long 3897698560
- .long 1071703633
- .long 2075390188
- .long 1022489022
- .long 3209485056
- .long 1071722652
- .long 1438094065
- .long 1021844944
- .long 3781432064
- .long 1071741774
- .long 1675017145
- .long 1024143828
- .long 2684184064
- .long 1071761003
- .long 2259963753
- .long 1024731393
- .long 1840489728
- .long 1071780342
- .long 3372883597
- .long 1023431408
- .long 3764087808
- .long 1071799794
- .long 3307523102
- .long 1024485788
- .long 3006232320
- .long 1071819364
- .long 3088971966
- .long 1025213251
- .long 3374881280
- .long 1071839055
- .long 834437749
- .long 1025236452
- .long 797284864
- .long 1071858872
- .long 3122663941
- .long 1025320473
- .long 545765120
- .long 1071878818
- .long 826539625
- .long 1022450955
- .long 107562240
- .long 1071898898
- .long 339584600
- .long 1022481255
- .long 2123649024
- .long 1071919116
- .long 3912959833
- .long 1024321009
- .long 1562385664
- .long 1071939478
- .long 2846067230
- .long 1023343981
- .long 2963085824
- .long 1071959988
- .long 954548627
- .long 1021475211
- .long 3325550592
- .long 1071980652
- .long 3459651155
- .long 1025305573
- .long 775752448
- .long 1072001476
- .long 3582746667
- .long 1023859460
- .long 3238590720
- .long 1072022464
- .long 634636162
- .long 1024472353
- .long 2758801920
- .long 1072043624
- .long 3078216319
- .long 1025304516
- .long 1370319104
- .long 1072064962
- .long 2570569078
- .long 1025099442
- .long 2615805184
- .long 1072086484
- .long 3729933412
- .long 1024605112
- .long 3077336576
- .long 1072108198
- .long 1948916066
- .long 1024781603
- .long 1099528192
- .long 1072130112
- .long 3139143157
- .long 1023729360
- .long 1231903232
- .long 1072152233
- .long 1349513477
- .long 1024737515
- .long 1507504128
- .long 1072174570
- .long 3484516322
- .long 1024000959
- .long 2214659840
- .long 1072197132
- .long 2563820917
- .long 1025225535
- .long 1804739840
- .long 1072219929
- .long 760038746
- .long 1024482855
- .long 1413746688
- .long 1072242971
- .long 3401734714
- .long 1025129838
- .long 821409536
- .long 1072266269
- .long 3729772551
- .long 1025484796
- .long 3031825664
- .long 1072289834
- .long 122256749
- .long 1024752594
- .long 1710784256
- .long 1072313680
- .long 1518205483
- .long 1024724809
- .long 3025265152
- .long 1072337819
- .long 409951989
- .long 1022835555
- .long 287769088
- .long 1072362267
- .long 800355594
- .long 1022484850
- .long 198179840
- .long 1072387038
- .long 3502926213
- .long 1024209373
- .long 1909130496
- .long 1072412149
- .long 3064694319
- .long 1025380823
- .long 1941732096
- .long 1072437619
- .long 4112930390
- .long 1024294679
- .long 3492010496
- .long 1072463467
- .long 2684918107
- .long 1023220233
- .long 81959680
- .long 1072489716
- .long 220021366
- .long 1020635131
- .long 2297837056
- .long 1072516387
- .long 4027683826
- .long 1021041185
- .long 270404096
- .long 1072543508
- .long 2012766065
- .long 1021780753
- .long 3667376896
- .long 1072571105
- .long 2727981522
- .long 1023009874
- .long 330400256
- .long 1072599212
- .long 2940017003
- .long 1025393439
- .long 1119293952
- .long 1072627861
- .long 1608550416
- .long 1022675612
- .long 3536155904
- .long 1072657091
- .long 349665778
- .long 1025156751
- .long 3078046720
- .long 1072686946
- .long 2016159996
- .long 1022193169
- .long 455228416
- .long 1072705361
- .long 1908539328
- .long 1026126332
- .long 1871505664
- .long 1072720988
- .long 2784700894
- .long 1025922277
- .long 1630994432
- .long 1072737010
- .long 361107678
- .long 1022887244
- .long 2084558336
- .long 1072753462
- .type Tbl_addr,@object
- .size Tbl_addr,3840
- .space 768, 0x00 # pad
- .align 16
-SIGNMASK:
- .long 0
- .long 2147483648
- .long 0
- .long 0
- .type SIGNMASK,@object
- .size SIGNMASK,16
- .align 16
-HALFMASK2:
- .long 0
- .long 2147483584
- .long 0
- .long 0
- .type HALFMASK2,@object
- .size HALFMASK2,16
- .align 16
-PI_BY_2:
- .long 856972295
- .long 1016178214
- .long 1413754136
- .long 1073291771
- .type PI_BY_2,@object
- .size PI_BY_2,16
- .align 16
-cv2:
- .long 780903145
- .long 1066854586
- .long 858993459
- .long 1068708659
- .long 3340530119
- .long 1067392113
- .long 1431655765
- .long 1069897045
- .long 1321528399
- .long 1066517740
- .long 3067833783
- .long 1067899757
- .long 2021159460
- .long 1065855096
- .long 2576980378
- .long 1066178969
- .type cv2,@object
- .size cv2,64
- .align 16
-HALFMASK:
- .long 4160749568
- .long 4294967295
- .long 4160749568
- .long 4294967295
- .type HALFMASK,@object
- .size HALFMASK,16
- .align 4
-ONEMASK:
- .long 0
- .long 1072693248
- .type ONEMASK,@object
- .size ONEMASK,8
- .align 4
-TMASK:
- .long 0
- .long 4294950912
- .type TMASK,@object
- .size TMASK,8
- .align 4
-cv:
- .long 1431655765
- .long 1069897045
- .long 858993459
- .long 1068708659
- .long 3067833783
- .long 1067899757
- .type cv,@object
- .size cv,24
- .data
- .section .note.GNU-stack, "",@progbits
-// -- Begin DWARF2 SEGMENT .eh_frame
- .section .eh_frame,"a",@progbits
-.eh_frame_seg:
- .align 1
- .4byte 0x00000014
- .8byte 0x00527a0100000000
- .8byte 0x08070c1b01107801
- .4byte 0x00000190
- .4byte 0x0000001c
- .4byte 0x0000001c
- .4byte ..___tag_value_asin.1-.
- .4byte ..___tag_value_asin.5-..___tag_value_asin.1
- .2byte 0x0400
- .4byte ..___tag_value_asin.3-..___tag_value_asin.1
- .2byte 0x200e
- .byte 0x04
- .4byte ..___tag_value_asin.4-..___tag_value_asin.3
- .2byte 0x080e
- .byte 0x00
-# End
diff --git a/libm/x86_64/e_atan2.S b/libm/x86_64/e_atan2.S
deleted file mode 100644
index f0ba43c..0000000
--- a/libm/x86_64/e_atan2.S
+++ /dev/null
@@ -1,1242 +0,0 @@
-/*
-Copyright (c) 2014, Intel Corporation
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
-
- * Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
-
- * Neither the name of Intel Corporation nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
-ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/******************************************************************************/
-// ALGORITHM DESCRIPTION
-// ---------------------
-//
-//
-//1. The method is based on the relationship of atan2(Y,X) to atan(|Y/X|)
-// as follows.
-// / sign(Y) atan(|Y/X|) if X > 0
-// atan2(Y,X) =
-// \ sign(Y)*pi - sign(Y)*atan(|Y/X|) if X < 0
-//
-// Thus, atan2(Y,X) is of the form atan2(Y,X) = PI + sgn*atan(|Y/X|)
-// where PI and sgn can be determined by the four possible combinations of
-// of the pair (sign(X),sign(Y)). We concentrate on the numerical method
-// for atan(|Y/X|).
-//
-//2. For |Y/X| < 2^(-64), atan(|Y/X|) ~=~ |Y/X|. Hence, atan2(Y,X) is Y/X
-// if X > 0, and sign(Y)*pi otherwise.
-//3. For |Y/X| >= 2^(65), atan(|Y/X|) ~=~ pi/2. Hence atan2(Y,X) is sign(Y)pi/2.
-//4. For 2^(-64) <= |Y/X| < 2^(-5), atan(|Y/X|) is approximated by a polynomial
-// of the form Z + Z*E*polynomial(E), where Z = |Y/X| and E = Z*Z.
-//5. For |Y/X| > 2^(5), atan(|Y/X|) = pi/2 + atan(-|X/Y|), and atan(-|X/Y|) is
-// calculated using the polynomial in 4 above.
-//6. For 2^(-5) <= |Y/X| <= 2^(5), we employ a table lookup method. First,
-// we obtain B = 2^k * 1.b1 b2 b3 b4 = 2^k * (1+k/16) that approximate
-// |Y/X| to approximately 5 significant bits. Hence, atan(|Y/X|) is
-//
-// atan(|Y/X|) = atan(B) + atan(Z), where Z = (|Y|-B|X|)/(|X|+B|Y|).
-// ~=~ tau + Z + Z*E*polynomial(E), where E = Z*Z.
-//
-// B has the range from 2^(-6)*(1+14/16) to 2^5 = 2^(5)*(1+0/16), totally
-// 163 possible values. These values are calculated beforehand and stored
-// in a table. The polynomial is the one used in 4.
-//
-// Special cases:
-// atan2(+-0, +0) = +-0
-// atan2(+-0, -0) = +-pi
-// atan2(+-0, x) = +-0, for x > 0, and +-pi, for x < 0
-// atan2(y, +-0) = +pi/2 for y > 0, and -pi/2 for y < 0
-// atan2(+-y, +INF) = +-0, for finite y > 0
-// atan2(+-y, -INF) = +-pi, for finite y > 0
-// atan2(+-INF, x) = +-pi/2, for finite x
-// atan2(+-INF, +INF) = +-pi/4
-// atan2(+-INF, -INF) = +-3*pi/4
-//
-/******************************************************************************/
-
-#include <private/bionic_asm.h>
-# -- Begin atan2
-ENTRY(atan2)
-# parameter 1: %xmm0
-# parameter 2: %xmm1
-..B1.1:
-..___tag_value_atan2.1:
- subq $24, %rsp
-..___tag_value_atan2.3:
- movsd %xmm0, (%rsp)
- movsd %xmm1, 8(%rsp)
-..B1.2:
- pextrw $3, %xmm0, %eax
- andl $32752, %eax
- subl $14448, %eax
- cmpl $3840, %eax
- ja .L_2TAG_PACKET_0.0.2
- pextrw $3, %xmm1, %eax
- andl $32752, %eax
- subl $14448, %eax
- cmpl $3840, %eax
- ja .L_2TAG_PACKET_1.0.2
-.L_2TAG_PACKET_2.0.2:
- unpcklpd %xmm1, %xmm0
- xorpd %xmm5, %xmm5
- xorpd %xmm3, %xmm3
- movl $2048, %eax
- pinsrw $3, %eax, %xmm5
- paddw %xmm1, %xmm5
- psrlq $29, %xmm5
- rcpss %xmm5, %xmm3
- xorpd %xmm4, %xmm4
- movl $14336, %ecx
- pinsrw $3, %ecx, %xmm4
- psllq $29, %xmm3
- paddw %xmm4, %xmm3
- mulsd %xmm0, %xmm3
- xorpd %xmm2, %xmm2
- xorpd %xmm6, %xmm6
- xorpd %xmm7, %xmm7
- movl $32768, %eax
- pinsrw $2, %eax, %xmm6
- movl $32767, %ecx
- pinsrw $3, %ecx, %xmm7
- paddd %xmm6, %xmm3
- andpd %xmm7, %xmm3
- movq %xmm3, %xmm5
- pextrw $3, %xmm3, %eax
- movl $16448, %ecx
- pinsrw $3, %ecx, %xmm2
- minsd %xmm2, %xmm3
- movmskpd %xmm0, %edx
- psllq $1, %xmm0
- psrlq $1, %xmm0
- cmpsd $2, %xmm2, %xmm5
- psllq $1, %xmm1
- psrlq $1, %xmm1
- movq %xmm1, %xmm6
- movq %xmm1, %xmm7
- movq %xmm0, %xmm2
- movl $0, %ecx
- pinsrw $0, %ecx, %xmm6
- subsd %xmm6, %xmm7
- movq %xmm0, %xmm4
- mulsd %xmm3, %xmm6
- mulsd %xmm3, %xmm4
- mulsd %xmm3, %xmm7
- andpd %xmm5, %xmm0
- subsd %xmm6, %xmm0
- andpd %xmm5, %xmm1
- addsd %xmm1, %xmm4
- subsd %xmm7, %xmm0
- andl $32752, %eax
- subl $16286, %eax
- cmpl $1121, %eax
- ja .L_2TAG_PACKET_3.0.2
- divsd %xmm4, %xmm0
- pextrw $3, %xmm3, %ecx
- movsd a2(%rip), %xmm2
- movsd b2(%rip), %xmm3
- pextrw $0, %xmm5, %eax
- addl %edx, %edx
- lea P_TBL(%rip), %r8
- movapd (%r8,%rdx,8), %xmm6
- lea SGN_TBL(%rip), %r8
- movapd (%r8,%rdx,8), %xmm1
- subl $16286, %ecx
- notl %eax
- andl $1, %eax
- addl %eax, %ecx
- addl %ecx, %ecx
- lea ATAN_TBL(%rip), %r8
- movapd (%r8,%rcx,8), %xmm5
- xorpd %xmm1, %xmm5
- addpd %xmm6, %xmm5
- movq %xmm5, %xmm6
- unpckhpd %xmm5, %xmm5
- xorpd %xmm0, %xmm1
- movq %xmm1, %xmm4
- mulsd %xmm0, %xmm0
- mulsd %xmm0, %xmm2
- addsd %xmm0, %xmm3
- addsd %xmm6, %xmm1
- subsd %xmm1, %xmm6
- addsd %xmm4, %xmm6
- addsd 8+a2(%rip), %xmm2
- mulsd %xmm0, %xmm3
- mulsd %xmm4, %xmm0
- addsd %xmm5, %xmm6
- mulsd %xmm2, %xmm0
- addsd 8+b2(%rip), %xmm3
- mulsd %xmm3, %xmm0
- addsd %xmm6, %xmm0
- addsd %xmm1, %xmm0
- jmp ..B1.5
-.L_2TAG_PACKET_3.0.2:
- addl $942, %eax
- cmpl $942, %eax
- ja .L_2TAG_PACKET_4.0.2
- xorpd %xmm4, %xmm4
- movl $16368, %ecx
- pinsrw $3, %ecx, %xmm4
- divsd %xmm1, %xmm4
- addl %edx, %edx
- lea SGN_TBL(%rip), %r8
- movapd (%r8,%rdx,8), %xmm6
- unpcklpd %xmm3, %xmm3
- xorpd %xmm6, %xmm0
- xorpd %xmm6, %xmm2
- xorpd %xmm6, %xmm3
- lea P_TBL2(%rip), %r8
- movapd (%r8,%rdx,8), %xmm7
- movsd a2(%rip), %xmm1
- movsd b2(%rip), %xmm5
- lea SELECT_B(%rip), %r8
- andpd (%r8,%rdx,8), %xmm3
- mulsd %xmm4, %xmm2
- mulsd %xmm4, %xmm0
- movq %xmm2, %xmm6
- mulsd %xmm2, %xmm2
- mulsd %xmm2, %xmm1
- addsd %xmm2, %xmm5
- mulsd %xmm2, %xmm6
- addsd 8+a2(%rip), %xmm1
- mulsd %xmm2, %xmm5
- addsd %xmm0, %xmm7
- addpd %xmm3, %xmm7
- mulsd %xmm6, %xmm1
- addsd 8+b2(%rip), %xmm5
- mulsd %xmm1, %xmm5
- addsd %xmm7, %xmm5
- pshufd $238, %xmm7, %xmm0
- addsd %xmm5, %xmm0
- jmp ..B1.5
-.L_2TAG_PACKET_4.0.2:
- movsd 8(%rsp), %xmm1
- movsd (%rsp), %xmm0
- pextrw $3, %xmm1, %eax
- andl $32752, %eax
- pextrw $3, %xmm0, %ecx
- andl $32752, %ecx
- cmpl %eax, %ecx
- jg .L_2TAG_PACKET_5.0.2
- pextrw $3, %xmm1, %ecx
- cmpl $32767, %ecx
- jg .L_2TAG_PACKET_6.0.2
- divsd %xmm1, %xmm0
- jmp ..B1.5
-.L_2TAG_PACKET_6.0.2:
- andpd SGNMASK(%rip), %xmm0
- movsd pi_table(%rip), %xmm2
- xorpd %xmm2, %xmm0
- jmp ..B1.5
-.L_2TAG_PACKET_5.0.2:
- andpd SGNMASK(%rip), %xmm0
- movsd pi2_table(%rip), %xmm2
- xorpd %xmm2, %xmm0
- jmp ..B1.5
-.L_2TAG_PACKET_0.0.2:
-.L_2TAG_PACKET_1.0.2:
- pextrw $3, %xmm0, %ecx
- andl $32752, %ecx
- pextrw $3, %xmm1, %eax
- andl $32752, %eax
- cmpl $32752, %ecx
- je .L_2TAG_PACKET_7.0.2
- cmpl $32752, %eax
- je .L_2TAG_PACKET_8.0.2
- movsd POW55(%rip), %xmm3
- movl $1024, %edx
- movsd INVEXPMASK(%rip), %xmm4
- xorpd %xmm6, %xmm6
- movsd EXPMASK(%rip), %xmm7
- cmpl $0, %ecx
- je .L_2TAG_PACKET_9.0.2
-.L_2TAG_PACKET_10.0.2:
- cmpl $0, %eax
- je .L_2TAG_PACKET_11.0.2
-.L_2TAG_PACKET_12.0.2:
- addl %ecx, %edx
- subl %eax, %edx
- cmpl $2048, %edx
- ja .L_2TAG_PACKET_4.0.2
- addl $15344, %edx
- pinsrw $3, %edx, %xmm6
- andpd %xmm4, %xmm0
- andpd %xmm4, %xmm1
- orpd %xmm6, %xmm0
- orpd %xmm7, %xmm1
- jmp .L_2TAG_PACKET_2.0.2
-.L_2TAG_PACKET_9.0.2:
- subl $880, %edx
- mulsd %xmm3, %xmm0
- pextrw $3, %xmm0, %ecx
- andl $32752, %ecx
- cmpl $0, %ecx
- je .L_2TAG_PACKET_13.0.2
- jmp .L_2TAG_PACKET_10.0.2
-.L_2TAG_PACKET_11.0.2:
- addl $880, %edx
- mulsd %xmm3, %xmm1
- pextrw $3, %xmm1, %eax
- andl $32752, %eax
- cmpl $0, %eax
- je .L_2TAG_PACKET_14.0.2
- jmp .L_2TAG_PACKET_12.0.2
-.L_2TAG_PACKET_7.0.2:
- movd %xmm0, %edx
- movq %xmm0, %xmm2
- psrlq $32, %xmm2
- movd %xmm2, %ecx
- andl $1048575, %ecx
- orl %edx, %ecx
- cmpl $0, %ecx
- jne .L_2TAG_PACKET_15.0.2
- psrlq $63, %xmm0
- psllq $63, %xmm0
- cmpl $32752, %eax
- jae .L_2TAG_PACKET_16.0.2
- movapd pi2_table(%rip), %xmm5
- pshufd $238, %xmm5, %xmm4
- addsd %xmm4, %xmm5
- orpd %xmm5, %xmm0
- jmp ..B1.5
-.L_2TAG_PACKET_15.0.2:
- addsd %xmm0, %xmm0
- jmp ..B1.5
-.L_2TAG_PACKET_16.0.2:
- movd %xmm1, %eax
- movq %xmm1, %xmm2
- psrlq $32, %xmm2
- movd %xmm2, %ecx
- movl $-2147483648, %edx
- andl %ecx, %edx
- andl $1048575, %ecx
- orl %eax, %ecx
- cmpl $0, %ecx
- jne .L_2TAG_PACKET_17.0.2
- cmpl $0, %edx
- jne .L_2TAG_PACKET_18.0.2
- movapd pi4_table(%rip), %xmm5
- pshufd $238, %xmm5, %xmm4
- addsd %xmm4, %xmm5
- orpd %xmm5, %xmm0
- jmp ..B1.5
-.L_2TAG_PACKET_17.0.2:
- movq %xmm1, %xmm0
- addsd %xmm0, %xmm0
- jmp ..B1.5
-.L_2TAG_PACKET_18.0.2:
- movapd pi4_table(%rip), %xmm5
- movapd pi2_table(%rip), %xmm6
- addpd %xmm6, %xmm5
- pshufd $238, %xmm5, %xmm6
- addpd %xmm6, %xmm5
- orpd %xmm5, %xmm0
- jmp ..B1.5
-.L_2TAG_PACKET_8.0.2:
- movd %xmm1, %eax
- movq %xmm1, %xmm2
- psrlq $32, %xmm2
- movd %xmm2, %ecx
- movl $-2147483648, %edx
- andl %ecx, %edx
- andl $1048575, %ecx
- orl %eax, %ecx
- cmpl $0, %ecx
- jne .L_2TAG_PACKET_17.0.2
- psrlq $63, %xmm0
- psllq $63, %xmm0
- cmpl $0, %edx
- jne .L_2TAG_PACKET_19.0.2
- jmp ..B1.5
-.L_2TAG_PACKET_19.0.2:
- movapd pi_table(%rip), %xmm5
- pshufd $238, %xmm5, %xmm4
- addsd %xmm4, %xmm5
- orpd %xmm5, %xmm0
- jmp ..B1.5
-.L_2TAG_PACKET_13.0.2:
- pextrw $3, %xmm1, %edx
- andl $32768, %edx
- cmpl $0, %edx
- je .L_2TAG_PACKET_20.0.2
- movapd pi_table(%rip), %xmm5
- pshufd $238, %xmm5, %xmm4
- addsd %xmm4, %xmm5
- comisd %xmm0, %xmm1
- orpd %xmm5, %xmm0
- je .L_2TAG_PACKET_21.0.2
- jmp ..B1.5
-.L_2TAG_PACKET_20.0.2:
- comisd %xmm0, %xmm1
- je .L_2TAG_PACKET_21.0.2
- jmp ..B1.5
-.L_2TAG_PACKET_14.0.2:
- movapd pi2_table(%rip), %xmm5
- psrlq $63, %xmm0
- psllq $63, %xmm0
- pshufd $238, %xmm5, %xmm4
- addsd %xmm4, %xmm5
- orpd %xmm5, %xmm0
- jmp ..B1.5
-.L_2TAG_PACKET_21.0.2:
- movq %xmm0, 16(%rsp)
-..B1.3:
- movq 16(%rsp), %xmm0
-.L_2TAG_PACKET_22.0.2:
-..B1.5:
- addq $24, %rsp
-..___tag_value_atan2.4:
- ret
-..___tag_value_atan2.5:
-END(atan2)
-# -- End atan2
- .section .rodata, "a"
- .align 16
- .align 16
-a2:
- .long 2006262985
- .long 1069310863
- .long 2358449471
- .long 3217342131
- .type a2,@object
- .size a2,16
- .align 16
-b2:
- .long 3845454352
- .long 1069952297
- .long 2829679149
- .long 1073771565
- .type b2,@object
- .size b2,16
- .align 16
-P_TBL:
- .long 0
- .long 0
- .long 0
- .long 0
- .long 0
- .long 0
- .long 0
- .long 0
- .long 1413754136
- .long 1074340347
- .long 856972295
- .long 1017226790
- .long 1413754136
- .long 3221823995
- .long 856972295
- .long 3164710438
- .type P_TBL,@object
- .size P_TBL,64
- .align 16
-SGN_TBL:
- .long 0
- .long 0
- .long 0
- .long 0
- .long 0
- .long 2147483648
- .long 0
- .long 2147483648
- .long 0
- .long 2147483648
- .long 0
- .long 2147483648
- .long 0
- .long 0
- .long 0
- .long 0
- .type SGN_TBL,@object
- .size SGN_TBL,64
- .align 16
-ATAN_TBL:
- .long 3390881280
- .long 1067318733
- .long 1411116779
- .long 1018950063
- .long 2985987840
- .long 1067384211
- .long 2088903695
- .long 1018086027
- .long 3148445184
- .long 1067449685
- .long 2044163806
- .long 1017271335
- .long 3667629184
- .long 1067515494
- .long 2353092775
- .long 1019967309
- .long 1546568832
- .long 1067580954
- .long 611991315
- .long 1017602584
- .long 3815996800
- .long 1067646404
- .long 466038598
- .long 1019686426
- .long 4050241920
- .long 1067711845
- .long 3265026328
- .long 1019626952
- .long 120454912
- .long 1067777277
- .long 1542207696
- .long 1020155608
- .long 2784639744
- .long 1067842697
- .long 3883834623
- .long 1018602870
- .long 1328010624
- .long 1067908107
- .long 1791097456
- .long 1019053126
- .long 2217794048
- .long 1067973505
- .long 551619938
- .long 1018494194
- .long 3333520000
- .long 1068038891
- .long 2390331823
- .long 1019033022
- .long 2557052032
- .long 1068104265
- .long 2423976108
- .long 1019728674
- .long 2067649536
- .long 1068169626
- .long 3757397745
- .long 1018672362
- .long 4047094784
- .long 1068234973
- .long 481613184
- .long 1019275104
- .long 2089853184
- .long 1068300307
- .long 1733914374
- .long 1020124677
- .long 2678003840
- .long 1068365626
- .long 1373600282
- .long 1013935474
- .long 3706496128
- .long 1068430930
- .long 1000610902
- .long 1019673285
- .long 3073179008
- .long 1068496219
- .long 1497143008
- .long 1019900342
- .long 2803716736
- .long 1068562846
- .long 1476677416
- .long 1019444094
- .long 3204984128
- .long 1068628077
- .long 1192335905
- .long 1018748628
- .long 831146624
- .long 1068693273
- .long 2733586224
- .long 1018823295
- .long 243029376
- .long 1068758431
- .long 950106081
- .long 1019046675
- .long 1735561920
- .long 1068823549
- .long 3546440856
- .long 1020104712
- .long 1339217792
- .long 1068888626
- .long 3028812387
- .long 1019818321
- .long 3706342144
- .long 1068953659
- .long 3814564029
- .long 1017763871
- .long 637726976
- .long 1069018648
- .long 3584007699
- .long 1017976868
- .long 1148779264
- .long 1069083589
- .long 2282532133
- .long 1019483954
- .long 1406131392
- .long 1069148481
- .long 1547359113
- .long 1019786342
- .long 1908875904
- .long 1069213322
- .long 1315508410
- .long 1020009473
- .long 3194947520
- .long 1069278110
- .long 3845393201
- .long 1015803761
- .long 1547487744
- .long 1069342844
- .long 3863107865
- .long 1019810104
- .long 1881061952
- .long 1069407521
- .long 4288343548
- .long 1019687581
- .long 563086336
- .long 1069472140
- .long 2582230241
- .long 1020099350
- .long 2594975552
- .long 1069536698
- .long 2306443764
- .long 1019667244
- .long 3438545024
- .long 1069606573
- .long 957455549
- .long 1015587735
- .long 4211357472
- .long 1069670906
- .long 2611778754
- .long 1017877214
- .long 3002835424
- .long 1069735101
- .long 235580458
- .long 1020211685
- .long 3905315424
- .long 1069799150
- .long 3630647617
- .long 1018736849
- .long 2849656576
- .long 1069863047
- .long 2412165062
- .long 1019693004
- .long 507429472
- .long 1069926785
- .long 1397750723
- .long 1018412717
- .long 2307470272
- .long 1069990356
- .long 1796470904
- .long 1019796181
- .long 1271814912
- .long 1070053755
- .long 189761565
- .long 1016149115
- .long 3800538144
- .long 1070116974
- .long 2524871582
- .long 1018263353
- .long 3916203552
- .long 1070180008
- .long 127848658
- .long 1017672664
- .long 457192032
- .long 1070242851
- .long 4020400938
- .long 1019823010
- .long 1385324704
- .long 1070305495
- .long 564511179
- .long 1016079094
- .long 2322869856
- .long 1070367935
- .long 2347103319
- .long 1018927760
- .long 3743438624
- .long 1070430165
- .long 877973862
- .long 1019638162
- .long 2392255552
- .long 1070492180
- .long 2432782267
- .long 1018872629
- .long 4180443328
- .long 1070553973
- .long 3102990015
- .long 1020093101
- .long 2547540832
- .long 1070636485
- .long 3877738253
- .long 1017300424
- .long 2735468912
- .long 1070697461
- .long 2446470256
- .long 1019235378
- .long 542633792
- .long 1070757943
- .long 583606328
- .long 1018624131
- .long 923265984
- .long 1070817911
- .long 1793926708
- .long 1019714161
- .long 918728448
- .long 1070877348
- .long 3726463586
- .long 1019433296
- .long 2572275008
- .long 1070936237
- .long 1845354238
- .long 1019459238
- .long 50974688
- .long 1070994564
- .long 983808064
- .long 1016685418
- .long 1105518320
- .long 1071052313
- .long 2357496692
- .long 1015139882
- .long 1264825328
- .long 1071109472
- .long 2244129354
- .long 1019046344
- .long 961157920
- .long 1071166029
- .long 3124185339
- .long 1018541776
- .long 1162701584
- .long 1071221973
- .long 1279780948
- .long 1019268918
- .long 3284935664
- .long 1071277294
- .long 2670033472
- .long 1019833744
- .long 497441888
- .long 1071331985
- .long 1032737410
- .long 1019795212
- .long 3377383904
- .long 1071386036
- .long 2356897182
- .long 1020205553
- .long 1126962000
- .long 1071439443
- .long 3723724586
- .long 1015212418
- .long 90291008
- .long 1071492199
- .long 4178672431
- .long 1020186971
- .long 190059536
- .long 1071595741
- .long 1763589807
- .long 1019162163
- .long 2497392840
- .long 1071670654
- .long 3036997041
- .long 1020204325
- .long 2616971944
- .long 1071719773
- .long 300151069
- .long 1017041957
- .long 2883518128
- .long 1071767563
- .long 2203981414
- .long 1019190108
- .long 1496354352
- .long 1071814030
- .long 332287966
- .long 1016846435
- .long 483276728
- .long 1071859184
- .long 653845024
- .long 1018830914
- .long 3097401072
- .long 1071903039
- .long 1514746408
- .long 1019278972
- .long 2737217248
- .long 1071945615
- .long 1358845067
- .long 1017268275
- .long 2072577560
- .long 1071986933
- .long 3041024735
- .long 1019929672
- .long 2266405656
- .long 1072027017
- .long 1271261130
- .long 1012925070
- .long 958652544
- .long 1072065894
- .long 2158017058
- .long 1019955372
- .long 3312993840
- .long 1072103591
- .long 765809169
- .long 1019114443
- .long 3177001304
- .long 1072140139
- .long 144180084
- .long 1019822186
- .long 3071642184
- .long 1072175568
- .long 4004602424
- .long 1019420740
- .long 4283953648
- .long 1072209909
- .long 1511950430
- .long 1020176966
- .long 1413754136
- .long 1072243195
- .long 856972295
- .long 1015129638
- .long 4073202944
- .long 1072306725
- .long 4068194804
- .long 1019714860
- .long 946117760
- .long 1072366415
- .long 694980733
- .long 1020150135
- .long 3980632032
- .long 1072422512
- .long 1313251280
- .long 1019948709
- .long 1468297112
- .long 1072475260
- .long 330111143
- .long 1019809198
- .long 3478063816
- .long 1072524887
- .long 2930067044
- .long 1017784081
- .long 1153979856
- .long 1072571613
- .long 2225786102
- .long 1017634481
- .long 2089828808
- .long 1072615641
- .long 474621367
- .long 1017043414
- .long 3531732632
- .long 1072657163
- .long 2276396220
- .long 1018757240
- .long 775214612
- .long 1072694803
- .long 3209744818
- .long 1019963015
- .long 662307284
- .long 1072713319
- .long 1381696763
- .long 1019763781
- .long 1192776652
- .long 1072730830
- .long 3017932994
- .long 1015179769
- .long 744202396
- .long 1072747407
- .long 2073854034
- .long 1019512292
- .long 8337908
- .long 1072763115
- .long 16004448
- .long 1019599514
- .long 3589868768
- .long 1072778013
- .long 1374369804
- .long 1018019237
- .long 121647320
- .long 1072792159
- .long 128481634
- .long 1018115438
- .long 2464923204
- .long 1072805601
- .long 1787331214
- .long 1016798022
- .long 4093304372
- .long 1072830562
- .long 3306868969
- .long 1019384078
- .long 1436891684
- .long 1072853231
- .long 676347266
- .long 1017302183
- .long 1104571840
- .long 1072873890
- .long 2870400285
- .long 1019938149
- .long 2037009832
- .long 1072892781
- .long 2956702105
- .long 1016472908
- .long 3139037960
- .long 1072910111
- .long 916057147
- .long 1018364335
- .long 1826698064
- .long 1072926058
- .long 2171961098
- .long 1019669816
- .long 1353941060
- .long 1072940774
- .long 1722928782
- .long 1019926215
- .long 1803191644
- .long 1072954391
- .long 1547878639
- .long 1020259262
- .long 1092591296
- .long 1072967024
- .long 3070107923
- .long 1018320401
- .long 2205372832
- .long 1072978772
- .long 787328196
- .long 1014621351
- .long 1291577100
- .long 1072989723
- .long 2964757301
- .long 1020242528
- .long 4234512804
- .long 1072999952
- .long 3136030038
- .long 1017522144
- .long 3248069132
- .long 1073009528
- .long 1506192355
- .long 1018050472
- .long 3932628500
- .long 1073018509
- .long 1045823554
- .long 1019946655
- .long 4195697848
- .long 1073026948
- .long 233443322
- .long 1018917447
- .long 2501811452
- .long 1073034892
- .long 901427976
- .long 1017333852
- .long 866379428
- .long 1073049455
- .long 2437443742
- .long 1019678792
- .long 1376865888
- .long 1073062480
- .long 3365790232
- .long 1014547152
- .long 3290094268
- .long 1073074195
- .long 3898947415
- .long 1018683566
- .long 354764884
- .long 1073084787
- .long 3854322404
- .long 1019662058
- .long 3332975496
- .long 1073094406
- .long 3171701655
- .long 1017830922
- .long 1141460088
- .long 1073103181
- .long 3946082701
- .long 1020032019
- .long 745761284
- .long 1073111216
- .long 1347210591
- .long 1019106121
- .long 1673304508
- .long 1073118600
- .long 1760606642
- .long 1017324577
- .long 983388240
- .long 1073125409
- .long 3740651204
- .long 1019514104
- .long 3895509100
- .long 1073131706
- .long 2409629983
- .long 1020069322
- .long 2128523668
- .long 1073137548
- .long 3045605368
- .long 1018579174
- .long 2075485692
- .long 1073142981
- .long 3720571789
- .long 1017557436
- .long 121855976
- .long 1073148047
- .long 2391744767
- .long 1020160645
- .long 4181733780
- .long 1073152780
- .long 995028816
- .long 1019681295
- .long 2887813280
- .long 1073157214
- .long 218733247
- .long 1020003509
- .long 2862180896
- .long 1073161375
- .long 2043806490
- .long 1018602288
- .long 3909375184
- .long 1073168973
- .long 1559903412
- .long 1020103444
- .long 3533966292
- .long 1073175738
- .long 734884149
- .long 1018462962
- .long 3815044608
- .long 1073181799
- .long 3630523428
- .long 1017250093
- .long 739639376
- .long 1073187261
- .long 4167476661
- .long 1020008277
- .long 1068309648
- .long 1073192207
- .long 2110061437
- .long 1019295858
- .long 2350566352
- .long 1073196707
- .long 582596516
- .long 1018568821
- .long 2529520024
- .long 1073200819
- .long 745552787
- .long 1019053165
- .long 1841667508
- .long 1073204591
- .long 3982568700
- .long 1016503327
- .long 2242261080
- .long 1073208063
- .long 3433582258
- .long 1016196763
- .long 715134328
- .long 1073211270
- .long 355901358
- .long 1020087916
- .long 2700735876
- .long 1073214240
- .long 3640957736
- .long 1019780205
- .long 141607580
- .long 1073217000
- .long 2488245051
- .long 1020262395
- .long 287934404
- .long 1073219570
- .long 2392691085
- .long 1019883292
- .long 2363373988
- .long 1073221969
- .long 4194561737
- .long 1019237447
- .long 3829340424
- .long 1073224214
- .long 429455526
- .long 1019490975
- .long 1988805928
- .long 1073226320
- .long 3029848706
- .long 1018104889
- .long 1647572320
- .long 1073230161
- .long 10289938
- .long 1017394880
- .long 3988000624
- .long 1073233576
- .long 1957559169
- .long 1019434816
- .long 4263843944
- .long 1073236633
- .long 204710264
- .long 1019908761
- .long 663197724
- .long 1073239386
- .long 1921757578
- .long 1019778948
- .long 3560800700
- .long 1073241876
- .long 3994348896
- .long 1019230192
- .long 2441785656
- .long 1073244141
- .long 871468611
- .long 1014800505
- .long 3277400272
- .long 1073246209
- .long 4092218139
- .long 1020040842
- .long 3951990120
- .long 1073248105
- .long 4276546478
- .long 1019763677
- .long 2737338540
- .long 1073249850
- .long 252776012
- .long 1018794951
- .long 1511361316
- .long 1073251461
- .long 3119653999
- .long 1018514803
- .long 3969162516
- .long 1073252952
- .long 1037069016
- .long 1016792900
- .long 413985240
- .long 1073254338
- .long 4110171432
- .long 1020001345
- .long 3681283576
- .long 1073255627
- .long 1463092818
- .long 1020260354
- .long 3146455488
- .long 1073256831
- .long 1031209123
- .long 1016554799
- .long 95214512
- .long 1073257958
- .long 1373808632
- .long 1019493031
- .long 4250240828
- .long 1073259013
- .long 3891047882
- .long 1020108730
- .long 1413754136
- .long 1073291771
- .long 856972295
- .long 1016178214
- .type ATAN_TBL,@object
- .size ATAN_TBL,2624
- .align 16
-P_TBL2:
- .long 0
- .long 0
- .long 0
- .long 0
- .long 0
- .long 0
- .long 0
- .long 0
- .long 856972295
- .long 1017226790
- .long 1413754136
- .long 1074340347
- .long 856972295
- .long 3164710438
- .long 1413754136
- .long 3221823995
- .type P_TBL2,@object
- .size P_TBL2,64
- .align 16
-SELECT_B:
- .long 0
- .long 0
- .long 4294967295
- .long 4294967295
- .long 0
- .long 0
- .long 4294967295
- .long 4294967295
- .long 4294967295
- .long 4294967295
- .long 0
- .long 0
- .long 4294967295
- .long 4294967295
- .long 0
- .long 0
- .type SELECT_B,@object
- .size SELECT_B,64
- .align 16
-SGNMASK:
- .long 0
- .long 2147483648
- .long 0
- .long 2147483648
- .type SGNMASK,@object
- .size SGNMASK,16
- .align 16
-pi_table:
- .long 1413754136
- .long 1074340347
- .long 856972295
- .long 1017226790
- .type pi_table,@object
- .size pi_table,16
- .align 16
-pi2_table:
- .long 1413754136
- .long 1073291771
- .long 856972295
- .long 1016178214
- .type pi2_table,@object
- .size pi2_table,16
- .align 16
-pi4_table:
- .long 1413754136
- .long 1072243195
- .long 856972295
- .long 1015129638
- .type pi4_table,@object
- .size pi4_table,16
- .align 4
-POW55:
- .long 0
- .long 1130364928
- .type POW55,@object
- .size POW55,8
- .align 4
-INVEXPMASK:
- .long 4294967295
- .long 2148532223
- .type INVEXPMASK,@object
- .size INVEXPMASK,8
- .align 4
-EXPMASK:
- .long 0
- .long 1072693248
- .type EXPMASK,@object
- .size EXPMASK,8
- .data
- .section .note.GNU-stack, "",@progbits
-// -- Begin DWARF2 SEGMENT .eh_frame
- .section .eh_frame,"a",@progbits
-.eh_frame_seg:
- .align 1
- .4byte 0x00000014
- .8byte 0x00527a0100000000
- .8byte 0x08070c1b01107801
- .4byte 0x00000190
- .4byte 0x0000001c
- .4byte 0x0000001c
- .4byte ..___tag_value_atan2.1-.
- .4byte ..___tag_value_atan2.5-..___tag_value_atan2.1
- .2byte 0x0400
- .4byte ..___tag_value_atan2.3-..___tag_value_atan2.1
- .2byte 0x200e
- .byte 0x04
- .4byte ..___tag_value_atan2.4-..___tag_value_atan2.3
- .2byte 0x080e
- .byte 0x00
-# End
diff --git a/libm/x86_64/e_cosh.S b/libm/x86_64/e_cosh.S
deleted file mode 100644
index 97cb389..0000000
--- a/libm/x86_64/e_cosh.S
+++ /dev/null
@@ -1,1372 +0,0 @@
-/*
-Copyright (c) 2014, Intel Corporation
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
-
- * Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
-
- * Neither the name of Intel Corporation nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
-ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/******************************************************************************/
-// ALGORITHM DESCRIPTION
-// ---------------------
-//
-// cosh(x)=(exp(x)+exp(-x))/2
-//
-// Let |x|=xH+xL (upper 26 bits, lower 27 bits)
-// log2(e) rounded to 26 bits (high part) plus a double precision low part is
-// L2EH+L2EL (upper 26, lower 53 bits)
-//
-// Let xH*L2EH=k+f+r`, where (k+f)*2^7=int(xH*L2EH*2^7),
-// f=0.b1 b2 ... b7, k integer
-// 2^f is approximated as Tp[f]+Dp[f], and 2^{-f} as Tn[f]+Dn[f]
-// Tp stores higher 53 bits, Dp stores (2^f-Tp[f]) rounded to double precision
-//
-// e^|x|=2^{k+f}*2^r, r=r`+xL*L2EH+|x|*L2EL, |r|<2^{-8}+2^{-14},
-// for |x| in [1/8,3*2^8)
-// e^{-|x|}=2^{-k-f}*2^{-r}
-//
-// e^|x| is approximated as 2^k*Tp+2^k*Tp*c1*r(1+c2*r+..+c5*r^4)+2^k*Dp=
-// =2^k*Tp+2^k*Tp*P15+2^k*Dp
-// e^{-|x|} approximated as 2^{-k}*Tn-2^{-k}*Tn*c1*r(1-c2*r+..+c5*r^4)
-//
-// For |x| in [1/8, 3*2^7), cosh(x) is formed as
-// RN(2^k*Tp+2^{-k}*Tn)+2^k*Tp*P15+2^{-k}*Tn*P`15+2^{-k}*TnL+2^{-k}*Dn+2^k*Dp
-//
-// For |x| in [3*2^7, 3*2^8), (e^|x|)/2 is returned, and
-// the result is checked for overflow.
-//
-// For |x|<1/8, a Taylor polynomial expansion is used (degree 10)
-// (error bound for polynomial expansion is below 0.501 ulp)
-//
-// Special cases:
-// cosh(NaN) = quiet NaN, and raise invalid exception
-// cosh(INF) = that INF
-// cosh(0)=1
-// for finite argument, only cosh(0)=1 is exact
-// For IEEE double
-// cosh(x) overflows
-// for x > 710.47586007394386342639336362481117248535156250 = MAXLOG+log(2)
-//
-/******************************************************************************/
-
-#include <private/bionic_asm.h>
-
-# -- Begin cosh
-ENTRY(cosh)
-# parameter 1: %xmm0
-..B1.1:
-..___tag_value_cosh.1:
- pushq %rsi
-..___tag_value_cosh.3:
-..B1.2:
- movsd HALFMASK(%rip), %xmm3
- xorpd %xmm4, %xmm4
- movsd L2E(%rip), %xmm1
- movsd 8+L2E(%rip), %xmm2
- movl $32768, %eax
- pinsrw $3, %eax, %xmm4
- movsd Shifter(%rip), %xmm6
- pextrw $3, %xmm0, %ecx
- andpd %xmm0, %xmm3
- andnpd %xmm0, %xmm4
- pshufd $68, %xmm4, %xmm5
- andl $32767, %ecx
- subl $16320, %ecx
- cmpl $200, %ecx
- jae .L_2TAG_PACKET_0.0.2
- subsd %xmm3, %xmm4
- mulsd %xmm1, %xmm3
- mulsd %xmm5, %xmm2
- cvtsd2si %xmm3, %eax
- movq %xmm3, %xmm7
- addsd %xmm6, %xmm3
- mulsd %xmm4, %xmm1
- xorpd %xmm5, %xmm5
- subsd %xmm6, %xmm3
- movapd cv(%rip), %xmm4
- addsd %xmm1, %xmm2
- movapd 16+cv(%rip), %xmm6
- subsd %xmm3, %xmm7
- movl $32704, %edx
- pinsrw $3, %edx, %xmm5
- movapd 32+cv(%rip), %xmm1
- addsd %xmm7, %xmm2
- movl $127, %edx
- andl %eax, %edx
- addl %edx, %edx
- shrl $3, %eax
- andl $65520, %eax
- addl $16352, %eax
- xorpd %xmm0, %xmm0
- cmpl $184, %ecx
- jae .L_2TAG_PACKET_1.0.2
- pshufd $68, %xmm5, %xmm5
- pinsrw $3, %eax, %xmm0
- pshufd $68, %xmm0, %xmm0
- psubw %xmm0, %xmm5
- lea T2f(%rip), %r8
- mulpd (%r8,%rdx,8), %xmm0
- lea T2_neg_f(%rip), %r8
- mulpd (%r8,%rdx,8), %xmm5
- pshufd $68, %xmm2, %xmm3
- movapd 48+cv(%rip), %xmm7
- pshufd $68, %xmm2, %xmm2
- mulpd %xmm3, %xmm3
- mulpd %xmm2, %xmm4
- mulpd %xmm2, %xmm6
- mulpd 64+cv(%rip), %xmm2
- mulpd %xmm3, %xmm1
- mulpd %xmm3, %xmm7
- mulpd %xmm3, %xmm4
- mulpd %xmm3, %xmm1
- addpd %xmm7, %xmm6
- movq %xmm0, %xmm7
- addpd %xmm1, %xmm4
- shufpd $0, %xmm5, %xmm7
- addpd %xmm5, %xmm0
- mulpd %xmm7, %xmm2
- addpd %xmm6, %xmm4
- subsd %xmm0, %xmm7
- mulpd %xmm2, %xmm4
- pshufd $238, %xmm0, %xmm6
- addsd %xmm5, %xmm7
- addpd %xmm2, %xmm4
- addsd %xmm6, %xmm7
- pshufd $238, %xmm4, %xmm2
- addsd %xmm7, %xmm2
- addsd %xmm4, %xmm2
- addsd %xmm2, %xmm0
- jmp ..B1.5
-.L_2TAG_PACKET_0.0.2:
- addl $16320, %ecx
- cmpl $16320, %ecx
- ja .L_2TAG_PACKET_2.0.2
- cmpl $15952, %ecx
- jae .L_2TAG_PACKET_3.0.2
- addsd %xmm2, %xmm6
- movq ONEMASK(%rip), %xmm0
- jmp ..B1.5
-.L_2TAG_PACKET_1.0.2:
- subl $16352, %eax
- movl %eax, %ecx
- andl $32752, %eax
- shrl $1, %eax
- andl $65520, %eax
- subl %eax, %ecx
- addl $16352, %eax
- pinsrw $3, %eax, %xmm0
- pshufd $68, %xmm0, %xmm0
- lea T2f(%rip), %r8
- mulpd (%r8,%rdx,8), %xmm0
- pshufd $68, %xmm2, %xmm3
- movsd 48+cv(%rip), %xmm7
- mulsd %xmm3, %xmm3
- mulsd %xmm2, %xmm4
- mulsd %xmm2, %xmm6
- mulsd 64+cv(%rip), %xmm2
- mulsd %xmm3, %xmm1
- mulsd %xmm3, %xmm7
- mulsd %xmm3, %xmm4
- addl $16368, %ecx
- pinsrw $3, %ecx, %xmm5
- mulsd %xmm3, %xmm1
- addsd %xmm7, %xmm6
- addsd %xmm1, %xmm4
- mulsd %xmm0, %xmm2
- addsd %xmm6, %xmm4
- mulsd %xmm2, %xmm4
- pshufd $238, %xmm0, %xmm6
- addsd %xmm6, %xmm4
- addsd %xmm4, %xmm2
- addsd %xmm2, %xmm0
- mulsd %xmm5, %xmm0
- pextrw $3, %xmm0, %eax
- andl $32752, %eax
- cmpl $32752, %eax
- je .L_2TAG_PACKET_4.0.2
- jmp ..B1.5
-.L_2TAG_PACKET_3.0.2:
- movapd pv(%rip), %xmm1
- mulpd %xmm5, %xmm5
- movapd 16+pv(%rip), %xmm2
- xorpd %xmm3, %xmm3
- movq %xmm5, %xmm0
- mulpd %xmm5, %xmm1
- movsd ONEMASK(%rip), %xmm6
- mulpd %xmm5, %xmm5
- movl $16352, %eax
- pinsrw $3, %eax, %xmm3
- addpd %xmm2, %xmm1
- mulpd %xmm5, %xmm1
- pshufd $238, %xmm1, %xmm2
- mulsd %xmm1, %xmm5
- mulsd %xmm3, %xmm0
- addsd %xmm5, %xmm2
- addsd %xmm2, %xmm0
- addsd %xmm6, %xmm0
- jmp ..B1.5
-.L_2TAG_PACKET_2.0.2:
- cmpl $32752, %ecx
- jae .L_2TAG_PACKET_5.0.2
- xorpd %xmm0, %xmm0
- movl $32736, %eax
- pinsrw $3, %eax, %xmm0
- mulsd %xmm0, %xmm0
- jmp .L_2TAG_PACKET_4.0.2
-.L_2TAG_PACKET_5.0.2:
- mulsd %xmm0, %xmm0
- jmp ..B1.5
-.L_2TAG_PACKET_4.0.2:
- movq %xmm0, (%rsp)
-..B1.3:
- movq (%rsp), %xmm0
-.L_2TAG_PACKET_6.0.2:
-..B1.5:
- popq %rcx
-..___tag_value_cosh.4:
- ret
-..___tag_value_cosh.5:
-END(cosh)
-# -- End cosh
- .section .rodata, "a"
- .align 16
- .align 16
-L2E:
- .long 1610612736
- .long 1080497479
- .long 4166901572
- .long 1053077003
- .type L2E,@object
- .size L2E,16
- .align 16
-Shifter:
- .long 0
- .long 1127743488
- .long 0
- .long 3275227136
- .type Shifter,@object
- .size Shifter,16
- .align 16
-cv:
- .long 3607404736
- .long 1044146952
- .long 3607404736
- .long 3191630600
- .long 4277811695
- .long 1063661122
- .long 4277811695
- .long 3211144770
- .long 2140175755
- .long 1033864261
- .long 2140175755
- .long 1033864261
- .long 4289495988
- .long 1054113747
- .long 4289495988
- .long 1054113747
- .long 4277811695
- .long 1064709698
- .long 4277811695
- .long 3212193346
- .type cv,@object
- .size cv,80
- .align 16
-T2f:
- .long 0
- .long 1072693248
- .long 0
- .long 0
- .long 2851812149
- .long 1072698941
- .long 2595802551
- .long 1016815913
- .long 1048019041
- .long 1072704666
- .long 1398474845
- .long 3161559171
- .long 3899555717
- .long 1072710421
- .long 427280750
- .long 3163595548
- .long 3541402996
- .long 1072716208
- .long 2759177317
- .long 1015903202
- .long 702412510
- .long 1072722027
- .long 3803266087
- .long 3163328991
- .long 410360776
- .long 1072727877
- .long 1269990655
- .long 1013024446
- .long 3402036099
- .long 1072733758
- .long 405889334
- .long 1016154232
- .long 1828292879
- .long 1072739672
- .long 1255956747
- .long 1016636974
- .long 728909815
- .long 1072745618
- .long 383930225
- .long 1016078044
- .long 852742562
- .long 1072751596
- .long 667253586
- .long 1010842135
- .long 2952712987
- .long 1072757606
- .long 3293494651
- .long 3161168877
- .long 3490863953
- .long 1072763649
- .long 960797498
- .long 3163997456
- .long 3228316108
- .long 1072769725
- .long 3010241991
- .long 3159471380
- .long 2930322912
- .long 1072775834
- .long 2599499422
- .long 3163762623
- .long 3366293073
- .long 1072781976
- .long 3119426314
- .long 1015169130
- .long 1014845819
- .long 1072788152
- .long 3117910646
- .long 3162607681
- .long 948735466
- .long 1072794361
- .long 3516338028
- .long 3163623459
- .long 3949972341
- .long 1072800603
- .long 2068408548
- .long 1015962444
- .long 2214878420
- .long 1072806880
- .long 892270087
- .long 3164164998
- .long 828946858
- .long 1072813191
- .long 10642492
- .long 1016988014
- .long 586995997
- .long 1072819536
- .long 41662348
- .long 3163676568
- .long 2288159958
- .long 1072825915
- .long 2169144469
- .long 1015924597
- .long 2440944790
- .long 1072832329
- .long 2492769774
- .long 1015196030
- .long 1853186616
- .long 1072838778
- .long 3066496371
- .long 1016705150
- .long 1337108031
- .long 1072845262
- .long 3203724452
- .long 1015726421
- .long 1709341917
- .long 1072851781
- .long 2571168217
- .long 1015201075
- .long 3790955393
- .long 1072858335
- .long 2352942462
- .long 3164228666
- .long 4112506593
- .long 1072864925
- .long 2947355221
- .long 1015419624
- .long 3504003472
- .long 1072871551
- .long 3594001060
- .long 3158379228
- .long 2799960843
- .long 1072878213
- .long 1423655381
- .long 1016070727
- .long 2839424854
- .long 1072884911
- .long 1171596163
- .long 1014090255
- .long 171030293
- .long 1072891646
- .long 3526460132
- .long 1015477354
- .long 4232894513
- .long 1072898416
- .long 2383938684
- .long 1015717095
- .long 2992903935
- .long 1072905224
- .long 2218154406
- .long 1016276769
- .long 1603444721
- .long 1072912069
- .long 1548633640
- .long 3163249902
- .long 926591435
- .long 1072918951
- .long 3208833762
- .long 3163962090
- .long 1829099622
- .long 1072925870
- .long 1016661181
- .long 3164509581
- .long 887463927
- .long 1072932827
- .long 3596744163
- .long 3161842742
- .long 3272845541
- .long 1072939821
- .long 928852419
- .long 3164536824
- .long 1276261410
- .long 1072946854
- .long 300981948
- .long 1015732745
- .long 78413852
- .long 1072953925
- .long 4183226867
- .long 3164065827
- .long 569847338
- .long 1072961034
- .long 472945272
- .long 3160339305
- .long 3645941911
- .long 1072968181
- .long 3814685081
- .long 3162621917
- .long 1617004845
- .long 1072975368
- .long 82804944
- .long 1011391354
- .long 3978100823
- .long 1072982593
- .long 3513027190
- .long 1016894539
- .long 3049340112
- .long 1072989858
- .long 3062915824
- .long 1014219171
- .long 4040676318
- .long 1072997162
- .long 4090609238
- .long 1016712034
- .long 3577096743
- .long 1073004506
- .long 2951496418
- .long 1014842263
- .long 2583551245
- .long 1073011890
- .long 3161094195
- .long 1016655067
- .long 1990012071
- .long 1073019314
- .long 3529070563
- .long 3163861769
- .long 2731501122
- .long 1073026778
- .long 1774031855
- .long 3163518597
- .long 1453150082
- .long 1073034283
- .long 498154669
- .long 3162536638
- .long 3395129871
- .long 1073041828
- .long 4025345435
- .long 3163383964
- .long 917841882
- .long 1073049415
- .long 18715565
- .long 1016707884
- .long 3566716925
- .long 1073057042
- .long 1536826856
- .long 1015191009
- .long 3712504873
- .long 1073064711
- .long 88491949
- .long 1016476236
- .long 2321106615
- .long 1073072422
- .long 2171176610
- .long 1010584347
- .long 363667784
- .long 1073080175
- .long 813753950
- .long 1016833785
- .long 3111574537
- .long 1073087969
- .long 2606161479
- .long 3163808322
- .long 2956612997
- .long 1073095806
- .long 2118169751
- .long 3163784129
- .long 885834528
- .long 1073103686
- .long 1973258547
- .long 3163310140
- .long 2186617381
- .long 1073111608
- .long 2270764084
- .long 3164321289
- .long 3561793907
- .long 1073119573
- .long 1157054053
- .long 1012938926
- .long 1719614413
- .long 1073127582
- .long 330458198
- .long 3164331316
- .long 1963711167
- .long 1073135634
- .long 1744767757
- .long 3161622870
- .long 1013258799
- .long 1073143730
- .long 1748797611
- .long 3161177658
- .long 4182873220
- .long 1073151869
- .long 629542646
- .long 3163044879
- .long 3907805044
- .long 1073160053
- .long 2257091225
- .long 3162598983
- .long 1218806132
- .long 1073168282
- .long 1818613052
- .long 3163597017
- .long 1447192521
- .long 1073176555
- .long 1462857171
- .long 3163563097
- .long 1339972927
- .long 1073184873
- .long 167908909
- .long 1016620728
- .long 1944781191
- .long 1073193236
- .long 3993278767
- .long 3162772855
- .long 19972402
- .long 1073201645
- .long 3507899862
- .long 1017057868
- .long 919555682
- .long 1073210099
- .long 3121969534
- .long 1013996802
- .long 1413356050
- .long 1073218599
- .long 1651349291
- .long 3163716742
- .long 2571947539
- .long 1073227145
- .long 3558159064
- .long 3164425245
- .long 1176749997
- .long 1073235738
- .long 2738998779
- .long 3163084420
- .long 2604962541
- .long 1073244377
- .long 2614425274
- .long 3164587768
- .long 3649726105
- .long 1073253063
- .long 4085036346
- .long 1016698050
- .long 1110089947
- .long 1073261797
- .long 1451641639
- .long 1016523249
- .long 380978316
- .long 1073270578
- .long 854188970
- .long 3161511262
- .long 2568320822
- .long 1073279406
- .long 2732824428
- .long 1015401491
- .long 194117574
- .long 1073288283
- .long 777528612
- .long 3164460665
- .long 2966275557
- .long 1073297207
- .long 2176155324
- .long 3160891335
- .long 3418903055
- .long 1073306180
- .long 2527457337
- .long 3161869180
- .long 2682146384
- .long 1073315202
- .long 2082178513
- .long 3164411995
- .long 1892288442
- .long 1073324273
- .long 2446255666
- .long 3163648957
- .long 2191782032
- .long 1073333393
- .long 2960257726
- .long 1014791238
- .long 434316067
- .long 1073342563
- .long 2028358766
- .long 1014506698
- .long 2069751141
- .long 1073351782
- .long 1562170675
- .long 3163773257
- .long 3964284211
- .long 1073361051
- .long 2111583915
- .long 1016475740
- .long 2990417245
- .long 1073370371
- .long 3683467745
- .long 3164417902
- .long 321958744
- .long 1073379742
- .long 3401933767
- .long 1016843134
- .long 1434058175
- .long 1073389163
- .long 251133233
- .long 1016134345
- .long 3218338682
- .long 1073398635
- .long 3404164304
- .long 3163525684
- .long 2572866477
- .long 1073408159
- .long 878562433
- .long 1016570317
- .long 697153126
- .long 1073417735
- .long 1283515429
- .long 3164331765
- .long 3092190715
- .long 1073427362
- .long 814012168
- .long 3160571998
- .long 2380618042
- .long 1073437042
- .long 3149557219
- .long 3164369375
- .long 4076559943
- .long 1073446774
- .long 2119478331
- .long 3161806927
- .long 815859274
- .long 1073456560
- .long 240396590
- .long 3164536019
- .long 2420883922
- .long 1073466398
- .long 2049810052
- .long 1015168464
- .long 1540824585
- .long 1073476290
- .long 1064017011
- .long 3164536266
- .long 3716502172
- .long 1073486235
- .long 2303740125
- .long 1015091301
- .long 1610600570
- .long 1073496235
- .long 3766732298
- .long 1016808759
- .long 777507147
- .long 1073506289
- .long 4282924205
- .long 1016236109
- .long 2483480501
- .long 1073516397
- .long 1216371780
- .long 1014082748
- .long 3706687593
- .long 1073526560
- .long 3521726940
- .long 1014301643
- .long 1432208378
- .long 1073536779
- .long 1401068914
- .long 3163412539
- .long 1242007932
- .long 1073547053
- .long 1132034716
- .long 3164388407
- .long 135105010
- .long 1073557383
- .long 1906148728
- .long 3164424315
- .long 3707479175
- .long 1073567768
- .long 3613079303
- .long 1015213314
- .long 382305176
- .long 1073578211
- .long 2347622376
- .long 3163627201
- .long 64696965
- .long 1073588710
- .long 1768797490
- .long 1016865536
- .long 4076975200
- .long 1073599265
- .long 2029000899
- .long 1016257111
- .long 863738719
- .long 1073609879
- .long 1326992220
- .long 3163661773
- .long 351641897
- .long 1073620550
- .long 2172261526
- .long 3164059175
- .long 3884662774
- .long 1073631278
- .long 2158611599
- .long 1015258761
- .long 4224142467
- .long 1073642065
- .long 3389820386
- .long 1016255778
- .long 2728693978
- .long 1073652911
- .long 396109971
- .long 3164511267
- .long 764307441
- .long 1073663816
- .long 3021057420
- .long 3164378099
- .long 3999357479
- .long 1073674779
- .long 2258941616
- .long 1016973300
- .long 929806999
- .long 1073685803
- .long 3205336643
- .long 1016308133
- .long 1533953344
- .long 1073696886
- .long 769171851
- .long 1016714209
- .long 2912730644
- .long 1073708029
- .long 3490067722
- .long 3164453650
- .long 2174652632
- .long 1073719233
- .long 4087714590
- .long 1015498835
- .long 730821105
- .long 1073730498
- .long 2523232743
- .long 1013115764
- .type T2f,@object
- .size T2f,2048
- .align 16
-T2_neg_f:
- .long 0
- .long 1072693248
- .long 0
- .long 0
- .long 730821105
- .long 1072681922
- .long 2523232743
- .long 1012067188
- .long 2174652632
- .long 1072670657
- .long 4087714590
- .long 1014450259
- .long 2912730644
- .long 1072659453
- .long 3490067722
- .long 3163405074
- .long 1533953344
- .long 1072648310
- .long 769171851
- .long 1015665633
- .long 929806999
- .long 1072637227
- .long 3205336643
- .long 1015259557
- .long 3999357479
- .long 1072626203
- .long 2258941616
- .long 1015924724
- .long 764307441
- .long 1072615240
- .long 3021057420
- .long 3163329523
- .long 2728693978
- .long 1072604335
- .long 396109971
- .long 3163462691
- .long 4224142467
- .long 1072593489
- .long 3389820386
- .long 1015207202
- .long 3884662774
- .long 1072582702
- .long 2158611599
- .long 1014210185
- .long 351641897
- .long 1072571974
- .long 2172261526
- .long 3163010599
- .long 863738719
- .long 1072561303
- .long 1326992220
- .long 3162613197
- .long 4076975200
- .long 1072550689
- .long 2029000899
- .long 1015208535
- .long 64696965
- .long 1072540134
- .long 1768797490
- .long 1015816960
- .long 382305176
- .long 1072529635
- .long 2347622376
- .long 3162578625
- .long 3707479175
- .long 1072519192
- .long 3613079303
- .long 1014164738
- .long 135105010
- .long 1072508807
- .long 1906148728
- .long 3163375739
- .long 1242007932
- .long 1072498477
- .long 1132034716
- .long 3163339831
- .long 1432208378
- .long 1072488203
- .long 1401068914
- .long 3162363963
- .long 3706687593
- .long 1072477984
- .long 3521726940
- .long 1013253067
- .long 2483480501
- .long 1072467821
- .long 1216371780
- .long 1013034172
- .long 777507147
- .long 1072457713
- .long 4282924205
- .long 1015187533
- .long 1610600570
- .long 1072447659
- .long 3766732298
- .long 1015760183
- .long 3716502172
- .long 1072437659
- .long 2303740125
- .long 1014042725
- .long 1540824585
- .long 1072427714
- .long 1064017011
- .long 3163487690
- .long 2420883922
- .long 1072417822
- .long 2049810052
- .long 1014119888
- .long 815859274
- .long 1072407984
- .long 240396590
- .long 3163487443
- .long 4076559943
- .long 1072398198
- .long 2119478331
- .long 3160758351
- .long 2380618042
- .long 1072388466
- .long 3149557219
- .long 3163320799
- .long 3092190715
- .long 1072378786
- .long 814012168
- .long 3159523422
- .long 697153126
- .long 1072369159
- .long 1283515429
- .long 3163283189
- .long 2572866477
- .long 1072359583
- .long 878562433
- .long 1015521741
- .long 3218338682
- .long 1072350059
- .long 3404164304
- .long 3162477108
- .long 1434058175
- .long 1072340587
- .long 251133233
- .long 1015085769
- .long 321958744
- .long 1072331166
- .long 3401933767
- .long 1015794558
- .long 2990417245
- .long 1072321795
- .long 3683467745
- .long 3163369326
- .long 3964284211
- .long 1072312475
- .long 2111583915
- .long 1015427164
- .long 2069751141
- .long 1072303206
- .long 1562170675
- .long 3162724681
- .long 434316067
- .long 1072293987
- .long 2028358766
- .long 1013458122
- .long 2191782032
- .long 1072284817
- .long 2960257726
- .long 1013742662
- .long 1892288442
- .long 1072275697
- .long 2446255666
- .long 3162600381
- .long 2682146384
- .long 1072266626
- .long 2082178513
- .long 3163363419
- .long 3418903055
- .long 1072257604
- .long 2527457337
- .long 3160820604
- .long 2966275557
- .long 1072248631
- .long 2176155324
- .long 3159842759
- .long 194117574
- .long 1072239707
- .long 777528612
- .long 3163412089
- .long 2568320822
- .long 1072230830
- .long 2732824428
- .long 1014352915
- .long 380978316
- .long 1072222002
- .long 854188970
- .long 3160462686
- .long 1110089947
- .long 1072213221
- .long 1451641639
- .long 1015474673
- .long 3649726105
- .long 1072204487
- .long 4085036346
- .long 1015649474
- .long 2604962541
- .long 1072195801
- .long 2614425274
- .long 3163539192
- .long 1176749997
- .long 1072187162
- .long 2738998779
- .long 3162035844
- .long 2571947539
- .long 1072178569
- .long 3558159064
- .long 3163376669
- .long 1413356050
- .long 1072170023
- .long 1651349291
- .long 3162668166
- .long 919555682
- .long 1072161523
- .long 3121969534
- .long 1012948226
- .long 19972402
- .long 1072153069
- .long 3507899862
- .long 1016009292
- .long 1944781191
- .long 1072144660
- .long 3993278767
- .long 3161724279
- .long 1339972927
- .long 1072136297
- .long 167908909
- .long 1015572152
- .long 1447192521
- .long 1072127979
- .long 1462857171
- .long 3162514521
- .long 1218806132
- .long 1072119706
- .long 1818613052
- .long 3162548441
- .long 3907805044
- .long 1072111477
- .long 2257091225
- .long 3161550407
- .long 4182873220
- .long 1072103293
- .long 629542646
- .long 3161996303
- .long 1013258799
- .long 1072095154
- .long 1748797611
- .long 3160129082
- .long 1963711167
- .long 1072087058
- .long 1744767757
- .long 3160574294
- .long 1719614413
- .long 1072079006
- .long 330458198
- .long 3163282740
- .long 3561793907
- .long 1072070997
- .long 1157054053
- .long 1011890350
- .long 2186617381
- .long 1072063032
- .long 2270764084
- .long 3163272713
- .long 885834528
- .long 1072055110
- .long 1973258547
- .long 3162261564
- .long 2956612997
- .long 1072047230
- .long 2118169751
- .long 3162735553
- .long 3111574537
- .long 1072039393
- .long 2606161479
- .long 3162759746
- .long 363667784
- .long 1072031599
- .long 813753950
- .long 1015785209
- .long 2321106615
- .long 1072023846
- .long 2171176610
- .long 1009535771
- .long 3712504873
- .long 1072016135
- .long 88491949
- .long 1015427660
- .long 3566716925
- .long 1072008466
- .long 1536826856
- .long 1014142433
- .long 917841882
- .long 1072000839
- .long 18715565
- .long 1015659308
- .long 3395129871
- .long 1071993252
- .long 4025345435
- .long 3162335388
- .long 1453150082
- .long 1071985707
- .long 498154669
- .long 3161488062
- .long 2731501122
- .long 1071978202
- .long 1774031855
- .long 3162470021
- .long 1990012071
- .long 1071970738
- .long 3529070563
- .long 3162813193
- .long 2583551245
- .long 1071963314
- .long 3161094195
- .long 1015606491
- .long 3577096743
- .long 1071955930
- .long 2951496418
- .long 1013793687
- .long 4040676318
- .long 1071948586
- .long 4090609238
- .long 1015663458
- .long 3049340112
- .long 1071941282
- .long 3062915824
- .long 1013170595
- .long 3978100823
- .long 1071934017
- .long 3513027190
- .long 1015845963
- .long 1617004845
- .long 1071926792
- .long 82804944
- .long 1010342778
- .long 3645941911
- .long 1071919605
- .long 3814685081
- .long 3161573341
- .long 569847338
- .long 1071912458
- .long 472945272
- .long 3159290729
- .long 78413852
- .long 1071905349
- .long 4183226867
- .long 3163017251
- .long 1276261410
- .long 1071898278
- .long 300981948
- .long 1014684169
- .long 3272845541
- .long 1071891245
- .long 928852419
- .long 3163488248
- .long 887463927
- .long 1071884251
- .long 3596744163
- .long 3160794166
- .long 1829099622
- .long 1071877294
- .long 1016661181
- .long 3163461005
- .long 926591435
- .long 1071870375
- .long 3208833762
- .long 3162913514
- .long 1603444721
- .long 1071863493
- .long 1548633640
- .long 3162201326
- .long 2992903935
- .long 1071856648
- .long 2218154406
- .long 1015228193
- .long 4232894513
- .long 1071849840
- .long 2383938684
- .long 1014668519
- .long 171030293
- .long 1071843070
- .long 3526460132
- .long 1014428778
- .long 2839424854
- .long 1071836335
- .long 1171596163
- .long 1013041679
- .long 2799960843
- .long 1071829637
- .long 1423655381
- .long 1015022151
- .long 3504003472
- .long 1071822975
- .long 3594001060
- .long 3157330652
- .long 4112506593
- .long 1071816349
- .long 2947355221
- .long 1014371048
- .long 3790955393
- .long 1071809759
- .long 2352942462
- .long 3163180090
- .long 1709341917
- .long 1071803205
- .long 2571168217
- .long 1014152499
- .long 1337108031
- .long 1071796686
- .long 3203724452
- .long 1014677845
- .long 1853186616
- .long 1071790202
- .long 3066496371
- .long 1015656574
- .long 2440944790
- .long 1071783753
- .long 2492769774
- .long 1014147454
- .long 2288159958
- .long 1071777339
- .long 2169144469
- .long 1014876021
- .long 586995997
- .long 1071770960
- .long 41662348
- .long 3162627992
- .long 828946858
- .long 1071764615
- .long 10642492
- .long 1015939438
- .long 2214878420
- .long 1071758304
- .long 892270087
- .long 3163116422
- .long 3949972341
- .long 1071752027
- .long 2068408548
- .long 1014913868
- .long 948735466
- .long 1071745785
- .long 3516338028
- .long 3162574883
- .long 1014845819
- .long 1071739576
- .long 3117910646
- .long 3161559105
- .long 3366293073
- .long 1071733400
- .long 3119426314
- .long 1014120554
- .long 2930322912
- .long 1071727258
- .long 2599499422
- .long 3162714047
- .long 3228316108
- .long 1071721149
- .long 3010241991
- .long 3158422804
- .long 3490863953
- .long 1071715073
- .long 960797498
- .long 3162948880
- .long 2952712987
- .long 1071709030
- .long 3293494651
- .long 3160120301
- .long 852742562
- .long 1071703020
- .long 667253586
- .long 1009793559
- .long 728909815
- .long 1071697042
- .long 383930225
- .long 1015029468
- .long 1828292879
- .long 1071691096
- .long 1255956747
- .long 1015588398
- .long 3402036099
- .long 1071685182
- .long 405889334
- .long 1015105656
- .long 410360776
- .long 1071679301
- .long 1269990655
- .long 1011975870
- .long 702412510
- .long 1071673451
- .long 3803266087
- .long 3162280415
- .long 3541402996
- .long 1071667632
- .long 2759177317
- .long 1014854626
- .long 3899555717
- .long 1071661845
- .long 427280750
- .long 3162546972
- .long 1048019041
- .long 1071656090
- .long 1398474845
- .long 3160510595
- .long 2851812149
- .long 1071650365
- .long 2595802551
- .long 1015767337
- .type T2_neg_f,@object
- .size T2_neg_f,2048
- .align 16
-pv:
- .long 3078135644
- .long 1049787983
- .long 381774870
- .long 1062650220
- .long 436314137
- .long 1056571808
- .long 1431655765
- .long 1067799893
- .type pv,@object
- .size pv,32
- .align 4
-HALFMASK:
- .long 4160749568
- .long 2147483647
- .type HALFMASK,@object
- .size HALFMASK,8
- .align 4
-ONEMASK:
- .long 0
- .long 1072693248
- .type ONEMASK,@object
- .size ONEMASK,8
- .data
- .section .note.GNU-stack, "",@progbits
-// -- Begin DWARF2 SEGMENT .eh_frame
- .section .eh_frame,"a",@progbits
-.eh_frame_seg:
- .align 1
- .4byte 0x00000014
- .8byte 0x00527a0100000000
- .8byte 0x08070c1b01107801
- .4byte 0x00000190
- .4byte 0x0000001c
- .4byte 0x0000001c
- .4byte ..___tag_value_cosh.1-.
- .4byte ..___tag_value_cosh.5-..___tag_value_cosh.1
- .2byte 0x0400
- .4byte ..___tag_value_cosh.3-..___tag_value_cosh.1
- .2byte 0x100e
- .byte 0x04
- .4byte ..___tag_value_cosh.4-..___tag_value_cosh.3
- .2byte 0x080e
- .byte 0x00
-# End
diff --git a/libm/x86_64/e_hypot.S b/libm/x86_64/e_hypot.S
deleted file mode 100644
index e46669f..0000000
--- a/libm/x86_64/e_hypot.S
+++ /dev/null
@@ -1,210 +0,0 @@
-/*
-Copyright (c) 2014, Intel Corporation
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
-
- * Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
-
- * Neither the name of Intel Corporation nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
-ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/******************************************************************************/
-// ALGORITHM DESCRIPTION
-// ---------------------
-//
-// X87 version:
-// Use 80-bit FPU precision fmul, fsqrt to compute square and sqrt.
-//
-// SSE version:
-// Swap x, y if |x|<|y|
-// For x=2^k*x, get y=y*2^(-k)
-// Get S ~ sqrt(x^2+y^2) (leading 1 + leading 25 mantissa bits)
-//
-// Get D = ( RN(x^2+y^2) - S^2 ) + ( x^2 - RN(x^2) ) +
-// + ( y^2 - ((RN(x^2+y^2)-RN(x^2)) )
-//
-// Result is 2^k*(S + Se), where Se = S*e
-// S*e is approximated as (D/2S)*( 1 - (D/2S)^2*1.0/S )
-//
-// Return 2^k*(S+Se)
-//
-// For |y/x|<2^(-64), return x
-//
-// For cases where maximum biased exponent is either greater than 7fdh or
-// below 32, take a special path to check for special cases (0, NaN, Inf),
-// possible overflow, and more accurate computation for denormal results
-//
-// Special cases:
-// hypot(x,y), hypot(y,x), and hypot(x,-y) are equivalent
-// hypot(x,+-0) is equivalent to fabs(x)
-// hypot(x,y) = y if (x==NaN or x==INF) and y==INF
-// hypot(x,y) = x if (x==NaN or x==INF) and y!=INF (even if y==NaN!)
-// hypot(x,y) = y if (x!=NaN and x!=INF) and (y==NaN or y==INF)
-//
-/******************************************************************************/
-
-#include <private/bionic_asm.h>
-# -- Begin hypot
-ENTRY(hypot)
-# parameter 1: %xmm0
-# parameter 2: %xmm1
-..B1.1:
-..___tag_value_hypot.1:
-..___tag_value_hypot.3:
-..B1.2:
- subq $64, %rsp
- movapd static_const_table(%rip), %xmm3
- movsd %xmm0, 48(%rsp)
- movsd %xmm1, 56(%rsp)
- andpd %xmm3, %xmm0
- andpd %xmm3, %xmm1
- pextrw $3, %xmm0, %eax
- pextrw $3, %xmm1, %edx
- cmpl $24528, %eax
- ja .L_2TAG_PACKET_0.0.1
- cmpl $24528, %edx
- ja .L_2TAG_PACKET_0.0.1
-.L_2TAG_PACKET_1.0.1:
- fldl 48(%rsp)
- fldl 56(%rsp)
- fxch %st(1)
- fmul %st(0), %st
- fxch %st(1)
- nop
- fmul %st(0), %st
- faddp %st, %st(1)
- fsqrt
- jmp .L_2TAG_PACKET_2.0.1
-.L_2TAG_PACKET_0.0.1:
- cmpl $32752, %eax
- movl %eax, %ecx
- jae .L_2TAG_PACKET_3.0.1
- subl %edx, %ecx
- cmpl $32752, %edx
- jae .L_2TAG_PACKET_3.0.1
- addl $928, %ecx
- addl %edx, %eax
- cmpl $1856, %ecx
- ja .L_2TAG_PACKET_4.0.1
- cmpl $49056, %eax
- jb .L_2TAG_PACKET_1.0.1
- fldl 48(%rsp)
- fldl 56(%rsp)
- fxch %st(1)
- fmul %st(0), %st
- fxch %st(1)
- nop
- fmul %st(0), %st
- faddp %st, %st(1)
- fsqrt
-.L_2TAG_PACKET_5.0.1:
- fstl (%rsp)
- fstpt 16(%rsp)
- xorl %eax, %eax
- movw 24(%rsp), %ax
- cmpl $17407, %eax
- jae .L_2TAG_PACKET_6.0.1
- fldl (%rsp)
- jmp .L_2TAG_PACKET_7.0.1
-.L_2TAG_PACKET_4.0.1:
- movsd %xmm0, 32(%rsp)
- movsd %xmm1, 40(%rsp)
- fldl 32(%rsp)
- faddl 40(%rsp)
- jmp .L_2TAG_PACKET_5.0.1
-.L_2TAG_PACKET_6.0.1:
- fldl (%rsp)
- jmp .L_2TAG_PACKET_7.0.1
-.L_2TAG_PACKET_3.0.1:
- shufpd $0, %xmm1, %xmm0
- movdqa %xmm0, %xmm2
- movdqa 16+static_const_table(%rip), %xmm3
- movsd %xmm0, 32(%rsp)
- movsd %xmm1, 40(%rsp)
- cmppd $3, %xmm0, %xmm2
- cmppd $0, %xmm0, %xmm3
- movmskpd %xmm2, %edx
- movmskpd %xmm3, %rax
- testl %edx, %edx
- je .L_2TAG_PACKET_8.0.1
- fldl 32(%rsp)
- fmull 40(%rsp)
- testq $1, %rax
- jne .L_2TAG_PACKET_9.0.1
- testq $2, %rax
- jne .L_2TAG_PACKET_10.0.1
- jmp .L_2TAG_PACKET_2.0.1
-.L_2TAG_PACKET_8.0.1:
- fldl 32(%rsp)
- faddl 40(%rsp)
- jmp .L_2TAG_PACKET_2.0.1
-.L_2TAG_PACKET_9.0.1:
- fstpl 40(%rsp)
- fldl 32(%rsp)
- jmp .L_2TAG_PACKET_7.0.1
-.L_2TAG_PACKET_10.0.1:
- fstpl 32(%rsp)
- fldl 40(%rsp)
- jmp .L_2TAG_PACKET_7.0.1
-.L_2TAG_PACKET_2.0.1:
-.L_2TAG_PACKET_7.0.1:
- fstpl 16(%rsp)
- movq 16(%rsp), %xmm0
- addq $64, %rsp
- ret
-..B1.3:
-..___tag_value_hypot.4:
-END(hypot)
-# -- End hypot
- .section .rodata, "a"
- .align 16
- .align 16
-static_const_table:
- .long 4294967295
- .long 2147483647
- .long 4294967295
- .long 2147483647
- .long 0
- .long 2146435072
- .long 0
- .long 2146435072
- .type static_const_table,@object
- .size static_const_table,32
- .data
- .section .note.GNU-stack, "",@progbits
-// -- Begin DWARF2 SEGMENT .eh_frame
- .section .eh_frame,"a",@progbits
-.eh_frame_seg:
- .align 1
- .4byte 0x00000014
- .8byte 0x00527a0100000000
- .8byte 0x08070c1b01107801
- .4byte 0x00000190
- .4byte 0x00000014
- .4byte 0x0000001c
- .4byte ..___tag_value_hypot.1-.
- .4byte ..___tag_value_hypot.4-..___tag_value_hypot.1
- .2byte 0x0400
- .4byte ..___tag_value_hypot.3-..___tag_value_hypot.1
- .2byte 0x100e
-# End
diff --git a/libm/x86_64/e_log10.S b/libm/x86_64/e_log10.S
deleted file mode 100644
index 86f86ce..0000000
--- a/libm/x86_64/e_log10.S
+++ /dev/null
@@ -1,807 +0,0 @@
-/*
-Copyright (c) 2014, Intel Corporation
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
-
- * Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
-
- * Neither the name of Intel Corporation nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
-ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/******************************************************************************/
-// ALGORITHM DESCRIPTION
-// ---------------------
-//
-// Let x=2^k * mx, mx in [1,2)
-//
-// Get B~1/mx based on the output of rcpss instruction (B0)
-// B = int((B0*LH*2^7+0.5))/2^7
-// LH is a short approximation for log10(e)
-//
-// Reduced argument: r=B*mx-LH (computed accurately in high and low parts)
-//
-// Result: k*log10(2) - log(B) + p(r)
-// p(r) is a degree 7 polynomial
-// -log(B) read from data table (high, low parts)
-// Result is formed from high and low parts
-//
-// Special cases:
-// log10(0) = -INF with divide-by-zero exception raised
-// log10(1) = +0
-// log10(x) = NaN with invalid exception raised if x < -0, including -INF
-// log10(+INF) = +INF
-//
-/******************************************************************************/
-
-#include <private/bionic_asm.h>
-# -- Begin log10
-ENTRY(log10)
-# parameter 1: %xmm0
-..B1.1:
-..___tag_value_log10.1:
- subq $24, %rsp
-..___tag_value_log10.3:
- movsd %xmm0, (%rsp)
-..B1.2:
- xorpd %xmm2, %xmm2
- movl $16368, %eax
- pinsrw $3, %eax, %xmm2
- movl $1054736384, %ecx
- movd %ecx, %xmm7
- xorpd %xmm3, %xmm3
- movl $30704, %edx
- pinsrw $3, %edx, %xmm3
- movq %xmm0, %xmm1
- movl $32768, %edx
- movd %edx, %xmm4
- movapd HIGHSIGMASK(%rip), %xmm5
- pextrw $3, %xmm0, %eax
- orpd %xmm2, %xmm0
- movl $16352, %ecx
- psrlq $27, %xmm0
- movq LOG10_E(%rip), %xmm2
- psrld $2, %xmm0
- rcpps %xmm0, %xmm0
- psllq $12, %xmm1
- pshufd $78, %xmm5, %xmm6
- psrlq $12, %xmm1
- subl $16, %eax
- cmpl $32736, %eax
- jae .L_2TAG_PACKET_0.0.2
-.L_2TAG_PACKET_1.0.2:
- mulss %xmm7, %xmm0
- orpd %xmm3, %xmm1
- lea L_tbl(%rip), %r11
- andpd %xmm1, %xmm5
- paddd %xmm4, %xmm0
- subsd %xmm5, %xmm1
- movd %xmm0, %edx
- psllq $29, %xmm0
- andpd %xmm6, %xmm0
- andl $32752, %eax
- subl %ecx, %eax
- cvtsi2sd %eax, %xmm7
- mulpd %xmm0, %xmm5
- mulsd %xmm0, %xmm1
- movq log2(%rip), %xmm6
- movapd coeff(%rip), %xmm3
- subsd %xmm2, %xmm5
- andl $16711680, %edx
- shrl $12, %edx
- movapd -1504(%r11,%rdx), %xmm0
- movapd 16+coeff(%rip), %xmm4
- addsd %xmm5, %xmm1
- movapd 32+coeff(%rip), %xmm2
- mulsd %xmm7, %xmm6
- pshufd $68, %xmm1, %xmm5
- mulsd 8+log2(%rip), %xmm7
- mulsd %xmm1, %xmm3
- addsd %xmm6, %xmm0
- mulpd %xmm5, %xmm4
- movq 8+LOG10_E(%rip), %xmm6
- mulpd %xmm5, %xmm5
- addpd %xmm2, %xmm4
- mulpd %xmm5, %xmm3
- pshufd $228, %xmm0, %xmm2
- addsd %xmm1, %xmm0
- mulsd %xmm1, %xmm4
- subsd %xmm0, %xmm2
- mulsd %xmm1, %xmm6
- addsd %xmm2, %xmm1
- pshufd $238, %xmm0, %xmm2
- mulsd %xmm5, %xmm5
- addsd %xmm2, %xmm7
- addsd %xmm6, %xmm1
- addpd %xmm3, %xmm4
- addsd %xmm7, %xmm1
- mulpd %xmm5, %xmm4
- addsd %xmm4, %xmm1
- pshufd $238, %xmm4, %xmm5
- addsd %xmm5, %xmm1
- addsd %xmm1, %xmm0
- jmp ..B1.5
-.L_2TAG_PACKET_0.0.2:
- movq (%rsp), %xmm0
- movq (%rsp), %xmm1
- addl $16, %eax
- cmpl $32768, %eax
- jae .L_2TAG_PACKET_2.0.2
- cmpl $16, %eax
- jb .L_2TAG_PACKET_3.0.2
-.L_2TAG_PACKET_4.0.2:
- addsd %xmm0, %xmm0
- jmp ..B1.5
-.L_2TAG_PACKET_5.0.2:
- ja .L_2TAG_PACKET_4.0.2
- cmpl $0, %edx
- ja .L_2TAG_PACKET_4.0.2
- jmp .L_2TAG_PACKET_6.0.2
-.L_2TAG_PACKET_3.0.2:
- xorpd %xmm1, %xmm1
- addsd %xmm0, %xmm1
- movd %xmm1, %edx
- psrlq $32, %xmm1
- movd %xmm1, %ecx
- orl %ecx, %edx
- cmpl $0, %edx
- je .L_2TAG_PACKET_7.0.2
- xorpd %xmm1, %xmm1
- movl $18416, %eax
- pinsrw $3, %eax, %xmm1
- mulsd %xmm1, %xmm0
- xorpd %xmm2, %xmm2
- movl $16368, %eax
- pinsrw $3, %eax, %xmm2
- movq %xmm0, %xmm1
- pextrw $3, %xmm0, %eax
- orpd %xmm2, %xmm0
- movl $18416, %ecx
- psrlq $27, %xmm0
- movq LOG10_E(%rip), %xmm2
- psrld $2, %xmm0
- rcpps %xmm0, %xmm0
- psllq $12, %xmm1
- pshufd $78, %xmm5, %xmm6
- psrlq $12, %xmm1
- jmp .L_2TAG_PACKET_1.0.2
-.L_2TAG_PACKET_2.0.2:
- movd %xmm1, %edx
- psrlq $32, %xmm1
- movd %xmm1, %ecx
- addl %ecx, %ecx
- cmpl $-2097152, %ecx
- jae .L_2TAG_PACKET_5.0.2
- orl %ecx, %edx
- cmpl $0, %edx
- je .L_2TAG_PACKET_7.0.2
-.L_2TAG_PACKET_6.0.2:
- xorpd %xmm1, %xmm1
- xorpd %xmm0, %xmm0
- movl $32752, %eax
- pinsrw $3, %eax, %xmm1
- mulsd %xmm1, %xmm0
- movl $9, 16(%rsp)
- jmp .L_2TAG_PACKET_8.0.2
-.L_2TAG_PACKET_7.0.2:
- xorpd %xmm1, %xmm1
- xorpd %xmm0, %xmm0
- movl $49136, %eax
- pinsrw $3, %eax, %xmm0
- divsd %xmm1, %xmm0
- movl $8, 16(%rsp)
-.L_2TAG_PACKET_8.0.2:
- movq %xmm0, 8(%rsp)
-..B1.3:
- movq 8(%rsp), %xmm0
-.L_2TAG_PACKET_9.0.2:
-..B1.5:
- addq $24, %rsp
-..___tag_value_log10.4:
- ret
-..___tag_value_log10.5:
-END(log10)
-# -- End log10
- .section .rodata, "a"
- .align 16
- .align 16
-HIGHSIGMASK:
- .long 4160749568
- .long 4294967295
- .long 0
- .long 4294959104
- .type HIGHSIGMASK,@object
- .size HIGHSIGMASK,16
- .align 16
-LOG10_E:
- .long 0
- .long 1071366144
- .long 3207479560
- .long 1062894188
- .type LOG10_E,@object
- .size LOG10_E,16
- .align 16
-L_tbl:
- .long 1352628224
- .long 1070810131
- .long 521319256
- .long 1025503025
- .long 2150839296
- .long 1070801944
- .long 3329350096
- .long 3170190015
- .long 1360613376
- .long 1070793794
- .long 2024059075
- .long 1024991594
- .long 1875350528
- .long 1070785680
- .long 2163882141
- .long 3163564137
- .long 2312126464
- .long 1070777602
- .long 1975711076
- .long 1023674196
- .long 1306336256
- .long 1070769560
- .long 3524899523
- .long 3170508164
- .long 1806334976
- .long 1070761553
- .long 4254777025
- .long 1025238739
- .long 2483193856
- .long 1070753581
- .long 3800671317
- .long 3172916830
- .long 2025350144
- .long 1070745644
- .long 1731514745
- .long 1025501083
- .long 3433285632
- .long 1070737741
- .long 2551857336
- .long 3169662186
- .long 1134317568
- .long 1070729873
- .long 3426297655
- .long 3172637891
- .long 2457152512
- .long 1070722038
- .long 63549415
- .long 1025415416
- .long 1861803008
- .long 1070714237
- .long 1910171636
- .long 1023977580
- .long 2414140416
- .long 1070706469
- .long 4002514337
- .long 3170841618
- .long 2900726784
- .long 1070698734
- .long 3268064083
- .long 1022459609
- .long 2123517952
- .long 1070691032
- .long 1767031218
- .long 1022448156
- .long 3194569728
- .long 1070683362
- .long 3402332618
- .long 3171671160
- .long 650882048
- .long 1070675725
- .long 4146023905
- .long 3171023038
- .long 1928988672
- .long 1070668119
- .long 1438617867
- .long 1016360491
- .long 1594908672
- .long 1070660545
- .long 971389377
- .long 1024763979
- .long 2818746368
- .long 1070653002
- .long 3555925341
- .long 3172434821
- .long 194584576
- .long 1070645491
- .long 943919215
- .long 3172950063
- .long 1215096832
- .long 1070638010
- .long 2283358588
- .long 1022335098
- .long 501519360
- .long 1070630560
- .long 480904295
- .long 1024437959
- .long 1278266368
- .long 1070623140
- .long 2755806066
- .long 3172342012
- .long 2487812096
- .long 1070615750
- .long 2489653202
- .long 3172481099
- .long 3085451264
- .long 1070608390
- .long 3759184951
- .long 3172574892
- .long 2039090176
- .long 1070601060
- .long 1361176676
- .long 3172355319
- .long 953057280
- .long 1070591423
- .long 1176587546
- .long 3166422018
- .long 3370524672
- .long 1070576879
- .long 3669570051
- .long 1025376630
- .long 749742080
- .long 1070562394
- .long 707700964
- .long 3170814058
- .long 4008353792
- .long 1070547965
- .long 3247327652
- .long 1022431400
- .long 2612455424
- .long 1070533594
- .long 2453457344
- .long 3172322969
- .long 3230920704
- .long 1070519279
- .long 1296781801
- .long 1025115335
- .long 3965253632
- .long 1070505020
- .long 373075289
- .long 1017938528
- .long 2593157120
- .long 1070476669
- .long 1068054086
- .long 1021616576
- .long 925962240
- .long 1070448537
- .long 850121213
- .long 1023928989
- .long 1732556800
- .long 1070420620
- .long 1305206740
- .long 3172665570
- .long 3815630848
- .long 1070392915
- .long 192642943
- .long 3172699907
- .long 2001758208
- .long 1070365420
- .long 2820786683
- .long 1024704867
- .long 16746496
- .long 1070338131
- .long 1399573110
- .long 3171372773
- .long 1886492672
- .long 1070311044
- .long 3621428075
- .long 3172974358
- .long 3338196992
- .long 1070284157
- .long 3793882035
- .long 1025124701
- .long 381769728
- .long 1070257468
- .long 3877933342
- .long 3170195490
- .long 2186491904
- .long 1070230972
- .long 1838687089
- .long 1017927292
- .long 1008330752
- .long 1070204668
- .long 2228321664
- .long 1025352196
- .long 2247065600
- .long 1070178552
- .long 1413900906
- .long 3170902532
- .long 2964070400
- .long 1070152622
- .long 3590454629
- .long 1025016844
- .long 465154048
- .long 1070126876
- .long 2079688550
- .long 3172268183
- .long 883615744
- .long 1070101310
- .long 989244452
- .long 3171900485
- .long 1993768960
- .long 1070075922
- .long 1124327841
- .long 3172964992
- .long 1794471936
- .long 1070050710
- .long 1140575046
- .long 1022673726
- .long 2797932544
- .long 1070025671
- .long 1894836933
- .long 3172544059
- .long 3433797632
- .long 1070000803
- .long 3221831166
- .long 3171921685
- .long 2338371584
- .long 1069976104
- .long 3732461053
- .long 3164513518
- .long 2644013056
- .long 1069951571
- .long 2519460462
- .long 3172548740
- .long 3383814144
- .long 1069927202
- .long 2290997657
- .long 1025499649
- .long 3781380096
- .long 1069902995
- .long 380479405
- .long 1025184136
- .long 3245785088
- .long 1069878948
- .long 1096398261
- .long 3169885192
- .long 1366712320
- .long 1069855059
- .long 2218343715
- .long 3170281628
- .long 2204717056
- .long 1069831325
- .long 2668334011
- .long 1025264524
- .long 1401772032
- .long 1069807745
- .long 4103993159
- .long 1022925721
- .long 3356721152
- .long 1069784316
- .long 3573790772
- .long 3172186527
- .long 4041148416
- .long 1069761037
- .long 4027691910
- .long 3171276990
- .long 3880151040
- .long 1069737906
- .long 4087118786
- .long 3172710734
- .long 3453364224
- .long 1069714921
- .long 99014299
- .long 3172003077
- .long 3491092480
- .long 1069692080
- .long 3801836701
- .long 3172989287
- .long 575580160
- .long 1069669382
- .long 1920406012
- .long 3170874125
- .long 22282240
- .long 1069646824
- .long 964193370
- .long 1019363159
- .long 2991429632
- .long 1069624404
- .long 3372589890
- .long 1023425053
- .long 2189645824
- .long 1069602122
- .long 2610503872
- .long 1023652442
- .long 3341467648
- .long 1069579975
- .long 1190292004
- .long 1022425665
- .long 3711293440
- .long 1069557962
- .long 1104795356
- .long 1023625829
- .long 1380401152
- .long 1069524644
- .long 1156998217
- .long 1025100499
- .long 765710336
- .long 1069481144
- .long 1736649113
- .long 1024999439
- .long 849412096
- .long 1069437902
- .long 2618178330
- .long 3170853629
- .long 1433104384
- .long 1069394915
- .long 43477267
- .long 3170378811
- .long 2548596736
- .long 1069352180
- .long 3967367063
- .long 1025246584
- .long 157577216
- .long 1069309695
- .long 100402533
- .long 3172825502
- .long 3326238720
- .long 1069267455
- .long 1176892909
- .long 1025464099
- .long 4155494400
- .long 1069225459
- .long 3713707617
- .long 3172630046
- .long 3545804800
- .long 1069183704
- .long 857007315
- .long 1024965777
- .long 2602520576
- .long 1069142187
- .long 2588758347
- .long 1022463131
- .long 2631196672
- .long 1069100905
- .long 2118424235
- .long 1022490989
- .long 838135808
- .long 1069059856
- .long 4117002727
- .long 1024874520
- .long 3210903552
- .long 1069019036
- .long 650070125
- .long 3172012966
- .long 3039211520
- .long 1068978444
- .long 438055812
- .long 1017743757
- .long 2385633280
- .long 1068938077
- .long 3011990369
- .long 3171312044
- .long 3491618816
- .long 1068897932
- .long 712813818
- .long 3172720400
- .long 183644160
- .long 1068858008
- .long 4287006742
- .long 1022379728
- .long 3639214080
- .long 1068818300
- .long 353762279
- .long 3172980009
- .long 3728416768
- .long 1068778808
- .long 1851367730
- .long 1025486574
- .long 3370094592
- .long 1068739529
- .long 4046594913
- .long 3172567047
- .long 1348407296
- .long 1068700461
- .long 143189675
- .long 1025397632
- .long 899403776
- .long 1068661601
- .long 3753687842
- .long 3170772772
- .long 1117708288
- .long 1068622947
- .long 1857340812
- .long 3170782678
- .long 1248276480
- .long 1068584497
- .long 1289858203
- .long 1025222289
- .long 683237376
- .long 1068546249
- .long 2356679608
- .long 3171629170
- .long 3253764096
- .long 1068508200
- .long 3267136556
- .long 1018554987
- .long 94478336
- .long 1068441756
- .long 1927868814
- .long 3169378180
- .long 3233144832
- .long 1068366445
- .long 2682188854
- .long 1023964004
- .long 2940297216
- .long 1068291522
- .long 275301289
- .long 1023944679
- .long 3677708288
- .long 1068216982
- .long 302658771
- .long 1024465567
- .long 1576968192
- .long 1068142822
- .long 3672035940
- .long 3172254610
- .long 1614069760
- .long 1068069037
- .long 480052905
- .long 3172692062
- .long 424435712
- .long 1067995624
- .long 2207869657
- .long 3170965436
- .long 3477782528
- .long 1067922578
- .long 2980661858
- .long 3164990018
- .long 3598401536
- .long 1067849897
- .long 1974393034
- .long 3171357083
- .long 2435235840
- .long 1067777577
- .long 1385289011
- .long 1024615823
- .long 1867333632
- .long 1067705614
- .long 3442236633
- .long 1025334384
- .long 3999301632
- .long 1067634004
- .long 3506472073
- .long 1025132546
- .long 2566971392
- .long 1067562745
- .long 1425757592
- .long 3172358463
- .long 112943104
- .long 1067491833
- .long 1693407156
- .long 3172426603
- .long 3079929856
- .long 1067392159
- .long 3999942455
- .long 1018549369
- .long 2443837440
- .long 1067251701
- .long 974534460
- .long 1023963412
- .long 359366656
- .long 1067111917
- .long 2204915018
- .long 1013514416
- .long 3564519424
- .long 1066972799
- .long 3977441659
- .long 3170879860
- .long 2011086848
- .long 1066834343
- .long 590145514
- .long 1025390011
- .long 3216982016
- .long 1066696541
- .long 3629120110
- .long 1024330313
- .long 2194128896
- .long 1066559388
- .long 2367098512
- .long 3172260338
- .long 2916220928
- .long 1066422877
- .long 2262431886
- .long 1021229446
- .long 2263941120
- .long 1066172214
- .long 3118507287
- .long 1021484970
- .long 3076292608
- .long 1065901726
- .long 1411737803
- .long 3172957147
- .long 1186136064
- .long 1065632488
- .long 3109349337
- .long 1025397383
- .long 3085303808
- .long 1065364487
- .long 584715031
- .long 3172596519
- .long 1821048832
- .long 1064842211
- .long 2182246895
- .long 3172536214
- .long 697368576
- .long 1064311094
- .long 3157561765
- .long 3172716357
- .long 894042112
- .long 1063260131
- .long 3237958154
- .long 3172587292
- .long 0
- .long 0
- .long 0
- .long 0
- .type L_tbl,@object
- .size L_tbl,2064
- .align 16
-log2:
- .long 1352628224
- .long 1066615827
- .long 521319256
- .long 1021308721
- .type log2,@object
- .size log2,16
- .align 16
-coeff:
- .long 3248877870
- .long 1077250164
- .long 1691676429
- .long 3221787401
- .long 945132465
- .long 3223701783
- .long 3700831335
- .long 1073506818
- .long 2141010593
- .long 1075227551
- .long 3698831637
- .long 3220339442
- .type coeff,@object
- .size coeff,48
- .data
- .section .note.GNU-stack, "",@progbits
-// -- Begin DWARF2 SEGMENT .eh_frame
- .section .eh_frame,"a",@progbits
-.eh_frame_seg:
- .align 1
- .4byte 0x00000014
- .8byte 0x00527a0100000000
- .8byte 0x08070c1b01107801
- .4byte 0x00000190
- .4byte 0x0000001c
- .4byte 0x0000001c
- .4byte ..___tag_value_log10.1-.
- .4byte ..___tag_value_log10.5-..___tag_value_log10.1
- .2byte 0x0400
- .4byte ..___tag_value_log10.3-..___tag_value_log10.1
- .2byte 0x200e
- .byte 0x04
- .4byte ..___tag_value_log10.4-..___tag_value_log10.3
- .2byte 0x080e
- .byte 0x00
-# End
diff --git a/libm/x86_64/e_sinh.S b/libm/x86_64/e_sinh.S
deleted file mode 100644
index d5f7b16..0000000
--- a/libm/x86_64/e_sinh.S
+++ /dev/null
@@ -1,1430 +0,0 @@
-/*
-Copyright (c) 2014, Intel Corporation
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
-
- * Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
-
- * Neither the name of Intel Corporation nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
-ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/******************************************************************************/
-/******************************************************************************/
-// ALGORITHM DESCRIPTION
-// ---------------------
-//
-// sinh(x)=(exp(x)-exp(-x))/2
-//
-// Let |x|=xH+xL (upper 26 bits, lower 27 bits)
-// log2(e) rounded to 26 bits (high part) plus a double precision low part is
-// L2EH+L2EL (upper 26, lower 53 bits)
-//
-// Let xH*L2EH=k+f+r`, where (k+f)*2^7=int(xH*L2EH*2^7),
-// f=0.b1 b2 ... b7, k integer
-// 2^f is approximated as Tp[f]+Dp[f], and 2^{-f} as Tn[f]+Dn[f]
-// Tp stores the high 53 bits, Dp stores (2^f-Tp[f]) rounded to double precision
-//
-// e^|x|=2^{k+f}*2^r, r=r`+xL*L2EH+|x|*L2EL, |r|<2^{-8}+2^{-14},
-// for |x| in [23/64,3*2^7)
-// e^{-|x|}=2^{-k-f}*2^{-r}
-//
-// e^|x| is approximated as 2^k*Tp+2^k*Tp*c1*r(1+c2*r+..+c5*r^4)+2^k*Dp=
-// =2^k*Tp+2^k*Tp*P15+2^k*Dp
-// e^{-|x|} approximated as 2^{-k}*Tn-2^{-k}*Tn*c1*r(1-c2*r+..+c5*r^4)+2^{-k}*Dn
-//
-// For |x| in [1/8, 3*2^7), sinh(x) is formed as
-// RN(2^k*Tp-2^{-k}*Tn)+2^k*Tp*P15-2^{-k}*Tn*P`15-2^{-k}*TnL-2^{-k}*Dn+2^k*Dp
-//
-// For x in (3*2^7, 3*2^8), sign(x)*(e^|x|)/2 is returned, and
-// the result is checked for overflow.
-//
-// For |x|<23/64, a Taylor polynomial expansion is used (degree 13)
-// To reduce rounding errors, the p3*x^3 term is computed as
-// (p3*xh^3)_high+[(p3*xl*(3*x*xh+xl^2))+(p3*xh^3)_low],
-// where x=xh+xl, (xh are the leading 17 bits of x), and
-// (p3*xh^3)_high=RN(x+p3*xh^3)-x
-// (error bound for polynomial expansion is below 0.51 ulp)
-//
-// Special cases:
-// sinh(NaN) = quiet NaN, and raise invalid exception
-// sinh(+/-INF) = +/-INF
-// sinh(x) = x for subnormals
-// for finite argument, only sinh(0)=0 is exact
-// For IEEE double
-// sinh(x) overflows for x >
-// 710.47586007394386342639336362481117248535156250 = MAXLOG+log(2)
-//
-/******************************************************************************/
-
-#include <private/bionic_asm.h>
-# -- Begin sinh
-ENTRY(sinh)
-# parameter 1: %xmm0
-..B1.1:
-..___tag_value_sinh.1:
- pushq %rsi
-..___tag_value_sinh.3:
-..B1.2:
- movsd HALFMASK(%rip), %xmm3
- xorpd %xmm4, %xmm4
- movsd L2E(%rip), %xmm1
- movsd 8+L2E(%rip), %xmm2
- movl $32768, %eax
- pinsrw $3, %eax, %xmm4
- movsd Shifter(%rip), %xmm6
- pextrw $3, %xmm0, %ecx
- andpd %xmm0, %xmm3
- andnpd %xmm0, %xmm4
- pshufd $68, %xmm4, %xmm5
- movl $32768, %edx
- andl %ecx, %edx
- andl $32767, %ecx
- subl $16343, %ecx
- cmpl $177, %ecx
- jae .L_2TAG_PACKET_0.0.2
- subsd %xmm3, %xmm4
- mulsd %xmm1, %xmm3
- mulsd %xmm5, %xmm2
- cvtsd2si %xmm3, %eax
- shll $3, %edx
- orl %edx, %eax
- movq %xmm3, %xmm7
- addsd %xmm6, %xmm3
- mulsd %xmm4, %xmm1
- xorpd %xmm5, %xmm5
- subsd %xmm6, %xmm3
- movapd cv(%rip), %xmm4
- addsd %xmm1, %xmm2
- movapd 16+cv(%rip), %xmm6
- subsd %xmm3, %xmm7
- movl $32704, %edx
- pinsrw $3, %edx, %xmm5
- movapd 32+cv(%rip), %xmm1
- addsd %xmm7, %xmm2
- movl $127, %edx
- andl %eax, %edx
- addl %edx, %edx
- shrl $3, %eax
- andl $65520, %eax
- addl $16352, %eax
- xorpd %xmm0, %xmm0
- cmpl $161, %ecx
- jae .L_2TAG_PACKET_1.0.2
- pshufd $68, %xmm5, %xmm5
- pinsrw $3, %eax, %xmm0
- pshufd $68, %xmm0, %xmm0
- psubw %xmm0, %xmm5
- lea T2f(%rip), %r8
- mulpd (%r8,%rdx,8), %xmm0
- lea T2_neg_f(%rip), %r8
- mulpd (%r8,%rdx,8), %xmm5
- pshufd $68, %xmm2, %xmm3
- movapd 48+cv(%rip), %xmm7
- pshufd $68, %xmm2, %xmm2
- mulpd %xmm3, %xmm3
- mulpd %xmm2, %xmm4
- mulpd %xmm2, %xmm6
- mulpd 64+cv(%rip), %xmm2
- mulpd %xmm3, %xmm1
- mulpd %xmm3, %xmm7
- mulpd %xmm3, %xmm4
- mulpd %xmm3, %xmm1
- addpd %xmm7, %xmm6
- movq %xmm0, %xmm7
- addpd %xmm1, %xmm4
- shufpd $0, %xmm5, %xmm7
- subpd %xmm5, %xmm0
- mulpd %xmm7, %xmm2
- addpd %xmm6, %xmm4
- subsd %xmm0, %xmm7
- mulpd %xmm2, %xmm4
- pshufd $238, %xmm0, %xmm6
- subsd %xmm5, %xmm7
- addpd %xmm2, %xmm4
- addsd %xmm6, %xmm7
- pshufd $238, %xmm4, %xmm2
- addsd %xmm7, %xmm2
- addsd %xmm4, %xmm2
- addsd %xmm2, %xmm0
- jmp ..B1.5
-.L_2TAG_PACKET_1.0.2:
- subl $16352, %eax
- movl %eax, %ecx
- andl $32752, %eax
- shrl $1, %eax
- andl $65520, %eax
- subl %eax, %ecx
- addl $16352, %eax
- pinsrw $3, %eax, %xmm0
- pshufd $68, %xmm0, %xmm0
- lea T2f(%rip), %r8
- mulpd (%r8,%rdx,8), %xmm0
- pshufd $68, %xmm2, %xmm3
- movsd 48+cv(%rip), %xmm7
- mulsd %xmm3, %xmm3
- mulsd %xmm2, %xmm4
- mulsd %xmm2, %xmm6
- mulsd 64+cv(%rip), %xmm2
- mulsd %xmm3, %xmm1
- mulsd %xmm3, %xmm7
- mulsd %xmm3, %xmm4
- addl $16368, %ecx
- pinsrw $3, %ecx, %xmm5
- mulsd %xmm3, %xmm1
- addsd %xmm7, %xmm6
- addsd %xmm1, %xmm4
- mulsd %xmm0, %xmm2
- addsd %xmm6, %xmm4
- mulsd %xmm2, %xmm4
- pshufd $238, %xmm0, %xmm6
- addsd %xmm6, %xmm4
- addsd %xmm4, %xmm2
- addsd %xmm2, %xmm0
- mulsd %xmm5, %xmm0
- pextrw $3, %xmm0, %eax
- andl $32752, %eax
- movl $127, %edx
- cmpl $32752, %eax
- je .L_2TAG_PACKET_2.0.2
- jmp ..B1.5
-.L_2TAG_PACKET_0.0.2:
- addl $16343, %ecx
- cmpl $16343, %ecx
- ja .L_2TAG_PACKET_3.0.2
- cmpl $15856, %ecx
- jb .L_2TAG_PACKET_4.0.2
- movapd pv(%rip), %xmm1
- pshufd $68, %xmm0, %xmm6
- mulpd %xmm5, %xmm5
- movapd 16+pv(%rip), %xmm2
- pshufd $68, %xmm0, %xmm7
- movapd 32+pv(%rip), %xmm3
- pshufd $68, %xmm0, %xmm4
- andpd MASK3(%rip), %xmm6
- mulpd %xmm5, %xmm1
- mulsd %xmm5, %xmm2
- subpd %xmm6, %xmm4
- mulpd %xmm5, %xmm7
- addpd %xmm3, %xmm1
- pshufd $68, %xmm6, %xmm3
- mulpd %xmm5, %xmm5
- mulsd %xmm7, %xmm2
- mulpd %xmm7, %xmm1
- pshufd $68, %xmm0, %xmm7
- mulsd %xmm6, %xmm6
- addsd %xmm7, %xmm7
- mulsd %xmm4, %xmm4
- mulpd %xmm5, %xmm1
- addsd %xmm0, %xmm7
- mulsd %xmm3, %xmm6
- mulsd %xmm3, %xmm7
- pshufd $238, %xmm1, %xmm3
- mulsd %xmm5, %xmm1
- pshufd $238, %xmm4, %xmm5
- addsd %xmm2, %xmm3
- pshufd $238, %xmm2, %xmm2
- addsd %xmm4, %xmm7
- movq %xmm0, %xmm4
- mulsd %xmm2, %xmm6
- mulsd %xmm5, %xmm7
- addsd %xmm6, %xmm0
- mulsd %xmm2, %xmm7
- subsd %xmm0, %xmm4
- addsd %xmm7, %xmm1
- addsd %xmm4, %xmm6
- addsd %xmm3, %xmm1
- addsd %xmm6, %xmm1
- addsd %xmm1, %xmm0
- jmp ..B1.5
-.L_2TAG_PACKET_4.0.2:
- cmpl $16, %ecx
- jae .L_2TAG_PACKET_5.0.2
- movq %xmm0, %xmm1
- mulsd %xmm1, %xmm1
- jmp ..B1.5
-.L_2TAG_PACKET_5.0.2:
- xorpd %xmm2, %xmm2
- movl $17392, %ecx
- pinsrw $3, %ecx, %xmm2
- xorpd %xmm3, %xmm3
- movl $15344, %edx
- pinsrw $3, %edx, %xmm3
- mulsd %xmm0, %xmm2
- addsd %xmm2, %xmm0
- mulsd %xmm3, %xmm0
- jmp ..B1.5
-.L_2TAG_PACKET_3.0.2:
- cmpl $32752, %ecx
- jae .L_2TAG_PACKET_6.0.2
- xorpd %xmm0, %xmm0
- movl $32736, %eax
- pinsrw $3, %eax, %xmm0
- orl %edx, %eax
- pinsrw $3, %eax, %xmm1
- mulsd %xmm1, %xmm0
- jmp .L_2TAG_PACKET_2.0.2
-.L_2TAG_PACKET_6.0.2:
- xorpd %xmm1, %xmm1
- movl $32768, %eax
- pinsrw $3, %eax, %xmm1
- andnpd %xmm0, %xmm1
- mulsd %xmm1, %xmm0
- jmp ..B1.5
-.L_2TAG_PACKET_2.0.2:
- movq %xmm0, (%rsp)
-..B1.3:
- movq (%rsp), %xmm0
-.L_2TAG_PACKET_7.0.2:
-..B1.5:
- popq %rcx
-..___tag_value_sinh.4:
- ret
-..___tag_value_sinh.5:
-END(sinh)
-# -- End sinh
- .section .rodata, "a"
- .align 16
- .align 16
-L2E:
- .long 1610612736
- .long 1080497479
- .long 4166901572
- .long 1053077003
- .type L2E,@object
- .size L2E,16
- .align 16
-Shifter:
- .long 0
- .long 1127743488
- .long 0
- .long 3275227136
- .type Shifter,@object
- .size Shifter,16
- .align 16
-cv:
- .long 3607404736
- .long 1044146952
- .long 3607404736
- .long 3191630600
- .long 4277811695
- .long 1063661122
- .long 4277811695
- .long 3211144770
- .long 2140175755
- .long 1033864261
- .long 2140175755
- .long 1033864261
- .long 4289495988
- .long 1054113747
- .long 4289495988
- .long 1054113747
- .long 4277811695
- .long 1064709698
- .long 4277811695
- .long 1064709698
- .type cv,@object
- .size cv,80
- .align 16
-T2f:
- .long 0
- .long 1072693248
- .long 0
- .long 0
- .long 2851812149
- .long 1072698941
- .long 2595802551
- .long 1016815913
- .long 1048019041
- .long 1072704666
- .long 1398474845
- .long 3161559171
- .long 3899555717
- .long 1072710421
- .long 427280750
- .long 3163595548
- .long 3541402996
- .long 1072716208
- .long 2759177317
- .long 1015903202
- .long 702412510
- .long 1072722027
- .long 3803266087
- .long 3163328991
- .long 410360776
- .long 1072727877
- .long 1269990655
- .long 1013024446
- .long 3402036099
- .long 1072733758
- .long 405889334
- .long 1016154232
- .long 1828292879
- .long 1072739672
- .long 1255956747
- .long 1016636974
- .long 728909815
- .long 1072745618
- .long 383930225
- .long 1016078044
- .long 852742562
- .long 1072751596
- .long 667253586
- .long 1010842135
- .long 2952712987
- .long 1072757606
- .long 3293494651
- .long 3161168877
- .long 3490863953
- .long 1072763649
- .long 960797498
- .long 3163997456
- .long 3228316108
- .long 1072769725
- .long 3010241991
- .long 3159471380
- .long 2930322912
- .long 1072775834
- .long 2599499422
- .long 3163762623
- .long 3366293073
- .long 1072781976
- .long 3119426314
- .long 1015169130
- .long 1014845819
- .long 1072788152
- .long 3117910646
- .long 3162607681
- .long 948735466
- .long 1072794361
- .long 3516338028
- .long 3163623459
- .long 3949972341
- .long 1072800603
- .long 2068408548
- .long 1015962444
- .long 2214878420
- .long 1072806880
- .long 892270087
- .long 3164164998
- .long 828946858
- .long 1072813191
- .long 10642492
- .long 1016988014
- .long 586995997
- .long 1072819536
- .long 41662348
- .long 3163676568
- .long 2288159958
- .long 1072825915
- .long 2169144469
- .long 1015924597
- .long 2440944790
- .long 1072832329
- .long 2492769774
- .long 1015196030
- .long 1853186616
- .long 1072838778
- .long 3066496371
- .long 1016705150
- .long 1337108031
- .long 1072845262
- .long 3203724452
- .long 1015726421
- .long 1709341917
- .long 1072851781
- .long 2571168217
- .long 1015201075
- .long 3790955393
- .long 1072858335
- .long 2352942462
- .long 3164228666
- .long 4112506593
- .long 1072864925
- .long 2947355221
- .long 1015419624
- .long 3504003472
- .long 1072871551
- .long 3594001060
- .long 3158379228
- .long 2799960843
- .long 1072878213
- .long 1423655381
- .long 1016070727
- .long 2839424854
- .long 1072884911
- .long 1171596163
- .long 1014090255
- .long 171030293
- .long 1072891646
- .long 3526460132
- .long 1015477354
- .long 4232894513
- .long 1072898416
- .long 2383938684
- .long 1015717095
- .long 2992903935
- .long 1072905224
- .long 2218154406
- .long 1016276769
- .long 1603444721
- .long 1072912069
- .long 1548633640
- .long 3163249902
- .long 926591435
- .long 1072918951
- .long 3208833762
- .long 3163962090
- .long 1829099622
- .long 1072925870
- .long 1016661181
- .long 3164509581
- .long 887463927
- .long 1072932827
- .long 3596744163
- .long 3161842742
- .long 3272845541
- .long 1072939821
- .long 928852419
- .long 3164536824
- .long 1276261410
- .long 1072946854
- .long 300981948
- .long 1015732745
- .long 78413852
- .long 1072953925
- .long 4183226867
- .long 3164065827
- .long 569847338
- .long 1072961034
- .long 472945272
- .long 3160339305
- .long 3645941911
- .long 1072968181
- .long 3814685081
- .long 3162621917
- .long 1617004845
- .long 1072975368
- .long 82804944
- .long 1011391354
- .long 3978100823
- .long 1072982593
- .long 3513027190
- .long 1016894539
- .long 3049340112
- .long 1072989858
- .long 3062915824
- .long 1014219171
- .long 4040676318
- .long 1072997162
- .long 4090609238
- .long 1016712034
- .long 3577096743
- .long 1073004506
- .long 2951496418
- .long 1014842263
- .long 2583551245
- .long 1073011890
- .long 3161094195
- .long 1016655067
- .long 1990012071
- .long 1073019314
- .long 3529070563
- .long 3163861769
- .long 2731501122
- .long 1073026778
- .long 1774031855
- .long 3163518597
- .long 1453150082
- .long 1073034283
- .long 498154669
- .long 3162536638
- .long 3395129871
- .long 1073041828
- .long 4025345435
- .long 3163383964
- .long 917841882
- .long 1073049415
- .long 18715565
- .long 1016707884
- .long 3566716925
- .long 1073057042
- .long 1536826856
- .long 1015191009
- .long 3712504873
- .long 1073064711
- .long 88491949
- .long 1016476236
- .long 2321106615
- .long 1073072422
- .long 2171176610
- .long 1010584347
- .long 363667784
- .long 1073080175
- .long 813753950
- .long 1016833785
- .long 3111574537
- .long 1073087969
- .long 2606161479
- .long 3163808322
- .long 2956612997
- .long 1073095806
- .long 2118169751
- .long 3163784129
- .long 885834528
- .long 1073103686
- .long 1973258547
- .long 3163310140
- .long 2186617381
- .long 1073111608
- .long 2270764084
- .long 3164321289
- .long 3561793907
- .long 1073119573
- .long 1157054053
- .long 1012938926
- .long 1719614413
- .long 1073127582
- .long 330458198
- .long 3164331316
- .long 1963711167
- .long 1073135634
- .long 1744767757
- .long 3161622870
- .long 1013258799
- .long 1073143730
- .long 1748797611
- .long 3161177658
- .long 4182873220
- .long 1073151869
- .long 629542646
- .long 3163044879
- .long 3907805044
- .long 1073160053
- .long 2257091225
- .long 3162598983
- .long 1218806132
- .long 1073168282
- .long 1818613052
- .long 3163597017
- .long 1447192521
- .long 1073176555
- .long 1462857171
- .long 3163563097
- .long 1339972927
- .long 1073184873
- .long 167908909
- .long 1016620728
- .long 1944781191
- .long 1073193236
- .long 3993278767
- .long 3162772855
- .long 19972402
- .long 1073201645
- .long 3507899862
- .long 1017057868
- .long 919555682
- .long 1073210099
- .long 3121969534
- .long 1013996802
- .long 1413356050
- .long 1073218599
- .long 1651349291
- .long 3163716742
- .long 2571947539
- .long 1073227145
- .long 3558159064
- .long 3164425245
- .long 1176749997
- .long 1073235738
- .long 2738998779
- .long 3163084420
- .long 2604962541
- .long 1073244377
- .long 2614425274
- .long 3164587768
- .long 3649726105
- .long 1073253063
- .long 4085036346
- .long 1016698050
- .long 1110089947
- .long 1073261797
- .long 1451641639
- .long 1016523249
- .long 380978316
- .long 1073270578
- .long 854188970
- .long 3161511262
- .long 2568320822
- .long 1073279406
- .long 2732824428
- .long 1015401491
- .long 194117574
- .long 1073288283
- .long 777528612
- .long 3164460665
- .long 2966275557
- .long 1073297207
- .long 2176155324
- .long 3160891335
- .long 3418903055
- .long 1073306180
- .long 2527457337
- .long 3161869180
- .long 2682146384
- .long 1073315202
- .long 2082178513
- .long 3164411995
- .long 1892288442
- .long 1073324273
- .long 2446255666
- .long 3163648957
- .long 2191782032
- .long 1073333393
- .long 2960257726
- .long 1014791238
- .long 434316067
- .long 1073342563
- .long 2028358766
- .long 1014506698
- .long 2069751141
- .long 1073351782
- .long 1562170675
- .long 3163773257
- .long 3964284211
- .long 1073361051
- .long 2111583915
- .long 1016475740
- .long 2990417245
- .long 1073370371
- .long 3683467745
- .long 3164417902
- .long 321958744
- .long 1073379742
- .long 3401933767
- .long 1016843134
- .long 1434058175
- .long 1073389163
- .long 251133233
- .long 1016134345
- .long 3218338682
- .long 1073398635
- .long 3404164304
- .long 3163525684
- .long 2572866477
- .long 1073408159
- .long 878562433
- .long 1016570317
- .long 697153126
- .long 1073417735
- .long 1283515429
- .long 3164331765
- .long 3092190715
- .long 1073427362
- .long 814012168
- .long 3160571998
- .long 2380618042
- .long 1073437042
- .long 3149557219
- .long 3164369375
- .long 4076559943
- .long 1073446774
- .long 2119478331
- .long 3161806927
- .long 815859274
- .long 1073456560
- .long 240396590
- .long 3164536019
- .long 2420883922
- .long 1073466398
- .long 2049810052
- .long 1015168464
- .long 1540824585
- .long 1073476290
- .long 1064017011
- .long 3164536266
- .long 3716502172
- .long 1073486235
- .long 2303740125
- .long 1015091301
- .long 1610600570
- .long 1073496235
- .long 3766732298
- .long 1016808759
- .long 777507147
- .long 1073506289
- .long 4282924205
- .long 1016236109
- .long 2483480501
- .long 1073516397
- .long 1216371780
- .long 1014082748
- .long 3706687593
- .long 1073526560
- .long 3521726940
- .long 1014301643
- .long 1432208378
- .long 1073536779
- .long 1401068914
- .long 3163412539
- .long 1242007932
- .long 1073547053
- .long 1132034716
- .long 3164388407
- .long 135105010
- .long 1073557383
- .long 1906148728
- .long 3164424315
- .long 3707479175
- .long 1073567768
- .long 3613079303
- .long 1015213314
- .long 382305176
- .long 1073578211
- .long 2347622376
- .long 3163627201
- .long 64696965
- .long 1073588710
- .long 1768797490
- .long 1016865536
- .long 4076975200
- .long 1073599265
- .long 2029000899
- .long 1016257111
- .long 863738719
- .long 1073609879
- .long 1326992220
- .long 3163661773
- .long 351641897
- .long 1073620550
- .long 2172261526
- .long 3164059175
- .long 3884662774
- .long 1073631278
- .long 2158611599
- .long 1015258761
- .long 4224142467
- .long 1073642065
- .long 3389820386
- .long 1016255778
- .long 2728693978
- .long 1073652911
- .long 396109971
- .long 3164511267
- .long 764307441
- .long 1073663816
- .long 3021057420
- .long 3164378099
- .long 3999357479
- .long 1073674779
- .long 2258941616
- .long 1016973300
- .long 929806999
- .long 1073685803
- .long 3205336643
- .long 1016308133
- .long 1533953344
- .long 1073696886
- .long 769171851
- .long 1016714209
- .long 2912730644
- .long 1073708029
- .long 3490067722
- .long 3164453650
- .long 2174652632
- .long 1073719233
- .long 4087714590
- .long 1015498835
- .long 730821105
- .long 1073730498
- .long 2523232743
- .long 1013115764
- .type T2f,@object
- .size T2f,2048
- .align 16
-T2_neg_f:
- .long 0
- .long 1072693248
- .long 0
- .long 0
- .long 730821105
- .long 1072681922
- .long 2523232743
- .long 1012067188
- .long 2174652632
- .long 1072670657
- .long 4087714590
- .long 1014450259
- .long 2912730644
- .long 1072659453
- .long 3490067722
- .long 3163405074
- .long 1533953344
- .long 1072648310
- .long 769171851
- .long 1015665633
- .long 929806999
- .long 1072637227
- .long 3205336643
- .long 1015259557
- .long 3999357479
- .long 1072626203
- .long 2258941616
- .long 1015924724
- .long 764307441
- .long 1072615240
- .long 3021057420
- .long 3163329523
- .long 2728693978
- .long 1072604335
- .long 396109971
- .long 3163462691
- .long 4224142467
- .long 1072593489
- .long 3389820386
- .long 1015207202
- .long 3884662774
- .long 1072582702
- .long 2158611599
- .long 1014210185
- .long 351641897
- .long 1072571974
- .long 2172261526
- .long 3163010599
- .long 863738719
- .long 1072561303
- .long 1326992220
- .long 3162613197
- .long 4076975200
- .long 1072550689
- .long 2029000899
- .long 1015208535
- .long 64696965
- .long 1072540134
- .long 1768797490
- .long 1015816960
- .long 382305176
- .long 1072529635
- .long 2347622376
- .long 3162578625
- .long 3707479175
- .long 1072519192
- .long 3613079303
- .long 1014164738
- .long 135105010
- .long 1072508807
- .long 1906148728
- .long 3163375739
- .long 1242007932
- .long 1072498477
- .long 1132034716
- .long 3163339831
- .long 1432208378
- .long 1072488203
- .long 1401068914
- .long 3162363963
- .long 3706687593
- .long 1072477984
- .long 3521726940
- .long 1013253067
- .long 2483480501
- .long 1072467821
- .long 1216371780
- .long 1013034172
- .long 777507147
- .long 1072457713
- .long 4282924205
- .long 1015187533
- .long 1610600570
- .long 1072447659
- .long 3766732298
- .long 1015760183
- .long 3716502172
- .long 1072437659
- .long 2303740125
- .long 1014042725
- .long 1540824585
- .long 1072427714
- .long 1064017011
- .long 3163487690
- .long 2420883922
- .long 1072417822
- .long 2049810052
- .long 1014119888
- .long 815859274
- .long 1072407984
- .long 240396590
- .long 3163487443
- .long 4076559943
- .long 1072398198
- .long 2119478331
- .long 3160758351
- .long 2380618042
- .long 1072388466
- .long 3149557219
- .long 3163320799
- .long 3092190715
- .long 1072378786
- .long 814012168
- .long 3159523422
- .long 697153126
- .long 1072369159
- .long 1283515429
- .long 3163283189
- .long 2572866477
- .long 1072359583
- .long 878562433
- .long 1015521741
- .long 3218338682
- .long 1072350059
- .long 3404164304
- .long 3162477108
- .long 1434058175
- .long 1072340587
- .long 251133233
- .long 1015085769
- .long 321958744
- .long 1072331166
- .long 3401933767
- .long 1015794558
- .long 2990417245
- .long 1072321795
- .long 3683467745
- .long 3163369326
- .long 3964284211
- .long 1072312475
- .long 2111583915
- .long 1015427164
- .long 2069751141
- .long 1072303206
- .long 1562170675
- .long 3162724681
- .long 434316067
- .long 1072293987
- .long 2028358766
- .long 1013458122
- .long 2191782032
- .long 1072284817
- .long 2960257726
- .long 1013742662
- .long 1892288442
- .long 1072275697
- .long 2446255666
- .long 3162600381
- .long 2682146384
- .long 1072266626
- .long 2082178513
- .long 3163363419
- .long 3418903055
- .long 1072257604
- .long 2527457337
- .long 3160820604
- .long 2966275557
- .long 1072248631
- .long 2176155324
- .long 3159842759
- .long 194117574
- .long 1072239707
- .long 777528612
- .long 3163412089
- .long 2568320822
- .long 1072230830
- .long 2732824428
- .long 1014352915
- .long 380978316
- .long 1072222002
- .long 854188970
- .long 3160462686
- .long 1110089947
- .long 1072213221
- .long 1451641639
- .long 1015474673
- .long 3649726105
- .long 1072204487
- .long 4085036346
- .long 1015649474
- .long 2604962541
- .long 1072195801
- .long 2614425274
- .long 3163539192
- .long 1176749997
- .long 1072187162
- .long 2738998779
- .long 3162035844
- .long 2571947539
- .long 1072178569
- .long 3558159064
- .long 3163376669
- .long 1413356050
- .long 1072170023
- .long 1651349291
- .long 3162668166
- .long 919555682
- .long 1072161523
- .long 3121969534
- .long 1012948226
- .long 19972402
- .long 1072153069
- .long 3507899862
- .long 1016009292
- .long 1944781191
- .long 1072144660
- .long 3993278767
- .long 3161724279
- .long 1339972927
- .long 1072136297
- .long 167908909
- .long 1015572152
- .long 1447192521
- .long 1072127979
- .long 1462857171
- .long 3162514521
- .long 1218806132
- .long 1072119706
- .long 1818613052
- .long 3162548441
- .long 3907805044
- .long 1072111477
- .long 2257091225
- .long 3161550407
- .long 4182873220
- .long 1072103293
- .long 629542646
- .long 3161996303
- .long 1013258799
- .long 1072095154
- .long 1748797611
- .long 3160129082
- .long 1963711167
- .long 1072087058
- .long 1744767757
- .long 3160574294
- .long 1719614413
- .long 1072079006
- .long 330458198
- .long 3163282740
- .long 3561793907
- .long 1072070997
- .long 1157054053
- .long 1011890350
- .long 2186617381
- .long 1072063032
- .long 2270764084
- .long 3163272713
- .long 885834528
- .long 1072055110
- .long 1973258547
- .long 3162261564
- .long 2956612997
- .long 1072047230
- .long 2118169751
- .long 3162735553
- .long 3111574537
- .long 1072039393
- .long 2606161479
- .long 3162759746
- .long 363667784
- .long 1072031599
- .long 813753950
- .long 1015785209
- .long 2321106615
- .long 1072023846
- .long 2171176610
- .long 1009535771
- .long 3712504873
- .long 1072016135
- .long 88491949
- .long 1015427660
- .long 3566716925
- .long 1072008466
- .long 1536826856
- .long 1014142433
- .long 917841882
- .long 1072000839
- .long 18715565
- .long 1015659308
- .long 3395129871
- .long 1071993252
- .long 4025345435
- .long 3162335388
- .long 1453150082
- .long 1071985707
- .long 498154669
- .long 3161488062
- .long 2731501122
- .long 1071978202
- .long 1774031855
- .long 3162470021
- .long 1990012071
- .long 1071970738
- .long 3529070563
- .long 3162813193
- .long 2583551245
- .long 1071963314
- .long 3161094195
- .long 1015606491
- .long 3577096743
- .long 1071955930
- .long 2951496418
- .long 1013793687
- .long 4040676318
- .long 1071948586
- .long 4090609238
- .long 1015663458
- .long 3049340112
- .long 1071941282
- .long 3062915824
- .long 1013170595
- .long 3978100823
- .long 1071934017
- .long 3513027190
- .long 1015845963
- .long 1617004845
- .long 1071926792
- .long 82804944
- .long 1010342778
- .long 3645941911
- .long 1071919605
- .long 3814685081
- .long 3161573341
- .long 569847338
- .long 1071912458
- .long 472945272
- .long 3159290729
- .long 78413852
- .long 1071905349
- .long 4183226867
- .long 3163017251
- .long 1276261410
- .long 1071898278
- .long 300981948
- .long 1014684169
- .long 3272845541
- .long 1071891245
- .long 928852419
- .long 3163488248
- .long 887463927
- .long 1071884251
- .long 3596744163
- .long 3160794166
- .long 1829099622
- .long 1071877294
- .long 1016661181
- .long 3163461005
- .long 926591435
- .long 1071870375
- .long 3208833762
- .long 3162913514
- .long 1603444721
- .long 1071863493
- .long 1548633640
- .long 3162201326
- .long 2992903935
- .long 1071856648
- .long 2218154406
- .long 1015228193
- .long 4232894513
- .long 1071849840
- .long 2383938684
- .long 1014668519
- .long 171030293
- .long 1071843070
- .long 3526460132
- .long 1014428778
- .long 2839424854
- .long 1071836335
- .long 1171596163
- .long 1013041679
- .long 2799960843
- .long 1071829637
- .long 1423655381
- .long 1015022151
- .long 3504003472
- .long 1071822975
- .long 3594001060
- .long 3157330652
- .long 4112506593
- .long 1071816349
- .long 2947355221
- .long 1014371048
- .long 3790955393
- .long 1071809759
- .long 2352942462
- .long 3163180090
- .long 1709341917
- .long 1071803205
- .long 2571168217
- .long 1014152499
- .long 1337108031
- .long 1071796686
- .long 3203724452
- .long 1014677845
- .long 1853186616
- .long 1071790202
- .long 3066496371
- .long 1015656574
- .long 2440944790
- .long 1071783753
- .long 2492769774
- .long 1014147454
- .long 2288159958
- .long 1071777339
- .long 2169144469
- .long 1014876021
- .long 586995997
- .long 1071770960
- .long 41662348
- .long 3162627992
- .long 828946858
- .long 1071764615
- .long 10642492
- .long 1015939438
- .long 2214878420
- .long 1071758304
- .long 892270087
- .long 3163116422
- .long 3949972341
- .long 1071752027
- .long 2068408548
- .long 1014913868
- .long 948735466
- .long 1071745785
- .long 3516338028
- .long 3162574883
- .long 1014845819
- .long 1071739576
- .long 3117910646
- .long 3161559105
- .long 3366293073
- .long 1071733400
- .long 3119426314
- .long 1014120554
- .long 2930322912
- .long 1071727258
- .long 2599499422
- .long 3162714047
- .long 3228316108
- .long 1071721149
- .long 3010241991
- .long 3158422804
- .long 3490863953
- .long 1071715073
- .long 960797498
- .long 3162948880
- .long 2952712987
- .long 1071709030
- .long 3293494651
- .long 3160120301
- .long 852742562
- .long 1071703020
- .long 667253586
- .long 1009793559
- .long 728909815
- .long 1071697042
- .long 383930225
- .long 1015029468
- .long 1828292879
- .long 1071691096
- .long 1255956747
- .long 1015588398
- .long 3402036099
- .long 1071685182
- .long 405889334
- .long 1015105656
- .long 410360776
- .long 1071679301
- .long 1269990655
- .long 1011975870
- .long 702412510
- .long 1071673451
- .long 3803266087
- .long 3162280415
- .long 3541402996
- .long 1071667632
- .long 2759177317
- .long 1014854626
- .long 3899555717
- .long 1071661845
- .long 427280750
- .long 3162546972
- .long 1048019041
- .long 1071656090
- .long 1398474845
- .long 3160510595
- .long 2851812149
- .long 1071650365
- .long 2595802551
- .long 1015767337
- .type T2_neg_f,@object
- .size T2_neg_f,2048
- .align 16
-pv:
- .long 329805064
- .long 1038488134
- .long 2773927730
- .long 1053236707
- .long 286331153
- .long 1065423121
- .long 1431655765
- .long 1069897045
- .long 1744127201
- .long 1046144581
- .long 436314137
- .long 1059717536
- .type pv,@object
- .size pv,48
- .align 16
-MASK3:
- .long 0
- .long 4294967280
- .long 0
- .long 4294967280
- .type MASK3,@object
- .size MASK3,16
- .align 8
-HALFMASK:
- .long 4160749568
- .long 2147483647
- .type HALFMASK,@object
- .size HALFMASK,8
- .data
- .section .note.GNU-stack, "",@progbits
-// -- Begin DWARF2 SEGMENT .eh_frame
- .section .eh_frame,"a",@progbits
-.eh_frame_seg:
- .align 1
- .4byte 0x00000014
- .8byte 0x00527a0100000000
- .8byte 0x08070c1b01107801
- .4byte 0x00000190
- .4byte 0x0000001c
- .4byte 0x0000001c
- .4byte ..___tag_value_sinh.1-.
- .4byte ..___tag_value_sinh.5-..___tag_value_sinh.1
- .2byte 0x0400
- .4byte ..___tag_value_sinh.3-..___tag_value_sinh.1
- .2byte 0x100e
- .byte 0x04
- .4byte ..___tag_value_sinh.4-..___tag_value_sinh.3
- .2byte 0x080e
- .byte 0x00
-# End
diff --git a/libm/x86_64/s_atan.S b/libm/x86_64/s_atan.S
deleted file mode 100644
index d0e5d72..0000000
--- a/libm/x86_64/s_atan.S
+++ /dev/null
@@ -1,927 +0,0 @@
-/*
-Copyright (c) 2014, Intel Corporation
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
-
- * Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
-
- * Neither the name of Intel Corporation nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
-ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/******************************************************************************/
-// ALGORITHM DESCRIPTION
-// ---------------------
-//
-// This implementation uses the main path for |x| in [2^{-5},2^65).
-// For |x| in [2^{-64},2^{-5}), a secondary path is used.
-// For the biased exponent of X within 3FFH-64 and 3FF+64, we use one branch.
-// We use the following definition of B and X` so that the formula
-// atan(X) = Tau + atan( (X`-B) / (One + BX) ) is correct
-//
-// X = (-1)^s * 2^k * 1. x1 x2 ... x52
-//
-// Define X` = 0 if k >= 5; and X` = |X| otherwise
-// Define One = 0 if k >= 5; and One = 1 otherwise
-// Define B = 0 if k <= -6; B = 2^k * 1.x1 x2 x3 x4 1 if -5 <= k <= 4
-// Define B = 2^5 * 1.0 0 ... 0 if k >= 5
-//
-// Tau is 0 if k <= -6;
-// Tau is atan( B ) if -5 <= k <= 4
-// Tau is pi/2 if k >= 5
-//
-// Special cases:
-// atan(NaN) = quiet NaN
-// atan(+/-INF) = +/-Pi/2
-// atan(+/-0) = +/-0
-//
-/******************************************************************************/
-
-#include <private/bionic_asm.h>
-# -- Begin atan
-ENTRY(atan)
-# parameter 1: %xmm0
-..B1.1:
-..___tag_value_atan.1:
- pushq %rsi
-..___tag_value_atan.3:
- movsd %xmm0, (%rsp)
-..B1.2:
- movq $0xffff000000000000, %r8
- movd %r8, %xmm3
- movq ONEMASK(%rip), %xmm5
- movq $0x800000000000, %r9
- movd %r9, %xmm4
- pextrw $3, %xmm0, %edx
- andpd %xmm0, %xmm3
- pshufd $68, %xmm0, %xmm1
- orpd %xmm4, %xmm3
- movl %edx, %eax
- andl $32767, %edx
- subl $16288, %edx
- cmpl $159, %edx
- ja .L_2TAG_PACKET_0.0.1
- mulsd %xmm3, %xmm1
- subsd %xmm3, %xmm0
- addsd %xmm5, %xmm1
- divsd %xmm1, %xmm0
- addl $1, %edx
- movq a2(%rip), %xmm2
- movq b2(%rip), %xmm4
- andl $32768, %eax
- xorpd %xmm7, %xmm7
- pinsrw $3, %eax, %xmm7
- addl %edx, %edx
- lea atan_tbl(%rip), %r8
- movq (%r8,%rdx,8), %xmm6
- movq 8(%r8,%rdx,8), %xmm5
- xorpd %xmm7, %xmm5
- xorpd %xmm7, %xmm6
- movq 8+a2(%rip), %xmm7
- movddup %xmm0, %xmm1
- mulsd %xmm0, %xmm0
- movddup %xmm1, %xmm3
- addsd %xmm6, %xmm1
- mulsd %xmm0, %xmm2
- addsd %xmm0, %xmm4
- subsd %xmm1, %xmm6
- mulsd %xmm0, %xmm4
- addsd %xmm7, %xmm2
- mulsd %xmm3, %xmm0
- addsd %xmm3, %xmm6
- mulsd %xmm2, %xmm0
- addsd 8+b2(%rip), %xmm4
- addsd %xmm5, %xmm6
- mulsd %xmm4, %xmm0
- addsd %xmm6, %xmm0
- addsd %xmm1, %xmm0
- jmp .L_2TAG_PACKET_1.0.1
-.L_2TAG_PACKET_0.0.1:
- addl $944, %edx
- cmpl $1103, %edx
- ja .L_2TAG_PACKET_2.0.1
- movq a2(%rip), %xmm4
- movq b2(%rip), %xmm7
- movq (%rsp), %xmm0
- mulsd %xmm1, %xmm1
- movq 8+a2(%rip), %xmm2
- movq 8+b2(%rip), %xmm5
- mulsd %xmm1, %xmm4
- addsd %xmm1, %xmm7
- movq %xmm1, %xmm6
- mulsd %xmm0, %xmm1
- addsd %xmm4, %xmm2
- mulsd %xmm6, %xmm7
- mulsd %xmm1, %xmm2
- addsd %xmm5, %xmm7
- mulsd %xmm7, %xmm2
- addsd %xmm2, %xmm0
- jmp .L_2TAG_PACKET_1.0.1
-.L_2TAG_PACKET_2.0.1:
- addl $15344, %edx
- cmpl $16368, %edx
- ja .L_2TAG_PACKET_3.0.1
- movq (%rsp), %xmm0
- movq (%rsp), %xmm1
- cmpl $16, %edx
- jae .L_2TAG_PACKET_1.0.1
- mulsd %xmm0, %xmm1
- jmp .L_2TAG_PACKET_1.0.1
-.L_2TAG_PACKET_3.0.1:
- cmpl $17392, %edx
- jae .L_2TAG_PACKET_4.0.1
- movq $0xbff0000000000000, %r8
- movd %r8, %xmm1
- divsd %xmm0, %xmm1
- movq a2(%rip), %xmm2
- movq b2(%rip), %xmm4
- andl $32768, %eax
- xorpd %xmm7, %xmm7
- pinsrw $3, %eax, %xmm7
- addl %edx, %edx
- movq pi_table(%rip), %xmm6
- movq 8+pi_table(%rip), %xmm5
- xorpd %xmm7, %xmm5
- xorpd %xmm7, %xmm6
- movq 8+a2(%rip), %xmm7
- movddup %xmm1, %xmm0
- mulsd %xmm1, %xmm1
- movddup %xmm0, %xmm3
- addsd %xmm6, %xmm0
- mulsd %xmm1, %xmm2
- addsd %xmm1, %xmm4
- subsd %xmm0, %xmm6
- mulsd %xmm1, %xmm4
- addsd %xmm7, %xmm2
- mulsd %xmm3, %xmm1
- addsd %xmm3, %xmm6
- mulsd %xmm2, %xmm1
- addsd 8+b2(%rip), %xmm4
- addsd %xmm5, %xmm6
- mulsd %xmm4, %xmm1
- addsd %xmm6, %xmm1
- addsd %xmm1, %xmm0
- jmp .L_2TAG_PACKET_1.0.1
-.L_2TAG_PACKET_4.0.1:
- movq (%rsp), %xmm4
- movq SGNMASK(%rip), %xmm0
- movq pi_table(%rip), %xmm2
- movq 8+pi_table(%rip), %xmm3
- movd %xmm1, %eax
- psrlq $32, %xmm1
- movd %xmm1, %edx
- andl $2147483647, %edx
- cmpl $2146435072, %edx
- jae .L_2TAG_PACKET_5.0.1
-.L_2TAG_PACKET_6.0.1:
- andnpd %xmm4, %xmm0
- orpd %xmm0, %xmm2
- orpd %xmm3, %xmm0
- addsd %xmm2, %xmm0
- jmp .L_2TAG_PACKET_1.0.1
-.L_2TAG_PACKET_5.0.1:
- subl $2146435072, %edx
- orl %edx, %eax
- cmpl $0, %eax
- je .L_2TAG_PACKET_6.0.1
- movq %xmm4, %xmm0
- addsd %xmm0, %xmm0
-.L_2TAG_PACKET_1.0.1:
-..B1.3:
- popq %rcx
-..___tag_value_atan.4:
- ret
-..___tag_value_atan.5:
-END(atan)
-# -- End atan
- .section .rodata, "a"
- .align 4
- .align 4
-ONEMASK:
- .long 0
- .long 1072693248
- .type ONEMASK,@object
- .size ONEMASK,8
- .align 4
-a2:
- .long 2006262985
- .long 1069310863
- .long 2358449471
- .long 3217342131
- .type a2,@object
- .size a2,16
- .align 4
-b2:
- .long 3845454352
- .long 1069952297
- .long 2829679149
- .long 1073771565
- .type b2,@object
- .size b2,16
- .align 4
-atan_tbl:
- .long 0
- .long 0
- .long 0
- .long 0
- .long 3819695742
- .long 1067482761
- .long 2398680355
- .long 3155462074
- .long 2998791009
- .long 1067548225
- .long 3868465248
- .long 3157182472
- .long 3339424991
- .long 1067613680
- .long 3296670360
- .long 1010752543
- .long 2710002256
- .long 1067679126
- .long 3403896007
- .long 1010910768
- .long 3275701428
- .long 1067744562
- .long 119959933
- .long 1011482843
- .long 2908636881
- .long 1067809988
- .long 2464489612
- .long 1011545526
- .long 3777889398
- .long 1067875403
- .long 3262682165
- .long 1009703919
- .long 3759667419
- .long 1067940807
- .long 1838130851
- .long 3157373556
- .long 732369940
- .long 1068006200
- .long 1203428313
- .long 1010055371
- .long 1166616461
- .long 1068071580
- .long 2901274051
- .long 3158549977
- .long 2945472892
- .long 1068136947
- .long 3726120658
- .long 1009762715
- .long 3954480976
- .long 1068202301
- .long 1289173457
- .long 1009429861
- .long 2081752829
- .long 1068267642
- .long 1836909874
- .long 1006212095
- .long 3807999788
- .long 1068332968
- .long 2172459940
- .long 3156162078
- .long 2731789884
- .long 1068398280
- .long 3450718392
- .long 3159216547
- .long 1044477961
- .long 1068463577
- .long 2230553229
- .long 1011424339
- .long 1486930287
- .long 1068530218
- .long 2861547474
- .long 1012041376
- .long 2293016881
- .long 1068595466
- .long 136843272
- .long 1012684797
- .long 201518157
- .long 1068660680
- .long 63231984
- .long 1012427198
- .long 4054234584
- .long 1068725856
- .long 3927006960
- .long 1011878955
- .long 1246477213
- .long 1068790995
- .long 1494265652
- .long 3155219350
- .long 678186699
- .long 1068856093
- .long 1264361424
- .long 3159256693
- .long 2690594995
- .long 1068921148
- .long 3906996379
- .long 1009288267
- .long 3362611517
- .long 1068986159
- .long 1650970041
- .long 3158331771
- .long 3102162111
- .long 1069051124
- .long 365917035
- .long 3160264153
- .long 2352611067
- .long 1069116041
- .long 4008970190
- .long 3159478182
- .long 1594134794
- .long 1069180908
- .long 466690178
- .long 1012526501
- .long 1345079306
- .long 1069245723
- .long 2268273568
- .long 3160164092
- .long 2163300970
- .long 1069310484
- .long 2750834800
- .long 3158113482
- .long 352522716
- .long 1069375190
- .long 1750411372
- .long 1011790845
- .long 848541647
- .long 1069439838
- .long 2164207573
- .long 1011698350
- .long 40647312
- .long 1069504427
- .long 2949165434
- .long 3159107267
- .long 2216766270
- .long 1069574357
- .long 2197920765
- .long 3161055954
- .long 1090914384
- .long 1069638757
- .long 2330454674
- .long 1013365998
- .long 387601244
- .long 1069703022
- .long 3185681168
- .long 1013434071
- .long 3991640484
- .long 1069767144
- .long 1313211590
- .long 3161087959
- .long 3322489502
- .long 1069831118
- .long 3013977995
- .long 1013053011
- .long 3121698570
- .long 1069894936
- .long 4069015667
- .long 1013023362
- .long 4289964660
- .long 1069958591
- .long 1736191156
- .long 3158266731
- .long 3903312386
- .long 1070022077
- .long 1833592413
- .long 3159731471
- .long 3818449864
- .long 1070085387
- .long 851036429
- .long 3159730451
- .long 2097480306
- .long 1070148515
- .long 3506390884
- .long 3160462302
- .long 1611694502
- .long 1070211454
- .long 2785735540
- .long 3160465144
- .long 1464694796
- .long 1070274198
- .long 4229277299
- .long 3159907000
- .long 1299612775
- .long 1070336741
- .long 4116653788
- .long 3160427739
- .long 1310544789
- .long 1070399077
- .long 1064430331
- .long 1013218202
- .long 2253168030
- .long 1070461200
- .long 1405044609
- .long 3157623179
- .long 1159567373
- .long 1070523105
- .long 2353445521
- .long 3159992176
- .long 1359373750
- .long 1070605818
- .long 1748171336
- .long 3161879263
- .long 908341706
- .long 1070667034
- .long 3372710815
- .long 3161775245
- .long 1743027350
- .long 1070727765
- .long 687089934
- .long 3160507171
- .long 2055355646
- .long 1070787992
- .long 2392855242
- .long 1013682469
- .long 690426164
- .long 1070847697
- .long 1103926666
- .long 1014052810
- .long 1483247847
- .long 1070906862
- .long 2082645847
- .long 3161345479
- .long 392040270
- .long 1070965472
- .long 2407720023
- .long 1014053754
- .long 2673846014
- .long 1071023511
- .long 1293605532
- .long 3158464385
- .long 1384215810
- .long 1071080967
- .long 2446095872
- .long 3159216407
- .long 3101660631
- .long 1071137826
- .long 698040758
- .long 1014855328
- .long 2094057058
- .long 1071194078
- .long 2282048339
- .long 1014040385
- .long 1712750594
- .long 1071249712
- .long 1204372378
- .long 3162276464
- .long 1411515787
- .long 1071304719
- .long 949080808
- .long 1015006403
- .long 931538085
- .long 1071359091
- .long 3027127039
- .long 1014307233
- .long 179139065
- .long 1071412821
- .long 4285547492
- .long 3161934731
- .long 3387721259
- .long 1071465902
- .long 373225773
- .long 1013486625
- .long 2132236852
- .long 1071544299
- .long 3250533429
- .long 1014031677
- .long 1942070284
- .long 1071645596
- .long 1237964179
- .long 3163239113
- .long 1532707802
- .long 1071695380
- .long 330645583
- .long 1012495610
- .long 2294184979
- .long 1071743834
- .long 3959472897
- .long 1015833116
- .long 3805060714
- .long 1071790961
- .long 2671256142
- .long 1013727772
- .long 2215037898
- .long 1071836770
- .long 2683359117
- .long 1015831902
- .long 483661594
- .long 1071881273
- .long 836288326
- .long 3162648643
- .long 1534679894
- .long 1071924486
- .long 373258696
- .long 3162470096
- .long 1538714628
- .long 1071966430
- .long 3199433068
- .long 1015325501
- .long 527642555
- .long 1072007128
- .long 3636832592
- .long 3161843145
- .long 291339150
- .long 1072046605
- .long 890169537
- .long 3160586117
- .long 2450210201
- .long 1072084888
- .long 1636353294
- .long 3163193400
- .long 2411367951
- .long 1072122007
- .long 374899873
- .long 1011331750
- .long 681549971
- .long 1072157992
- .long 506411689
- .long 1015373954
- .long 1466745541
- .long 1072192873
- .long 2143860931
- .long 1013364334
- .long 2845622366
- .long 1072226682
- .long 2869178209
- .long 3162423682
- .long 2838871438
- .long 1072275456
- .long 3742223599
- .long 1014338577
- .long 4200275274
- .long 1072337034
- .long 1566539915
- .long 3161839550
- .long 3034733530
- .long 1072394897
- .long 652621408
- .long 3162261964
- .long 3207412993
- .long 1072449290
- .long 3206124665
- .long 1014408733
- .long 624461478
- .long 1072500450
- .long 932437485
- .long 1015204343
- .long 767665908
- .long 1072548600
- .long 1037911952
- .long 3163527627
- .long 1110773639
- .long 1072593952
- .long 2371517912
- .long 3160465741
- .long 1940828530
- .long 1072636704
- .long 2731408428
- .long 3162895795
- .long 1911329388
- .long 1072677041
- .long 1773089615
- .long 3159569267
- .long 1764715788
- .long 1072704191
- .long 691346949
- .long 3164069946
- .long 3332979233
- .long 1072722195
- .long 3550733983
- .long 1014770628
- .long 1321870254
- .long 1072739231
- .long 1415315820
- .long 1016224052
- .long 3657429030
- .long 1072755365
- .long 3910539033
- .long 1015966402
- .long 4197624557
- .long 1072770661
- .long 2333399254
- .long 3164546480
- .long 1512059493
- .long 1072785177
- .long 2701510318
- .long 1016178092
- .long 453379037
- .long 1072798965
- .long 4046344253
- .long 3162814364
- .long 1942345162
- .long 1072818388
- .long 621134147
- .long 1016335195
- .long 4210176273
- .long 1072842164
- .long 2701013387
- .long 3164326619
- .long 4185644010
- .long 1072863795
- .long 4163699341
- .long 1016203112
- .long 679688788
- .long 1072883543
- .long 4147276762
- .long 1014066750
- .long 29432865
- .long 1072901630
- .long 970415797
- .long 1016902063
- .long 4070721092
- .long 1072918247
- .long 2539004411
- .long 3163736096
- .long 2252468843
- .long 1072933561
- .long 3424082887
- .long 3163407177
- .long 2929724825
- .long 1072947712
- .long 3661482235
- .long 3163846989
- .long 1377513368
- .long 1072960824
- .long 3987926680
- .long 1013647908
- .long 1031632908
- .long 1072973003
- .long 3672217151
- .long 1016614619
- .long 2516508130
- .long 1072984342
- .long 545855020
- .long 3162728930
- .long 3792452178
- .long 1072994923
- .long 3420119467
- .long 1016471430
- .long 3147791459
- .long 1073004818
- .long 1342204979
- .long 1013937254
- .long 999189752
- .long 1073014090
- .long 1006335472
- .long 3162850919
- .long 711011011
- .long 1073022794
- .long 4633488
- .long 3162966895
- .long 15640363
- .long 1073030980
- .long 1686389560
- .long 3164376226
- .long 1218463589
- .long 1073042382
- .long 1526837110
- .long 3163533985
- .long 2538470555
- .long 1073056144
- .long 2273304406
- .long 3163784996
- .long 1229720947
- .long 1073068489
- .long 2971628206
- .long 3162356540
- .long 3115427016
- .long 1073079621
- .long 4215132957
- .long 3164282762
- .long 4030612557
- .long 1073089709
- .long 1913251691
- .long 3163671292
- .long 2728521257
- .long 1073098892
- .long 2861089500
- .long 1015454459
- .long 1118696283
- .long 1073107285
- .long 1628948053
- .long 1016179658
- .long 2682711255
- .long 1073114984
- .long 2906306266
- .long 1014142643
- .long 2073898081
- .long 1073122072
- .long 1322740454
- .long 3164497217
- .long 1403700297
- .long 1073128618
- .long 416137895
- .long 3162781466
- .long 2502685617
- .long 1073134681
- .long 3242008732
- .long 1014593495
- .long 1531926851
- .long 1073140313
- .long 1362708094
- .long 1016517604
- .long 3572814411
- .long 1073145557
- .long 3709790527
- .long 1012646874
- .long 1695536111
- .long 1073150453
- .long 3980346340
- .long 1016705136
- .long 2363057203
- .long 1073155033
- .long 2551194792
- .long 1012569695
- .long 2873365682
- .long 1073159327
- .long 3181154748
- .long 1017041450
- .long 1053384691
- .long 1073165288
- .long 3074536879
- .long 1016965660
- .long 3270542712
- .long 1073172451
- .long 2535319415
- .long 3163051778
- .long 1353631484
- .long 1073178850
- .long 1173833755
- .long 1015534537
- .long 3511218460
- .long 1073184599
- .long 1243608109
- .long 3161592122
- .long 4121259284
- .long 1073189793
- .long 398584912
- .long 3163829923
- .long 1193862106
- .long 1073194509
- .long 1873745539
- .long 3163802819
- .long 3861949790
- .long 1073198808
- .long 3841261147
- .long 1015587248
- .long 1486904578
- .long 1073202745
- .long 1634726776
- .long 3163847886
- .long 2879153715
- .long 1073206362
- .long 200456242
- .long 3164138657
- .long 385353253
- .long 1073209698
- .long 1186355517
- .long 1014887155
- .long 1125865839
- .long 1073212783
- .long 203561262
- .long 3161244927
- .long 1221361475
- .long 1073215645
- .long 3382476563
- .long 1014936138
- .long 2077323573
- .long 1073218307
- .long 1005121005
- .long 3164430752
- .long 215611373
- .long 1073220790
- .long 353198764
- .long 3164485137
- .long 2347419265
- .long 1073223110
- .long 1103143360
- .long 1016542137
- .long 1379112765
- .long 1073225284
- .long 381583533
- .long 3162870833
- .long 3891198463
- .long 1073228298
- .long 1771275754
- .long 1014654681
- .long 3395914051
- .long 1073231917
- .long 2350900914
- .long 3164013978
- .long 2799919478
- .long 1073235146
- .long 2893950164
- .long 3163260901
- .long 1138673476
- .long 1073238045
- .long 2622204785
- .long 3164174388
- .long 3408855940
- .long 1073240661
- .long 2800881650
- .long 1016008624
- .long 2044858738
- .long 1073243035
- .long 604544785
- .long 1017022901
- .long 2578795176
- .long 1073245198
- .long 2557332925
- .long 1016135165
- .long 4196285314
- .long 1073247177
- .long 2032365307
- .long 1016194735
- .long 224877747
- .long 1073248996
- .long 497926916
- .long 1016947111
- .long 3271386490
- .long 1073250671
- .long 2689994846
- .long 1016631513
- .long 813635989
- .long 1073252221
- .long 747035277
- .long 3164530136
- .long 369829519
- .long 1073253658
- .long 2182033858
- .long 3163190340
- .long 1187679052
- .long 1073254994
- .long 673954443
- .long 1016149821
- .long 4232586098
- .long 1073256239
- .long 497775200
- .long 3162179015
- .long 426690558
- .long 1073257404
- .long 3063343247
- .long 1016865578
- .long 1624065902
- .long 1073258494
- .long 1354224996
- .long 3163503778
- .long 1413754136
- .long 1073291771
- .long 856972295
- .long 1016178214
- .type atan_tbl,@object
- .size atan_tbl,2592
- .align 4
-pi_table:
- .long 1413754136
- .long 1073291771
- .long 856972295
- .long 1016178214
- .type pi_table,@object
- .size pi_table,16
- .align 4
-SGNMASK:
- .long 4294967295
- .long 2147483647
- .type SGNMASK,@object
- .size SGNMASK,8
- .data
- .section .note.GNU-stack, "",@progbits
-// -- Begin DWARF2 SEGMENT .eh_frame
- .section .eh_frame,"a",@progbits
-.eh_frame_seg:
- .align 1
- .4byte 0x00000014
- .8byte 0x00527a0100000000
- .8byte 0x08070c1b01107801
- .4byte 0x00000190
- .4byte 0x0000001c
- .4byte 0x0000001c
- .4byte ..___tag_value_atan.1-.
- .4byte ..___tag_value_atan.5-..___tag_value_atan.1
- .2byte 0x0400
- .4byte ..___tag_value_atan.3-..___tag_value_atan.1
- .2byte 0x100e
- .byte 0x04
- .4byte ..___tag_value_atan.4-..___tag_value_atan.3
- .2byte 0x080e
- .byte 0x00
-# End
diff --git a/libm/x86_64/s_cbrt.S b/libm/x86_64/s_cbrt.S
deleted file mode 100644
index 6b00f56..0000000
--- a/libm/x86_64/s_cbrt.S
+++ /dev/null
@@ -1,754 +0,0 @@
-/*
-Copyright (c) 2014, Intel Corporation
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
-
- * Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
-
- * Neither the name of Intel Corporation nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
-ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/******************************************************************************/
-// ALGORITHM DESCRIPTION
-// ---------------------
-//
-// Assume x=2^{3*k+j} * 1.b1 b2 ... b5 b6 ... b52, where j = 0,1,2.
-// Let r=(x*2^{-3k-j} - 1.b1 b2 ... b5 1)* rcp[b1 b2 ..b5],
-// where rcp[b1 b2 .. b5]=1/(1.b1 b2 b3 b4 b5 1) in double precision
-// cbrt(2^j * 1. b1 b2 .. b5 1) is approximated as T[j][b1..b5]+D[j][b1..b5]
-// (T stores the high 53 bits, D stores the low order bits)
-// Result=2^k*T+(2^k*T*r)*P+2^k*D
-// where P=p1+p2*r+..+p8*r^7
-//
-// Special cases:
-// cbrt(NaN) = quiet NaN, and raise invalid exception
-// cbrt(INF) = that INF
-// cbrt(+/-0) = +/-0
-//
-/******************************************************************************/
-
-#include <private/bionic_asm.h>
-# -- Begin cbrt
-ENTRY(cbrt)
-# parameter 1: %xmm0
-..B1.1:
-..___tag_value_cbrt.1:
- subq $24, %rsp
-..___tag_value_cbrt.3:
- movsd %xmm0, (%rsp)
-..B1.2:
- movq %xmm0, %xmm7
- movl $524032, %edx
- movsd EXP_MSK3(%rip), %xmm5
- movsd EXP_MSK2(%rip), %xmm3
- psrlq $44, %xmm7
- pextrw $0, %xmm7, %ecx
- movd %xmm7, %eax
- movsd EXP_MASK(%rip), %xmm1
- movsd SIG_MASK(%rip), %xmm2
- andl $248, %ecx
- lea rcp_table(%rip), %r8
- movsd (%rcx,%r8), %xmm4
- movq %rax, %r9
- andl %eax, %edx
- cmpl $0, %edx
- je .L_2TAG_PACKET_0.0.1
- cmpl $524032, %edx
- je .L_2TAG_PACKET_1.0.1
- shrl $8, %edx
- shrq $8, %r9
- andpd %xmm0, %xmm2
- andpd %xmm5, %xmm0
- orpd %xmm2, %xmm3
- orpd %xmm0, %xmm1
- movapd coeff_table(%rip), %xmm5
- movl $5462, %eax
- movapd 16+coeff_table(%rip), %xmm6
- mull %edx
- movq %r9, %rdx
- andq $2047, %r9
- shrl $14, %eax
- andl $2048, %edx
- subq %rax, %r9
- subq %rax, %r9
- subq %rax, %r9
- shlq $8, %r9
- addl $682, %eax
- orl %edx, %eax
- movd %eax, %xmm7
- addq %r9, %rcx
- psllq $52, %xmm7
-.L_2TAG_PACKET_2.0.1:
- movapd 32+coeff_table(%rip), %xmm2
- movapd 48+coeff_table(%rip), %xmm0
- subsd %xmm3, %xmm1
- movq %xmm7, %xmm3
- lea cbrt_table(%rip), %r8
- mulsd (%rcx,%r8), %xmm7
- mulsd %xmm4, %xmm1
- lea D_table(%rip), %r8
- mulsd (%rcx,%r8), %xmm3
- movapd %xmm1, %xmm4
- unpcklpd %xmm1, %xmm1
- mulpd %xmm1, %xmm5
- mulpd %xmm1, %xmm6
- mulpd %xmm1, %xmm1
- addpd %xmm5, %xmm2
- addpd %xmm6, %xmm0
- mulpd %xmm1, %xmm2
- mulpd %xmm1, %xmm1
- mulsd %xmm7, %xmm4
- addpd %xmm2, %xmm0
- mulsd %xmm0, %xmm1
- unpckhpd %xmm0, %xmm0
- addsd %xmm1, %xmm0
- mulsd %xmm4, %xmm0
- addsd %xmm3, %xmm0
- addsd %xmm7, %xmm0
- jmp ..B1.4
-.L_2TAG_PACKET_0.0.1:
- mulsd SCALE63(%rip), %xmm0
- movq %xmm0, %xmm7
- movl $524032, %edx
- psrlq $44, %xmm7
- pextrw $0, %xmm7, %ecx
- movd %xmm7, %eax
- andl $248, %ecx
- lea rcp_table(%rip), %r8
- movsd (%rcx,%r8), %xmm4
- movq %rax, %r9
- andl %eax, %edx
- shrl $8, %edx
- shrq $8, %r9
- cmpl $0, %edx
- je .L_2TAG_PACKET_3.0.1
- andpd %xmm0, %xmm2
- andpd %xmm5, %xmm0
- orpd %xmm2, %xmm3
- orpd %xmm0, %xmm1
- movapd coeff_table(%rip), %xmm5
- movl $5462, %eax
- movapd 16+coeff_table(%rip), %xmm6
- mull %edx
- movq %r9, %rdx
- andq $2047, %r9
- shrl $14, %eax
- andl $2048, %edx
- subq %rax, %r9
- subq %rax, %r9
- subq %rax, %r9
- shlq $8, %r9
- addl $661, %eax
- orl %edx, %eax
- movd %eax, %xmm7
- addq %r9, %rcx
- psllq $52, %xmm7
- jmp .L_2TAG_PACKET_2.0.1
-.L_2TAG_PACKET_3.0.1:
- cmpq $0, %r9
- jne .L_2TAG_PACKET_4.0.1
- xorpd %xmm0, %xmm0
- jmp ..B1.4
-.L_2TAG_PACKET_4.0.1:
- movsd ZERON(%rip), %xmm0
- jmp ..B1.4
-.L_2TAG_PACKET_1.0.1:
- movl 4(%rsp), %eax
- movl (%rsp), %edx
- movl %eax, %ecx
- andl $2147483647, %ecx
- cmpl $2146435072, %ecx
- ja .L_2TAG_PACKET_5.0.1
- cmpl $0, %edx
- jne .L_2TAG_PACKET_5.0.1
- cmpl $2146435072, %eax
- jne .L_2TAG_PACKET_6.0.1
- movsd INF(%rip), %xmm0
- jmp ..B1.4
-.L_2TAG_PACKET_6.0.1:
- movsd NEG_INF(%rip), %xmm0
- jmp ..B1.4
-.L_2TAG_PACKET_5.0.1:
- movsd (%rsp), %xmm0
- addsd %xmm0, %xmm0
- movq %xmm0, 8(%rsp)
-.L_2TAG_PACKET_7.0.1:
-..B1.4:
- addq $24, %rsp
-..___tag_value_cbrt.4:
- ret
-..___tag_value_cbrt.5:
-END(cbrt)
-# -- End cbrt
- .section .rodata, "a"
- .align 16
- .align 16
-coeff_table:
- .long 1553778919
- .long 3213899486
- .long 3534952507
- .long 3215266280
- .long 1646371399
- .long 3214412045
- .long 477218588
- .long 3216798151
- .long 3582521621
- .long 1066628362
- .long 1007461464
- .long 1068473053
- .long 889629714
- .long 1067378449
- .long 1431655765
- .long 1070945621
- .type coeff_table,@object
- .size coeff_table,64
- .align 4
-EXP_MSK3:
- .long 4294967295
- .long 1048575
- .type EXP_MSK3,@object
- .size EXP_MSK3,8
- .align 4
-EXP_MSK2:
- .long 0
- .long 3220193280
- .type EXP_MSK2,@object
- .size EXP_MSK2,8
- .align 4
-EXP_MASK:
- .long 0
- .long 3220176896
- .type EXP_MASK,@object
- .size EXP_MASK,8
- .align 4
-SIG_MASK:
- .long 0
- .long 1032192
- .type SIG_MASK,@object
- .size SIG_MASK,8
- .align 4
-rcp_table:
- .long 528611360
- .long 3220144632
- .long 2884679527
- .long 3220082993
- .long 1991868891
- .long 3220024928
- .long 2298714891
- .long 3219970134
- .long 58835168
- .long 3219918343
- .long 3035110223
- .long 3219869313
- .long 1617585086
- .long 3219822831
- .long 2500867033
- .long 3219778702
- .long 4241943008
- .long 3219736752
- .long 258732970
- .long 3219696825
- .long 404232216
- .long 3219658776
- .long 2172167368
- .long 3219622476
- .long 1544257904
- .long 3219587808
- .long 377579543
- .long 3219554664
- .long 1616385542
- .long 3219522945
- .long 813783277
- .long 3219492562
- .long 3940743189
- .long 3219463431
- .long 2689777499
- .long 3219435478
- .long 1700977147
- .long 3219408632
- .long 3169102082
- .long 3219382828
- .long 327235604
- .long 3219358008
- .long 1244336319
- .long 3219334115
- .long 1300311200
- .long 3219311099
- .long 3095471925
- .long 3219288912
- .long 2166487928
- .long 3219267511
- .long 2913108253
- .long 3219246854
- .long 293672978
- .long 3219226904
- .long 288737297
- .long 3219207624
- .long 1810275472
- .long 3219188981
- .long 174592167
- .long 3219170945
- .long 3539053052
- .long 3219153485
- .long 2164392968
- .long 3219136576
- .type rcp_table,@object
- .size rcp_table,256
- .align 4
-cbrt_table:
- .long 572345495
- .long 1072698681
- .long 1998204467
- .long 1072709382
- .long 3861501553
- .long 1072719872
- .long 2268192434
- .long 1072730162
- .long 2981979308
- .long 1072740260
- .long 270859143
- .long 1072750176
- .long 2958651392
- .long 1072759916
- .long 313113243
- .long 1072769490
- .long 919449400
- .long 1072778903
- .long 2809328903
- .long 1072788162
- .long 2222981587
- .long 1072797274
- .long 2352530781
- .long 1072806244
- .long 594152517
- .long 1072815078
- .long 1555767199
- .long 1072823780
- .long 4282421314
- .long 1072832355
- .long 2355578597
- .long 1072840809
- .long 1162590619
- .long 1072849145
- .long 797864051
- .long 1072857367
- .long 431273680
- .long 1072865479
- .long 2669831148
- .long 1072873484
- .long 733477752
- .long 1072881387
- .long 4280220604
- .long 1072889189
- .long 801961634
- .long 1072896896
- .long 2915370760
- .long 1072904508
- .long 1159613482
- .long 1072912030
- .long 2689944798
- .long 1072919463
- .long 1248687822
- .long 1072926811
- .long 2967951030
- .long 1072934075
- .long 630170432
- .long 1072941259
- .long 3760898254
- .long 1072948363
- .long 0
- .long 1072955392
- .long 2370273294
- .long 1072962345
- .long 1261754802
- .long 1072972640
- .long 546334065
- .long 1072986123
- .long 1054893830
- .long 1072999340
- .long 1571187597
- .long 1073012304
- .long 1107975175
- .long 1073025027
- .long 3606909377
- .long 1073037519
- .long 1113616747
- .long 1073049792
- .long 4154744632
- .long 1073061853
- .long 3358931423
- .long 1073073713
- .long 4060702372
- .long 1073085379
- .long 747576176
- .long 1073096860
- .long 3023138255
- .long 1073108161
- .long 1419988548
- .long 1073119291
- .long 1914185305
- .long 1073130255
- .long 294389948
- .long 1073141060
- .long 3761802570
- .long 1073151710
- .long 978281566
- .long 1073162213
- .long 823148820
- .long 1073172572
- .long 2420954441
- .long 1073182792
- .long 3815449908
- .long 1073192878
- .long 2046058587
- .long 1073202835
- .long 1807524753
- .long 1073212666
- .long 2628681401
- .long 1073222375
- .long 3225667357
- .long 1073231966
- .long 1555307421
- .long 1073241443
- .long 3454043099
- .long 1073250808
- .long 1208137896
- .long 1073260066
- .long 3659916772
- .long 1073269218
- .long 1886261264
- .long 1073278269
- .long 3593647839
- .long 1073287220
- .long 3086012205
- .long 1073296075
- .long 2769796922
- .long 1073304836
- .long 888716057
- .long 1073317807
- .long 2201465623
- .long 1073334794
- .long 164369365
- .long 1073351447
- .long 3462666733
- .long 1073367780
- .long 2773905457
- .long 1073383810
- .long 1342879088
- .long 1073399550
- .long 2543933975
- .long 1073415012
- .long 1684477781
- .long 1073430209
- .long 3532178543
- .long 1073445151
- .long 1147747300
- .long 1073459850
- .long 1928031793
- .long 1073474314
- .long 2079717015
- .long 1073488553
- .long 4016765315
- .long 1073502575
- .long 3670431139
- .long 1073516389
- .long 3549227225
- .long 1073530002
- .long 11637607
- .long 1073543422
- .long 588220169
- .long 1073556654
- .long 2635407503
- .long 1073569705
- .long 2042029317
- .long 1073582582
- .long 1925128962
- .long 1073595290
- .long 4136375664
- .long 1073607834
- .long 759964600
- .long 1073620221
- .long 4257606771
- .long 1073632453
- .long 297278907
- .long 1073644538
- .long 3655053093
- .long 1073656477
- .long 2442253172
- .long 1073668277
- .long 1111876799
- .long 1073679941
- .long 3330973139
- .long 1073691472
- .long 3438879452
- .long 1073702875
- .long 3671565478
- .long 1073714153
- .long 1317849547
- .long 1073725310
- .long 1642364115
- .long 1073736348
- .type cbrt_table,@object
- .size cbrt_table,768
- .align 4
-D_table:
- .long 4050900474
- .long 1014427190
- .long 1157977860
- .long 1016444461
- .long 1374568199
- .long 1017271387
- .long 2809163288
- .long 1016882676
- .long 3742377377
- .long 1013168191
- .long 3101606597
- .long 1017541672
- .long 65224358
- .long 1017217597
- .long 2691591250
- .long 1017266643
- .long 4020758549
- .long 1017689313
- .long 1316310992
- .long 1018030788
- .long 1031537856
- .long 1014090882
- .long 3261395239
- .long 1016413641
- .long 886424999
- .long 1016313335
- .long 3114776834
- .long 1014195875
- .long 1681120620
- .long 1017825416
- .long 1329600273
- .long 1016625740
- .long 465474623
- .long 1017097119
- .long 4251633980
- .long 1017169077
- .long 1986990133
- .long 1017710645
- .long 752958613
- .long 1017159641
- .long 2216216792
- .long 1018020163
- .long 4282860129
- .long 1015924861
- .long 1557627859
- .long 1016039538
- .long 3889219754
- .long 1018086237
- .long 3684996408
- .long 1017353275
- .long 723532103
- .long 1017717141
- .long 2951149676
- .long 1012528470
- .long 831890937
- .long 1017830553
- .long 1031212645
- .long 1017387331
- .long 2741737450
- .long 1017604974
- .long 2863311531
- .long 1003776682
- .long 4276736099
- .long 1013153088
- .long 4111778382
- .long 1015673686
- .long 1728065769
- .long 1016413986
- .long 2708718031
- .long 1018078833
- .long 1069335005
- .long 1015291224
- .long 700037144
- .long 1016482032
- .long 2904566452
- .long 1017226861
- .long 4074156649
- .long 1017622651
- .long 25019565
- .long 1015245366
- .long 3601952608
- .long 1015771755
- .long 3267129373
- .long 1017904664
- .long 503203103
- .long 1014921629
- .long 2122011730
- .long 1018027866
- .long 3927295461
- .long 1014189456
- .long 2790625147
- .long 1016024251
- .long 1330460186
- .long 1016940346
- .long 4033568463
- .long 1015538390
- .long 3695818227
- .long 1017509621
- .long 257573361
- .long 1017208868
- .long 3227697852
- .long 1017337964
- .long 234118548
- .long 1017169577
- .long 4009025803
- .long 1017278524
- .long 1948343394
- .long 1017749310
- .long 678398162
- .long 1018144239
- .long 3083864863
- .long 1016669086
- .long 2415453452
- .long 1017890370
- .long 175467344
- .long 1017330033
- .long 3197359580
- .long 1010339928
- .long 2071276951
- .long 1015941358
- .long 268372543
- .long 1016737773
- .long 938132959
- .long 1017389108
- .long 1816750559
- .long 1017337448
- .long 4119203749
- .long 1017152174
- .long 2578653878
- .long 1013108497
- .long 2470331096
- .long 1014678606
- .long 123855735
- .long 1016553320
- .long 1265650889
- .long 1014782687
- .long 3414398172
- .long 1017182638
- .long 1040773369
- .long 1016158401
- .long 3483628886
- .long 1016886550
- .long 4140499405
- .long 1016191425
- .long 3893477850
- .long 1016964495
- .long 3935319771
- .long 1009634717
- .long 2978982660
- .long 1015027112
- .long 2452709923
- .long 1017990229
- .long 3190365712
- .long 1015835149
- .long 4237588139
- .long 1015832925
- .long 2610678389
- .long 1017962711
- .long 2127316774
- .long 1017405770
- .long 824267502
- .long 1017959463
- .long 2165924042
- .long 1017912225
- .long 2774007076
- .long 1013257418
- .long 4123916326
- .long 1017582284
- .long 1976417958
- .long 1016959909
- .long 4092806412
- .long 1017711279
- .long 119251817
- .long 1015363631
- .long 3475418768
- .long 1017675415
- .long 1972580503
- .long 1015470684
- .long 815541017
- .long 1017517969
- .long 2429917451
- .long 1017397776
- .long 4062888482
- .long 1016749897
- .long 68284153
- .long 1017925678
- .long 2207779246
- .long 1016320298
- .long 1183466520
- .long 1017408657
- .long 143326427
- .long 1017060403
- .type D_table,@object
- .size D_table,768
- .align 4
-SCALE63:
- .long 0
- .long 1138753536
- .type SCALE63,@object
- .size SCALE63,8
- .align 4
-ZERON:
- .long 0
- .long 2147483648
- .type ZERON,@object
- .size ZERON,8
- .align 4
-INF:
- .long 0
- .long 2146435072
- .type INF,@object
- .size INF,8
- .align 4
-NEG_INF:
- .long 0
- .long 4293918720
- .type NEG_INF,@object
- .size NEG_INF,8
- .data
- .section .note.GNU-stack, "",@progbits
-// -- Begin DWARF2 SEGMENT .eh_frame
- .section .eh_frame,"a",@progbits
-.eh_frame_seg:
- .align 1
- .4byte 0x00000014
- .8byte 0x00527a0100000000
- .8byte 0x08070c1b01107801
- .4byte 0x00000190
- .4byte 0x0000001c
- .4byte 0x0000001c
- .4byte ..___tag_value_cbrt.1-.
- .4byte ..___tag_value_cbrt.5-..___tag_value_cbrt.1
- .2byte 0x0400
- .4byte ..___tag_value_cbrt.3-..___tag_value_cbrt.1
- .2byte 0x200e
- .byte 0x04
- .4byte ..___tag_value_cbrt.4-..___tag_value_cbrt.3
- .2byte 0x080e
- .byte 0x00
-# End
diff --git a/libm/x86_64/s_cos.S b/libm/x86_64/s_cos.S
deleted file mode 100644
index 3d9e402..0000000
--- a/libm/x86_64/s_cos.S
+++ /dev/null
@@ -1,1275 +0,0 @@
-/*
-Copyright (c) 2014, Intel Corporation
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
-
- * Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
-
- * Neither the name of Intel Corporation nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
-ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/******************************************************************************/
-// ALGORITHM DESCRIPTION
-// ---------------------
-//
-// 1. RANGE REDUCTION
-//
-// We perform an initial range reduction from X to r with
-//
-// X =~= N * pi/32 + r
-//
-// so that |r| <= pi/64 + epsilon. We restrict inputs to those
-// where |N| <= 932560. Beyond this, the range reduction is
-// insufficiently accurate. For extremely small inputs,
-// denormalization can occur internally, impacting performance.
-// This means that the main path is actually only taken for
-// 2^-252 <= |X| < 90112.
-//
-// To avoid branches, we perform the range reduction to full
-// accuracy each time.
-//
-// X - N * (P_1 + P_2 + P_3)
-//
-// where P_1 and P_2 are 32-bit numbers (so multiplication by N
-// is exact) and P_3 is a 53-bit number. Together, these
-// approximate pi well enough for all cases in the restricted
-// range.
-//
-// The main reduction sequence is:
-//
-// y = 32/pi * x
-// N = integer(y)
-// (computed by adding and subtracting off SHIFTER)
-//
-// m_1 = N * P_1
-// m_2 = N * P_2
-// r_1 = x - m_1
-// r = r_1 - m_2
-// (this r can be used for most of the calculation)
-//
-// c_1 = r_1 - r
-// m_3 = N * P_3
-// c_2 = c_1 - m_2
-// c = c_2 - m_3
-//
-// 2. MAIN ALGORITHM
-//
-// The algorithm uses a table lookup based on B = M * pi / 32
-// where M = N mod 64. The stored values are:
-// sigma closest power of 2 to cos(B)
-// C_hl 53-bit cos(B) - sigma
-// S_hi + S_lo 2 * 53-bit sin(B)
-//
-// The computation is organized as follows:
-//
-// sin(B + r + c) = [sin(B) + sigma * r] +
-// r * (cos(B) - sigma) +
-// sin(B) * [cos(r + c) - 1] +
-// cos(B) * [sin(r + c) - r]
-//
-// which is approximately:
-//
-// [S_hi + sigma * r] +
-// C_hl * r +
-// S_lo + S_hi * [(cos(r) - 1) - r * c] +
-// (C_hl + sigma) * [(sin(r) - r) + c]
-//
-// and this is what is actually computed. We separate this sum
-// into four parts:
-//
-// hi + med + pols + corr
-//
-// where
-//
-// hi = S_hi + sigma r
-// med = C_hl * r
-// pols = S_hi * (cos(r) - 1) + (C_hl + sigma) * (sin(r) - r)
-// corr = S_lo + c * ((C_hl + sigma) - S_hi * r)
-//
-// 3. POLYNOMIAL
-//
-// The polynomial S_hi * (cos(r) - 1) + (C_hl + sigma) *
-// (sin(r) - r) can be rearranged freely, since it is quite
-// small, so we exploit parallelism to the fullest.
-//
-// psc4 = SC_4 * r_1
-// msc4 = psc4 * r
-// r2 = r * r
-// msc2 = SC_2 * r2
-// r4 = r2 * r2
-// psc3 = SC_3 + msc4
-// psc1 = SC_1 + msc2
-// msc3 = r4 * psc3
-// sincospols = psc1 + msc3
-// pols = sincospols *
-// <S_hi * r^2 | (C_hl + sigma) * r^3>
-//
-// 4. CORRECTION TERM
-//
-// This is where the "c" component of the range reduction is
-// taken into account; recall that just "r" is used for most of
-// the calculation.
-//
-// -c = m_3 - c_2
-// -d = S_hi * r - (C_hl + sigma)
-// corr = -c * -d + S_lo
-//
-// 5. COMPENSATED SUMMATIONS
-//
-// The two successive compensated summations add up the high
-// and medium parts, leaving just the low parts to add up at
-// the end.
-//
-// rs = sigma * r
-// res_int = S_hi + rs
-// k_0 = S_hi - res_int
-// k_2 = k_0 + rs
-// med = C_hl * r
-// res_hi = res_int + med
-// k_1 = res_int - res_hi
-// k_3 = k_1 + med
-//
-// 6. FINAL SUMMATION
-//
-// We now add up all the small parts:
-//
-// res_lo = pols(hi) + pols(lo) + corr + k_1 + k_3
-//
-// Now the overall result is just:
-//
-// res_hi + res_lo
-//
-// 7. SMALL ARGUMENTS
-//
-// Inputs with |X| < 2^-252 are treated specially as
-// 1 - |x|.
-//
-// Special cases:
-// cos(NaN) = quiet NaN, and raise invalid exception
-// cos(INF) = NaN and raise invalid exception
-// cos(0) = 1
-//
-/******************************************************************************/
-
-#include <private/bionic_asm.h>
-# -- Begin cos
-ENTRY(cos)
-# parameter 1: %xmm0
-..B1.1:
-..___tag_value_cos.1:
- pushq %rbx
-..___tag_value_cos.3:
- subq $16, %rsp
-..___tag_value_cos.5:
- movsd %xmm0, 8(%rsp)
-..B1.2:
- movl 12(%rsp), %eax
- movq PI32INV(%rip), %xmm1
- andl $2147418112, %eax
- subl $808452096, %eax
- cmpl $281346048, %eax
- ja .L_2TAG_PACKET_0.0.1
- mulsd %xmm0, %xmm1
- movapd ONEHALF(%rip), %xmm5
- movq SIGN_MASK(%rip), %xmm4
- andpd %xmm0, %xmm4
- orps %xmm4, %xmm5
- addpd %xmm5, %xmm1
- cvttsd2si %xmm1, %edx
- cvtsi2sd %edx, %xmm1
- movapd P_2(%rip), %xmm2
- movq P_1(%rip), %xmm3
- mulsd %xmm1, %xmm3
- unpcklpd %xmm1, %xmm1
- addq $1865232, %rdx
- movq %xmm0, %xmm4
- andq $63, %rdx
- movapd SC_4(%rip), %xmm5
- lea Ctable(%rip), %rax
- shlq $5, %rdx
- addq %rdx, %rax
- mulpd %xmm1, %xmm2
- subsd %xmm3, %xmm0
- mulsd P_3(%rip), %xmm1
- subsd %xmm3, %xmm4
- movq 8(%rax), %xmm7
- unpcklpd %xmm0, %xmm0
- movq %xmm4, %xmm3
- subsd %xmm2, %xmm4
- mulpd %xmm0, %xmm5
- subpd %xmm2, %xmm0
- movapd SC_2(%rip), %xmm6
- mulsd %xmm4, %xmm7
- subsd %xmm4, %xmm3
- mulpd %xmm0, %xmm5
- mulpd %xmm0, %xmm0
- subsd %xmm2, %xmm3
- movapd (%rax), %xmm2
- subsd %xmm3, %xmm1
- movq 24(%rax), %xmm3
- addsd %xmm3, %xmm2
- subsd %xmm2, %xmm7
- mulsd %xmm4, %xmm2
- mulpd %xmm0, %xmm6
- mulsd %xmm4, %xmm3
- mulpd %xmm0, %xmm2
- mulpd %xmm0, %xmm0
- addpd SC_3(%rip), %xmm5
- mulsd (%rax), %xmm4
- addpd SC_1(%rip), %xmm6
- mulpd %xmm0, %xmm5
- movq %xmm3, %xmm0
- addsd 8(%rax), %xmm3
- mulpd %xmm7, %xmm1
- movq %xmm4, %xmm7
- addsd %xmm3, %xmm4
- addpd %xmm5, %xmm6
- movq 8(%rax), %xmm5
- subsd %xmm3, %xmm5
- subsd %xmm4, %xmm3
- addsd 16(%rax), %xmm1
- mulpd %xmm2, %xmm6
- addsd %xmm5, %xmm0
- addsd %xmm7, %xmm3
- addsd %xmm1, %xmm0
- addsd %xmm3, %xmm0
- addsd %xmm6, %xmm0
- unpckhpd %xmm6, %xmm6
- addsd %xmm6, %xmm0
- addsd %xmm4, %xmm0
- jmp ..B1.4
-.L_2TAG_PACKET_0.0.1:
- jg .L_2TAG_PACKET_1.0.1
- pextrw $3, %xmm0, %eax
- andw $32767, %ax
- pinsrw $3, %eax, %xmm0
- movq ONE(%rip), %xmm1
- subsd %xmm0, %xmm1
- movq %xmm1, %xmm0
- jmp ..B1.4
-.L_2TAG_PACKET_1.0.1:
- pextrw $3, %xmm0, %eax
- andl $32752, %eax
- cmpl $32752, %eax
- je .L_2TAG_PACKET_2.0.1
- pextrw $3, %xmm0, %ecx
- andl $32752, %ecx
- subl $16224, %ecx
- shrl $7, %ecx
- andl $65532, %ecx
- lea PI_INV_TABLE(%rip), %r11
- addq %r11, %rcx
- movd %xmm0, %rax
- movl 20(%rcx), %r10d
- movl 24(%rcx), %r8d
- movl %eax, %edx
- shrq $21, %rax
- orl $-2147483648, %eax
- shrl $11, %eax
- movl %r10d, %r9d
- imulq %rdx, %r10
- imulq %rax, %r9
- imulq %rax, %r8
- movl 16(%rcx), %esi
- movl 12(%rcx), %edi
- movl %r10d, %r11d
- shrq $32, %r10
- addq %r10, %r9
- addq %r8, %r11
- movl %r11d, %r8d
- shrq $32, %r11
- addq %r11, %r9
- movl %esi, %r10d
- imulq %rdx, %rsi
- imulq %rax, %r10
- movl %edi, %r11d
- imulq %rdx, %rdi
- movl %esi, %ebx
- shrq $32, %rsi
- addq %rbx, %r9
- movl %r9d, %ebx
- shrq $32, %r9
- addq %rsi, %r10
- addq %r9, %r10
- shlq $32, %rbx
- orq %rbx, %r8
- imulq %rax, %r11
- movl 8(%rcx), %r9d
- movl 4(%rcx), %esi
- movl %edi, %ebx
- shrq $32, %rdi
- addq %rbx, %r10
- movl %r10d, %ebx
- shrq $32, %r10
- addq %rdi, %r11
- addq %r10, %r11
- movq %r9, %rdi
- imulq %rdx, %r9
- imulq %rax, %rdi
- movl %r9d, %r10d
- shrq $32, %r9
- addq %r10, %r11
- movl %r11d, %r10d
- shrq $32, %r11
- addq %r9, %rdi
- addq %r11, %rdi
- movq %rsi, %r9
- imulq %rdx, %rsi
- imulq %rax, %r9
- shlq $32, %r10
- orq %rbx, %r10
- movl (%rcx), %eax
- movl %esi, %r11d
- shrq $32, %rsi
- addq %r11, %rdi
- movl %edi, %r11d
- shrq $32, %rdi
- addq %rsi, %r9
- addq %rdi, %r9
- imulq %rax, %rdx
- pextrw $3, %xmm0, %ebx
- lea PI_INV_TABLE(%rip), %rdi
- subq %rdi, %rcx
- addl %ecx, %ecx
- addl %ecx, %ecx
- addl %ecx, %ecx
- addl $19, %ecx
- movl $32768, %esi
- andl %ebx, %esi
- shrl $4, %ebx
- andl $2047, %ebx
- subl $1023, %ebx
- subl %ebx, %ecx
- addq %rdx, %r9
- movl %ecx, %edx
- addl $32, %edx
- cmpl $1, %ecx
- jl .L_2TAG_PACKET_3.0.1
- negl %ecx
- addl $29, %ecx
- shll %cl, %r9d
- movl %r9d, %edi
- andl $536870911, %r9d
- testl $268435456, %r9d
- jne .L_2TAG_PACKET_4.0.1
- shrl %cl, %r9d
- movl $0, %ebx
- shlq $32, %r9
- orq %r11, %r9
-.L_2TAG_PACKET_5.0.1:
-.L_2TAG_PACKET_6.0.1:
- cmpq $0, %r9
- je .L_2TAG_PACKET_7.0.1
-.L_2TAG_PACKET_8.0.1:
- bsr %r9, %r11
- movl $29, %ecx
- subl %r11d, %ecx
- jle .L_2TAG_PACKET_9.0.1
- shlq %cl, %r9
- movq %r10, %rax
- shlq %cl, %r10
- addl %ecx, %edx
- negl %ecx
- addl $64, %ecx
- shrq %cl, %rax
- shrq %cl, %r8
- orq %rax, %r9
- orq %r8, %r10
-.L_2TAG_PACKET_10.0.1:
- cvtsi2sdq %r9, %xmm0
- shrq $1, %r10
- cvtsi2sdq %r10, %xmm3
- xorpd %xmm4, %xmm4
- shll $4, %edx
- negl %edx
- addl $16368, %edx
- orl %esi, %edx
- xorl %ebx, %edx
- pinsrw $3, %edx, %xmm4
- movq PI_4(%rip), %xmm2
- movq 8+PI_4(%rip), %xmm6
- xorpd %xmm5, %xmm5
- subl $1008, %edx
- pinsrw $3, %edx, %xmm5
- mulsd %xmm4, %xmm0
- shll $16, %esi
- sarl $31, %esi
- mulsd %xmm5, %xmm3
- movq %xmm0, %xmm1
- mulsd %xmm2, %xmm0
- shrl $29, %edi
- addsd %xmm3, %xmm1
- mulsd %xmm2, %xmm3
- addl %esi, %edi
- xorl %esi, %edi
- mulsd %xmm1, %xmm6
- movl %edi, %eax
- addsd %xmm3, %xmm6
- movq %xmm0, %xmm2
- addsd %xmm6, %xmm0
- subsd %xmm0, %xmm2
- addsd %xmm2, %xmm6
-.L_2TAG_PACKET_11.0.1:
- movq PI32INV(%rip), %xmm1
- mulsd %xmm0, %xmm1
- movq ONEHALF(%rip), %xmm5
- movq SIGN_MASK(%rip), %xmm4
- andpd %xmm0, %xmm4
- orps %xmm4, %xmm5
- addpd %xmm5, %xmm1
- cvttsd2si %xmm1, %rdx
- cvtsi2sdq %rdx, %xmm1
- movq P_1(%rip), %xmm3
- movapd P_2(%rip), %xmm2
- mulsd %xmm1, %xmm3
- unpcklpd %xmm1, %xmm1
- shll $3, %eax
- addl $1865232, %edx
- movq %xmm0, %xmm4
- addl %eax, %edx
- andl $63, %edx
- movapd SC_4(%rip), %xmm5
- lea Ctable(%rip), %rax
- shll $5, %edx
- addq %rdx, %rax
- mulpd %xmm1, %xmm2
- subsd %xmm3, %xmm0
- mulsd P_3(%rip), %xmm1
- subsd %xmm3, %xmm4
- movq 8(%rax), %xmm7
- unpcklpd %xmm0, %xmm0
- movq %xmm4, %xmm3
- subsd %xmm2, %xmm4
- mulpd %xmm0, %xmm5
- subpd %xmm2, %xmm0
- mulsd %xmm4, %xmm7
- subsd %xmm4, %xmm3
- mulpd %xmm0, %xmm5
- mulpd %xmm0, %xmm0
- subsd %xmm2, %xmm3
- movapd (%rax), %xmm2
- subsd %xmm3, %xmm1
- movq 24(%rax), %xmm3
- addsd %xmm3, %xmm2
- subsd %xmm2, %xmm7
- subsd %xmm6, %xmm1
- movapd SC_2(%rip), %xmm6
- mulsd %xmm4, %xmm2
- mulpd %xmm0, %xmm6
- mulsd %xmm4, %xmm3
- mulpd %xmm0, %xmm2
- mulpd %xmm0, %xmm0
- addpd SC_3(%rip), %xmm5
- mulsd (%rax), %xmm4
- addpd SC_1(%rip), %xmm6
- mulpd %xmm0, %xmm5
- movq %xmm3, %xmm0
- addsd 8(%rax), %xmm3
- mulpd %xmm7, %xmm1
- movq %xmm4, %xmm7
- addsd %xmm3, %xmm4
- addpd %xmm5, %xmm6
- movq 8(%rax), %xmm5
- subsd %xmm3, %xmm5
- subsd %xmm4, %xmm3
- addsd 16(%rax), %xmm1
- mulpd %xmm2, %xmm6
- addsd %xmm0, %xmm5
- addsd %xmm7, %xmm3
- addsd %xmm5, %xmm1
- addsd %xmm3, %xmm1
- addsd %xmm6, %xmm1
- unpckhpd %xmm6, %xmm6
- movq %xmm4, %xmm0
- addsd %xmm6, %xmm1
- addsd %xmm1, %xmm0
- jmp ..B1.4
-.L_2TAG_PACKET_7.0.1:
- addl $64, %edx
- movq %r10, %r9
- movq %r8, %r10
- movq $0, %r8
- cmpq $0, %r9
- jne .L_2TAG_PACKET_8.0.1
- addl $64, %edx
- movq %r10, %r9
- movq %r8, %r10
- cmpq $0, %r9
- jne .L_2TAG_PACKET_8.0.1
- xorpd %xmm0, %xmm0
- xorpd %xmm6, %xmm6
- jmp .L_2TAG_PACKET_11.0.1
-.L_2TAG_PACKET_9.0.1:
- je .L_2TAG_PACKET_10.0.1
- negl %ecx
- shrq %cl, %r10
- movq %r9, %rax
- shrq %cl, %r9
- subl %ecx, %edx
- negl %ecx
- addl $64, %ecx
- shlq %cl, %rax
- orq %rax, %r10
- jmp .L_2TAG_PACKET_10.0.1
-.L_2TAG_PACKET_3.0.1:
- negl %ecx
- shlq $32, %r9
- orq %r11, %r9
- shlq %cl, %r9
- movq %r9, %rdi
- testl $-2147483648, %r9d
- jne .L_2TAG_PACKET_12.0.1
- shrl %cl, %r9d
- movl $0, %ebx
- shrq $3, %rdi
- jmp .L_2TAG_PACKET_6.0.1
-.L_2TAG_PACKET_4.0.1:
- shrl %cl, %r9d
- movl $536870912, %ebx
- shrl %cl, %ebx
- shlq $32, %r9
- orq %r11, %r9
- shlq $32, %rbx
- addl $536870912, %edi
- movq $0, %rcx
- movq $0, %r11
- subq %r8, %rcx
- sbbq %r10, %r11
- sbbq %r9, %rbx
- movq %rcx, %r8
- movq %r11, %r10
- movq %rbx, %r9
- movl $32768, %ebx
- jmp .L_2TAG_PACKET_5.0.1
-.L_2TAG_PACKET_12.0.1:
- shrl %cl, %r9d
- movq $0x100000000, %rbx
- shrq %cl, %rbx
- movq $0, %rcx
- movq $0, %r11
- subq %r8, %rcx
- sbbq %r10, %r11
- sbbq %r9, %rbx
- movq %rcx, %r8
- movq %r11, %r10
- movq %rbx, %r9
- movl $32768, %ebx
- shrq $3, %rdi
- addl $536870912, %edi
- jmp .L_2TAG_PACKET_6.0.1
-.L_2TAG_PACKET_2.0.1:
- movsd 8(%rsp), %xmm0
- mulsd NEG_ZERO(%rip), %xmm0
- movq %xmm0, (%rsp)
-.L_2TAG_PACKET_13.0.1:
-..B1.4:
- addq $16, %rsp
-..___tag_value_cos.6:
- popq %rbx
-..___tag_value_cos.8:
- ret
-..___tag_value_cos.9:
-END(cos)
-# -- End cos
- .section .rodata, "a"
- .align 16
- .align 16
-ONEHALF:
- .long 0
- .long 1071644672
- .long 0
- .long 1071644672
- .type ONEHALF,@object
- .size ONEHALF,16
- .align 16
-P_2:
- .long 442499072
- .long 1032893537
- .long 442499072
- .long 1032893537
- .type P_2,@object
- .size P_2,16
- .align 16
-SC_4:
- .long 2773927732
- .long 1053236707
- .long 436314138
- .long 1056571808
- .type SC_4,@object
- .size SC_4,16
- .align 16
-Ctable:
- .long 0
- .long 0
- .long 0
- .long 0
- .long 0
- .long 0
- .long 0
- .long 1072693248
- .long 393047345
- .long 3212032302
- .long 3156849708
- .long 1069094822
- .long 3758096384
- .long 3158189848
- .long 0
- .long 1072693248
- .long 18115067
- .long 3214126342
- .long 1013556747
- .long 1070135480
- .long 3221225472
- .long 3160567065
- .long 0
- .long 1072693248
- .long 2476548698
- .long 3215330282
- .long 785751814
- .long 1070765062
- .long 2684354560
- .long 3161838221
- .long 0
- .long 1072693248
- .long 2255197647
- .long 3216211105
- .long 2796464483
- .long 1071152610
- .long 3758096384
- .long 3160878317
- .long 0
- .long 1072693248
- .long 1945768569
- .long 3216915048
- .long 939980347
- .long 1071524701
- .long 536870912
- .long 1012796809
- .long 0
- .long 1072693248
- .long 1539668340
- .long 3217396327
- .long 967731400
- .long 1071761211
- .long 536870912
- .long 1015752157
- .long 0
- .long 1072693248
- .long 1403757309
- .long 3217886718
- .long 621354454
- .long 1071926515
- .long 536870912
- .long 1013450602
- .long 0
- .long 1072693248
- .long 2583490354
- .long 1070236281
- .long 1719614413
- .long 1072079006
- .long 536870912
- .long 3163282740
- .long 0
- .long 1071644672
- .long 2485417816
- .long 1069626316
- .long 1796544321
- .long 1072217216
- .long 536870912
- .long 3162686945
- .long 0
- .long 1071644672
- .long 2598800519
- .long 1068266419
- .long 688824739
- .long 1072339814
- .long 3758096384
- .long 1010431536
- .long 0
- .long 1071644672
- .long 2140183630
- .long 3214756396
- .long 4051746225
- .long 1072445618
- .long 2147483648
- .long 3161907377
- .long 0
- .long 1071644672
- .long 1699043957
- .long 3216902261
- .long 3476196678
- .long 1072533611
- .long 536870912
- .long 1014257638
- .long 0
- .long 1071644672
- .long 1991047213
- .long 1067753521
- .long 1455828442
- .long 1072602945
- .long 3758096384
- .long 1015505073
- .long 0
- .long 1070596096
- .long 240740309
- .long 3215727903
- .long 3489094832
- .long 1072652951
- .long 536870912
- .long 1014325783
- .long 0
- .long 1070596096
- .long 257503056
- .long 3214647653
- .long 2748392742
- .long 1072683149
- .long 1073741824
- .long 3163061750
- .long 0
- .long 1069547520
- .long 0
- .long 0
- .long 0
- .long 1072693248
- .long 0
- .long 0
- .long 0
- .long 0
- .long 257503056
- .long 1067164005
- .long 2748392742
- .long 1072683149
- .long 1073741824
- .long 3163061750
- .long 0
- .long 3217031168
- .long 240740309
- .long 1068244255
- .long 3489094832
- .long 1072652951
- .long 536870912
- .long 1014325783
- .long 0
- .long 3218079744
- .long 1991047213
- .long 3215237169
- .long 1455828442
- .long 1072602945
- .long 3758096384
- .long 1015505073
- .long 0
- .long 3218079744
- .long 1699043957
- .long 1069418613
- .long 3476196678
- .long 1072533611
- .long 536870912
- .long 1014257638
- .long 0
- .long 3219128320
- .long 2140183630
- .long 1067272748
- .long 4051746225
- .long 1072445618
- .long 2147483648
- .long 3161907377
- .long 0
- .long 3219128320
- .long 2598800519
- .long 3215750067
- .long 688824739
- .long 1072339814
- .long 3758096384
- .long 1010431536
- .long 0
- .long 3219128320
- .long 2485417816
- .long 3217109964
- .long 1796544321
- .long 1072217216
- .long 536870912
- .long 3162686945
- .long 0
- .long 3219128320
- .long 2583490354
- .long 3217719929
- .long 1719614413
- .long 1072079006
- .long 536870912
- .long 3163282740
- .long 0
- .long 3219128320
- .long 1403757309
- .long 1070403070
- .long 621354454
- .long 1071926515
- .long 536870912
- .long 1013450602
- .long 0
- .long 3220176896
- .long 1539668340
- .long 1069912679
- .long 967731400
- .long 1071761211
- .long 536870912
- .long 1015752157
- .long 0
- .long 3220176896
- .long 1945768569
- .long 1069431400
- .long 939980347
- .long 1071524701
- .long 536870912
- .long 1012796809
- .long 0
- .long 3220176896
- .long 2255197647
- .long 1068727457
- .long 2796464483
- .long 1071152610
- .long 3758096384
- .long 3160878317
- .long 0
- .long 3220176896
- .long 2476548698
- .long 1067846634
- .long 785751814
- .long 1070765062
- .long 2684354560
- .long 3161838221
- .long 0
- .long 3220176896
- .long 18115067
- .long 1066642694
- .long 1013556747
- .long 1070135480
- .long 3221225472
- .long 3160567065
- .long 0
- .long 3220176896
- .long 393047345
- .long 1064548654
- .long 3156849708
- .long 1069094822
- .long 3758096384
- .long 3158189848
- .long 0
- .long 3220176896
- .long 0
- .long 0
- .long 0
- .long 0
- .long 0
- .long 0
- .long 0
- .long 3220176896
- .long 393047345
- .long 1064548654
- .long 3156849708
- .long 3216578470
- .long 3758096384
- .long 1010706200
- .long 0
- .long 3220176896
- .long 18115067
- .long 1066642694
- .long 1013556747
- .long 3217619128
- .long 3221225472
- .long 1013083417
- .long 0
- .long 3220176896
- .long 2476548698
- .long 1067846634
- .long 785751814
- .long 3218248710
- .long 2684354560
- .long 1014354573
- .long 0
- .long 3220176896
- .long 2255197647
- .long 1068727457
- .long 2796464483
- .long 3218636258
- .long 3758096384
- .long 1013394669
- .long 0
- .long 3220176896
- .long 1945768569
- .long 1069431400
- .long 939980347
- .long 3219008349
- .long 536870912
- .long 3160280457
- .long 0
- .long 3220176896
- .long 1539668340
- .long 1069912679
- .long 967731400
- .long 3219244859
- .long 536870912
- .long 3163235805
- .long 0
- .long 3220176896
- .long 1403757309
- .long 1070403070
- .long 621354454
- .long 3219410163
- .long 536870912
- .long 3160934250
- .long 0
- .long 3220176896
- .long 2583490354
- .long 3217719929
- .long 1719614413
- .long 3219562654
- .long 536870912
- .long 1015799092
- .long 0
- .long 3219128320
- .long 2485417816
- .long 3217109964
- .long 1796544321
- .long 3219700864
- .long 536870912
- .long 1015203297
- .long 0
- .long 3219128320
- .long 2598800519
- .long 3215750067
- .long 688824739
- .long 3219823462
- .long 3758096384
- .long 3157915184
- .long 0
- .long 3219128320
- .long 2140183630
- .long 1067272748
- .long 4051746225
- .long 3219929266
- .long 2147483648
- .long 1014423729
- .long 0
- .long 3219128320
- .long 1699043957
- .long 1069418613
- .long 3476196678
- .long 3220017259
- .long 536870912
- .long 3161741286
- .long 0
- .long 3219128320
- .long 1991047213
- .long 3215237169
- .long 1455828442
- .long 3220086593
- .long 3758096384
- .long 3162988721
- .long 0
- .long 3218079744
- .long 240740309
- .long 1068244255
- .long 3489094832
- .long 3220136599
- .long 536870912
- .long 3161809431
- .long 0
- .long 3218079744
- .long 257503056
- .long 1067164005
- .long 2748392742
- .long 3220166797
- .long 1073741824
- .long 1015578102
- .long 0
- .long 3217031168
- .long 0
- .long 0
- .long 0
- .long 3220176896
- .long 0
- .long 0
- .long 0
- .long 0
- .long 257503056
- .long 3214647653
- .long 2748392742
- .long 3220166797
- .long 1073741824
- .long 1015578102
- .long 0
- .long 1069547520
- .long 240740309
- .long 3215727903
- .long 3489094832
- .long 3220136599
- .long 536870912
- .long 3161809431
- .long 0
- .long 1070596096
- .long 1991047213
- .long 1067753521
- .long 1455828442
- .long 3220086593
- .long 3758096384
- .long 3162988721
- .long 0
- .long 1070596096
- .long 1699043957
- .long 3216902261
- .long 3476196678
- .long 3220017259
- .long 536870912
- .long 3161741286
- .long 0
- .long 1071644672
- .long 2140183630
- .long 3214756396
- .long 4051746225
- .long 3219929266
- .long 2147483648
- .long 1014423729
- .long 0
- .long 1071644672
- .long 2598800519
- .long 1068266419
- .long 688824739
- .long 3219823462
- .long 3758096384
- .long 3157915184
- .long 0
- .long 1071644672
- .long 2485417816
- .long 1069626316
- .long 1796544321
- .long 3219700864
- .long 536870912
- .long 1015203297
- .long 0
- .long 1071644672
- .long 2583490354
- .long 1070236281
- .long 1719614413
- .long 3219562654
- .long 536870912
- .long 1015799092
- .long 0
- .long 1071644672
- .long 1403757309
- .long 3217886718
- .long 621354454
- .long 3219410163
- .long 536870912
- .long 3160934250
- .long 0
- .long 1072693248
- .long 1539668340
- .long 3217396327
- .long 967731400
- .long 3219244859
- .long 536870912
- .long 3163235805
- .long 0
- .long 1072693248
- .long 1945768569
- .long 3216915048
- .long 939980347
- .long 3219008349
- .long 536870912
- .long 3160280457
- .long 0
- .long 1072693248
- .long 2255197647
- .long 3216211105
- .long 2796464483
- .long 3218636258
- .long 3758096384
- .long 1013394669
- .long 0
- .long 1072693248
- .long 2476548698
- .long 3215330282
- .long 785751814
- .long 3218248710
- .long 2684354560
- .long 1014354573
- .long 0
- .long 1072693248
- .long 18115067
- .long 3214126342
- .long 1013556747
- .long 3217619128
- .long 3221225472
- .long 1013083417
- .long 0
- .long 1072693248
- .long 393047345
- .long 3212032302
- .long 3156849708
- .long 3216578470
- .long 3758096384
- .long 1010706200
- .long 0
- .long 1072693248
- .type Ctable,@object
- .size Ctable,2048
- .align 16
-SC_2:
- .long 286331153
- .long 1065423121
- .long 1431655765
- .long 1067799893
- .type SC_2,@object
- .size SC_2,16
- .align 16
-SC_3:
- .long 436314138
- .long 3207201184
- .long 381774871
- .long 3210133868
- .type SC_3,@object
- .size SC_3,16
- .align 16
-SC_1:
- .long 1431655765
- .long 3217380693
- .long 0
- .long 3219128320
- .type SC_1,@object
- .size SC_1,16
- .align 16
-PI_INV_TABLE:
- .long 0
- .long 0
- .long 2734261102
- .long 1313084713
- .long 4230436817
- .long 4113882560
- .long 3680671129
- .long 1011060801
- .long 4266746795
- .long 3736847713
- .long 3072618042
- .long 1112396512
- .long 105459434
- .long 164729372
- .long 4263373596
- .long 2972297022
- .long 3900847605
- .long 784024708
- .long 3919343654
- .long 3026157121
- .long 965858873
- .long 2203269620
- .long 2625920907
- .long 3187222587
- .long 536385535
- .long 3724908559
- .long 4012839307
- .long 1510632735
- .long 1832287951
- .long 667617719
- .long 1330003814
- .long 2657085997
- .long 1965537991
- .long 3957715323
- .long 1023883767
- .long 2320667370
- .long 1811636145
- .long 529358088
- .long 1443049542
- .long 4235946923
- .long 4040145953
- .type PI_INV_TABLE,@object
- .size PI_INV_TABLE,164
- .space 12, 0x00 # pad
- .align 16
-PI_4:
- .long 1073741824
- .long 1072243195
- .long 407279769
- .long 1046758445
- .type PI_4,@object
- .size PI_4,16
- .align 8
-PI32INV:
- .long 1841940611
- .long 1076125488
- .type PI32INV,@object
- .size PI32INV,8
- .align 8
-SIGN_MASK:
- .long 0
- .long 2147483648
- .type SIGN_MASK,@object
- .size SIGN_MASK,8
- .align 8
-P_1:
- .long 1413480448
- .long 1069097467
- .type P_1,@object
- .size P_1,8
- .align 8
-P_3:
- .long 771977331
- .long 996350346
- .type P_3,@object
- .size P_3,8
- .align 8
-ONE:
- .long 0
- .long 1072693248
- .type ONE,@object
- .size ONE,8
- .align 8
-NEG_ZERO:
- .long 0
- .long 2147483648
- .type NEG_ZERO,@object
- .size NEG_ZERO,8
- .data
- .section .note.GNU-stack, "",@progbits
-// -- Begin DWARF2 SEGMENT .eh_frame
- .section .eh_frame,"a",@progbits
-.eh_frame_seg:
- .align 1
- .4byte 0x00000014
- .8byte 0x00527a0100000000
- .8byte 0x08070c1b01107801
- .4byte 0x00000190
- .4byte 0x0000002c
- .4byte 0x0000001c
- .4byte ..___tag_value_cos.1-.
- .4byte ..___tag_value_cos.9-..___tag_value_cos.1
- .2byte 0x0400
- .4byte ..___tag_value_cos.3-..___tag_value_cos.1
- .4byte 0x0283100e
- .byte 0x04
- .4byte ..___tag_value_cos.5-..___tag_value_cos.3
- .2byte 0x200e
- .byte 0x04
- .4byte ..___tag_value_cos.6-..___tag_value_cos.5
- .4byte 0x04c3100e
- .4byte ..___tag_value_cos.8-..___tag_value_cos.6
- .2byte 0x080e
-# End
diff --git a/libm/x86_64/s_expm1.S b/libm/x86_64/s_expm1.S
deleted file mode 100644
index 4b22f5a..0000000
--- a/libm/x86_64/s_expm1.S
+++ /dev/null
@@ -1,727 +0,0 @@
-/*
-Copyright (c) 2014, Intel Corporation
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
-
- * Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
-
- * Neither the name of Intel Corporation nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
-ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/******************************************************************************/
-// ALGORITHM DESCRIPTION
-// ---------------------
-//
-// Description:
-// Let K = 64 (table size).
-//
-// Four sub-domains:
-// 1. |x| < 1/(2*K)
-// expm1(x) ~ P(x)
-// 2. 1/(2*K) <= |x| <= 56*log(2)
-// x x/log(2) n
-// e - 1 = 2 = 2 * T[j] * (1 + P(y)) - 1
-// 3. 56*log(2) < x < MAX_LOG
-// x x x/log(2) n
-// e - 1 ~ e = 2 = 2 * T[j] * (1 + P(y))
-// 4. x < -56*log(2)
-// x x
-// e - 1 = -1 + e ~ -1
-// where
-// x = m*log(2)/K + y, y in [-log(2)/K..log(2)/K]
-// m = n*K + j, m,n,j - signed integer, j in [-K/2..K/2]
-// j/K
-// values of 2 are tabulated as T[j] = T_hi[j] ( 1 + T_lo[j]).
-//
-// P(y) is a minimax polynomial approximation of exp(x)-1
-// on small interval [-log(2)/K..log(2)/K] (were calculated by Maple V).
-//
-// In case 3, to avoid problems with arithmetic overflow and underflow,
-// n n1 n2
-// value of 2 is safely computed as 2 * 2 where n1 in [-BIAS/2..BIAS/2]
-// and BIAS is a value of exponent bias.
-//
-// Special cases:
-// expm1(NaN) is NaN
-// expm1(+INF) is +INF
-// expm1(-INF) is -1
-// expm1(x) is x for subnormals
-// for finite argument, only expm1(0)=0 is exact.
-// For IEEE double
-// if x > 709.782712893383973096 then expm1(x) overflow
-//
-/******************************************************************************/
-
-#include <private/bionic_asm.h>
-# -- Begin expm1
-ENTRY(expm1)
-# parameter 1: %xmm0
-..B1.1:
-..___tag_value_expm1.1:
- subq $56, %rsp
-..___tag_value_expm1.3:
- movsd %xmm0, 32(%rsp)
-..B1.2:
- unpcklpd %xmm0, %xmm0
- movapd cv(%rip), %xmm1
- movapd Shifter(%rip), %xmm6
- movapd 16+cv(%rip), %xmm2
- movapd 32+cv(%rip), %xmm3
- pextrw $3, %xmm0, %eax
- andl $32767, %eax
- movl $16527, %edx
- subl %eax, %edx
- subl $16304, %eax
- orl %eax, %edx
- cmpl $-2147483648, %edx
- jae .L_2TAG_PACKET_0.0.2
- mulpd %xmm0, %xmm1
- addpd %xmm6, %xmm1
- movapd %xmm1, %xmm7
- subpd %xmm6, %xmm1
- mulpd %xmm1, %xmm2
- movapd 48+cv(%rip), %xmm4
- mulpd %xmm1, %xmm3
- movapd 64+cv(%rip), %xmm5
- subpd %xmm2, %xmm0
- movd %xmm7, %eax
- movl %eax, %ecx
- andl $63, %ecx
- shll $4, %ecx
- sarl $6, %eax
- movl %eax, %edx
- subpd %xmm3, %xmm0
- lea Tbl_addr(%rip), %r11
- movapd (%rcx,%r11), %xmm2
- movq 80+cv(%rip), %xmm3
- mulpd %xmm0, %xmm4
- movapd %xmm0, %xmm1
- mulpd %xmm0, %xmm0
- mulsd %xmm0, %xmm3
- addpd %xmm4, %xmm5
- mulsd %xmm0, %xmm0
- movq %xmm2, %xmm4
- unpckhpd %xmm2, %xmm2
- movdqa mmask(%rip), %xmm6
- pand %xmm6, %xmm7
- movdqa bias(%rip), %xmm6
- paddq %xmm6, %xmm7
- psllq $46, %xmm7
- mulsd %xmm0, %xmm3
- mulpd %xmm5, %xmm0
- addl $894, %edx
- cmpl $1916, %edx
- ja .L_2TAG_PACKET_1.0.2
- addsd %xmm3, %xmm0
- xorpd %xmm3, %xmm3
- movl $16368, %eax
- pinsrw $3, %eax, %xmm3
- orpd %xmm7, %xmm2
- mulsd %xmm4, %xmm7
- movq %xmm3, %xmm6
- addsd %xmm1, %xmm3
- pextrw $3, %xmm2, %edx
- pshufd $238, %xmm0, %xmm5
- psrlq $38, %xmm3
- psllq $38, %xmm3
- movq %xmm2, %xmm4
- subsd %xmm3, %xmm6
- addsd %xmm5, %xmm0
- addsd %xmm6, %xmm1
- addsd %xmm7, %xmm4
- mulsd %xmm3, %xmm7
- mulsd %xmm2, %xmm3
- xorpd %xmm5, %xmm5
- movl $16368, %eax
- pinsrw $3, %eax, %xmm5
- addsd %xmm1, %xmm0
- movl $17184, %ecx
- subl %edx, %ecx
- subl $16256, %edx
- orl %edx, %ecx
- jl .L_2TAG_PACKET_2.0.2
- mulsd %xmm4, %xmm0
- subsd %xmm5, %xmm3
- addsd %xmm7, %xmm0
- addsd %xmm3, %xmm0
-.L_2TAG_PACKET_3.0.2:
- jmp ..B1.5
-.L_2TAG_PACKET_2.0.2:
- cmpl $0, %edx
- jl .L_2TAG_PACKET_4.0.2
- mulsd %xmm4, %xmm0
- subsd %xmm5, %xmm7
- addsd %xmm7, %xmm0
- addsd %xmm3, %xmm0
- jmp ..B1.5
-.L_2TAG_PACKET_4.0.2:
- mulsd %xmm4, %xmm0
- addsd %xmm7, %xmm0
- addsd %xmm3, %xmm0
- subsd %xmm5, %xmm0
- jmp ..B1.5
-.L_2TAG_PACKET_1.0.2:
- movl 36(%rsp), %ecx
- addsd %xmm0, %xmm1
- unpckhpd %xmm0, %xmm0
- addsd %xmm1, %xmm0
- cmpl $0, %ecx
- jl .L_2TAG_PACKET_5.0.2
- fstcw (%rsp)
- movw (%rsp), %dx
- orw $768, %dx
- movw %dx, 4(%rsp)
- fldcw 4(%rsp)
- movl %eax, %edx
- sarl $1, %eax
- subl %eax, %edx
- movdqa emask(%rip), %xmm6
- pandn %xmm2, %xmm6
- addl $1023, %eax
- movd %eax, %xmm3
- psllq $52, %xmm3
- orpd %xmm3, %xmm6
- mulsd %xmm3, %xmm4
- movsd %xmm0, 16(%rsp)
- fldl 16(%rsp)
- movsd %xmm6, 24(%rsp)
- fldl 24(%rsp)
- movsd %xmm4, 16(%rsp)
- fldl 16(%rsp)
- addl $1023, %edx
- movd %edx, %xmm4
- psllq $52, %xmm4
- faddp %st, %st(1)
- fmul %st, %st(1)
- faddp %st, %st(1)
- movsd %xmm4, 24(%rsp)
- fldl 24(%rsp)
- fmulp %st, %st(1)
- fstpl 16(%rsp)
- movsd 16(%rsp), %xmm0
- fldcw (%rsp)
- pextrw $3, %xmm0, %ecx
- andl $32752, %ecx
- cmpl $32752, %ecx
- jae .L_2TAG_PACKET_6.0.2
- jmp ..B1.5
- cmpl $-2147483648, %ecx
- jb .L_2TAG_PACKET_6.0.2
- jmp ..B1.5
-.L_2TAG_PACKET_6.0.2:
- movl $41, 8(%rsp)
- jmp .L_2TAG_PACKET_7.0.2
-.L_2TAG_PACKET_8.0.2:
- cmpl $2146435072, %eax
- jae .L_2TAG_PACKET_9.0.2
- movsd XMAX(%rip), %xmm0
- mulsd %xmm0, %xmm0
- movl $41, 8(%rsp)
- jmp .L_2TAG_PACKET_7.0.2
-.L_2TAG_PACKET_9.0.2:
- movl 36(%rsp), %eax
- movl 32(%rsp), %edx
- movl %eax, %ecx
- andl $2147483647, %eax
- cmpl $2146435072, %eax
- ja .L_2TAG_PACKET_10.0.2
- cmpl $0, %edx
- jne .L_2TAG_PACKET_10.0.2
- cmpl $0, %ecx
- jl .L_2TAG_PACKET_11.0.2
- movq INF(%rip), %xmm0
- jmp ..B1.5
-.L_2TAG_PACKET_11.0.2:
- jmp .L_2TAG_PACKET_5.0.2
-.L_2TAG_PACKET_10.0.2:
- movsd 32(%rsp), %xmm0
- addsd %xmm0, %xmm0
- jmp ..B1.5
-.L_2TAG_PACKET_12.0.2:
- addl $16304, %eax
- cmpl $15504, %eax
- jb .L_2TAG_PACKET_13.0.2
- movapd cvl(%rip), %xmm2
- pshufd $68, %xmm0, %xmm1
- movapd 16+cvl(%rip), %xmm3
- movapd 32+cvl(%rip), %xmm4
- movq 48+cvl(%rip), %xmm5
- mulsd %xmm1, %xmm1
- xorpd %xmm6, %xmm6
- movl $16352, %eax
- pinsrw $3, %eax, %xmm6
- mulpd %xmm0, %xmm2
- xorpd %xmm7, %xmm7
- movl $16368, %edx
- pinsrw $3, %edx, %xmm7
- addpd %xmm3, %xmm2
- mulsd %xmm1, %xmm5
- pshufd $228, %xmm1, %xmm3
- mulpd %xmm1, %xmm1
- mulsd %xmm0, %xmm6
- mulpd %xmm0, %xmm2
- addpd %xmm4, %xmm2
- movq %xmm7, %xmm4
- addsd %xmm6, %xmm7
- mulpd %xmm3, %xmm1
- psrlq $27, %xmm7
- psllq $27, %xmm7
- movq HIGHMASK(%rip), %xmm3
- subsd %xmm7, %xmm4
- mulpd %xmm1, %xmm2
- addsd %xmm4, %xmm6
- pshufd $238, %xmm2, %xmm1
- addsd %xmm2, %xmm6
- andpd %xmm0, %xmm3
- movq %xmm0, %xmm4
- addsd %xmm6, %xmm1
- subsd %xmm3, %xmm0
- addsd %xmm5, %xmm1
- mulsd %xmm7, %xmm3
- mulsd %xmm7, %xmm0
- mulsd %xmm1, %xmm4
- addsd %xmm4, %xmm0
- addsd %xmm3, %xmm0
- jmp ..B1.5
-.L_2TAG_PACKET_13.0.2:
- cmpl $16, %eax
- jae .L_2TAG_PACKET_3.0.2
- movq %xmm0, %xmm2
- movd %xmm0, %eax
- psrlq $31, %xmm2
- movd %xmm2, %ecx
- orl %ecx, %eax
- je .L_2TAG_PACKET_3.0.2
- movl $16, %edx
- xorpd %xmm1, %xmm1
- pinsrw $3, %edx, %xmm1
- mulsd %xmm1, %xmm1
- movl $42, 8(%rsp)
- jmp .L_2TAG_PACKET_7.0.2
-.L_2TAG_PACKET_0.0.2:
- cmpl $0, %eax
- jl .L_2TAG_PACKET_12.0.2
- movl 36(%rsp), %eax
- cmpl $1083179008, %eax
- jge .L_2TAG_PACKET_8.0.2
- cmpl $-1048576, %eax
- jae .L_2TAG_PACKET_9.0.2
-.L_2TAG_PACKET_5.0.2:
- xorpd %xmm0, %xmm0
- movl $49136, %eax
- pinsrw $3, %eax, %xmm0
- jmp ..B1.5
-.L_2TAG_PACKET_7.0.2:
- movq %xmm0, 40(%rsp)
-..B1.3:
- movq 40(%rsp), %xmm0
-.L_2TAG_PACKET_14.0.2:
-..B1.5:
- addq $56, %rsp
-..___tag_value_expm1.4:
- ret
-..___tag_value_expm1.5:
-END(expm1)
-# -- End expm1
- .section .rodata, "a"
- .align 16
- .align 16
-cv:
- .long 1697350398
- .long 1079448903
- .long 1697350398
- .long 1079448903
- .long 4277796864
- .long 1065758274
- .long 4277796864
- .long 1065758274
- .long 3164486458
- .long 1025308570
- .long 3164486458
- .long 1025308570
- .long 1963358694
- .long 1065423121
- .long 1431655765
- .long 1069897045
- .long 1431655765
- .long 1067799893
- .long 0
- .long 1071644672
- .long 381774871
- .long 1062650220
- .long 381774871
- .long 1062650220
- .type cv,@object
- .size cv,96
- .align 16
-Shifter:
- .long 0
- .long 1127743488
- .long 0
- .long 1127743488
- .type Shifter,@object
- .size Shifter,16
- .align 16
-Tbl_addr:
- .long 0
- .long 0
- .long 0
- .long 0
- .long 1000070955
- .long 1042145304
- .long 1040187392
- .long 11418
- .long 988267849
- .long 1039500660
- .long 3539992576
- .long 22960
- .long 36755401
- .long 1042114290
- .long 402653184
- .long 34629
- .long 3634769483
- .long 1042178627
- .long 1820327936
- .long 46424
- .long 2155991225
- .long 1041560680
- .long 847249408
- .long 58348
- .long 2766913307
- .long 1039293264
- .long 3489660928
- .long 70401
- .long 3651174602
- .long 1040488175
- .long 2927624192
- .long 82586
- .long 3073892131
- .long 1042240606
- .long 1006632960
- .long 94904
- .long 1328391742
- .long 1042019037
- .long 3942645760
- .long 107355
- .long 2650893825
- .long 1041903210
- .long 822083584
- .long 119943
- .long 2397289153
- .long 1041802037
- .long 2281701376
- .long 132667
- .long 430997175
- .long 1042110606
- .long 1845493760
- .long 145530
- .long 1230936525
- .long 1041801015
- .long 1702887424
- .long 158533
- .long 740675935
- .long 1040178913
- .long 4110417920
- .long 171677
- .long 3489810261
- .long 1041825986
- .long 2793406464
- .long 184965
- .long 2532600530
- .long 1040767882
- .long 167772160
- .long 198398
- .long 3542557060
- .long 1041827263
- .long 2986344448
- .long 211976
- .long 1401563777
- .long 1041061093
- .long 922746880
- .long 225703
- .long 3129406026
- .long 1041852413
- .long 880803840
- .long 239579
- .long 900993572
- .long 1039283234
- .long 1275068416
- .long 253606
- .long 2115029358
- .long 1042140042
- .long 562036736
- .long 267786
- .long 1086643152
- .long 1041785419
- .long 1610612736
- .long 282120
- .long 82864366
- .long 1041256244
- .long 3045064704
- .long 296610
- .long 2392968152
- .long 1040913683
- .long 3573547008
- .long 311258
- .long 2905856183
- .long 1040002214
- .long 1988100096
- .long 326066
- .long 3742008261
- .long 1040011137
- .long 1451229184
- .long 341035
- .long 863393794
- .long 1040880621
- .long 914358272
- .long 356167
- .long 1446136837
- .long 1041372426
- .long 3707764736
- .long 371463
- .long 927855201
- .long 1040617636
- .long 360710144
- .long 386927
- .long 1492679939
- .long 1041050306
- .long 2952790016
- .long 402558
- .long 608827001
- .long 1041582217
- .long 2181038080
- .long 418360
- .long 606260204
- .long 1042271987
- .long 1711276032
- .long 434334
- .long 3163044019
- .long 1041843851
- .long 1006632960
- .long 450482
- .long 4148747325
- .long 1041962972
- .long 3900702720
- .long 466805
- .long 802924201
- .long 1041275378
- .long 1442840576
- .long 483307
- .long 3052749833
- .long 1041940577
- .long 1937768448
- .long 499988
- .long 2216116399
- .long 1041486744
- .long 914358272
- .long 516851
- .long 2729697836
- .long 1041445764
- .long 2566914048
- .long 533897
- .long 540608356
- .long 1041310907
- .long 2600468480
- .long 551129
- .long 2916344493
- .long 1040535661
- .long 1107296256
- .long 568549
- .long 731391814
- .long 1039497014
- .long 2566914048
- .long 586158
- .long 1024722704
- .long 1041461625
- .long 2961178624
- .long 603959
- .long 3806831748
- .long 1041732499
- .long 2675965952
- .long 621954
- .long 238953304
- .long 1040316488
- .long 2189426688
- .long 640145
- .long 749123235
- .long 1041725785
- .long 2063597568
- .long 658534
- .long 1168187977
- .long 1041175214
- .long 2986344448
- .long 677123
- .long 3506096399
- .long 1042186095
- .long 1426063360
- .long 695915
- .long 1470221620
- .long 1041675499
- .long 2566914048
- .long 714911
- .long 3182425146
- .long 1041483134
- .long 3087007744
- .long 734114
- .long 3131698208
- .long 1042208657
- .long 4068474880
- .long 753526
- .long 2300504125
- .long 1041428596
- .long 2415919104
- .long 773150
- .long 2290297931
- .long 1037388400
- .long 3716153344
- .long 792987
- .long 3532148223
- .long 1041626194
- .long 771751936
- .long 813041
- .long 1161884404
- .long 1042015258
- .long 3699376128
- .long 833312
- .long 876383176
- .long 1037968878
- .long 1241513984
- .long 853805
- .long 3379986796
- .long 1042213153
- .long 3699376128
- .long 874520
- .long 1545797737
- .long 1041681569
- .long 58720256
- .long 895462
- .long 2925146801
- .long 1042212567
- .long 855638016
- .long 916631
- .long 1316627971
- .long 1038516204
- .long 3883925504
- .long 938030
- .long 3267869137
- .long 1040337004
- .long 2726297600
- .long 959663
- .long 3720868999
- .long 1041782409
- .long 3992977408
- .long 981531
- .long 433316142
- .long 1041994064
- .long 1526726656
- .long 1003638
- .long 781232103
- .long 1040093400
- .long 2172649472
- .long 1025985
- .type Tbl_addr,@object
- .size Tbl_addr,1024
- .align 16
-mmask:
- .long 4294967232
- .long 0
- .long 4294967232
- .long 0
- .type mmask,@object
- .size mmask,16
- .align 16
-bias:
- .long 65472
- .long 0
- .long 65472
- .long 0
- .type bias,@object
- .size bias,16
- .align 16
-emask:
- .long 0
- .long 4293918720
- .long 0
- .long 4293918720
- .type emask,@object
- .size emask,16
- .align 16
-cvl:
- .long 2773927732
- .long 1053236707
- .long 381774871
- .long 1062650220
- .long 379653899
- .long 1056571845
- .long 286331153
- .long 1065423121
- .long 436314138
- .long 1059717536
- .long 1431655765
- .long 1067799893
- .long 1431655765
- .long 1069897045
- .long 0
- .long 1071644672
- .type cvl,@object
- .size cvl,64
- .align 8
-XMAX:
- .long 4294967295
- .long 2146435071
- .type XMAX,@object
- .size XMAX,8
- .align 8
-INF:
- .long 0
- .long 2146435072
- .type INF,@object
- .size INF,8
- .align 8
-HIGHMASK:
- .long 4227858432
- .long 4294967295
- .type HIGHMASK,@object
- .size HIGHMASK,8
- .data
- .section .note.GNU-stack, "",@progbits
-// -- Begin DWARF2 SEGMENT .eh_frame
- .section .eh_frame,"a",@progbits
-.eh_frame_seg:
- .align 1
- .4byte 0x00000014
- .8byte 0x00527a0100000000
- .8byte 0x08070c1b01107801
- .4byte 0x00000190
- .4byte 0x0000001c
- .4byte 0x0000001c
- .4byte ..___tag_value_expm1.1-.
- .4byte ..___tag_value_expm1.5-..___tag_value_expm1.1
- .2byte 0x0400
- .4byte ..___tag_value_expm1.3-..___tag_value_expm1.1
- .2byte 0x400e
- .byte 0x04
- .4byte ..___tag_value_expm1.4-..___tag_value_expm1.3
- .2byte 0x080e
- .byte 0x00
-# End
diff --git a/libm/x86_64/s_log1p.S b/libm/x86_64/s_log1p.S
deleted file mode 100644
index 27fab74..0000000
--- a/libm/x86_64/s_log1p.S
+++ /dev/null
@@ -1,829 +0,0 @@
-/*
-Copyright (c) 2014, Intel Corporation
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
-
- * Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
-
- * Neither the name of Intel Corporation nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
-ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/******************************************************************************/
-// ALGORITHM DESCRIPTION
-// ---------------------
-//
-// Let x=2^k * mx, mx in [1,2)
-//
-// Get B~1/mx based on the output of rcpps instruction (B0)
-// B = int((B0*2^7+0.5))/2^7
-//
-// Reduced argument: r=B*mx-1.0 (computed accurately in high and low parts)
-//
-// Result: k*log(2) - log(B) + p(r)
-// p(r) is a degree 7 polynomial
-// -log(B) read from data table (high, low parts)
-// Result is formed from high and low parts
-//
-// Special cases:
-// log1p(NaN) = quiet NaN, and raise invalid exception
-// log1p(+INF) = that INF
-// log1p(x) = NaN if x < -1 or x = -INF, and raises invalid exception
-// log1p(-1) = -INF, and raises divide-by-zero exception
-// log1p(+/-0) = +/-0
-//
-/******************************************************************************/
-
-#include <private/bionic_asm.h>
-# -- Begin log1p
-ENTRY(log1p)
-# parameter 1: %xmm0
-..B1.1:
-..___tag_value_log1p.1:
- subq $24, %rsp
-..___tag_value_log1p.3:
- movsd %xmm0, 8(%rsp)
-..B1.2:
- movq $0x3ff0000000000000, %rax
- movd %rax, %xmm2
- xorpd %xmm3, %xmm3
- movl $32768, %ecx
- movd %rcx, %xmm4
- movq $0xffffe00000000000, %r8
- movd %r8, %xmm5
- movddup %xmm0, %xmm7
- pshufd $68, %xmm2, %xmm6
- pextrw $3, %xmm0, %ecx
- addsd %xmm2, %xmm0
- movq %xmm0, %xmm1
- pextrw $3, %xmm0, %eax
- subsd %xmm0, %xmm6
- orpd %xmm2, %xmm0
- psrlq $27, %xmm0
- lea L_tbl(%rip), %r11
- psrld $2, %xmm0
- subl $16, %eax
- cmpl $32736, %eax
- jae .L_2TAG_PACKET_0.0.2
- addsd %xmm6, %xmm7
- rcpps %xmm0, %xmm0
- psllq $12, %xmm1
- pshufd $228, %xmm5, %xmm6
- psrlq $12, %xmm1
- andl $32752, %ecx
- cmpl $16256, %ecx
- jb .L_2TAG_PACKET_1.0.2
- andl $32752, %eax
- movl $32720, %ecx
- subl %eax, %ecx
- pinsrw $3, %ecx, %xmm3
-.L_2TAG_PACKET_2.0.2:
- mulsd %xmm3, %xmm7
- paddd %xmm4, %xmm0
- movq $0x3800000000000000, %rcx
- movd %rcx, %xmm4
- orpd %xmm2, %xmm1
- movd %xmm0, %edx
- psllq $29, %xmm0
- andpd %xmm1, %xmm5
- andpd %xmm6, %xmm0
- subsd %xmm5, %xmm1
- paddd %xmm4, %xmm0
- mulsd %xmm0, %xmm5
- movl $16352, %ecx
- subl %ecx, %eax
- cvtsi2sd %eax, %xmm4
- mulsd %xmm0, %xmm7
- mulsd %xmm0, %xmm1
- movq log2(%rip), %xmm6
- movapd coeff(%rip), %xmm3
- subsd %xmm2, %xmm5
- andl $16711680, %edx
- shrl $12, %edx
- movapd (%r11,%rdx), %xmm0
- movapd 16+coeff(%rip), %xmm2
- addsd %xmm5, %xmm1
- movq %xmm1, %xmm5
- addsd %xmm7, %xmm1
- subsd %xmm1, %xmm5
- addsd %xmm5, %xmm7
- mulsd %xmm4, %xmm6
- mulsd 8+log2(%rip), %xmm4
- mulsd %xmm1, %xmm3
- movddup %xmm1, %xmm5
- addsd %xmm6, %xmm0
- mulpd %xmm5, %xmm2
- mulpd %xmm5, %xmm5
- movddup %xmm0, %xmm6
- addsd %xmm1, %xmm0
- addpd 32+coeff(%rip), %xmm2
- mulpd %xmm5, %xmm3
- subsd %xmm0, %xmm6
- mulsd %xmm1, %xmm2
- addsd %xmm7, %xmm4
- mulsd %xmm1, %xmm7
- addsd %xmm6, %xmm1
- pshufd $238, %xmm0, %xmm6
- mulsd %xmm5, %xmm5
- addsd %xmm6, %xmm4
- subsd %xmm7, %xmm1
- addpd %xmm3, %xmm2
- addsd %xmm4, %xmm1
- mulpd %xmm5, %xmm2
- addsd %xmm2, %xmm1
- pshufd $238, %xmm2, %xmm5
- addsd %xmm5, %xmm1
- addsd %xmm1, %xmm0
- jmp ..B1.5
-.L_2TAG_PACKET_0.0.2:
- movq 8(%rsp), %xmm0
- movq 8(%rsp), %xmm1
- addl $16, %eax
- cmpl $32768, %eax
- jae .L_2TAG_PACKET_3.0.2
- cmpl $0, %eax
- je .L_2TAG_PACKET_4.0.2
-.L_2TAG_PACKET_5.0.2:
- addsd %xmm0, %xmm0
- jmp ..B1.5
-.L_2TAG_PACKET_6.0.2:
- ja .L_2TAG_PACKET_5.0.2
- cmpl $0, %edx
- ja .L_2TAG_PACKET_5.0.2
- jmp .L_2TAG_PACKET_7.0.2
-.L_2TAG_PACKET_3.0.2:
- movd %xmm1, %edx
- psrlq $32, %xmm1
- movd %xmm1, %ecx
- addl %ecx, %ecx
- cmpl $-2097152, %ecx
- jae .L_2TAG_PACKET_6.0.2
- orl %ecx, %edx
- cmpl $0, %edx
- je .L_2TAG_PACKET_4.0.2
-.L_2TAG_PACKET_7.0.2:
- xorpd %xmm1, %xmm1
- xorpd %xmm0, %xmm0
- movl $32752, %eax
- pinsrw $3, %eax, %xmm1
- movl $141, (%rsp)
- mulsd %xmm1, %xmm0
- jmp .L_2TAG_PACKET_8.0.2
-.L_2TAG_PACKET_4.0.2:
- xorpd %xmm1, %xmm1
- xorpd %xmm0, %xmm0
- movl $49136, %eax
- pinsrw $3, %eax, %xmm0
- divsd %xmm1, %xmm0
- movl $140, (%rsp)
- jmp .L_2TAG_PACKET_8.0.2
-.L_2TAG_PACKET_1.0.2:
- movq 8(%rsp), %xmm0
- cmpl $15504, %ecx
- jb .L_2TAG_PACKET_9.0.2
- movapd coeff2(%rip), %xmm1
- pshufd $68, %xmm0, %xmm0
- movapd 16+coeff2(%rip), %xmm2
- pshufd $68, %xmm0, %xmm4
- movapd 32+coeff2(%rip), %xmm3
- mulpd %xmm0, %xmm1
- xorpd %xmm6, %xmm6
- mulpd %xmm4, %xmm4
- addpd %xmm2, %xmm1
- pshufd $68, %xmm4, %xmm5
- mulpd %xmm0, %xmm4
- movl $49120, %eax
- pinsrw $3, %eax, %xmm6
- mulpd %xmm0, %xmm1
- mulsd %xmm4, %xmm4
- addpd %xmm3, %xmm1
- mulsd %xmm6, %xmm5
- mulpd %xmm4, %xmm1
- pshufd $238, %xmm1, %xmm7
- addsd %xmm7, %xmm1
- addsd %xmm5, %xmm1
- addsd %xmm1, %xmm0
- jmp ..B1.5
-.L_2TAG_PACKET_9.0.2:
- cmpl $16, %ecx
- jb .L_2TAG_PACKET_10.0.2
- jmp ..B1.5
-.L_2TAG_PACKET_10.0.2:
- movq %xmm0, %xmm1
- mulsd %xmm1, %xmm1
- jmp ..B1.5
-.L_2TAG_PACKET_8.0.2:
- movq %xmm0, 16(%rsp)
-..B1.3:
- movq 16(%rsp), %xmm0
-.L_2TAG_PACKET_11.0.2:
-..B1.5:
- addq $24, %rsp
-..___tag_value_log1p.4:
- ret
-..___tag_value_log1p.5:
-END(log1p)
-# -- End log1p
- .section .rodata, "a"
- .align 16
- .align 16
-L_tbl:
- .long 4277811200
- .long 1072049730
- .long 2479318832
- .long 1026487127
- .long 2854492160
- .long 1072033410
- .long 215631550
- .long 1025638968
- .long 1547061248
- .long 1072017216
- .long 2886781435
- .long 1026423395
- .long 649825280
- .long 1072001146
- .long 4281533405
- .long 1024038923
- .long 646346752
- .long 1071985198
- .long 1562735921
- .long 1023790276
- .long 2203734016
- .long 1071969370
- .long 1838397691
- .long 3173936209
- .long 1872169984
- .long 1071953661
- .long 3981202460
- .long 1022325013
- .long 669557760
- .long 1071938069
- .long 4182597802
- .long 3173174122
- .long 4076413952
- .long 1071922591
- .long 1209029111
- .long 3170736207
- .long 556125184
- .long 1071907228
- .long 821086028
- .long 3173437049
- .long 204914688
- .long 1071891976
- .long 2097025986
- .long 3171071798
- .long 387545088
- .long 1071876834
- .long 3142936996
- .long 3173092218
- .long 2912783360
- .long 1071861800
- .long 2502420140
- .long 1024505919
- .long 1144260608
- .long 1071846874
- .long 3315658140
- .long 3173469843
- .long 1471209472
- .long 1071832053
- .long 129621009
- .long 3172443877
- .long 1829683200
- .long 1071817336
- .long 3885467693
- .long 1025535275
- .long 288676864
- .long 1071802722
- .long 86139472
- .long 3171639793
- .long 3636378624
- .long 1071788208
- .long 1850238587
- .long 1024654342
- .long 1606817792
- .long 1071773795
- .long 3388899795
- .long 3173675586
- .long 1236164608
- .long 1071759480
- .long 3983599207
- .long 1020046558
- .long 1089616896
- .long 1071745262
- .long 4171974224
- .long 1024773198
- .long 4143093760
- .long 1071731139
- .long 2727587401
- .long 3173965207
- .long 600267776
- .long 1071717112
- .long 3147685042
- .long 3173353031
- .long 2249313280
- .long 1071703177
- .long 125835074
- .long 1025255832
- .long 3805303808
- .long 1071689334
- .long 2289991207
- .long 1025460331
- .long 87278592
- .long 1071675583
- .long 1106114045
- .long 1025933602
- .long 3195405312
- .long 1071661920
- .long 3885316576
- .long 3171206239
- .long 3853649920
- .long 1071648346
- .long 2977069852
- .long 3171236771
- .long 2944026624
- .long 1071625048
- .long 1008093493
- .long 1023444474
- .long 3993180160
- .long 1071598247
- .long 1862355595
- .long 1024642533
- .long 1454641152
- .long 1071571617
- .long 1514603089
- .long 1026500596
- .long 3286085632
- .long 1071545154
- .long 1400028424
- .long 3173279056
- .long 438773760
- .long 1071518858
- .long 120727864
- .long 3172148914
- .long 1212979200
- .long 1071492725
- .long 1625055594
- .long 3172901933
- .long 1189017600
- .long 1071466754
- .long 3920062376
- .long 1025727407
- .long 403064832
- .long 1071440943
- .long 1053271728
- .long 3171391427
- .long 3343210496
- .long 1071415289
- .long 3243395502
- .long 3173627613
- .long 1765777408
- .long 1071389792
- .long 2145968512
- .long 1026354304
- .long 461430784
- .long 1071364449
- .long 4094322285
- .long 1026021467
- .long 71706624
- .long 1071339258
- .long 763632021
- .long 1024496933
- .long 1380503552
- .long 1071314217
- .long 1383547992
- .long 3173088453
- .long 1015732224
- .long 1071289325
- .long 3198646877
- .long 1025390322
- .long 35977216
- .long 1071264580
- .long 2141026805
- .long 1025754693
- .long 3927306240
- .long 1071239979
- .long 282116272
- .long 3173394334
- .long 1125341184
- .long 1071215523
- .long 2768427504
- .long 3172279059
- .long 1666971648
- .long 1071191208
- .long 786837629
- .long 3172427445
- .long 2827694080
- .long 1071167033
- .long 3857122416
- .long 3173014241
- .long 2003683328
- .long 1071142997
- .long 859010954
- .long 1026545007
- .long 1004017664
- .long 1071119098
- .long 3356644970
- .long 3173458064
- .long 1753020416
- .long 1071095334
- .long 788338552
- .long 1026157693
- .long 1992718336
- .long 1071071704
- .long 1239179443
- .long 1026394889
- .long 3870234624
- .long 1071048206
- .long 2082614663
- .long 1024926053
- .long 1050437632
- .long 1071024840
- .long 660007840
- .long 1025548499
- .long 188395520
- .long 1071001603
- .long 3878792704
- .long 3173889571
- .long 3747176448
- .long 1070978493
- .long 144991708
- .long 3171552042
- .long 1405669376
- .long 1070955511
- .long 3999088879
- .long 1025486317
- .long 121151488
- .long 1070932654
- .long 2170865497
- .long 1026473584
- .long 2652319744
- .long 1070909920
- .long 453695652
- .long 3173916809
- .long 3262236672
- .long 1070887309
- .long 157800053
- .long 3173984206
- .long 601221120
- .long 1070864820
- .long 3968917661
- .long 1023992886
- .long 1999843328
- .long 1070842450
- .long 3053895004
- .long 1024998228
- .long 1992167424
- .long 1070820199
- .long 2968614856
- .long 1024552653
- .long 3788726272
- .long 1070798065
- .long 3542170808
- .long 3173573242
- .long 2094829568
- .long 1070776048
- .long 1246758132
- .long 1026202874
- .long 288675840
- .long 1070754146
- .long 3747328950
- .long 1026331585
- .long 1829681152
- .long 1070732357
- .long 3125197546
- .long 1024100318
- .long 1666869248
- .long 1070710681
- .long 1363656119
- .long 1026336493
- .long 3417110528
- .long 1070689116
- .long 4154791553
- .long 1026267853
- .long 2183653376
- .long 1070667662
- .long 1671819292
- .long 3173785870
- .long 1734434816
- .long 1070646317
- .long 373091049
- .long 1025972363
- .long 1615681536
- .long 1070625080
- .long 384650897
- .long 1022926043
- .long 1445382144
- .long 1070603950
- .long 344320330
- .long 3172397196
- .long 1823715328
- .long 1070569756
- .long 3389841200
- .long 1025231852
- .long 3839688704
- .long 1070527917
- .long 1706790417
- .long 3167363349
- .long 4293332992
- .long 1070486286
- .long 1614935088
- .long 1019351591
- .long 2966720512
- .long 1070444861
- .long 4145393717
- .long 3173711658
- .long 4066729984
- .long 1070403639
- .long 1974925028
- .long 3171437182
- .long 3337621504
- .long 1070362619
- .long 3314953170
- .long 3169971314
- .long 943448064
- .long 1070321799
- .long 1498682038
- .long 3173862340
- .long 1465634816
- .long 1070281176
- .long 1319952810
- .long 3171693965
- .long 1015734272
- .long 1070240749
- .long 1347821929
- .long 3173544515
- .long 118001664
- .long 1070200516
- .long 1751482746
- .long 1026134093
- .long 3707174912
- .long 1070160474
- .long 1486946159
- .long 1023930920
- .long 3946381312
- .long 1070120623
- .long 2867408081
- .long 3171368276
- .long 1699848192
- .long 1070080961
- .long 2590187139
- .long 1025379803
- .long 2235846656
- .long 1070041485
- .long 1888568069
- .long 3172754960
- .long 2339729408
- .long 1070002194
- .long 3852214753
- .long 3173323149
- .long 3196850176
- .long 1069963086
- .long 742141560
- .long 1025101707
- .long 1800683520
- .long 1069924160
- .long 3949500444
- .long 3172102179
- .long 3835801600
- .long 1069885413
- .long 3848895943
- .long 1025913832
- .long 2201202688
- .long 1069846845
- .long 1425913464
- .long 1025868665
- .long 2778279936
- .long 1069808453
- .long 2120889677
- .long 3173831128
- .long 2954203136
- .long 1069770236
- .long 592147081
- .long 1019621288
- .long 210141184
- .long 1069732193
- .long 3414275233
- .long 1023647084
- .long 709476352
- .long 1069694321
- .long 2413027164
- .long 1024462115
- .long 2116284416
- .long 1069656619
- .long 1144559924
- .long 1026336654
- .long 2183651328
- .long 1069619086
- .long 3459057650
- .long 1025634168
- .long 3047047168
- .long 1069581720
- .long 1879674924
- .long 3173508573
- .long 970711040
- .long 1069541521
- .long 1335954173
- .long 3173332182
- .long 2198478848
- .long 1069467449
- .long 2951103968
- .long 3173892200
- .long 1669611520
- .long 1069393703
- .long 531044147
- .long 1025149248
- .long 29114368
- .long 1069320280
- .long 3327831251
- .long 1025918673
- .long 2376949760
- .long 1069247176
- .long 737634533
- .long 3172176000
- .long 1085390848
- .long 1069174390
- .long 3108243400
- .long 3171828406
- .long 1566130176
- .long 1069101918
- .long 985483226
- .long 1025708380
- .long 792780800
- .long 1069029758
- .long 4184866295
- .long 1024426204
- .long 183156736
- .long 1068957907
- .long 2845699378
- .long 1022107277
- .long 1301782528
- .long 1068886362
- .long 1012735262
- .long 3173804294
- .long 1562411008
- .long 1068815121
- .long 2197086703
- .long 3170187813
- .long 2815549440
- .long 1068744181
- .long 2782613207
- .long 1026345054
- .long 2756124672
- .long 1068673540
- .long 2929486205
- .long 3173037800
- .long 3511050240
- .long 1068603195
- .long 1443733147
- .long 3173331549
- .long 3047047168
- .long 1068533144
- .long 1879674924
- .long 3172459997
- .long 3221667840
- .long 1068427825
- .long 1338588027
- .long 3171815742
- .long 3453861888
- .long 1068288883
- .long 1205348359
- .long 3172624626
- .long 3506110464
- .long 1068150514
- .long 893105198
- .long 1025571866
- .long 346013696
- .long 1068012714
- .long 3495569021
- .long 3172563349
- .long 4074029056
- .long 1067875476
- .long 3961106338
- .long 3171065595
- .long 3559784448
- .long 1067738798
- .long 1975385384
- .long 3173783155
- .long 797769728
- .long 1067602675
- .long 3760305787
- .long 1026047642
- .long 2313633792
- .long 1067467101
- .long 1559353171
- .long 1023480256
- .long 3960766464
- .long 1067213778
- .long 1067365107
- .long 1025865926
- .long 684261376
- .long 1066944805
- .long 844762164
- .long 3173687482
- .long 630718464
- .long 1066676905
- .long 2458269694
- .long 1024033081
- .long 1486061568
- .long 1066410070
- .long 115537874
- .long 3173243995
- .long 2743664640
- .long 1065886792
- .long 3665098304
- .long 3173471607
- .long 1971912704
- .long 1065357333
- .long 2577214440
- .long 3171993451
- .long 1498939392
- .long 1064306693
- .long 3409036923
- .long 1025599151
- .long 0
- .long 0
- .long 0
- .long 2147483648
- .type L_tbl,@object
- .size L_tbl,2064
- .align 16
-log2:
- .long 4277811200
- .long 1067855426
- .long 2479318832
- .long 1022292823
- .type log2,@object
- .size log2,16
- .align 16
-coeff:
- .long 2454267026
- .long 1069697316
- .long 0
- .long 3218079744
- .long 1030730101
- .long 3217380702
- .long 1431655765
- .long 1070945621
- .long 2576980378
- .long 1070176665
- .long 0
- .long 3219128320
- .type coeff,@object
- .size coeff,48
- .align 16
-coeff2:
- .long 0
- .long 3217031168
- .long 2576980378
- .long 1070176665
- .long 2454267026
- .long 1069697316
- .long 0
- .long 3218079744
- .long 1431655765
- .long 3217380693
- .long 1431655765
- .long 1070945621
- .type coeff2,@object
- .size coeff2,48
- .data
- .section .note.GNU-stack, "",@progbits
-// -- Begin DWARF2 SEGMENT .eh_frame
- .section .eh_frame,"a",@progbits
-.eh_frame_seg:
- .align 1
- .4byte 0x00000014
- .8byte 0x00527a0100000000
- .8byte 0x08070c1b01107801
- .4byte 0x00000190
- .4byte 0x0000001c
- .4byte 0x0000001c
- .4byte ..___tag_value_log1p.1-.
- .4byte ..___tag_value_log1p.5-..___tag_value_log1p.1
- .2byte 0x0400
- .4byte ..___tag_value_log1p.3-..___tag_value_log1p.1
- .2byte 0x200e
- .byte 0x04
- .4byte ..___tag_value_log1p.4-..___tag_value_log1p.3
- .2byte 0x080e
- .byte 0x00
-# End
diff --git a/libm/x86_64/s_sin.S b/libm/x86_64/s_sin.S
deleted file mode 100644
index fb54a2a..0000000
--- a/libm/x86_64/s_sin.S
+++ /dev/null
@@ -1,1300 +0,0 @@
-/*
-Copyright (c) 2014, Intel Corporation
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
-
- * Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
-
- * Neither the name of Intel Corporation nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
-ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/******************************************************************************/
-// ALGORITHM DESCRIPTION
-// ---------------------
-//
-// 1. RANGE REDUCTION
-//
-// We perform an initial range reduction from X to r with
-//
-// X =~= N * pi/32 + r
-//
-// so that |r| <= pi/64 + epsilon. We restrict inputs to those
-// where |N| <= 932560. Beyond this, the range reduction is
-// insufficiently accurate. For extremely small inputs,
-// denormalization can occur internally, impacting performance.
-// This means that the main path is actually only taken for
-// 2^-252 <= |X| < 90112.
-//
-// To avoid branches, we perform the range reduction to full
-// accuracy each time.
-//
-// X - N * (P_1 + P_2 + P_3)
-//
-// where P_1 and P_2 are 32-bit numbers (so multiplication by N
-// is exact) and P_3 is a 53-bit number. Together, these
-// approximate pi well enough for all cases in the restricted
-// range.
-//
-// The main reduction sequence is:
-//
-// y = 32/pi * x
-// N = integer(y)
-// (computed by adding and subtracting off SHIFTER)
-//
-// m_1 = N * P_1
-// m_2 = N * P_2
-// r_1 = x - m_1
-// r = r_1 - m_2
-// (this r can be used for most of the calculation)
-//
-// c_1 = r_1 - r
-// m_3 = N * P_3
-// c_2 = c_1 - m_2
-// c = c_2 - m_3
-//
-// 2. MAIN ALGORITHM
-//
-// The algorithm uses a table lookup based on B = M * pi / 32
-// where M = N mod 64. The stored values are:
-// sigma closest power of 2 to cos(B)
-// C_hl 53-bit cos(B) - sigma
-// S_hi + S_lo 2 * 53-bit sin(B)
-//
-// The computation is organized as follows:
-//
-// sin(B + r + c) = [sin(B) + sigma * r] +
-// r * (cos(B) - sigma) +
-// sin(B) * [cos(r + c) - 1] +
-// cos(B) * [sin(r + c) - r]
-//
-// which is approximately:
-//
-// [S_hi + sigma * r] +
-// C_hl * r +
-// S_lo + S_hi * [(cos(r) - 1) - r * c] +
-// (C_hl + sigma) * [(sin(r) - r) + c]
-//
-// and this is what is actually computed. We separate this sum
-// into four parts:
-//
-// hi + med + pols + corr
-//
-// where
-//
-// hi = S_hi + sigma r
-// med = C_hl * r
-// pols = S_hi * (cos(r) - 1) + (C_hl + sigma) * (sin(r) - r)
-// corr = S_lo + c * ((C_hl + sigma) - S_hi * r)
-//
-// 3. POLYNOMIAL
-//
-// The polynomial S_hi * (cos(r) - 1) + (C_hl + sigma) *
-// (sin(r) - r) can be rearranged freely, since it is quite
-// small, so we exploit parallelism to the fullest.
-//
-// psc4 = SC_4 * r_1
-// msc4 = psc4 * r
-// r2 = r * r
-// msc2 = SC_2 * r2
-// r4 = r2 * r2
-// psc3 = SC_3 + msc4
-// psc1 = SC_1 + msc2
-// msc3 = r4 * psc3
-// sincospols = psc1 + msc3
-// pols = sincospols *
-// <S_hi * r^2 | (C_hl + sigma) * r^3>
-//
-// 4. CORRECTION TERM
-//
-// This is where the "c" component of the range reduction is
-// taken into account; recall that just "r" is used for most of
-// the calculation.
-//
-// -c = m_3 - c_2
-// -d = S_hi * r - (C_hl + sigma)
-// corr = -c * -d + S_lo
-//
-// 5. COMPENSATED SUMMATIONS
-//
-// The two successive compensated summations add up the high
-// and medium parts, leaving just the low parts to add up at
-// the end.
-//
-// rs = sigma * r
-// res_int = S_hi + rs
-// k_0 = S_hi - res_int
-// k_2 = k_0 + rs
-// med = C_hl * r
-// res_hi = res_int + med
-// k_1 = res_int - res_hi
-// k_3 = k_1 + med
-//
-// 6. FINAL SUMMATION
-//
-// We now add up all the small parts:
-//
-// res_lo = pols(hi) + pols(lo) + corr + k_1 + k_3
-//
-// Now the overall result is just:
-//
-// res_hi + res_lo
-//
-// 7. SMALL ARGUMENTS
-//
-// If |x| < SNN (SNN meaning the smallest normal number), we
-// simply perform 0.1111111 cdots 1111 * x. For SNN <= |x|, we
-// do 2^-55 * (2^55 * x - x).
-//
-// Special cases:
-// sin(NaN) = quiet NaN, and raise invalid exception
-// sin(INF) = NaN and raise invalid exception
-// sin(+/-0) = +/-0
-//
-/******************************************************************************/
-
-#include <private/bionic_asm.h>
-# -- Begin sin
-ENTRY(sin)
-# parameter 1: %xmm0
-..B1.1:
-..___tag_value_sin.1:
- pushq %rbx
-..___tag_value_sin.3:
- subq $16, %rsp
-..___tag_value_sin.5:
- movsd %xmm0, 8(%rsp)
-..B1.2:
- movl 12(%rsp), %eax
- movq PI32INV(%rip), %xmm1
- movq SHIFTER(%rip), %xmm2
- andl $2147418112, %eax
- subl $808452096, %eax
- cmpl $281346048, %eax
- ja .L_2TAG_PACKET_0.0.1
- mulsd %xmm0, %xmm1
- movapd ONEHALF(%rip), %xmm5
- movq SIGN_MASK(%rip), %xmm4
- andpd %xmm0, %xmm4
- orps %xmm4, %xmm5
- addpd %xmm5, %xmm1
- cvttsd2si %xmm1, %edx
- cvtsi2sd %edx, %xmm1
- movapd P_2(%rip), %xmm6
- movq $0x3fb921fb54400000, %r8
- movd %r8, %xmm3
- movapd SC_4(%rip), %xmm5
- pshufd $68, %xmm0, %xmm4
- mulsd %xmm1, %xmm3
- movddup %xmm1, %xmm1
- andl $63, %edx
- shll $5, %edx
- lea Ctable(%rip), %rax
- addq %rdx, %rax
- mulpd %xmm1, %xmm6
- mulsd P_3(%rip), %xmm1
- subsd %xmm3, %xmm4
- movq 8(%rax), %xmm7
- subsd %xmm3, %xmm0
- movddup %xmm4, %xmm3
- subsd %xmm6, %xmm4
- pshufd $68, %xmm0, %xmm0
- movapd (%rax), %xmm2
- mulpd %xmm0, %xmm5
- subpd %xmm6, %xmm0
- mulsd %xmm4, %xmm7
- subsd %xmm4, %xmm3
- mulpd %xmm0, %xmm5
- mulpd %xmm0, %xmm0
- subsd %xmm6, %xmm3
- movapd SC_2(%rip), %xmm6
- subsd %xmm3, %xmm1
- movq 24(%rax), %xmm3
- addsd %xmm3, %xmm2
- subsd %xmm2, %xmm7
- mulsd %xmm4, %xmm2
- mulpd %xmm0, %xmm6
- mulsd %xmm4, %xmm3
- mulpd %xmm0, %xmm2
- mulpd %xmm0, %xmm0
- addpd SC_3(%rip), %xmm5
- mulsd (%rax), %xmm4
- addpd SC_1(%rip), %xmm6
- mulpd %xmm0, %xmm5
- movq %xmm3, %xmm0
- addsd 8(%rax), %xmm3
- mulpd %xmm7, %xmm1
- movq %xmm4, %xmm7
- addsd %xmm3, %xmm4
- addpd %xmm5, %xmm6
- movq 8(%rax), %xmm5
- subsd %xmm3, %xmm5
- subsd %xmm4, %xmm3
- addsd 16(%rax), %xmm1
- mulpd %xmm2, %xmm6
- addsd %xmm0, %xmm5
- addsd %xmm7, %xmm3
- addsd %xmm5, %xmm1
- addsd %xmm3, %xmm1
- addsd %xmm6, %xmm1
- unpckhpd %xmm6, %xmm6
- movq %xmm4, %xmm0
- addsd %xmm6, %xmm1
- addsd %xmm1, %xmm0
- jmp ..B1.4
-.L_2TAG_PACKET_0.0.1:
- jg .L_2TAG_PACKET_1.0.1
- shrl $20, %eax
- cmpw $3325, %ax
- jne .L_2TAG_PACKET_2.0.1
- mulsd ALL_ONES(%rip), %xmm0
- jmp ..B1.4
-.L_2TAG_PACKET_2.0.1:
- movq TWO_POW_55(%rip), %xmm3
- mulsd %xmm0, %xmm3
- subsd %xmm0, %xmm3
- mulsd TWO_POW_M55(%rip), %xmm3
- jmp ..B1.4
-.L_2TAG_PACKET_1.0.1:
- pextrw $3, %xmm0, %eax
- andl $32752, %eax
- cmpl $32752, %eax
- je .L_2TAG_PACKET_3.0.1
- pextrw $3, %xmm0, %ecx
- andl $32752, %ecx
- subl $16224, %ecx
- shrl $7, %ecx
- andl $65532, %ecx
- lea PI_INV_TABLE(%rip), %r11
- addq %r11, %rcx
- movd %xmm0, %rax
- movl 20(%rcx), %r10d
- movl 24(%rcx), %r8d
- movl %eax, %edx
- shrq $21, %rax
- orl $-2147483648, %eax
- shrl $11, %eax
- movl %r10d, %r9d
- imulq %rdx, %r10
- imulq %rax, %r9
- imulq %rax, %r8
- movl 16(%rcx), %esi
- movl 12(%rcx), %edi
- movl %r10d, %r11d
- shrq $32, %r10
- addq %r10, %r9
- addq %r8, %r11
- movl %r11d, %r8d
- shrq $32, %r11
- addq %r11, %r9
- movl %esi, %r10d
- imulq %rdx, %rsi
- imulq %rax, %r10
- movl %edi, %r11d
- imulq %rdx, %rdi
- movl %esi, %ebx
- shrq $32, %rsi
- addq %rbx, %r9
- movl %r9d, %ebx
- shrq $32, %r9
- addq %rsi, %r10
- addq %r9, %r10
- shlq $32, %rbx
- orq %rbx, %r8
- imulq %rax, %r11
- movl 8(%rcx), %r9d
- movl 4(%rcx), %esi
- movl %edi, %ebx
- shrq $32, %rdi
- addq %rbx, %r10
- movl %r10d, %ebx
- shrq $32, %r10
- addq %rdi, %r11
- addq %r10, %r11
- movq %r9, %rdi
- imulq %rdx, %r9
- imulq %rax, %rdi
- movl %r9d, %r10d
- shrq $32, %r9
- addq %r10, %r11
- movl %r11d, %r10d
- shrq $32, %r11
- addq %r9, %rdi
- addq %r11, %rdi
- movq %rsi, %r9
- imulq %rdx, %rsi
- imulq %rax, %r9
- shlq $32, %r10
- orq %rbx, %r10
- movl (%rcx), %eax
- movl %esi, %r11d
- shrq $32, %rsi
- addq %r11, %rdi
- movl %edi, %r11d
- shrq $32, %rdi
- addq %rsi, %r9
- addq %rdi, %r9
- imulq %rax, %rdx
- pextrw $3, %xmm0, %ebx
- lea PI_INV_TABLE(%rip), %rdi
- subq %rdi, %rcx
- addl %ecx, %ecx
- addl %ecx, %ecx
- addl %ecx, %ecx
- addl $19, %ecx
- movl $32768, %esi
- andl %ebx, %esi
- shrl $4, %ebx
- andl $2047, %ebx
- subl $1023, %ebx
- subl %ebx, %ecx
- addq %rdx, %r9
- movl %ecx, %edx
- addl $32, %edx
- cmpl $1, %ecx
- jl .L_2TAG_PACKET_4.0.1
- negl %ecx
- addl $29, %ecx
- shll %cl, %r9d
- movl %r9d, %edi
- andl $536870911, %r9d
- testl $268435456, %r9d
- jne .L_2TAG_PACKET_5.0.1
- shrl %cl, %r9d
- movl $0, %ebx
- shlq $32, %r9
- orq %r11, %r9
-.L_2TAG_PACKET_6.0.1:
-.L_2TAG_PACKET_7.0.1:
- cmpq $0, %r9
- je .L_2TAG_PACKET_8.0.1
-.L_2TAG_PACKET_9.0.1:
- bsr %r9, %r11
- movl $29, %ecx
- subl %r11d, %ecx
- jle .L_2TAG_PACKET_10.0.1
- shlq %cl, %r9
- movq %r10, %rax
- shlq %cl, %r10
- addl %ecx, %edx
- negl %ecx
- addl $64, %ecx
- shrq %cl, %rax
- shrq %cl, %r8
- orq %rax, %r9
- orq %r8, %r10
-.L_2TAG_PACKET_11.0.1:
- cvtsi2sdq %r9, %xmm0
- shrq $1, %r10
- cvtsi2sdq %r10, %xmm3
- xorpd %xmm4, %xmm4
- shll $4, %edx
- negl %edx
- addl $16368, %edx
- orl %esi, %edx
- xorl %ebx, %edx
- pinsrw $3, %edx, %xmm4
- movq PI_4(%rip), %xmm2
- movq 8+PI_4(%rip), %xmm6
- xorpd %xmm5, %xmm5
- subl $1008, %edx
- pinsrw $3, %edx, %xmm5
- mulsd %xmm4, %xmm0
- shll $16, %esi
- sarl $31, %esi
- mulsd %xmm5, %xmm3
- movq %xmm0, %xmm1
- mulsd %xmm2, %xmm0
- shrl $29, %edi
- addsd %xmm3, %xmm1
- mulsd %xmm2, %xmm3
- addl %esi, %edi
- xorl %esi, %edi
- mulsd %xmm1, %xmm6
- movl %edi, %eax
- addsd %xmm3, %xmm6
- movq %xmm0, %xmm2
- addsd %xmm6, %xmm0
- subsd %xmm0, %xmm2
- addsd %xmm2, %xmm6
-.L_2TAG_PACKET_12.0.1:
- movq PI32INV(%rip), %xmm1
- mulsd %xmm0, %xmm1
- movq ONEHALF(%rip), %xmm5
- movq SIGN_MASK(%rip), %xmm4
- andpd %xmm0, %xmm4
- orps %xmm4, %xmm5
- addpd %xmm5, %xmm1
- cvttsd2si %xmm1, %edx
- cvtsi2sd %edx, %xmm1
- movq P_1(%rip), %xmm3
- movapd P_2(%rip), %xmm2
- mulsd %xmm1, %xmm3
- unpcklpd %xmm1, %xmm1
- shll $3, %eax
- addl $1865216, %edx
- movq %xmm0, %xmm4
- addl %eax, %edx
- andl $63, %edx
- movapd SC_4(%rip), %xmm5
- lea Ctable(%rip), %rax
- shll $5, %edx
- addq %rdx, %rax
- mulpd %xmm1, %xmm2
- subsd %xmm3, %xmm0
- mulsd P_3(%rip), %xmm1
- subsd %xmm3, %xmm4
- movq 8(%rax), %xmm7
- unpcklpd %xmm0, %xmm0
- movq %xmm4, %xmm3
- subsd %xmm2, %xmm4
- mulpd %xmm0, %xmm5
- subpd %xmm2, %xmm0
- mulsd %xmm4, %xmm7
- subsd %xmm4, %xmm3
- mulpd %xmm0, %xmm5
- mulpd %xmm0, %xmm0
- subsd %xmm2, %xmm3
- movapd (%rax), %xmm2
- subsd %xmm3, %xmm1
- movq 24(%rax), %xmm3
- addsd %xmm3, %xmm2
- subsd %xmm2, %xmm7
- subsd %xmm6, %xmm1
- movapd SC_2(%rip), %xmm6
- mulsd %xmm4, %xmm2
- mulpd %xmm0, %xmm6
- mulsd %xmm4, %xmm3
- mulpd %xmm0, %xmm2
- mulpd %xmm0, %xmm0
- addpd SC_3(%rip), %xmm5
- mulsd (%rax), %xmm4
- addpd SC_1(%rip), %xmm6
- mulpd %xmm0, %xmm5
- movq %xmm3, %xmm0
- addsd 8(%rax), %xmm3
- mulpd %xmm7, %xmm1
- movq %xmm4, %xmm7
- addsd %xmm3, %xmm4
- addpd %xmm5, %xmm6
- movq 8(%rax), %xmm5
- subsd %xmm3, %xmm5
- subsd %xmm4, %xmm3
- addsd 16(%rax), %xmm1
- mulpd %xmm2, %xmm6
- addsd %xmm0, %xmm5
- addsd %xmm7, %xmm3
- addsd %xmm5, %xmm1
- addsd %xmm3, %xmm1
- addsd %xmm6, %xmm1
- unpckhpd %xmm6, %xmm6
- movq %xmm4, %xmm0
- addsd %xmm6, %xmm1
- addsd %xmm1, %xmm0
- jmp ..B1.4
-.L_2TAG_PACKET_8.0.1:
- addl $64, %edx
- movq %r10, %r9
- movq %r8, %r10
- movq $0, %r8
- cmpq $0, %r9
- jne .L_2TAG_PACKET_9.0.1
- addl $64, %edx
- movq %r10, %r9
- movq %r8, %r10
- cmpq $0, %r9
- jne .L_2TAG_PACKET_9.0.1
- xorpd %xmm0, %xmm0
- xorpd %xmm6, %xmm6
- jmp .L_2TAG_PACKET_12.0.1
-.L_2TAG_PACKET_10.0.1:
- je .L_2TAG_PACKET_11.0.1
- negl %ecx
- shrq %cl, %r10
- movq %r9, %rax
- shrq %cl, %r9
- subl %ecx, %edx
- negl %ecx
- addl $64, %ecx
- shlq %cl, %rax
- orq %rax, %r10
- jmp .L_2TAG_PACKET_11.0.1
-.L_2TAG_PACKET_4.0.1:
- negl %ecx
- shlq $32, %r9
- orq %r11, %r9
- shlq %cl, %r9
- movq %r9, %rdi
- testl $-2147483648, %r9d
- jne .L_2TAG_PACKET_13.0.1
- shrl %cl, %r9d
- movl $0, %ebx
- shrq $3, %rdi
- jmp .L_2TAG_PACKET_7.0.1
-.L_2TAG_PACKET_5.0.1:
- shrl %cl, %r9d
- movl $536870912, %ebx
- shrl %cl, %ebx
- shlq $32, %r9
- orq %r11, %r9
- shlq $32, %rbx
- addl $536870912, %edi
- movq $0, %rcx
- movq $0, %r11
- subq %r8, %rcx
- sbbq %r10, %r11
- sbbq %r9, %rbx
- movq %rcx, %r8
- movq %r11, %r10
- movq %rbx, %r9
- movl $32768, %ebx
- jmp .L_2TAG_PACKET_6.0.1
-.L_2TAG_PACKET_13.0.1:
- shrl %cl, %r9d
- movq $0x100000000, %rbx
- shrq %cl, %rbx
- movq $0, %rcx
- movq $0, %r11
- subq %r8, %rcx
- sbbq %r10, %r11
- sbbq %r9, %rbx
- movq %rcx, %r8
- movq %r11, %r10
- movq %rbx, %r9
- movl $32768, %ebx
- shrq $3, %rdi
- addl $536870912, %edi
- jmp .L_2TAG_PACKET_7.0.1
-.L_2TAG_PACKET_3.0.1:
- movq 8(%rsp), %xmm0
- mulsd NEG_ZERO(%rip), %xmm0
- movq %xmm0, (%rsp)
-.L_2TAG_PACKET_14.0.1:
-..B1.4:
- addq $16, %rsp
-..___tag_value_sin.6:
- popq %rbx
-..___tag_value_sin.8:
- ret
-..___tag_value_sin.9:
-END(sin)
-# -- End sin
- .section .rodata, "a"
- .align 16
- .align 16
-ONEHALF:
- .long 0
- .long 1071644672
- .long 0
- .long 1071644672
- .type ONEHALF,@object
- .size ONEHALF,16
- .align 16
-P_2:
- .long 442499072
- .long 1032893537
- .long 442499072
- .long 1032893537
- .type P_2,@object
- .size P_2,16
- .align 16
-SC_4:
- .long 2773927732
- .long 1053236707
- .long 436314138
- .long 1056571808
- .type SC_4,@object
- .size SC_4,16
- .align 16
-Ctable:
- .long 0
- .long 0
- .long 0
- .long 0
- .long 0
- .long 0
- .long 0
- .long 1072693248
- .long 393047345
- .long 3212032302
- .long 3156849708
- .long 1069094822
- .long 3758096384
- .long 3158189848
- .long 0
- .long 1072693248
- .long 18115067
- .long 3214126342
- .long 1013556747
- .long 1070135480
- .long 3221225472
- .long 3160567065
- .long 0
- .long 1072693248
- .long 2476548698
- .long 3215330282
- .long 785751814
- .long 1070765062
- .long 2684354560
- .long 3161838221
- .long 0
- .long 1072693248
- .long 2255197647
- .long 3216211105
- .long 2796464483
- .long 1071152610
- .long 3758096384
- .long 3160878317
- .long 0
- .long 1072693248
- .long 1945768569
- .long 3216915048
- .long 939980347
- .long 1071524701
- .long 536870912
- .long 1012796809
- .long 0
- .long 1072693248
- .long 1539668340
- .long 3217396327
- .long 967731400
- .long 1071761211
- .long 536870912
- .long 1015752157
- .long 0
- .long 1072693248
- .long 1403757309
- .long 3217886718
- .long 621354454
- .long 1071926515
- .long 536870912
- .long 1013450602
- .long 0
- .long 1072693248
- .long 2583490354
- .long 1070236281
- .long 1719614413
- .long 1072079006
- .long 536870912
- .long 3163282740
- .long 0
- .long 1071644672
- .long 2485417816
- .long 1069626316
- .long 1796544321
- .long 1072217216
- .long 536870912
- .long 3162686945
- .long 0
- .long 1071644672
- .long 2598800519
- .long 1068266419
- .long 688824739
- .long 1072339814
- .long 3758096384
- .long 1010431536
- .long 0
- .long 1071644672
- .long 2140183630
- .long 3214756396
- .long 4051746225
- .long 1072445618
- .long 2147483648
- .long 3161907377
- .long 0
- .long 1071644672
- .long 1699043957
- .long 3216902261
- .long 3476196678
- .long 1072533611
- .long 536870912
- .long 1014257638
- .long 0
- .long 1071644672
- .long 1991047213
- .long 1067753521
- .long 1455828442
- .long 1072602945
- .long 3758096384
- .long 1015505073
- .long 0
- .long 1070596096
- .long 240740309
- .long 3215727903
- .long 3489094832
- .long 1072652951
- .long 536870912
- .long 1014325783
- .long 0
- .long 1070596096
- .long 257503056
- .long 3214647653
- .long 2748392742
- .long 1072683149
- .long 1073741824
- .long 3163061750
- .long 0
- .long 1069547520
- .long 0
- .long 0
- .long 0
- .long 1072693248
- .long 0
- .long 0
- .long 0
- .long 0
- .long 257503056
- .long 1067164005
- .long 2748392742
- .long 1072683149
- .long 1073741824
- .long 3163061750
- .long 0
- .long 3217031168
- .long 240740309
- .long 1068244255
- .long 3489094832
- .long 1072652951
- .long 536870912
- .long 1014325783
- .long 0
- .long 3218079744
- .long 1991047213
- .long 3215237169
- .long 1455828442
- .long 1072602945
- .long 3758096384
- .long 1015505073
- .long 0
- .long 3218079744
- .long 1699043957
- .long 1069418613
- .long 3476196678
- .long 1072533611
- .long 536870912
- .long 1014257638
- .long 0
- .long 3219128320
- .long 2140183630
- .long 1067272748
- .long 4051746225
- .long 1072445618
- .long 2147483648
- .long 3161907377
- .long 0
- .long 3219128320
- .long 2598800519
- .long 3215750067
- .long 688824739
- .long 1072339814
- .long 3758096384
- .long 1010431536
- .long 0
- .long 3219128320
- .long 2485417816
- .long 3217109964
- .long 1796544321
- .long 1072217216
- .long 536870912
- .long 3162686945
- .long 0
- .long 3219128320
- .long 2583490354
- .long 3217719929
- .long 1719614413
- .long 1072079006
- .long 536870912
- .long 3163282740
- .long 0
- .long 3219128320
- .long 1403757309
- .long 1070403070
- .long 621354454
- .long 1071926515
- .long 536870912
- .long 1013450602
- .long 0
- .long 3220176896
- .long 1539668340
- .long 1069912679
- .long 967731400
- .long 1071761211
- .long 536870912
- .long 1015752157
- .long 0
- .long 3220176896
- .long 1945768569
- .long 1069431400
- .long 939980347
- .long 1071524701
- .long 536870912
- .long 1012796809
- .long 0
- .long 3220176896
- .long 2255197647
- .long 1068727457
- .long 2796464483
- .long 1071152610
- .long 3758096384
- .long 3160878317
- .long 0
- .long 3220176896
- .long 2476548698
- .long 1067846634
- .long 785751814
- .long 1070765062
- .long 2684354560
- .long 3161838221
- .long 0
- .long 3220176896
- .long 18115067
- .long 1066642694
- .long 1013556747
- .long 1070135480
- .long 3221225472
- .long 3160567065
- .long 0
- .long 3220176896
- .long 393047345
- .long 1064548654
- .long 3156849708
- .long 1069094822
- .long 3758096384
- .long 3158189848
- .long 0
- .long 3220176896
- .long 0
- .long 0
- .long 0
- .long 0
- .long 0
- .long 0
- .long 0
- .long 3220176896
- .long 393047345
- .long 1064548654
- .long 3156849708
- .long 3216578470
- .long 3758096384
- .long 1010706200
- .long 0
- .long 3220176896
- .long 18115067
- .long 1066642694
- .long 1013556747
- .long 3217619128
- .long 3221225472
- .long 1013083417
- .long 0
- .long 3220176896
- .long 2476548698
- .long 1067846634
- .long 785751814
- .long 3218248710
- .long 2684354560
- .long 1014354573
- .long 0
- .long 3220176896
- .long 2255197647
- .long 1068727457
- .long 2796464483
- .long 3218636258
- .long 3758096384
- .long 1013394669
- .long 0
- .long 3220176896
- .long 1945768569
- .long 1069431400
- .long 939980347
- .long 3219008349
- .long 536870912
- .long 3160280457
- .long 0
- .long 3220176896
- .long 1539668340
- .long 1069912679
- .long 967731400
- .long 3219244859
- .long 536870912
- .long 3163235805
- .long 0
- .long 3220176896
- .long 1403757309
- .long 1070403070
- .long 621354454
- .long 3219410163
- .long 536870912
- .long 3160934250
- .long 0
- .long 3220176896
- .long 2583490354
- .long 3217719929
- .long 1719614413
- .long 3219562654
- .long 536870912
- .long 1015799092
- .long 0
- .long 3219128320
- .long 2485417816
- .long 3217109964
- .long 1796544321
- .long 3219700864
- .long 536870912
- .long 1015203297
- .long 0
- .long 3219128320
- .long 2598800519
- .long 3215750067
- .long 688824739
- .long 3219823462
- .long 3758096384
- .long 3157915184
- .long 0
- .long 3219128320
- .long 2140183630
- .long 1067272748
- .long 4051746225
- .long 3219929266
- .long 2147483648
- .long 1014423729
- .long 0
- .long 3219128320
- .long 1699043957
- .long 1069418613
- .long 3476196678
- .long 3220017259
- .long 536870912
- .long 3161741286
- .long 0
- .long 3219128320
- .long 1991047213
- .long 3215237169
- .long 1455828442
- .long 3220086593
- .long 3758096384
- .long 3162988721
- .long 0
- .long 3218079744
- .long 240740309
- .long 1068244255
- .long 3489094832
- .long 3220136599
- .long 536870912
- .long 3161809431
- .long 0
- .long 3218079744
- .long 257503056
- .long 1067164005
- .long 2748392742
- .long 3220166797
- .long 1073741824
- .long 1015578102
- .long 0
- .long 3217031168
- .long 0
- .long 0
- .long 0
- .long 3220176896
- .long 0
- .long 0
- .long 0
- .long 0
- .long 257503056
- .long 3214647653
- .long 2748392742
- .long 3220166797
- .long 1073741824
- .long 1015578102
- .long 0
- .long 1069547520
- .long 240740309
- .long 3215727903
- .long 3489094832
- .long 3220136599
- .long 536870912
- .long 3161809431
- .long 0
- .long 1070596096
- .long 1991047213
- .long 1067753521
- .long 1455828442
- .long 3220086593
- .long 3758096384
- .long 3162988721
- .long 0
- .long 1070596096
- .long 1699043957
- .long 3216902261
- .long 3476196678
- .long 3220017259
- .long 536870912
- .long 3161741286
- .long 0
- .long 1071644672
- .long 2140183630
- .long 3214756396
- .long 4051746225
- .long 3219929266
- .long 2147483648
- .long 1014423729
- .long 0
- .long 1071644672
- .long 2598800519
- .long 1068266419
- .long 688824739
- .long 3219823462
- .long 3758096384
- .long 3157915184
- .long 0
- .long 1071644672
- .long 2485417816
- .long 1069626316
- .long 1796544321
- .long 3219700864
- .long 536870912
- .long 1015203297
- .long 0
- .long 1071644672
- .long 2583490354
- .long 1070236281
- .long 1719614413
- .long 3219562654
- .long 536870912
- .long 1015799092
- .long 0
- .long 1071644672
- .long 1403757309
- .long 3217886718
- .long 621354454
- .long 3219410163
- .long 536870912
- .long 3160934250
- .long 0
- .long 1072693248
- .long 1539668340
- .long 3217396327
- .long 967731400
- .long 3219244859
- .long 536870912
- .long 3163235805
- .long 0
- .long 1072693248
- .long 1945768569
- .long 3216915048
- .long 939980347
- .long 3219008349
- .long 536870912
- .long 3160280457
- .long 0
- .long 1072693248
- .long 2255197647
- .long 3216211105
- .long 2796464483
- .long 3218636258
- .long 3758096384
- .long 1013394669
- .long 0
- .long 1072693248
- .long 2476548698
- .long 3215330282
- .long 785751814
- .long 3218248710
- .long 2684354560
- .long 1014354573
- .long 0
- .long 1072693248
- .long 18115067
- .long 3214126342
- .long 1013556747
- .long 3217619128
- .long 3221225472
- .long 1013083417
- .long 0
- .long 1072693248
- .long 393047345
- .long 3212032302
- .long 3156849708
- .long 3216578470
- .long 3758096384
- .long 1010706200
- .long 0
- .long 1072693248
- .type Ctable,@object
- .size Ctable,2048
- .align 16
-SC_2:
- .long 286331153
- .long 1065423121
- .long 1431655765
- .long 1067799893
- .type SC_2,@object
- .size SC_2,16
- .align 16
-SC_3:
- .long 436314138
- .long 3207201184
- .long 381774871
- .long 3210133868
- .type SC_3,@object
- .size SC_3,16
- .align 16
-SC_1:
- .long 1431655765
- .long 3217380693
- .long 0
- .long 3219128320
- .type SC_1,@object
- .size SC_1,16
- .align 16
-PI_INV_TABLE:
- .long 0
- .long 0
- .long 2734261102
- .long 1313084713
- .long 4230436817
- .long 4113882560
- .long 3680671129
- .long 1011060801
- .long 4266746795
- .long 3736847713
- .long 3072618042
- .long 1112396512
- .long 105459434
- .long 164729372
- .long 4263373596
- .long 2972297022
- .long 3900847605
- .long 784024708
- .long 3919343654
- .long 3026157121
- .long 965858873
- .long 2203269620
- .long 2625920907
- .long 3187222587
- .long 536385535
- .long 3724908559
- .long 4012839307
- .long 1510632735
- .long 1832287951
- .long 667617719
- .long 1330003814
- .long 2657085997
- .long 1965537991
- .long 3957715323
- .long 1023883767
- .long 2320667370
- .long 1811636145
- .long 529358088
- .long 1443049542
- .long 4235946923
- .long 4040145953
- .type PI_INV_TABLE,@object
- .size PI_INV_TABLE,164
- .space 12, 0x00 # pad
- .align 16
-PI_4:
- .long 1073741824
- .long 1072243195
- .long 407279769
- .long 1046758445
- .type PI_4,@object
- .size PI_4,16
- .align 8
-PI32INV:
- .long 1841940611
- .long 1076125488
- .type PI32INV,@object
- .size PI32INV,8
- .align 8
-SHIFTER:
- .long 0
- .long 1127743488
- .type SHIFTER,@object
- .size SHIFTER,8
- .align 8
-SIGN_MASK:
- .long 0
- .long 2147483648
- .type SIGN_MASK,@object
- .size SIGN_MASK,8
- .align 8
-P_3:
- .long 771977331
- .long 996350346
- .type P_3,@object
- .size P_3,8
- .align 8
-ALL_ONES:
- .long 4294967295
- .long 1072693247
- .type ALL_ONES,@object
- .size ALL_ONES,8
- .align 8
-TWO_POW_55:
- .long 0
- .long 1130364928
- .type TWO_POW_55,@object
- .size TWO_POW_55,8
- .align 8
-TWO_POW_M55:
- .long 0
- .long 1015021568
- .type TWO_POW_M55,@object
- .size TWO_POW_M55,8
- .align 8
-P_1:
- .long 1413480448
- .long 1069097467
- .type P_1,@object
- .size P_1,8
- .align 8
-NEG_ZERO:
- .long 0
- .long 2147483648
- .type NEG_ZERO,@object
- .size NEG_ZERO,8
- .data
- .section .note.GNU-stack, "",@progbits
-// -- Begin DWARF2 SEGMENT .eh_frame
- .section .eh_frame,"a",@progbits
-.eh_frame_seg:
- .align 1
- .4byte 0x00000014
- .8byte 0x00527a0100000000
- .8byte 0x08070c1b01107801
- .4byte 0x00000190
- .4byte 0x0000002c
- .4byte 0x0000001c
- .4byte ..___tag_value_sin.1-.
- .4byte ..___tag_value_sin.9-..___tag_value_sin.1
- .2byte 0x0400
- .4byte ..___tag_value_sin.3-..___tag_value_sin.1
- .4byte 0x0283100e
- .byte 0x04
- .4byte ..___tag_value_sin.5-..___tag_value_sin.3
- .2byte 0x200e
- .byte 0x04
- .4byte ..___tag_value_sin.6-..___tag_value_sin.5
- .4byte 0x04c3100e
- .4byte ..___tag_value_sin.8-..___tag_value_sin.6
- .2byte 0x080e
-# End
diff --git a/libm/x86_64/s_tan.S b/libm/x86_64/s_tan.S
deleted file mode 100644
index 4fa12e3..0000000
--- a/libm/x86_64/s_tan.S
+++ /dev/null
@@ -1,2239 +0,0 @@
-/*
-Copyright (c) 2014, Intel Corporation
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
-
- * Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
-
- * Neither the name of Intel Corporation nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
-ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/******************************************************************************/
-// ALGORITHM DESCRIPTION
-// ---------------------
-//
-// Polynomials coefficients and other constants.
-//
-// Note that in this algorithm, there is a different polynomial for
-// each breakpoint, so there are 32 sets of polynomial coefficients
-// as well as 32 instances of the other constants.
-//
-// The polynomial coefficients and constants are offset from the start
-// of the main block as follows:
-//
-// 0: c8 | c0
-// 16: c9 | c1
-// 32: c10 | c2
-// 48: c11 | c3
-// 64: c12 | c4
-// 80: c13 | c5
-// 96: c14 | c6
-// 112: c15 | c7
-// 128: T_hi
-// 136: T_lo
-// 144: Sigma
-// 152: T_hl
-// 160: Tau
-// 168: Mask
-// 176: (end of block)
-//
-// The total table size is therefore 5632 bytes.
-//
-// Note that c0 and c1 are always zero. We could try storing
-// other constants here, and just loading the low part of the
-// SIMD register in these cases, after ensuring the high part
-// is zero.
-//
-// The higher terms of the polynomial are computed in the *low*
-// part of the SIMD register. This is so we can overlap the
-// multiplication by r^8 and the unpacking of the other part.
-//
-// The constants are:
-// T_hi + T_lo = accurate constant term in power series
-// Sigma + T_hl = accurate coefficient of r in power series (Sigma=1 bit)
-// Tau = multiplier for the reciprocal, always -1 or 0
-//
-// The basic reconstruction formula using these constants is:
-//
-// High = tau * recip_hi + t_hi
-// Med = (sgn * r + t_hl * r)_hi
-// Low = (sgn * r + t_hl * r)_lo +
-// tau * recip_lo + T_lo + (T_hl + sigma) * c + pol
-//
-// where pol = c0 + c1 * r + c2 * r^2 + ... + c15 * r^15
-//
-// (c0 = c1 = 0, but using them keeps SIMD regularity)
-//
-// We then do a compensated sum High + Med, add the low parts together
-// and then do the final sum.
-//
-// Here recip_hi + recip_lo is an accurate reciprocal of the remainder
-// modulo pi/2
-//
-// Special cases:
-// tan(NaN) = quiet NaN, and raise invalid exception
-// tan(INF) = NaN and raise invalid exception
-// tan(+/-0) = +/-0
-//
-/******************************************************************************/
-
-#include <private/bionic_asm.h>
-# -- Begin tan
-ENTRY(tan)
-# parameter 1: %xmm0
-..B1.1:
-..___tag_value_tan.1:
- pushq %rbx
-..___tag_value_tan.3:
- subq $16, %rsp
-..___tag_value_tan.5:
- movsd %xmm0, 8(%rsp)
-..B1.2:
- pextrw $3, %xmm0, %eax
- andl $32767, %eax
- subl $16314, %eax
- cmpl $270, %eax
- ja .L_2TAG_PACKET_0.0.1
- movapd ONEHALF(%rip), %xmm5
- movapd MUL16(%rip), %xmm6
- unpcklpd %xmm0, %xmm0
- movapd sign_mask(%rip), %xmm4
- andpd %xmm0, %xmm4
- movapd PI32INV(%rip), %xmm1
- mulpd %xmm0, %xmm1
- orps %xmm4, %xmm5
- addpd %xmm5, %xmm1
- movapd %xmm1, %xmm7
- unpckhpd %xmm7, %xmm7
- cvttsd2si %xmm7, %edx
- cvttpd2dq %xmm1, %xmm1
- cvtdq2pd %xmm1, %xmm1
- mulpd %xmm6, %xmm1
- movapd P_1(%rip), %xmm3
- movq QQ_2(%rip), %xmm5
- addq $469248, %rdx
- movapd P_2(%rip), %xmm4
- mulpd %xmm1, %xmm3
- andq $31, %rdx
- mulsd %xmm1, %xmm5
- movq %rdx, %rcx
- mulpd %xmm1, %xmm4
- shlq $1, %rcx
- subpd %xmm3, %xmm0
- mulpd P_3(%rip), %xmm1
- addq %rcx, %rdx
- shlq $2, %rcx
- addq %rcx, %rdx
- addsd %xmm0, %xmm5
- movapd %xmm0, %xmm2
- subpd %xmm4, %xmm0
- movq ONE(%rip), %xmm6
- shlq $4, %rdx
- lea Ctable(%rip), %rax
- andpd MASK_35(%rip), %xmm5
- movapd %xmm0, %xmm3
- addq %rdx, %rax
- subpd %xmm0, %xmm2
- unpckhpd %xmm0, %xmm0
- divsd %xmm5, %xmm6
- subpd %xmm4, %xmm2
- movapd 16(%rax), %xmm7
- subsd %xmm5, %xmm3
- mulpd %xmm0, %xmm7
- subpd %xmm1, %xmm2
- movapd 48(%rax), %xmm1
- mulpd %xmm0, %xmm1
- movapd 96(%rax), %xmm4
- mulpd %xmm0, %xmm4
- addsd %xmm3, %xmm2
- movapd %xmm0, %xmm3
- mulpd %xmm0, %xmm0
- addpd (%rax), %xmm7
- addpd 32(%rax), %xmm1
- mulpd %xmm0, %xmm1
- addpd 80(%rax), %xmm4
- addpd %xmm1, %xmm7
- movapd 112(%rax), %xmm1
- mulpd %xmm0, %xmm1
- mulpd %xmm0, %xmm0
- addpd %xmm1, %xmm4
- movapd 64(%rax), %xmm1
- mulpd %xmm0, %xmm1
- addpd %xmm1, %xmm7
- movapd %xmm3, %xmm1
- mulpd %xmm0, %xmm3
- mulsd %xmm0, %xmm0
- mulpd 144(%rax), %xmm1
- mulpd %xmm3, %xmm4
- movq %xmm1, %xmm3
- addpd %xmm4, %xmm7
- movq %xmm1, %xmm4
- mulsd %xmm7, %xmm0
- unpckhpd %xmm7, %xmm7
- addsd %xmm7, %xmm0
- unpckhpd %xmm1, %xmm1
- addsd %xmm1, %xmm3
- subsd %xmm3, %xmm4
- addsd %xmm4, %xmm1
- movq %xmm2, %xmm4
- movq 144(%rax), %xmm7
- unpckhpd %xmm2, %xmm2
- addsd 152(%rax), %xmm7
- mulsd %xmm2, %xmm7
- addsd 136(%rax), %xmm7
- addsd %xmm1, %xmm7
- addsd %xmm7, %xmm0
- movq ONE(%rip), %xmm7
- mulsd %xmm6, %xmm4
- movq 168(%rax), %xmm2
- andpd %xmm6, %xmm2
- mulsd %xmm2, %xmm5
- mulsd 160(%rax), %xmm6
- subsd %xmm5, %xmm7
- subsd 128(%rax), %xmm2
- subsd %xmm4, %xmm7
- mulsd %xmm6, %xmm7
- movq %xmm3, %xmm4
- subsd %xmm2, %xmm3
- addsd %xmm3, %xmm2
- subsd %xmm2, %xmm4
- addsd %xmm4, %xmm0
- subsd %xmm7, %xmm0
- addsd %xmm3, %xmm0
- jmp ..B1.4
-.L_2TAG_PACKET_0.0.1:
- jg .L_2TAG_PACKET_1.0.1
- pextrw $3, %xmm0, %eax
- movl %eax, %edx
- andl $32752, %eax
- je .L_2TAG_PACKET_2.0.1
- andl $32767, %edx
- cmpl $15904, %edx
- jb .L_2TAG_PACKET_3.0.1
- movq %xmm0, %xmm2
- movq %xmm0, %xmm3
- movq Q_11(%rip), %xmm1
- mulsd %xmm0, %xmm2
- mulsd %xmm2, %xmm3
- mulsd %xmm2, %xmm1
- addsd Q_9(%rip), %xmm1
- mulsd %xmm2, %xmm1
- addsd Q_7(%rip), %xmm1
- mulsd %xmm2, %xmm1
- addsd Q_5(%rip), %xmm1
- mulsd %xmm2, %xmm1
- addsd Q_3(%rip), %xmm1
- mulsd %xmm3, %xmm1
- addsd %xmm1, %xmm0
- jmp ..B1.4
-.L_2TAG_PACKET_3.0.1:
- movq TWO_POW_55(%rip), %xmm3
- mulsd %xmm0, %xmm3
- addsd %xmm3, %xmm0
- mulsd TWO_POW_M55(%rip), %xmm0
- jmp ..B1.4
-.L_2TAG_PACKET_2.0.1:
- movq %xmm0, %xmm1
- mulsd %xmm1, %xmm1
- jmp ..B1.4
-.L_2TAG_PACKET_1.0.1:
- pextrw $3, %xmm0, %eax
- andl $32752, %eax
- cmpl $32752, %eax
- je .L_2TAG_PACKET_4.0.1
- pextrw $3, %xmm0, %ecx
- andl $32752, %ecx
- subl $16224, %ecx
- shrl $7, %ecx
- andl $65532, %ecx
- lea PI_INV_TABLE(%rip), %r11
- addq %r11, %rcx
- movd %xmm0, %rax
- movl 20(%rcx), %r10d
- movl 24(%rcx), %r8d
- movl %eax, %edx
- shrq $21, %rax
- orl $-2147483648, %eax
- shrl $11, %eax
- movl %r10d, %r9d
- imulq %rdx, %r10
- imulq %rax, %r9
- imulq %rax, %r8
- movl 16(%rcx), %esi
- movl 12(%rcx), %edi
- movl %r10d, %r11d
- shrq $32, %r10
- addq %r10, %r9
- addq %r8, %r11
- movl %r11d, %r8d
- shrq $32, %r11
- addq %r11, %r9
- movl %esi, %r10d
- imulq %rdx, %rsi
- imulq %rax, %r10
- movl %edi, %r11d
- imulq %rdx, %rdi
- movl %esi, %ebx
- shrq $32, %rsi
- addq %rbx, %r9
- movl %r9d, %ebx
- shrq $32, %r9
- addq %rsi, %r10
- addq %r9, %r10
- shlq $32, %rbx
- orq %rbx, %r8
- imulq %rax, %r11
- movl 8(%rcx), %r9d
- movl 4(%rcx), %esi
- movl %edi, %ebx
- shrq $32, %rdi
- addq %rbx, %r10
- movl %r10d, %ebx
- shrq $32, %r10
- addq %rdi, %r11
- addq %r10, %r11
- movq %r9, %rdi
- imulq %rdx, %r9
- imulq %rax, %rdi
- movl %r9d, %r10d
- shrq $32, %r9
- addq %r10, %r11
- movl %r11d, %r10d
- shrq $32, %r11
- addq %r9, %rdi
- addq %r11, %rdi
- movq %rsi, %r9
- imulq %rdx, %rsi
- imulq %rax, %r9
- shlq $32, %r10
- orq %rbx, %r10
- movl (%rcx), %eax
- movl %esi, %r11d
- shrq $32, %rsi
- addq %r11, %rdi
- movl %edi, %r11d
- shrq $32, %rdi
- addq %rsi, %r9
- addq %rdi, %r9
- imulq %rax, %rdx
- pextrw $3, %xmm0, %ebx
- lea PI_INV_TABLE(%rip), %rdi
- subq %rdi, %rcx
- addl %ecx, %ecx
- addl %ecx, %ecx
- addl %ecx, %ecx
- addl $19, %ecx
- movl $32768, %esi
- andl %ebx, %esi
- shrl $4, %ebx
- andl $2047, %ebx
- subl $1023, %ebx
- subl %ebx, %ecx
- addq %rdx, %r9
- movl %ecx, %edx
- addl $32, %edx
- cmpl $0, %ecx
- jl .L_2TAG_PACKET_5.0.1
- negl %ecx
- addl $29, %ecx
- shll %cl, %r9d
- movl %r9d, %edi
- andl $1073741823, %r9d
- testl $536870912, %r9d
- jne .L_2TAG_PACKET_6.0.1
- shrl %cl, %r9d
- movl $0, %ebx
- shlq $32, %r9
- orq %r11, %r9
-.L_2TAG_PACKET_7.0.1:
-.L_2TAG_PACKET_8.0.1:
- cmpq $0, %r9
- je .L_2TAG_PACKET_9.0.1
-.L_2TAG_PACKET_10.0.1:
- bsr %r9, %r11
- movl $29, %ecx
- subl %r11d, %ecx
- jle .L_2TAG_PACKET_11.0.1
- shlq %cl, %r9
- movq %r10, %rax
- shlq %cl, %r10
- addl %ecx, %edx
- negl %ecx
- addl $64, %ecx
- shrq %cl, %rax
- shrq %cl, %r8
- orq %rax, %r9
- orq %r8, %r10
-.L_2TAG_PACKET_12.0.1:
- cvtsi2sdq %r9, %xmm0
- shrq $1, %r10
- cvtsi2sdq %r10, %xmm3
- xorpd %xmm4, %xmm4
- shll $4, %edx
- negl %edx
- addl $16368, %edx
- orl %esi, %edx
- xorl %ebx, %edx
- pinsrw $3, %edx, %xmm4
- movq PI_4(%rip), %xmm2
- movq 8+PI_4(%rip), %xmm7
- xorpd %xmm5, %xmm5
- subl $1008, %edx
- pinsrw $3, %edx, %xmm5
- mulsd %xmm4, %xmm0
- shll $16, %esi
- sarl $31, %esi
- mulsd %xmm5, %xmm3
- movq %xmm0, %xmm1
- mulsd %xmm2, %xmm0
- shrl $30, %edi
- addsd %xmm3, %xmm1
- mulsd %xmm2, %xmm3
- addl %esi, %edi
- xorl %esi, %edi
- mulsd %xmm1, %xmm7
- movl %edi, %eax
- addsd %xmm3, %xmm7
- movq %xmm0, %xmm2
- addsd %xmm7, %xmm0
- subsd %xmm0, %xmm2
- addsd %xmm2, %xmm7
- movapd PI32INV(%rip), %xmm1
- movddup %xmm0, %xmm0
- movapd sign_mask(%rip), %xmm4
- andpd %xmm0, %xmm4
- mulpd %xmm0, %xmm1
- movddup %xmm7, %xmm7
- movapd ONEHALF(%rip), %xmm5
- movapd MUL16(%rip), %xmm6
- orps %xmm4, %xmm5
- addpd %xmm5, %xmm1
- movapd %xmm1, %xmm5
- unpckhpd %xmm5, %xmm5
- cvttsd2si %xmm5, %edx
- cvttpd2dq %xmm1, %xmm1
- cvtdq2pd %xmm1, %xmm1
- mulpd %xmm6, %xmm1
- movapd P_1(%rip), %xmm3
- movq QQ_2(%rip), %xmm5
- shll $4, %eax
- addl $469248, %edx
- movapd P_2(%rip), %xmm4
- mulpd %xmm1, %xmm3
- addl %eax, %edx
- andl $31, %edx
- mulsd %xmm1, %xmm5
- movl %edx, %ecx
- mulpd %xmm1, %xmm4
- shll $1, %ecx
- subpd %xmm3, %xmm0
- mulpd P_3(%rip), %xmm1
- addl %ecx, %edx
- shll $2, %ecx
- addl %ecx, %edx
- addsd %xmm0, %xmm5
- movapd %xmm0, %xmm2
- subpd %xmm4, %xmm0
- movq ONE(%rip), %xmm6
- shll $4, %edx
- lea Ctable(%rip), %rax
- andpd MASK_35(%rip), %xmm5
- movapd %xmm0, %xmm3
- addq %rdx, %rax
- subpd %xmm0, %xmm2
- unpckhpd %xmm0, %xmm0
- divsd %xmm5, %xmm6
- subpd %xmm4, %xmm2
- subsd %xmm5, %xmm3
- subpd %xmm1, %xmm2
- movapd 48(%rax), %xmm1
- addpd %xmm7, %xmm2
- movapd 16(%rax), %xmm7
- mulpd %xmm0, %xmm7
- movapd 96(%rax), %xmm4
- mulpd %xmm0, %xmm1
- mulpd %xmm0, %xmm4
- addsd %xmm3, %xmm2
- movapd %xmm0, %xmm3
- mulpd %xmm0, %xmm0
- addpd (%rax), %xmm7
- addpd 32(%rax), %xmm1
- mulpd %xmm0, %xmm1
- addpd 80(%rax), %xmm4
- addpd %xmm1, %xmm7
- movapd 112(%rax), %xmm1
- mulpd %xmm0, %xmm1
- mulpd %xmm0, %xmm0
- addpd %xmm1, %xmm4
- movapd 64(%rax), %xmm1
- mulpd %xmm0, %xmm1
- addpd %xmm1, %xmm7
- movapd %xmm3, %xmm1
- mulpd %xmm0, %xmm3
- mulsd %xmm0, %xmm0
- mulpd 144(%rax), %xmm1
- mulpd %xmm3, %xmm4
- movq %xmm1, %xmm3
- addpd %xmm4, %xmm7
- movq %xmm1, %xmm4
- mulsd %xmm7, %xmm0
- unpckhpd %xmm7, %xmm7
- addsd %xmm7, %xmm0
- unpckhpd %xmm1, %xmm1
- addsd %xmm1, %xmm3
- subsd %xmm3, %xmm4
- addsd %xmm4, %xmm1
- movq %xmm2, %xmm4
- movq 144(%rax), %xmm7
- unpckhpd %xmm2, %xmm2
- addsd 152(%rax), %xmm7
- mulsd %xmm2, %xmm7
- addsd 136(%rax), %xmm7
- addsd %xmm1, %xmm7
- addsd %xmm7, %xmm0
- movq ONE(%rip), %xmm7
- mulsd %xmm6, %xmm4
- movq 168(%rax), %xmm2
- andpd %xmm6, %xmm2
- mulsd %xmm2, %xmm5
- mulsd 160(%rax), %xmm6
- subsd %xmm5, %xmm7
- subsd 128(%rax), %xmm2
- subsd %xmm4, %xmm7
- mulsd %xmm6, %xmm7
- movq %xmm3, %xmm4
- subsd %xmm2, %xmm3
- addsd %xmm3, %xmm2
- subsd %xmm2, %xmm4
- addsd %xmm4, %xmm0
- subsd %xmm7, %xmm0
- addsd %xmm3, %xmm0
- jmp ..B1.4
-.L_2TAG_PACKET_9.0.1:
- addl $64, %edx
- movq %r10, %r9
- movq %r8, %r10
- movq $0, %r8
- cmpq $0, %r9
- jne .L_2TAG_PACKET_10.0.1
- addl $64, %edx
- movq %r10, %r9
- movq %r8, %r10
- cmpq $0, %r9
- jne .L_2TAG_PACKET_10.0.1
- jmp .L_2TAG_PACKET_12.0.1
-.L_2TAG_PACKET_11.0.1:
- je .L_2TAG_PACKET_12.0.1
- negl %ecx
- shrq %cl, %r10
- movq %r9, %rax
- shrq %cl, %r9
- subl %ecx, %edx
- negl %ecx
- addl $64, %ecx
- shlq %cl, %rax
- orq %rax, %r10
- jmp .L_2TAG_PACKET_12.0.1
-.L_2TAG_PACKET_5.0.1:
- notl %ecx
- shlq $32, %r9
- orq %r11, %r9
- shlq %cl, %r9
- movq %r9, %rdi
- testl $-2147483648, %r9d
- jne .L_2TAG_PACKET_13.0.1
- shrl %cl, %r9d
- movl $0, %ebx
- shrq $2, %rdi
- jmp .L_2TAG_PACKET_8.0.1
-.L_2TAG_PACKET_6.0.1:
- shrl %cl, %r9d
- movl $1073741824, %ebx
- shrl %cl, %ebx
- shlq $32, %r9
- orq %r11, %r9
- shlq $32, %rbx
- addl $1073741824, %edi
- movq $0, %rcx
- movq $0, %r11
- subq %r8, %rcx
- sbbq %r10, %r11
- sbbq %r9, %rbx
- movq %rcx, %r8
- movq %r11, %r10
- movq %rbx, %r9
- movl $32768, %ebx
- jmp .L_2TAG_PACKET_7.0.1
-.L_2TAG_PACKET_13.0.1:
- shrl %cl, %r9d
- movq $0x100000000, %rbx
- shrq %cl, %rbx
- movq $0, %rcx
- movq $0, %r11
- subq %r8, %rcx
- sbbq %r10, %r11
- sbbq %r9, %rbx
- movq %rcx, %r8
- movq %r11, %r10
- movq %rbx, %r9
- movl $32768, %ebx
- shrq $2, %rdi
- addl $1073741824, %edi
- jmp .L_2TAG_PACKET_8.0.1
-.L_2TAG_PACKET_4.0.1:
- movq 8(%rsp), %xmm0
- mulsd NEG_ZERO(%rip), %xmm0
- movq %xmm0, (%rsp)
-.L_2TAG_PACKET_14.0.1:
-..B1.4:
- addq $16, %rsp
-..___tag_value_tan.6:
- popq %rbx
-..___tag_value_tan.8:
- ret
-..___tag_value_tan.9:
-END(tan)
-# -- End tan
- .section .rodata, "a"
- .align 16
- .align 16
-ONEHALF:
- .long 0
- .long 1071644672
- .long 0
- .long 1071644672
- .type ONEHALF,@object
- .size ONEHALF,16
- .align 16
-MUL16:
- .long 0
- .long 1076887552
- .long 0
- .long 1072693248
- .type MUL16,@object
- .size MUL16,16
- .align 16
-sign_mask:
- .long 0
- .long 2147483648
- .long 0
- .long 2147483648
- .type sign_mask,@object
- .size sign_mask,16
- .align 16
-PI32INV:
- .long 1841940611
- .long 1071931184
- .long 1841940611
- .long 1076125488
- .type PI32INV,@object
- .size PI32INV,16
- .align 16
-P_1:
- .long 1413758976
- .long 1069097467
- .long 1413742592
- .long 1069097467
- .type P_1,@object
- .size P_1,16
- .align 16
-P_2:
- .long 1734819840
- .long 3174229945
- .long 1280049152
- .long 1028033571
- .type P_2,@object
- .size P_2,16
- .align 16
-P_3:
- .long 923219018
- .long 984130272
- .long 57701189
- .long 988383790
- .type P_3,@object
- .size P_3,16
- .align 16
-Ctable:
- .long 0
- .long 0
- .long 0
- .long 0
- .long 2284589306
- .long 1066820852
- .long 0
- .long 0
- .long 0
- .long 0
- .long 0
- .long 0
- .long 1441186365
- .long 1065494243
- .long 1431655765
- .long 1070945621
- .long 0
- .long 0
- .long 0
- .long 0
- .long 236289504
- .long 1064135997
- .long 286331153
- .long 1069617425
- .long 0
- .long 0
- .long 0
- .long 0
- .long 1160476131
- .long 1062722102
- .long 463583772
- .long 1068212666
- .long 0
- .long 0
- .long 0
- .long 0
- .long 0
- .long 1072693248
- .long 0
- .long 0
- .long 0
- .long 0
- .long 0
- .long 0
- .long 1313038235
- .long 1066745731
- .long 0
- .long 0
- .long 1013878342
- .long 1067152618
- .long 0
- .long 0
- .long 3663426833
- .long 1065725283
- .long 3693284251
- .long 1069118808
- .long 650852232
- .long 1065882376
- .long 1996245381
- .long 1071000265
- .long 2008746170
- .long 1064664197
- .long 3055842593
- .long 1068578846
- .long 1495406348
- .long 1064652437
- .long 2269530157
- .long 1069711235
- .long 285563696
- .long 1063576465
- .long 1046897440
- .long 1067705865
- .long 233429731
- .long 1063453151
- .long 522045958
- .long 1068476590
- .long 2354785698
- .long 1069102779
- .long 1317599141
- .long 1012432133
- .long 0
- .long 1072693248
- .long 2828230105
- .long 1065606626
- .long 0
- .long 0
- .long 0
- .long 0
- .long 1512545955
- .long 1068119047
- .long 0
- .long 0
- .long 1127048698
- .long 1067909459
- .long 0
- .long 0
- .long 2300200450
- .long 1067254767
- .long 3593250296
- .long 1070233561
- .long 3009365544
- .long 1066902117
- .long 1127373050
- .long 1071173457
- .long 3046103305
- .long 1066371299
- .long 24583402
- .long 1069723988
- .long 4082511758
- .long 1065914199
- .long 3223889699
- .long 1070020367
- .long 548927984
- .long 1065415756
- .long 558065897
- .long 1068949418
- .long 680073315
- .long 1064940726
- .long 388873200
- .long 1068944270
- .long 3763679576
- .long 1070167541
- .long 1497360404
- .long 1009710547
- .long 0
- .long 1072693248
- .long 64931152
- .long 1067729411
- .long 0
- .long 0
- .long 0
- .long 0
- .long 2467582782
- .long 1069256389
- .long 0
- .long 0
- .long 162150096
- .long 1068946420
- .long 0
- .long 0
- .long 3702794237
- .long 1068579152
- .long 3631919291
- .long 1070936926
- .long 3456821413
- .long 1068217218
- .long 2031366438
- .long 1071495745
- .long 1596664020
- .long 1067799281
- .long 1509038701
- .long 1070601643
- .long 583171477
- .long 1067510148
- .long 3785344682
- .long 1070618476
- .long 2402036048
- .long 1067075736
- .long 3233018412
- .long 1069913186
- .long 411280568
- .long 1066710556
- .long 1065584192
- .long 1069747896
- .long 895247324
- .long 1070819848
- .long 500078909
- .long 3161288781
- .long 0
- .long 1072693248
- .long 729983843
- .long 1068994194
- .long 0
- .long 0
- .long 0
- .long 0
- .long 1458794562
- .long 1070398550
- .long 0
- .long 0
- .long 2857777489
- .long 1070137637
- .long 0
- .long 0
- .long 1024359517
- .long 1069876531
- .long 2616040238
- .long 1071582937
- .long 1609024636
- .long 1069675088
- .long 2529240549
- .long 1071836633
- .long 1510128600
- .long 1069440113
- .long 2251697184
- .long 1071253687
- .long 1262761453
- .long 1069142850
- .long 1263091857
- .long 1071190461
- .long 3043383486
- .long 1068885191
- .long 2476932470
- .long 1070842002
- .long 3659995028
- .long 1068669200
- .long 855891755
- .long 1070696894
- .long 2583490354
- .long 1071284857
- .long 3062633575
- .long 1014008623
- .long 0
- .long 1072693248
- .long 2550940471
- .long 1069938201
- .long 0
- .long 0
- .long 0
- .long 0
- .long 3422807297
- .long 1071640847
- .long 0
- .long 0
- .long 1151658053
- .long 1071494715
- .long 0
- .long 0
- .long 929607071
- .long 1071346340
- .long 1037049034
- .long 1072037305
- .long 2786928657
- .long 1071215282
- .long 1447406859
- .long 1072265209
- .long 3490952107
- .long 1071090851
- .long 3205232916
- .long 1071968658
- .long 1297344304
- .long 1070977120
- .long 1066110976
- .long 1071946035
- .long 3803721480
- .long 1070871082
- .long 1496754229
- .long 1071807201
- .long 2982550683
- .long 1070773243
- .long 4014441989
- .long 1071736222
- .long 419968236
- .long 1071717047
- .long 3451266538
- .long 3163444811
- .long 0
- .long 1072693248
- .long 2960267235
- .long 1070745841
- .long 0
- .long 0
- .long 0
- .long 0
- .long 724322768
- .long 1072881308
- .long 0
- .long 0
- .long 643153048
- .long 1072905816
- .long 0
- .long 0
- .long 4285079458
- .long 1072928558
- .long 3912524733
- .long 1072622983
- .long 118362272
- .long 1072952754
- .long 4107767972
- .long 1072827408
- .long 2689502883
- .long 1072976922
- .long 946523347
- .long 1072772766
- .long 573204189
- .long 1073001761
- .long 581531518
- .long 1072826391
- .long 1386236526
- .long 1073026959
- .long 3718905905
- .long 1072832823
- .long 1145558140
- .long 1073052673
- .long 513572637
- .long 1072861969
- .long 716700048
- .long 1071997368
- .long 547126769
- .long 1015523525
- .long 0
- .long 1072693248
- .long 1097907398
- .long 1071420120
- .long 0
- .long 0
- .long 0
- .long 0
- .long 3349892442
- .long 1074290212
- .long 0
- .long 0
- .long 3913197405
- .long 1074501181
- .long 0
- .long 0
- .long 2494034522
- .long 1074739170
- .long 1264738763
- .long 1073084804
- .long 1520293906
- .long 1074899632
- .long 1958936600
- .long 1073411493
- .long 2133649635
- .long 1075052171
- .long 4270740730
- .long 1073574708
- .long 1728930189
- .long 1075224844
- .long 1303998552
- .long 1073799186
- .long 618611933
- .long 1075420255
- .long 1769828046
- .long 1073938542
- .long 2200537986
- .long 1075641421
- .long 433361110
- .long 1074105369
- .long 719595600
- .long 1072317184
- .long 294527206
- .long 3162140088
- .long 0
- .long 1073741824
- .long 3811788216
- .long 3218400550
- .long 0
- .long 0
- .long 0
- .long 0
- .long 1704352102
- .long 1075943001
- .long 0
- .long 0
- .long 2284589306
- .long 1076258036
- .long 0
- .long 0
- .long 2211264291
- .long 1076659010
- .long 0
- .long 1073741824
- .long 1441186365
- .long 1077028579
- .long 1431655765
- .long 1074091349
- .long 876943673
- .long 1077353622
- .long 2863311531
- .long 1074440874
- .long 236289504
- .long 1077767485
- .long 286331153
- .long 1074860305
- .long 2805473311
- .long 1078115278
- .long 95443718
- .long 1075163227
- .long 1160476131
- .long 1078450742
- .long 463583772
- .long 1075552698
- .long 0
- .long 1072693248
- .long 0
- .long 0
- .long 0
- .long 1073741824
- .long 0
- .long 0
- .long 0
- .long 0
- .long 0
- .long 0
- .long 1330165971
- .long 3207850745
- .long 0
- .long 0
- .long 217536623
- .long 1059109098
- .long 0
- .long 0
- .long 3492120849
- .long 3205151475
- .long 602185705
- .long 3215678092
- .long 760422958
- .long 1056312597
- .long 555127889
- .long 1067545266
- .long 3139784124
- .long 3202470837
- .long 3690544014
- .long 3213150171
- .long 95707915
- .long 1053635428
- .long 4003114407
- .long 1064581412
- .long 2034926231
- .long 3199711161
- .long 3759536023
- .long 3210559989
- .long 3826928214
- .long 1050893819
- .long 3837960785
- .long 1061790379
- .long 1526325248
- .long 3217967566
- .long 2356426521
- .long 1025423456
- .long 0
- .long 0
- .long 457728975
- .long 1071088276
- .long 0
- .long 1072693248
- .long 0
- .long 4294967288
- .long 1398462608
- .long 3207303968
- .long 0
- .long 0
- .long 26205983
- .long 1058461213
- .long 0
- .long 0
- .long 56226238
- .long 3204528612
- .long 2754706541
- .long 3215359511
- .long 2187799823
- .long 1055634437
- .long 790323742
- .long 1067402587
- .long 1372385848
- .long 3201651479
- .long 4097292716
- .long 3212856302
- .long 3348210357
- .long 1052830099
- .long 2442796466
- .long 1064337602
- .long 862608142
- .long 3198830754
- .long 170296152
- .long 3210060867
- .long 3755571428
- .long 1049933343
- .long 3614866008
- .long 1061361670
- .long 719978496
- .long 3217669096
- .long 1998842465
- .long 3174703977
- .long 0
- .long 0
- .long 3749156607
- .long 1071048258
- .long 0
- .long 1072693248
- .long 0
- .long 4294967288
- .long 3120498638
- .long 3206749304
- .long 0
- .long 0
- .long 2773578114
- .long 1058009312
- .long 0
- .long 0
- .long 2030783676
- .long 3203817873
- .long 2223654598
- .long 3215071936
- .long 2976134650
- .long 1054987244
- .long 706390066
- .long 1067217386
- .long 4258437615
- .long 3200900378
- .long 1066252975
- .long 3212391267
- .long 815777514
- .long 1051989462
- .long 3202745457
- .long 1064010682
- .long 2493556375
- .long 3198004753
- .long 1046243251
- .long 3209678971
- .long 2593078846
- .long 1049017717
- .long 2763962276
- .long 1060970161
- .long 701480960
- .long 3217377742
- .long 3205862232
- .long 3174660915
- .long 0
- .long 0
- .long 2267016812
- .long 1071015664
- .long 0
- .long 1072693248
- .long 0
- .long 4294967288
- .long 2107155798
- .long 3206166872
- .long 0
- .long 0
- .long 2642992129
- .long 1057424578
- .long 0
- .long 0
- .long 1936992811
- .long 3203204426
- .long 1485063559
- .long 3214682643
- .long 1432914553
- .long 1054319398
- .long 3996381654
- .long 1067075828
- .long 2833029256
- .long 3200223545
- .long 2866066872
- .long 3211982662
- .long 2432888737
- .long 1051234178
- .long 3669764559
- .long 1063748136
- .long 2458496952
- .long 3197170774
- .long 1948234989
- .long 3209098147
- .long 2843698787
- .long 1048163519
- .long 3398041407
- .long 1060559728
- .long 2829230080
- .long 3217092115
- .long 1034046433
- .long 3174271903
- .long 0
- .long 0
- .long 298675305
- .long 1070989821
- .long 0
- .long 1072693248
- .long 0
- .long 4294967288
- .long 437603223
- .long 3205589761
- .long 0
- .long 0
- .long 759330352
- .long 1057048511
- .long 0
- .long 0
- .long 3107463368
- .long 3202507988
- .long 3144465176
- .long 3214191500
- .long 2290961810
- .long 1053841035
- .long 1618153340
- .long 1066971547
- .long 3836869393
- .long 3199400272
- .long 584032116
- .long 3211469261
- .long 1245704358
- .long 1050626462
- .long 4247487438
- .long 1063561943
- .long 1669034927
- .long 3196274812
- .long 3844233498
- .long 3208626322
- .long 2706958524
- .long 1047411374
- .long 3857199098
- .long 1060281647
- .long 3593904128
- .long 3216590719
- .long 3267547836
- .long 3172163321
- .long 0
- .long 0
- .long 4076712227
- .long 1070970214
- .long 0
- .long 1072693248
- .long 0
- .long 4294967288
- .long 3290090340
- .long 3204793485
- .long 0
- .long 0
- .long 3685760367
- .long 1056668370
- .long 0
- .long 0
- .long 2655163949
- .long 3201674917
- .long 628750575
- .long 3213566872
- .long 680140505
- .long 1053299777
- .long 2954464709
- .long 1066900026
- .long 803201619
- .long 3198516435
- .long 1466315631
- .long 3210837162
- .long 1611220163
- .long 1049972438
- .long 2766187256
- .long 1063437894
- .long 1804579484
- .long 3195331491
- .long 3695969289
- .long 3207854418
- .long 2617238373
- .long 1046675948
- .long 3095830084
- .long 1060095334
- .long 3789570048
- .long 3216034914
- .long 23826559
- .long 3172048060
- .long 0
- .long 0
- .long 3870939386
- .long 1070956467
- .long 0
- .long 1072693248
- .long 0
- .long 4294967288
- .long 1571758758
- .long 3203672535
- .long 0
- .long 0
- .long 113026373
- .long 1056416381
- .long 0
- .long 0
- .long 1913766298
- .long 3200523326
- .long 2507068734
- .long 3212502004
- .long 4000648818
- .long 1053003803
- .long 2446607349
- .long 1066858259
- .long 912662124
- .long 3197333001
- .long 1349489537
- .long 3209765608
- .long 3412972607
- .long 1049641401
- .long 1721283327
- .long 1063366855
- .long 1466691883
- .long 3194116746
- .long 3852528092
- .long 3206760861
- .long 285443293
- .long 1046158380
- .long 1758739894
- .long 1059895449
- .long 1858781184
- .long 3214984212
- .long 3447575948
- .long 1024675855
- .long 0
- .long 0
- .long 2242038011
- .long 1070948320
- .long 0
- .long 1072693248
- .long 0
- .long 4294967288
- .long 0
- .long 0
- .long 0
- .long 0
- .long 737611454
- .long 1056336527
- .long 0
- .long 0
- .long 0
- .long 0
- .long 0
- .long 0
- .long 3594790527
- .long 1052911621
- .long 381774871
- .long 1066844524
- .long 0
- .long 0
- .long 0
- .long 0
- .long 3303051618
- .long 1049456050
- .long 3154187623
- .long 1063343722
- .long 0
- .long 0
- .long 0
- .long 0
- .long 528061788
- .long 1045944910
- .long 2469719819
- .long 1059831159
- .long 0
- .long 0
- .long 0
- .long 0
- .long 0
- .long 0
- .long 1431655765
- .long 1070945621
- .long 0
- .long 1072693248
- .long 0
- .long 4294967288
- .long 1571758758
- .long 1056188887
- .long 0
- .long 0
- .long 113026373
- .long 1056416381
- .long 0
- .long 0
- .long 1913766298
- .long 1053039678
- .long 2507068734
- .long 1065018356
- .long 4000648818
- .long 1053003803
- .long 2446607349
- .long 1066858259
- .long 912662124
- .long 1049849353
- .long 1349489537
- .long 1062281960
- .long 3412972607
- .long 1049641401
- .long 1721283327
- .long 1063366855
- .long 1466691883
- .long 1046633098
- .long 3852528092
- .long 1059277213
- .long 285443293
- .long 1046158380
- .long 1758739894
- .long 1059895449
- .long 1858781184
- .long 1067500564
- .long 3447575948
- .long 3172159503
- .long 0
- .long 0
- .long 2242038011
- .long 1070948320
- .long 0
- .long 1072693248
- .long 0
- .long 4294967288
- .long 3290090340
- .long 1057309837
- .long 0
- .long 0
- .long 3685760367
- .long 1056668370
- .long 0
- .long 0
- .long 2655163949
- .long 1054191269
- .long 628750575
- .long 1066083224
- .long 680140505
- .long 1053299777
- .long 2954464709
- .long 1066900026
- .long 803201619
- .long 1051032787
- .long 1466315631
- .long 1063353514
- .long 1611220163
- .long 1049972438
- .long 2766187256
- .long 1063437894
- .long 1804579484
- .long 1047847843
- .long 3695969289
- .long 1060370770
- .long 2617238373
- .long 1046675948
- .long 3095830084
- .long 1060095334
- .long 3789570048
- .long 1068551266
- .long 23826559
- .long 1024564412
- .long 0
- .long 0
- .long 3870939386
- .long 1070956467
- .long 0
- .long 1072693248
- .long 0
- .long 4294967288
- .long 437603223
- .long 1058106113
- .long 0
- .long 0
- .long 759330352
- .long 1057048511
- .long 0
- .long 0
- .long 3107463368
- .long 1055024340
- .long 3144465176
- .long 1066707852
- .long 2290961810
- .long 1053841035
- .long 1618153340
- .long 1066971547
- .long 3836869393
- .long 1051916624
- .long 584032116
- .long 1063985613
- .long 1245704358
- .long 1050626462
- .long 4247487438
- .long 1063561943
- .long 1669034927
- .long 1048791164
- .long 3844233498
- .long 1061142674
- .long 2706958524
- .long 1047411374
- .long 3857199098
- .long 1060281647
- .long 3593904128
- .long 1069107071
- .long 3267547836
- .long 1024679673
- .long 0
- .long 0
- .long 4076712227
- .long 1070970214
- .long 0
- .long 1072693248
- .long 0
- .long 4294967288
- .long 2107155798
- .long 1058683224
- .long 0
- .long 0
- .long 2642992129
- .long 1057424578
- .long 0
- .long 0
- .long 1936992811
- .long 1055720778
- .long 1485063559
- .long 1067198995
- .long 1432914553
- .long 1054319398
- .long 3996381654
- .long 1067075828
- .long 2833029256
- .long 1052739897
- .long 2866066872
- .long 1064499014
- .long 2432888737
- .long 1051234178
- .long 3669764559
- .long 1063748136
- .long 2458496952
- .long 1049687126
- .long 1948234989
- .long 1061614499
- .long 2843698787
- .long 1048163519
- .long 3398041407
- .long 1060559728
- .long 2829230080
- .long 1069608467
- .long 1034046433
- .long 1026788255
- .long 0
- .long 0
- .long 298675305
- .long 1070989821
- .long 0
- .long 1072693248
- .long 0
- .long 4294967288
- .long 3120498638
- .long 1059265656
- .long 0
- .long 0
- .long 2773578114
- .long 1058009312
- .long 0
- .long 0
- .long 2030783676
- .long 1056334225
- .long 2223654598
- .long 1067588288
- .long 2976134650
- .long 1054987244
- .long 706390066
- .long 1067217386
- .long 4258437615
- .long 1053416730
- .long 1066252975
- .long 1064907619
- .long 815777514
- .long 1051989462
- .long 3202745457
- .long 1064010682
- .long 2493556375
- .long 1050521105
- .long 1046243251
- .long 1062195323
- .long 2593078846
- .long 1049017717
- .long 2763962276
- .long 1060970161
- .long 701480960
- .long 1069894094
- .long 3205862232
- .long 1027177267
- .long 0
- .long 0
- .long 2267016812
- .long 1071015664
- .long 0
- .long 1072693248
- .long 0
- .long 4294967288
- .long 1398462608
- .long 1059820320
- .long 0
- .long 0
- .long 26205983
- .long 1058461213
- .long 0
- .long 0
- .long 56226238
- .long 1057044964
- .long 2754706541
- .long 1067875863
- .long 2187799823
- .long 1055634437
- .long 790323742
- .long 1067402587
- .long 1372385848
- .long 1054167831
- .long 4097292716
- .long 1065372654
- .long 3348210357
- .long 1052830099
- .long 2442796466
- .long 1064337602
- .long 862608142
- .long 1051347106
- .long 170296152
- .long 1062577219
- .long 3755571428
- .long 1049933343
- .long 3614866008
- .long 1061361670
- .long 719978496
- .long 1070185448
- .long 1998842465
- .long 1027220329
- .long 0
- .long 0
- .long 3749156607
- .long 1071048258
- .long 0
- .long 1072693248
- .long 0
- .long 4294967288
- .long 1330165971
- .long 1060367097
- .long 0
- .long 0
- .long 217536623
- .long 1059109098
- .long 0
- .long 0
- .long 3492120849
- .long 1057667827
- .long 602185705
- .long 1068194444
- .long 760422958
- .long 1056312597
- .long 555127889
- .long 1067545266
- .long 3139784124
- .long 1054987189
- .long 3690544014
- .long 1065666523
- .long 95707915
- .long 1053635428
- .long 4003114407
- .long 1064581412
- .long 2034926231
- .long 1052227513
- .long 3759536023
- .long 1063076341
- .long 3826928214
- .long 1050893819
- .long 3837960785
- .long 1061790379
- .long 1526325248
- .long 1070483918
- .long 2356426521
- .long 3172907104
- .long 0
- .long 0
- .long 457728975
- .long 1071088276
- .long 0
- .long 1072693248
- .long 0
- .long 4294967288
- .long 1704352102
- .long 3223426649
- .long 0
- .long 0
- .long 2284589306
- .long 1076258036
- .long 0
- .long 0
- .long 2211264291
- .long 3224142658
- .long 0
- .long 3221225472
- .long 1441186365
- .long 1077028579
- .long 1431655765
- .long 1074091349
- .long 876943673
- .long 3224837270
- .long 2863311531
- .long 3221924522
- .long 236289504
- .long 1077767485
- .long 286331153
- .long 1074860305
- .long 2805473311
- .long 3225598926
- .long 95443718
- .long 3222646875
- .long 1160476131
- .long 1078450742
- .long 463583772
- .long 1075552698
- .long 0
- .long 3220176896
- .long 0
- .long 0
- .long 0
- .long 1073741824
- .long 0
- .long 0
- .long 0
- .long 0
- .long 0
- .long 0
- .long 3349892442
- .long 3221773860
- .long 0
- .long 0
- .long 3913197405
- .long 1074501181
- .long 0
- .long 0
- .long 2494034522
- .long 3222222818
- .long 1264738763
- .long 3220568452
- .long 1520293906
- .long 1074899632
- .long 1958936600
- .long 1073411493
- .long 2133649635
- .long 3222535819
- .long 4270740730
- .long 3221058356
- .long 1728930189
- .long 1075224844
- .long 1303998552
- .long 1073799186
- .long 618611933
- .long 3222903903
- .long 1769828046
- .long 3221422190
- .long 2200537986
- .long 1075641421
- .long 433361110
- .long 1074105369
- .long 719595600
- .long 3219800832
- .long 294527206
- .long 1014656440
- .long 0
- .long 1073741824
- .long 3811788216
- .long 3218400550
- .long 0
- .long 0
- .long 0
- .long 0
- .long 724322768
- .long 3220364956
- .long 0
- .long 0
- .long 643153048
- .long 1072905816
- .long 0
- .long 0
- .long 4285079458
- .long 3220412206
- .long 3912524733
- .long 3220106631
- .long 118362272
- .long 1072952754
- .long 4107767972
- .long 1072827408
- .long 2689502883
- .long 3220460570
- .long 946523347
- .long 3220256414
- .long 573204189
- .long 1073001761
- .long 581531518
- .long 1072826391
- .long 1386236526
- .long 3220510607
- .long 3718905905
- .long 3220316471
- .long 1145558140
- .long 1073052673
- .long 513572637
- .long 1072861969
- .long 716700048
- .long 3219481016
- .long 547126769
- .long 3163007173
- .long 0
- .long 1072693248
- .long 1097907398
- .long 1071420120
- .long 0
- .long 0
- .long 0
- .long 0
- .long 3422807297
- .long 3219124495
- .long 0
- .long 0
- .long 1151658053
- .long 1071494715
- .long 0
- .long 0
- .long 929607071
- .long 3218829988
- .long 1037049034
- .long 3219520953
- .long 2786928657
- .long 1071215282
- .long 1447406859
- .long 1072265209
- .long 3490952107
- .long 3218574499
- .long 3205232916
- .long 3219452306
- .long 1297344304
- .long 1070977120
- .long 1066110976
- .long 1071946035
- .long 3803721480
- .long 3218354730
- .long 1496754229
- .long 3219290849
- .long 2982550683
- .long 1070773243
- .long 4014441989
- .long 1071736222
- .long 419968236
- .long 3219200695
- .long 3451266538
- .long 1015961163
- .long 0
- .long 1072693248
- .long 2960267235
- .long 1070745841
- .long 0
- .long 0
- .long 0
- .long 0
- .long 1458794562
- .long 3217882198
- .long 0
- .long 0
- .long 2857777489
- .long 1070137637
- .long 0
- .long 0
- .long 1024359517
- .long 3217360179
- .long 2616040238
- .long 3219066585
- .long 1609024636
- .long 1069675088
- .long 2529240549
- .long 1071836633
- .long 1510128600
- .long 3216923761
- .long 2251697184
- .long 3218737335
- .long 1262761453
- .long 1069142850
- .long 1263091857
- .long 1071190461
- .long 3043383486
- .long 3216368839
- .long 2476932470
- .long 3218325650
- .long 3659995028
- .long 1068669200
- .long 855891755
- .long 1070696894
- .long 2583490354
- .long 3218768505
- .long 3062633575
- .long 3161492271
- .long 0
- .long 1072693248
- .long 2550940471
- .long 1069938201
- .long 0
- .long 0
- .long 0
- .long 0
- .long 2467582782
- .long 3216740037
- .long 0
- .long 0
- .long 162150096
- .long 1068946420
- .long 0
- .long 0
- .long 3702794237
- .long 3216062800
- .long 3631919291
- .long 3218420574
- .long 3456821413
- .long 1068217218
- .long 2031366438
- .long 1071495745
- .long 1596664020
- .long 3215282929
- .long 1509038701
- .long 3218085291
- .long 583171477
- .long 1067510148
- .long 3785344682
- .long 1070618476
- .long 2402036048
- .long 3214559384
- .long 3233018412
- .long 3217396834
- .long 411280568
- .long 1066710556
- .long 1065584192
- .long 1069747896
- .long 895247324
- .long 3218303496
- .long 500078909
- .long 1013805133
- .long 0
- .long 1072693248
- .long 729983843
- .long 1068994194
- .long 0
- .long 0
- .long 0
- .long 0
- .long 1512545955
- .long 3215602695
- .long 0
- .long 0
- .long 1127048698
- .long 1067909459
- .long 0
- .long 0
- .long 2300200450
- .long 3214738415
- .long 3593250296
- .long 3217717209
- .long 3009365544
- .long 1066902117
- .long 1127373050
- .long 1071173457
- .long 3046103305
- .long 3213854947
- .long 24583402
- .long 3217207636
- .long 4082511758
- .long 1065914199
- .long 3223889699
- .long 1070020367
- .long 548927984
- .long 3212899404
- .long 558065897
- .long 3216433066
- .long 680073315
- .long 1064940726
- .long 388873200
- .long 1068944270
- .long 3763679576
- .long 3217651189
- .long 1497360404
- .long 3157194195
- .long 0
- .long 1072693248
- .long 64931152
- .long 1067729411
- .long 0
- .long 0
- .long 0
- .long 0
- .long 1313038235
- .long 3214229379
- .long 0
- .long 0
- .long 1013878342
- .long 1067152618
- .long 0
- .long 0
- .long 3663426833
- .long 3213208931
- .long 3693284251
- .long 3216602456
- .long 650852232
- .long 1065882376
- .long 1996245381
- .long 1071000265
- .long 2008746170
- .long 3212147845
- .long 3055842593
- .long 3216062494
- .long 1495406348
- .long 1064652437
- .long 2269530157
- .long 1069711235
- .long 285563696
- .long 3211060113
- .long 1046897440
- .long 3215189513
- .long 233429731
- .long 1063453151
- .long 522045958
- .long 1068476590
- .long 2354785698
- .long 3216586427
- .long 1317599141
- .long 3159915781
- .long 0
- .long 1072693248
- .long 2828230105
- .long 1065606626
- .long 0
- .long 0
- .long 0
- .long 0
- .type Ctable,@object
- .size Ctable,5632
- .align 16
-MASK_35:
- .long 4294705152
- .long 4294967295
- .long 0
- .long 0
- .type MASK_35,@object
- .size MASK_35,16
- .align 16
-Q_11:
- .long 3103673719
- .long 1065509018
- .type Q_11,@object
- .size Q_11,8
- .space 8, 0x00 # pad
- .align 16
-Q_9:
- .long 3213130307
- .long 1066820768
- .type Q_9,@object
- .size Q_9,8
- .space 8, 0x00 # pad
- .align 16
-Q_7:
- .long 1388628139
- .long 1068212666
- .type Q_7,@object
- .size Q_7,8
- .space 8, 0x00 # pad
- .align 16
-Q_5:
- .long 285812550
- .long 1069617425
- .type Q_5,@object
- .size Q_5,8
- .space 8, 0x00 # pad
- .align 16
-Q_3:
- .long 1431655954
- .long 1070945621
- .type Q_3,@object
- .size Q_3,8
- .space 8, 0x00 # pad
- .align 16
-PI_INV_TABLE:
- .long 0
- .long 0
- .long 2734261102
- .long 1313084713
- .long 4230436817
- .long 4113882560
- .long 3680671129
- .long 1011060801
- .long 4266746795
- .long 3736847713
- .long 3072618042
- .long 1112396512
- .long 105459434
- .long 164729372
- .long 4263373596
- .long 2972297022
- .long 3900847605
- .long 784024708
- .long 3919343654
- .long 3026157121
- .long 965858873
- .long 2203269620
- .long 2625920907
- .long 3187222587
- .long 536385535
- .long 3724908559
- .long 4012839307
- .long 1510632735
- .long 1832287951
- .long 667617719
- .long 1330003814
- .long 2657085997
- .long 1965537991
- .long 3957715323
- .long 1023883767
- .long 2320667370
- .long 1811636145
- .long 529358088
- .long 1443049542
- .long 4235946923
- .long 4040145953
- .type PI_INV_TABLE,@object
- .size PI_INV_TABLE,164
- .space 12, 0x00 # pad
- .align 16
-PI_4:
- .long 0
- .long 1072243195
- .long 1175561766
- .long 1048908043
- .type PI_4,@object
- .size PI_4,16
- .align 8
-QQ_2:
- .long 1734816687
- .long 1026746297
- .type QQ_2,@object
- .size QQ_2,8
- .align 8
-ONE:
- .long 0
- .long 1072693248
- .type ONE,@object
- .size ONE,8
- .align 8
-TWO_POW_55:
- .long 0
- .long 1130364928
- .type TWO_POW_55,@object
- .size TWO_POW_55,8
- .align 8
-TWO_POW_M55:
- .long 0
- .long 1015021568
- .type TWO_POW_M55,@object
- .size TWO_POW_M55,8
- .align 4
-NEG_ZERO:
- .long 0
- .long 2147483648
- .type NEG_ZERO,@object
- .size NEG_ZERO,8
- .data
- .section .note.GNU-stack, "",@progbits
-// -- Begin DWARF2 SEGMENT .eh_frame
- .section .eh_frame,"a",@progbits
-.eh_frame_seg:
- .align 1
- .4byte 0x00000014
- .8byte 0x00527a0100000000
- .8byte 0x08070c1b01107801
- .4byte 0x00000190
- .4byte 0x0000002c
- .4byte 0x0000001c
- .4byte ..___tag_value_tan.1-.
- .4byte ..___tag_value_tan.9-..___tag_value_tan.1
- .2byte 0x0400
- .4byte ..___tag_value_tan.3-..___tag_value_tan.1
- .4byte 0x0283100e
- .byte 0x04
- .4byte ..___tag_value_tan.5-..___tag_value_tan.3
- .2byte 0x200e
- .byte 0x04
- .4byte ..___tag_value_tan.6-..___tag_value_tan.5
- .4byte 0x04c3100e
- .4byte ..___tag_value_tan.8-..___tag_value_tan.6
- .2byte 0x080e
-# End
diff --git a/libm/x86_64/s_tanh.S b/libm/x86_64/s_tanh.S
deleted file mode 100644
index a76a5c2..0000000
--- a/libm/x86_64/s_tanh.S
+++ /dev/null
@@ -1,1392 +0,0 @@
-/*
-Copyright (c) 2014, Intel Corporation
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
-
- * Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
-
- * Neither the name of Intel Corporation nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
-ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/******************************************************************************/
-// ALGORITHM DESCRIPTION
-// ---------------------
-//
-// tanh(x)=(exp(x)-exp(-x))/(exp(x)+exp(-x))=(1-exp(-2*x))/(1+exp(-2*x))
-//
-// Let |x|=xH+xL (upper 26 bits, lower 27 bits)
-// log2(e) rounded to 26 bits (high part) plus a double precision low part is
-// L2EH+L2EL (upper 26, lower 53 bits)
-//
-// Let xH*L2EH=k+f+r`, where (k+f)*2^8*2=int(xH*L2EH*2^9),
-// f=0.b1 b2 ... b8, k integer
-// 2^{-f} is approximated as Tn[f]+Dn[f]
-// Tn stores the high 53 bits, Dn stores (2^{-f}-Tn[f]) rounded to double precision
-//
-// r=r`+xL*L2EH+|x|*L2EL, |r|<2^{-9}+2^{-14},
-// for |x| in [23/64,3*2^7)
-// e^{-2*|x|}=2^{-k-f}*2^{-r} ~ 2^{-k}*(Tn+Dn)*(1+p)=(T0+D0)*(1+p)
-//
-// For |x| in [2^{-4},2^5):
-// 2^{-r}-1 ~ p=c1*r+c2*r^2+..+c5*r^5
-// Let R=1/(1+T0+p*T0), truncated to 35 significant bits
-// R=1/(1+T0+D0+p*(T0+D0))*(1+eps), |eps|<2^{-33}
-// 1+T0+D0+p*(T0+D0)=KH+KL, where
-// KH=(1+T0+c1*r*T0)_high (leading 17 bits)
-// KL=T0_low+D0+(c1*r*T0)_low+c1*r*D0+(c2*r^2+..c5*r^5)*T0
-// eps ~ (R*KH-1)+R*KL
-// 1/(1+T0+D0+p*(T0+D0)) ~ R-R*eps
-// The result is approximated as (1-T0-D0-(T0+D0)*p)*(R-R*eps)
-// 1-T0-D0-(T0+D0)*p=-((KH-2)+KL)
-// The result is formed as
-// (KH-2)*R+(-(KH-2)*R*eps+(KL*R-KL*R*eps)), with the correct sign
-// set at the end
-//
-// For |x| in [2^{-64},2^{-4}):
-// A Taylor series expansion is used (x+p3*x^3+..+p13*x^{13})
-//
-// For |x|<2^{-64}: x is returned
-//
-// For |x|>=2^32: return +/-1
-//
-// Special cases:
-// tanh(NaN) = quiet NaN, and raise invalid exception
-// tanh(INF) = that INF
-// tanh(+/-0) = +/-0
-//
-/******************************************************************************/
-
-#include <private/bionic_asm.h>
-# -- Begin tanh
-ENTRY(tanh)
-# parameter 1: %xmm0
-..B1.1:
-..___tag_value_tanh.1:
- pushq %rsi
-..___tag_value_tanh.3:
-..B1.2:
- movsd HALFMASK(%rip), %xmm3
- xorpd %xmm4, %xmm4
- movsd L2E(%rip), %xmm1
- movsd 8+L2E(%rip), %xmm2
- movl $32768, %eax
- pinsrw $3, %eax, %xmm4
- movsd Shifter(%rip), %xmm6
- pextrw $3, %xmm0, %ecx
- andpd %xmm0, %xmm3
- andnpd %xmm0, %xmm4
- pshufd $68, %xmm4, %xmm5
- movl $32768, %edx
- andl %ecx, %edx
- andl $32767, %ecx
- subl $16304, %ecx
- cmpl $144, %ecx
- jae .L_2TAG_PACKET_0.0.1
- subsd %xmm3, %xmm4
- mulsd %xmm1, %xmm3
- mulsd %xmm5, %xmm2
- cvtsd2si %xmm3, %eax
- movq %xmm3, %xmm7
- addsd %xmm6, %xmm3
- mulsd %xmm4, %xmm1
- movsd ONEMASK(%rip), %xmm4
- subsd %xmm6, %xmm3
- xorpd %xmm0, %xmm0
- addsd %xmm1, %xmm2
- subsd %xmm3, %xmm7
- movapd cv(%rip), %xmm6
- addsd %xmm7, %xmm2
- movl $255, %ecx
- andl %eax, %ecx
- addl %ecx, %ecx
- lea T2_neg_f(%rip), %r8
- movapd (%r8,%rcx,8), %xmm5
- shrl $4, %eax
- andl $65520, %eax
- subl $16368, %eax
- negl %eax
- pinsrw $3, %eax, %xmm0
- movapd 16+cv(%rip), %xmm1
- pshufd $68, %xmm0, %xmm0
- mulpd %xmm5, %xmm0
- movsd 32+cv(%rip), %xmm7
- pshufd $68, %xmm2, %xmm2
- movq %xmm4, %xmm5
- addsd %xmm0, %xmm4
- mulpd %xmm2, %xmm6
- mulsd %xmm2, %xmm7
- mulpd %xmm2, %xmm2
- addpd %xmm6, %xmm1
- mulsd %xmm2, %xmm2
- movsd ONEMASK(%rip), %xmm3
- mulpd %xmm2, %xmm1
- pshufd $78, %xmm1, %xmm6
- addsd %xmm6, %xmm1
- movq %xmm1, %xmm6
- addsd %xmm7, %xmm1
- mulsd %xmm0, %xmm1
- addsd %xmm4, %xmm1
- andpd MASK3(%rip), %xmm4
- divsd %xmm1, %xmm5
- subsd %xmm4, %xmm3
- pshufd $238, %xmm0, %xmm1
- addsd %xmm0, %xmm3
- movq %xmm4, %xmm2
- addsd %xmm1, %xmm3
- mulsd %xmm7, %xmm1
- mulsd %xmm0, %xmm7
- addsd %xmm1, %xmm3
- addsd %xmm7, %xmm4
- movsd RMASK(%rip), %xmm1
- mulsd %xmm0, %xmm6
- andpd MASK3(%rip), %xmm4
- addsd %xmm6, %xmm3
- movq %xmm4, %xmm6
- subsd %xmm4, %xmm2
- addsd %xmm7, %xmm2
- movsd ONEMASK(%rip), %xmm7
- andpd %xmm1, %xmm5
- addsd %xmm2, %xmm3
- mulsd %xmm5, %xmm4
- xorpd %xmm2, %xmm2
- mulsd %xmm5, %xmm3
- subsd TWOMASK(%rip), %xmm6
- subsd %xmm7, %xmm4
- xorl $32768, %edx
- pinsrw $3, %edx, %xmm2
- addsd %xmm3, %xmm4
- mulsd %xmm5, %xmm6
- movq %xmm3, %xmm1
- mulsd %xmm4, %xmm3
- movq %xmm6, %xmm0
- mulsd %xmm4, %xmm6
- subsd %xmm3, %xmm1
- subsd %xmm6, %xmm1
- addsd %xmm1, %xmm0
- xorpd %xmm2, %xmm0
- jmp ..B1.4
-.L_2TAG_PACKET_0.0.1:
- addl $960, %ecx
- cmpl $1104, %ecx
- jae .L_2TAG_PACKET_1.0.1
- movapd pv(%rip), %xmm2
- pshufd $68, %xmm0, %xmm1
- movapd 16+pv(%rip), %xmm3
- mulpd %xmm1, %xmm1
- movapd 32+pv(%rip), %xmm4
- mulpd %xmm1, %xmm2
- pshufd $68, %xmm1, %xmm5
- addpd %xmm3, %xmm2
- mulsd %xmm5, %xmm5
- mulpd %xmm1, %xmm2
- mulsd %xmm5, %xmm5
- addpd %xmm4, %xmm2
- mulpd %xmm5, %xmm2
- pshufd $238, %xmm2, %xmm5
- addsd %xmm5, %xmm2
- mulsd %xmm0, %xmm2
- addsd %xmm2, %xmm0
- jmp ..B1.4
-.L_2TAG_PACKET_1.0.1:
- addl $15344, %ecx
- cmpl $16448, %ecx
- jae .L_2TAG_PACKET_2.0.1
- cmpl $16, %ecx
- jb .L_2TAG_PACKET_3.0.1
- xorpd %xmm2, %xmm2
- movl $17392, %eax
- pinsrw $3, %eax, %xmm2
- mulsd %xmm0, %xmm2
- addsd %xmm0, %xmm2
- jmp ..B1.4
-.L_2TAG_PACKET_3.0.1:
- movq %xmm0, %xmm2
- mulsd %xmm2, %xmm2
- jmp ..B1.4
-.L_2TAG_PACKET_2.0.1:
- cmpl $32752, %ecx
- jae .L_2TAG_PACKET_4.0.1
- xorpd %xmm2, %xmm2
- movl $15344, %ecx
- pinsrw $3, %ecx, %xmm2
- movq %xmm2, %xmm3
- mulsd %xmm2, %xmm2
- addsd %xmm3, %xmm2
-.L_2TAG_PACKET_5.0.1:
- xorpd %xmm0, %xmm0
- orl $16368, %edx
- pinsrw $3, %edx, %xmm0
- jmp ..B1.4
-.L_2TAG_PACKET_4.0.1:
- movq %xmm0, %xmm2
- movd %xmm0, %eax
- psrlq $20, %xmm2
- movd %xmm2, %ecx
- orl %eax, %ecx
- cmpl $0, %ecx
- je .L_2TAG_PACKET_5.0.1
- addsd %xmm0, %xmm0
- movq %xmm0, (%rsp)
-.L_2TAG_PACKET_6.0.1:
-..B1.4:
- popq %rcx
-..___tag_value_tanh.4:
- ret
-..___tag_value_tanh.5:
-END(tanh)
-# -- End tanh
- .section .rodata, "a"
- .align 16
- .align 16
-L2E:
- .long 1610612736
- .long 1082594631
- .long 4166901572
- .long 1055174155
- .type L2E,@object
- .size L2E,16
- .align 16
-Shifter:
- .long 0
- .long 1127743488
- .long 0
- .long 3275227136
- .type Shifter,@object
- .size Shifter,16
- .align 16
-cv:
- .long 3884607281
- .long 3168131199
- .long 3607404735
- .long 3190582024
- .long 1874480759
- .long 1032041131
- .long 4286760334
- .long 1053736893
- .long 4277811695
- .long 3211144770
- .long 0
- .long 0
- .type cv,@object
- .size cv,48
- .align 16
-T2_neg_f:
- .long 0
- .long 1072693248
- .long 0
- .long 0
- .long 1797923801
- .long 1072687577
- .long 1950547427
- .long 1013229059
- .long 730821105
- .long 1072681922
- .long 2523232743
- .long 1012067188
- .long 915592468
- .long 1072676282
- .long 352947894
- .long 3161024371
- .long 2174652632
- .long 1072670657
- .long 4087714590
- .long 1014450259
- .long 35929225
- .long 1072665048
- .long 2809788041
- .long 3159436968
- .long 2912730644
- .long 1072659453
- .long 3490067722
- .long 3163405074
- .long 2038973688
- .long 1072653874
- .long 892941374
- .long 1016046459
- .long 1533953344
- .long 1072648310
- .long 769171851
- .long 1015665633
- .long 1222472308
- .long 1072642761
- .long 1054357470
- .long 3161021018
- .long 929806999
- .long 1072637227
- .long 3205336643
- .long 1015259557
- .long 481706282
- .long 1072631708
- .long 1696079173
- .long 3162710528
- .long 3999357479
- .long 1072626203
- .long 2258941616
- .long 1015924724
- .long 2719515920
- .long 1072620714
- .long 2760332941
- .long 1015137933
- .long 764307441
- .long 1072615240
- .long 3021057420
- .long 3163329523
- .long 2256325230
- .long 1072609780
- .long 580117746
- .long 1015317295
- .long 2728693978
- .long 1072604335
- .long 396109971
- .long 3163462691
- .long 2009970496
- .long 1072598905
- .long 2159039665
- .long 3162572948
- .long 4224142467
- .long 1072593489
- .long 3389820386
- .long 1015207202
- .long 610758006
- .long 1072588089
- .long 1965209397
- .long 3161866232
- .long 3884662774
- .long 1072582702
- .long 2158611599
- .long 1014210185
- .long 991358482
- .long 1072577331
- .long 838715019
- .long 3163157668
- .long 351641897
- .long 1072571974
- .long 2172261526
- .long 3163010599
- .long 1796832535
- .long 1072566631
- .long 3176955716
- .long 3160585513
- .long 863738719
- .long 1072561303
- .long 1326992220
- .long 3162613197
- .long 1679558232
- .long 1072555989
- .long 2390342287
- .long 3163333970
- .long 4076975200
- .long 1072550689
- .long 2029000899
- .long 1015208535
- .long 3594158869
- .long 1072545404
- .long 2456521700
- .long 3163256561
- .long 64696965
- .long 1072540134
- .long 1768797490
- .long 1015816960
- .long 1912561781
- .long 1072534877
- .long 3147495102
- .long 1015678253
- .long 382305176
- .long 1072529635
- .long 2347622376
- .long 3162578625
- .long 3898795731
- .long 1072524406
- .long 1249994144
- .long 1011869818
- .long 3707479175
- .long 1072519192
- .long 3613079303
- .long 1014164738
- .long 3939148246
- .long 1072513992
- .long 3210352148
- .long 1015274323
- .long 135105010
- .long 1072508807
- .long 1906148728
- .long 3163375739
- .long 721996136
- .long 1072503635
- .long 563754734
- .long 1015371318
- .long 1242007932
- .long 1072498477
- .long 1132034716
- .long 3163339831
- .long 1532734324
- .long 1072493333
- .long 3094216535
- .long 3163162857
- .long 1432208378
- .long 1072488203
- .long 1401068914
- .long 3162363963
- .long 778901109
- .long 1072483087
- .long 2248183955
- .long 3161268751
- .long 3706687593
- .long 1072477984
- .long 3521726940
- .long 1013253067
- .long 1464976603
- .long 1072472896
- .long 3507292405
- .long 3161977534
- .long 2483480501
- .long 1072467821
- .long 1216371780
- .long 1013034172
- .long 2307442995
- .long 1072462760
- .long 3190117721
- .long 3162404539
- .long 777507147
- .long 1072457713
- .long 4282924205
- .long 1015187533
- .long 2029714210
- .long 1072452679
- .long 613660079
- .long 1015099143
- .long 1610600570
- .long 1072447659
- .long 3766732298
- .long 1015760183
- .long 3657065772
- .long 1072442652
- .long 399025623
- .long 3162957078
- .long 3716502172
- .long 1072437659
- .long 2303740125
- .long 1014042725
- .long 1631695677
- .long 1072432680
- .long 2717633076
- .long 3162344026
- .long 1540824585
- .long 1072427714
- .long 1064017011
- .long 3163487690
- .long 3287523847
- .long 1072422761
- .long 1625971539
- .long 3157009955
- .long 2420883922
- .long 1072417822
- .long 2049810052
- .long 1014119888
- .long 3080351519
- .long 1072412896
- .long 3379126788
- .long 3157218001
- .long 815859274
- .long 1072407984
- .long 240396590
- .long 3163487443
- .long 4062661092
- .long 1072403084
- .long 1422616006
- .long 3163255318
- .long 4076559943
- .long 1072398198
- .long 2119478331
- .long 3160758351
- .long 703710506
- .long 1072393326
- .long 1384660846
- .long 1015195891
- .long 2380618042
- .long 1072388466
- .long 3149557219
- .long 3163320799
- .long 364333489
- .long 1072383620
- .long 3923737744
- .long 3161421373
- .long 3092190715
- .long 1072378786
- .long 814012168
- .long 3159523422
- .long 1822067026
- .long 1072373966
- .long 1241994956
- .long 1015340290
- .long 697153126
- .long 1072369159
- .long 1283515429
- .long 3163283189
- .long 3861050111
- .long 1072364364
- .long 254893773
- .long 3162813180
- .long 2572866477
- .long 1072359583
- .long 878562433
- .long 1015521741
- .long 977020788
- .long 1072354815
- .long 3065100517
- .long 1015541563
- .long 3218338682
- .long 1072350059
- .long 3404164304
- .long 3162477108
- .long 557149882
- .long 1072345317
- .long 3672720709
- .long 1014537265
- .long 1434058175
- .long 1072340587
- .long 251133233
- .long 1015085769
- .long 1405169241
- .long 1072335870
- .long 2998539689
- .long 3162830951
- .long 321958744
- .long 1072331166
- .long 3401933767
- .long 1015794558
- .long 2331271250
- .long 1072326474
- .long 812057446
- .long 1012207446
- .long 2990417245
- .long 1072321795
- .long 3683467745
- .long 3163369326
- .long 2152073944
- .long 1072317129
- .long 1486860576
- .long 3163203456
- .long 3964284211
- .long 1072312475
- .long 2111583915
- .long 1015427164
- .long 3985553595
- .long 1072307834
- .long 4002146062
- .long 1015834136
- .long 2069751141
- .long 1072303206
- .long 1562170675
- .long 3162724681
- .long 2366108318
- .long 1072298590
- .long 2867985102
- .long 3161762254
- .long 434316067
- .long 1072293987
- .long 2028358766
- .long 1013458122
- .long 424392917
- .long 1072289396
- .long 2749202995
- .long 3162838718
- .long 2191782032
- .long 1072284817
- .long 2960257726
- .long 1013742662
- .long 1297350157
- .long 1072280251
- .long 1308022040
- .long 3163412558
- .long 1892288442
- .long 1072275697
- .long 2446255666
- .long 3162600381
- .long 3833209506
- .long 1072271155
- .long 2722920684
- .long 1013754842
- .long 2682146384
- .long 1072266626
- .long 2082178513
- .long 3163363419
- .long 2591453363
- .long 1072262109
- .long 2132396182
- .long 3159074198
- .long 3418903055
- .long 1072257604
- .long 2527457337
- .long 3160820604
- .long 727685349
- .long 1072253112
- .long 2038246809
- .long 3162358742
- .long 2966275557
- .long 1072248631
- .long 2176155324
- .long 3159842759
- .long 1403662306
- .long 1072244163
- .long 2788809599
- .long 3161671007
- .long 194117574
- .long 1072239707
- .long 777528612
- .long 3163412089
- .long 3492293770
- .long 1072235262
- .long 2248032210
- .long 1015386826
- .long 2568320822
- .long 1072230830
- .long 2732824428
- .long 1014352915
- .long 1577608921
- .long 1072226410
- .long 1875489510
- .long 3162968394
- .long 380978316
- .long 1072222002
- .long 854188970
- .long 3160462686
- .long 3134592888
- .long 1072217605
- .long 4232266862
- .long 1015991134
- .long 1110089947
- .long 1072213221
- .long 1451641639
- .long 1015474673
- .long 2759350287
- .long 1072208848
- .long 1148526634
- .long 1015894933
- .long 3649726105
- .long 1072204487
- .long 4085036346
- .long 1015649474
- .long 3643909174
- .long 1072200138
- .long 3537586109
- .long 1014354647
- .long 2604962541
- .long 1072195801
- .long 2614425274
- .long 3163539192
- .long 396319521
- .long 1072191476
- .long 4172420816
- .long 3159074632
- .long 1176749997
- .long 1072187162
- .long 2738998779
- .long 3162035844
- .long 515457527
- .long 1072182860
- .long 836709333
- .long 1015651226
- .long 2571947539
- .long 1072178569
- .long 3558159064
- .long 3163376669
- .long 2916157145
- .long 1072174290
- .long 219487565
- .long 1015309367
- .long 1413356050
- .long 1072170023
- .long 1651349291
- .long 3162668166
- .long 2224145553
- .long 1072165767
- .long 3482522030
- .long 3161489169
- .long 919555682
- .long 1072161523
- .long 3121969534
- .long 1012948226
- .long 1660913392
- .long 1072157290
- .long 4218599604
- .long 1015135707
- .long 19972402
- .long 1072153069
- .long 3507899862
- .long 1016009292
- .long 158781403
- .long 1072148859
- .long 2221464712
- .long 3163286453
- .long 1944781191
- .long 1072144660
- .long 3993278767
- .long 3161724279
- .long 950803702
- .long 1072140473
- .long 1655364926
- .long 1015237032
- .long 1339972927
- .long 1072136297
- .long 167908909
- .long 1015572152
- .long 2980802057
- .long 1072132132
- .long 378619896
- .long 1015773303
- .long 1447192521
- .long 1072127979
- .long 1462857171
- .long 3162514521
- .long 903334909
- .long 1072123837
- .long 1636462108
- .long 1015039997
- .long 1218806132
- .long 1072119706
- .long 1818613052
- .long 3162548441
- .long 2263535754
- .long 1072115586
- .long 752233586
- .long 3162639008
- .long 3907805044
- .long 1072111477
- .long 2257091225
- .long 3161550407
- .long 1727278727
- .long 1072107380
- .long 3562710623
- .long 1011471940
- .long 4182873220
- .long 1072103293
- .long 629542646
- .long 3161996303
- .long 2555984613
- .long 1072099218
- .long 2652555442
- .long 3162552692
- .long 1013258799
- .long 1072095154
- .long 1748797611
- .long 3160129082
- .long 3721688645
- .long 1072091100
- .long 3069276937
- .long 1015839401
- .long 1963711167
- .long 1072087058
- .long 1744767757
- .long 3160574294
- .long 4201977662
- .long 1072083026
- .long 748330254
- .long 1013594357
- .long 1719614413
- .long 1072079006
- .long 330458198
- .long 3163282740
- .long 2979960120
- .long 1072074996
- .long 2599109725
- .long 1014498493
- .long 3561793907
- .long 1072070997
- .long 1157054053
- .long 1011890350
- .long 3339203574
- .long 1072067009
- .long 1483497780
- .long 3162408754
- .long 2186617381
- .long 1072063032
- .long 2270764084
- .long 3163272713
- .long 4273770423
- .long 1072059065
- .long 3383180809
- .long 3163218901
- .long 885834528
- .long 1072055110
- .long 1973258547
- .long 3162261564
- .long 488188413
- .long 1072051165
- .long 3199821029
- .long 1015564048
- .long 2956612997
- .long 1072047230
- .long 2118169751
- .long 3162735553
- .long 3872257780
- .long 1072043306
- .long 1253592103
- .long 1015958334
- .long 3111574537
- .long 1072039393
- .long 2606161479
- .long 3162759746
- .long 551349105
- .long 1072035491
- .long 3821916050
- .long 3162106589
- .long 363667784
- .long 1072031599
- .long 813753950
- .long 1015785209
- .long 2425981843
- .long 1072027717
- .long 2830390851
- .long 3163346599
- .long 2321106615
- .long 1072023846
- .long 2171176610
- .long 1009535771
- .long 4222122499
- .long 1072019985
- .long 1277378074
- .long 3163256737
- .long 3712504873
- .long 1072016135
- .long 88491949
- .long 1015427660
- .long 671025100
- .long 1072012296
- .long 3832014351
- .long 3163022030
- .long 3566716925
- .long 1072008466
- .long 1536826856
- .long 1014142433
- .long 3689071823
- .long 1072004647
- .long 2321004996
- .long 3162552716
- .long 917841882
- .long 1072000839
- .long 18715565
- .long 1015659308
- .long 3723038930
- .long 1071997040
- .long 378465264
- .long 3162569582
- .long 3395129871
- .long 1071993252
- .long 4025345435
- .long 3162335388
- .long 4109806887
- .long 1071989474
- .long 422403966
- .long 1014469229
- .long 1453150082
- .long 1071985707
- .long 498154669
- .long 3161488062
- .long 3896463087
- .long 1071981949
- .long 1139797873
- .long 3161233805
- .long 2731501122
- .long 1071978202
- .long 1774031855
- .long 3162470021
- .long 2135241198
- .long 1071974465
- .long 1236747871
- .long 1013589147
- .long 1990012071
- .long 1071970738
- .long 3529070563
- .long 3162813193
- .long 2178460671
- .long 1071967021
- .long 777878098
- .long 3162842493
- .long 2583551245
- .long 1071963314
- .long 3161094195
- .long 1015606491
- .long 3088564500
- .long 1071959617
- .long 1762311517
- .long 1015045673
- .long 3577096743
- .long 1071955930
- .long 2951496418
- .long 1013793687
- .long 3933059031
- .long 1071952253
- .long 2133366768
- .long 3161531832
- .long 4040676318
- .long 1071948586
- .long 4090609238
- .long 1015663458
- .long 3784486610
- .long 1071944929
- .long 1581883040
- .long 3161698953
- .long 3049340112
- .long 1071941282
- .long 3062915824
- .long 1013170595
- .long 1720398391
- .long 1071937645
- .long 3980678963
- .long 3163300080
- .long 3978100823
- .long 1071934017
- .long 3513027190
- .long 1015845963
- .long 1118294578
- .long 1071930400
- .long 2197495694
- .long 3159909401
- .long 1617004845
- .long 1071926792
- .long 82804944
- .long 1010342778
- .long 1065662932
- .long 1071923194
- .long 2533670915
- .long 1014530238
- .long 3645941911
- .long 1071919605
- .long 3814685081
- .long 3161573341
- .long 654919306
- .long 1071916027
- .long 3232961757
- .long 3163047469
- .long 569847338
- .long 1071912458
- .long 472945272
- .long 3159290729
- .long 3278348324
- .long 1071908898
- .long 3069497416
- .long 1014750712
- .long 78413852
- .long 1071905349
- .long 4183226867
- .long 3163017251
- .long 3743175029
- .long 1071901808
- .long 2072812490
- .long 3162175075
- .long 1276261410
- .long 1071898278
- .long 300981948
- .long 1014684169
- .long 1156440435
- .long 1071894757
- .long 2351451249
- .long 1013967056
- .long 3272845541
- .long 1071891245
- .long 928852419
- .long 3163488248
- .long 3219942644
- .long 1071887743
- .long 3798990616
- .long 1015368806
- .long 887463927
- .long 1071884251
- .long 3596744163
- .long 3160794166
- .long 460407023
- .long 1071880768
- .long 4237175092
- .long 3163138469
- .long 1829099622
- .long 1071877294
- .long 1016661181
- .long 3163461005
- .long 589198666
- .long 1071873830
- .long 2664346172
- .long 3163157962
- .long 926591435
- .long 1071870375
- .long 3208833762
- .long 3162913514
- .long 2732492859
- .long 1071866929
- .long 2691479646
- .long 3162255684
- .long 1603444721
- .long 1071863493
- .long 1548633640
- .long 3162201326
- .long 1726216749
- .long 1071860066
- .long 2466808228
- .long 3161676405
- .long 2992903935
- .long 1071856648
- .long 2218154406
- .long 1015228193
- .long 1000925746
- .long 1071853240
- .long 1018491672
- .long 3163309544
- .long 4232894513
- .long 1071849840
- .long 2383938684
- .long 1014668519
- .long 3991843581
- .long 1071846450
- .long 4092853457
- .long 1014585763
- .long 171030293
- .long 1071843070
- .long 3526460132
- .long 1014428778
- .long 1253935211
- .long 1071839698
- .long 1395382931
- .long 3159702613
- .long 2839424854
- .long 1071836335
- .long 1171596163
- .long 1013041679
- .long 526652809
- .long 1071832982
- .long 4223459736
- .long 1015879375
- .long 2799960843
- .long 1071829637
- .long 1423655381
- .long 1015022151
- .long 964107055
- .long 1071826302
- .long 2800439588
- .long 3162833221
- .long 3504003472
- .long 1071822975
- .long 3594001060
- .long 3157330652
- .long 1724976915
- .long 1071819658
- .long 420909223
- .long 3163117379
- .long 4112506593
- .long 1071816349
- .long 2947355221
- .long 1014371048
- .long 1972484976
- .long 1071813050
- .long 675290301
- .long 3161640050
- .long 3790955393
- .long 1071809759
- .long 2352942462
- .long 3163180090
- .long 874372905
- .long 1071806478
- .long 100263788
- .long 1015940732
- .long 1709341917
- .long 1071803205
- .long 2571168217
- .long 1014152499
- .long 1897844341
- .long 1071799941
- .long 1254300460
- .long 1015275938
- .long 1337108031
- .long 1071796686
- .long 3203724452
- .long 1014677845
- .long 4219606026
- .long 1071793439
- .long 2434574742
- .long 1014681548
- .long 1853186616
- .long 1071790202
- .long 3066496371
- .long 1015656574
- .long 2725843665
- .long 1071786973
- .long 1433917087
- .long 1014838523
- .long 2440944790
- .long 1071783753
- .long 2492769774
- .long 1014147454
- .long 897099801
- .long 1071780542
- .long 754756297
- .long 1015241005
- .long 2288159958
- .long 1071777339
- .long 2169144469
- .long 1014876021
- .long 2218315341
- .long 1071774145
- .long 2694295388
- .long 3163288868
- .long 586995997
- .long 1071770960
- .long 41662348
- .long 3162627992
- .long 1588871207
- .long 1071767783
- .long 143439582
- .long 3162963416
- .long 828946858
- .long 1071764615
- .long 10642492
- .long 1015939438
- .long 2502433899
- .long 1071761455
- .long 2148595913
- .long 1015023991
- .long 2214878420
- .long 1071758304
- .long 892270087
- .long 3163116422
- .long 4162030108
- .long 1071755161
- .long 2763428480
- .long 1015529349
- .long 3949972341
- .long 1071752027
- .long 2068408548
- .long 1014913868
- .long 1480023343
- .long 1071748902
- .long 2247196168
- .long 1015327453
- .long 948735466
- .long 1071745785
- .long 3516338028
- .long 3162574883
- .long 2257959872
- .long 1071742676
- .long 3802946148
- .long 1012964927
- .long 1014845819
- .long 1071739576
- .long 3117910646
- .long 3161559105
- .long 1416741826
- .long 1071736484
- .long 2196380210
- .long 1011413563
- .long 3366293073
- .long 1071733400
- .long 3119426314
- .long 1014120554
- .long 2471440686
- .long 1071730325
- .long 968836267
- .long 3162214888
- .long 2930322912
- .long 1071727258
- .long 2599499422
- .long 3162714047
- .long 351405227
- .long 1071724200
- .long 3125337328
- .long 3159822479
- .long 3228316108
- .long 1071721149
- .long 3010241991
- .long 3158422804
- .long 2875075254
- .long 1071718107
- .long 4144233330
- .long 3163333716
- .long 3490863953
- .long 1071715073
- .long 960797498
- .long 3162948880
- .long 685187902
- .long 1071712048
- .long 378731989
- .long 1014843115
- .long 2952712987
- .long 1071709030
- .long 3293494651
- .long 3160120301
- .long 1608493509
- .long 1071706021
- .long 3159622171
- .long 3162807737
- .long 852742562
- .long 1071703020
- .long 667253586
- .long 1009793559
- .long 590962156
- .long 1071700027
- .long 3829346666
- .long 3163275597
- .long 728909815
- .long 1071697042
- .long 383930225
- .long 1015029468
- .long 1172597893
- .long 1071694065
- .long 114433263
- .long 1015347593
- .long 1828292879
- .long 1071691096
- .long 1255956747
- .long 1015588398
- .long 2602514713
- .long 1071688135
- .long 2268929336
- .long 1014354284
- .long 3402036099
- .long 1071685182
- .long 405889334
- .long 1015105656
- .long 4133881824
- .long 1071682237
- .long 2148155345
- .long 3162931299
- .long 410360776
- .long 1071679301
- .long 1269990655
- .long 1011975870
- .long 728934454
- .long 1071676372
- .long 1413842688
- .long 1014178612
- .long 702412510
- .long 1071673451
- .long 3803266087
- .long 3162280415
- .long 238821257
- .long 1071670538
- .long 1469694871
- .long 3162884987
- .long 3541402996
- .long 1071667632
- .long 2759177317
- .long 1014854626
- .long 1928746161
- .long 1071664735
- .long 983617676
- .long 1014285177
- .long 3899555717
- .long 1071661845
- .long 427280750
- .long 3162546972
- .long 772914124
- .long 1071658964
- .long 4004372762
- .long 1012230161
- .long 1048019041
- .long 1071656090
- .long 1398474845
- .long 3160510595
- .long 339411585
- .long 1071653224
- .long 264588982
- .long 3161636657
- .long 2851812149
- .long 1071650365
- .long 2595802551
- .long 1015767337
- .long 4200250559
- .long 1071647514
- .long 2808127345
- .long 3161781938
- .type T2_neg_f,@object
- .size T2_neg_f,4096
- .space 512, 0x00 # pad
- .align 16
-MASK3:
- .long 0
- .long 4294967280
- .long 0
- .long 4294967280
- .type MASK3,@object
- .size MASK3,16
- .align 16
-RMASK:
- .long 4294705152
- .long 4294967295
- .long 4294705152
- .long 4294967295
- .type RMASK,@object
- .size RMASK,16
- .align 16
-pv:
- .long 236289503
- .long 1064135997
- .long 463583772
- .long 3215696314
- .long 1441186365
- .long 3212977891
- .long 286331153
- .long 1069617425
- .long 2284589306
- .long 1066820852
- .long 1431655765
- .long 3218429269
- .type pv,@object
- .size pv,48
- .align 4
-HALFMASK:
- .long 4160749568
- .long 2147483647
- .type HALFMASK,@object
- .size HALFMASK,8
- .align 4
-ONEMASK:
- .long 0
- .long 1072693248
- .type ONEMASK,@object
- .size ONEMASK,8
- .align 4
-TWOMASK:
- .long 0
- .long 1073741824
- .type TWOMASK,@object
- .size TWOMASK,8
- .data
- .section .note.GNU-stack, "",@progbits
-// -- Begin DWARF2 SEGMENT .eh_frame
- .section .eh_frame,"a",@progbits
-.eh_frame_seg:
- .align 1
- .4byte 0x00000014
- .8byte 0x00527a0100000000
- .8byte 0x08070c1b01107801
- .4byte 0x00000190
- .4byte 0x0000001c
- .4byte 0x0000001c
- .4byte ..___tag_value_tanh.1-.
- .4byte ..___tag_value_tanh.5-..___tag_value_tanh.1
- .2byte 0x0400
- .4byte ..___tag_value_tanh.3-..___tag_value_tanh.1
- .2byte 0x100e
- .byte 0x04
- .4byte ..___tag_value_tanh.4-..___tag_value_tanh.3
- .2byte 0x080e
- .byte 0x00
-# End
diff --git a/linker/linker.cpp b/linker/linker.cpp
index 9779c8d..6246f8c 100644
--- a/linker/linker.cpp
+++ b/linker/linker.cpp
@@ -39,6 +39,7 @@
#include <sys/vfs.h>
#include <unistd.h>
+#include <iterator>
#include <new>
#include <string>
#include <unordered_map>
@@ -1189,8 +1190,6 @@
if ((fs_stat.f_type != TMPFS_MAGIC) && (!ns->is_accessible(realpath))) {
// TODO(dimitry): workaround for http://b/26394120 - the exempt-list
- // TODO(dimitry) before O release: add a namespace attribute to have this enabled
- // only for classloader-namespaces
const soinfo* needed_by = task->is_dt_needed() ? task->get_needed_by() : nullptr;
if (is_exempt_lib(ns, name, needed_by)) {
// print warning only if needed by non-system library
@@ -2486,11 +2485,12 @@
return false;
}
- auto sonames = android::base::Split(shared_lib_sonames, ":");
- std::unordered_set<std::string> sonames_set(sonames.begin(), sonames.end());
+ std::vector<std::string> sonames = android::base::Split(shared_lib_sonames, ":");
+ std::unordered_set<std::string> sonames_set(std::make_move_iterator(sonames.begin()),
+ std::make_move_iterator(sonames.end()));
ProtectedDataGuard guard;
- namespace_from->add_linked_namespace(namespace_to, sonames_set, false);
+ namespace_from->add_linked_namespace(namespace_to, std::move(sonames_set), false);
return true;
}
diff --git a/linker/linker_namespaces.h b/linker/linker_namespaces.h
index 6817901..671e0b5 100644
--- a/linker/linker_namespaces.h
+++ b/linker/linker_namespaces.h
@@ -41,11 +41,11 @@
struct android_namespace_link_t {
public:
android_namespace_link_t(android_namespace_t* linked_namespace,
- const std::unordered_set<std::string>& shared_lib_sonames,
+ std::unordered_set<std::string> shared_lib_sonames,
bool allow_all_shared_libs)
- : linked_namespace_(linked_namespace), shared_lib_sonames_(shared_lib_sonames),
- allow_all_shared_libs_(allow_all_shared_libs)
- {}
+ : linked_namespace_(linked_namespace),
+ shared_lib_sonames_(std::move(shared_lib_sonames)),
+ allow_all_shared_libs_(allow_all_shared_libs) {}
android_namespace_t* linked_namespace() const {
return linked_namespace_;
@@ -127,10 +127,10 @@
return linked_namespaces_;
}
void add_linked_namespace(android_namespace_t* linked_namespace,
- const std::unordered_set<std::string>& shared_lib_sonames,
+ std::unordered_set<std::string> shared_lib_sonames,
bool allow_all_shared_libs) {
- linked_namespaces_.push_back(
- android_namespace_link_t(linked_namespace, shared_lib_sonames, allow_all_shared_libs));
+ linked_namespaces_.emplace_back(linked_namespace, std::move(shared_lib_sonames),
+ allow_all_shared_libs);
}
void add_soinfo(soinfo* si) {
diff --git a/linker/linker_phdr.cpp b/linker/linker_phdr.cpp
index aa1a208..73cfced 100644
--- a/linker/linker_phdr.cpp
+++ b/linker/linker_phdr.cpp
@@ -175,7 +175,8 @@
if (did_load_) {
return true;
}
- if (ReserveAddressSpace(address_space) && LoadSegments() && FindPhdr() &&
+ bool reserveSuccess = ReserveAddressSpace(address_space);
+ if (reserveSuccess && LoadSegments() && FindPhdr() &&
FindGnuPropertySection()) {
did_load_ = true;
#if defined(__aarch64__)
@@ -186,6 +187,13 @@
}
#endif
}
+ if (reserveSuccess && !did_load_) {
+ if (load_start_ != nullptr && load_size_ != 0) {
+ if (!mapped_by_caller_) {
+ munmap(load_start_, load_size_);
+ }
+ }
+ }
return did_load_;
}
@@ -216,6 +224,7 @@
if (em == EM_386) return "EM_386";
if (em == EM_AARCH64) return "EM_AARCH64";
if (em == EM_ARM) return "EM_ARM";
+ if (em == EM_RISCV) return "EM_RISCV";
if (em == EM_X86_64) return "EM_X86_64";
return "EM_???";
}
diff --git a/tests/Android.bp b/tests/Android.bp
index 71be058..8c6057f 100644
--- a/tests/Android.bp
+++ b/tests/Android.bp
@@ -105,6 +105,9 @@
arm64: {
srcs: ["prebuilt-elf-files/arm64/libtest_invalid-rw_load_segment.so"],
},
+ riscv64: {
+ srcs: ["prebuilt-elf-files/riscv64/libtest_invalid-rw_load_segment.so"],
+ },
x86: {
srcs: ["prebuilt-elf-files/x86/libtest_invalid-rw_load_segment.so"],
},
@@ -128,6 +131,9 @@
arm64: {
srcs: ["prebuilt-elf-files/arm64/libtest_invalid-unaligned_shdr_offset.so"],
},
+ riscv64: {
+ srcs: ["prebuilt-elf-files/riscv64/libtest_invalid-unaligned_shdr_offset.so"],
+ },
x86: {
srcs: ["prebuilt-elf-files/x86/libtest_invalid-unaligned_shdr_offset.so"],
},
@@ -151,6 +157,9 @@
arm64: {
srcs: ["prebuilt-elf-files/arm64/libtest_invalid-zero_shentsize.so"],
},
+ riscv64: {
+ srcs: ["prebuilt-elf-files/riscv64/libtest_invalid-zero_shentsize.so"],
+ },
x86: {
srcs: ["prebuilt-elf-files/x86/libtest_invalid-zero_shentsize.so"],
},
@@ -174,6 +183,9 @@
arm64: {
srcs: ["prebuilt-elf-files/arm64/libtest_invalid-zero_shstrndx.so"],
},
+ riscv64: {
+ srcs: ["prebuilt-elf-files/riscv64/libtest_invalid-zero_shstrndx.so"],
+ },
x86: {
srcs: ["prebuilt-elf-files/x86/libtest_invalid-zero_shstrndx.so"],
},
@@ -197,6 +209,9 @@
arm64: {
srcs: ["prebuilt-elf-files/arm64/libtest_invalid-empty_shdr_table.so"],
},
+ riscv64: {
+ srcs: ["prebuilt-elf-files/riscv64/libtest_invalid-empty_shdr_table.so"],
+ },
x86: {
srcs: ["prebuilt-elf-files/x86/libtest_invalid-empty_shdr_table.so"],
},
@@ -220,6 +235,9 @@
arm64: {
srcs: ["prebuilt-elf-files/arm64/libtest_invalid-zero_shdr_table_offset.so"],
},
+ riscv64: {
+ srcs: ["prebuilt-elf-files/riscv64/libtest_invalid-zero_shdr_table_offset.so"],
+ },
x86: {
srcs: ["prebuilt-elf-files/x86/libtest_invalid-zero_shdr_table_offset.so"],
},
@@ -243,6 +261,9 @@
arm64: {
srcs: ["prebuilt-elf-files/arm64/libtest_invalid-zero_shdr_table_content.so"],
},
+ riscv64: {
+ srcs: ["prebuilt-elf-files/riscv64/libtest_invalid-zero_shdr_table_content.so"],
+ },
x86: {
srcs: ["prebuilt-elf-files/x86/libtest_invalid-zero_shdr_table_content.so"],
},
@@ -266,6 +287,9 @@
arm64: {
srcs: ["prebuilt-elf-files/arm64/libtest_invalid-textrels.so"],
},
+ riscv64: {
+ srcs: ["prebuilt-elf-files/riscv64/libtest_invalid-textrels.so"],
+ },
x86: {
srcs: ["prebuilt-elf-files/x86/libtest_invalid-textrels.so"],
},
@@ -289,6 +313,9 @@
arm64: {
srcs: ["prebuilt-elf-files/arm64/libtest_invalid-textrels2.so"],
},
+ riscv64: {
+ srcs: ["prebuilt-elf-files/riscv64/libtest_invalid-textrels2.so"],
+ },
x86: {
srcs: ["prebuilt-elf-files/x86/libtest_invalid-textrels2.so"],
},
@@ -340,6 +367,9 @@
cc_test_library {
name: "libBionicStandardTests",
defaults: ["bionic_tests_defaults"],
+ tidy_disabled_srcs: [
+ "malloc_test.cpp", // timed out with clang-tidy, and too many warnings
+ ],
srcs: [
"__aeabi_read_tp_test.cpp",
"__cxa_atexit_test.cpp",
diff --git a/tests/__cxa_atexit_test.cpp b/tests/__cxa_atexit_test.cpp
index 6a122d1..9f73261 100644
--- a/tests/__cxa_atexit_test.cpp
+++ b/tests/__cxa_atexit_test.cpp
@@ -26,19 +26,30 @@
* SUCH DAMAGE.
*/
-#include <cxxabi.h>
#include <gtest/gtest.h>
+extern "C" {
+int __cxa_atexit(void (*func)(void*), void* arg, void* dso);
+
+// TODO(b/175635923). __cxa_finalize's return type should actually be "void",
+// but it is declared "int" here instead to be compatible with the declaration
+// in an old version of cxxabi.h, which is included indirectly. The declarations
+// of __cxa_atexit and __cxa_finalize are removed from newer versions of
+// cxxabi.h, so once libc++ is updated, this return type should be changed to
+// "void".
+int __cxa_finalize(void* dso);
+}
+
TEST(__cxa_atexit, simple) {
int counter = 0;
- __cxxabiv1::__cxa_atexit([](void* arg) { ++*static_cast<int*>(arg); }, &counter, &counter);
+ __cxa_atexit([](void* arg) { ++*static_cast<int*>(arg); }, &counter, &counter);
- __cxxabiv1::__cxa_finalize(&counter);
+ __cxa_finalize(&counter);
ASSERT_EQ(counter, 1);
// The handler won't be called twice.
- __cxxabiv1::__cxa_finalize(&counter);
+ __cxa_finalize(&counter);
ASSERT_EQ(counter, 1);
}
@@ -54,16 +65,16 @@
};
for (int i = 0; i < 500; ++i) {
- __cxxabiv1::__cxa_atexit(append_to_actual, new int{i}, &handles[i % 2]);
+ __cxa_atexit(append_to_actual, new int{i}, &handles[i % 2]);
}
- __cxxabiv1::__cxa_finalize(&handles[0]);
+ __cxa_finalize(&handles[0]);
for (int i = 500; i < 750; ++i) {
- __cxxabiv1::__cxa_atexit(append_to_actual, new int{i}, &handles[1]);
+ __cxa_atexit(append_to_actual, new int{i}, &handles[1]);
}
- __cxxabiv1::__cxa_finalize(&handles[1]);
+ __cxa_finalize(&handles[1]);
std::vector<int> expected;
for (int i = 498; i >= 0; i -= 2) expected.push_back(i);
diff --git a/tests/__cxa_demangle_test.cpp b/tests/__cxa_demangle_test.cpp
index 4628a61..d400619 100644
--- a/tests/__cxa_demangle_test.cpp
+++ b/tests/__cxa_demangle_test.cpp
@@ -29,11 +29,9 @@
#include <cxxabi.h>
#include <gtest/gtest.h>
-extern "C" char* __cxa_demangle(const char*, char*, size_t*, int*);
-
TEST(__cxa_demangle, cxa_demangle_fuzz_152588929) {
#if defined(__aarch64__)
- char* p = __cxa_demangle("1\006ILeeeEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE", 0, 0, 0);
+ char* p = abi::__cxa_demangle("1\006ILeeeEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE", 0, 0, 0);
ASSERT_STREQ("\x6<-0x1.cecececececececececececececep+11983", p);
free(p);
#endif
@@ -41,7 +39,7 @@
TEST(__cxa_demangle, DISABLED_cxa_demangle_fuzz_167977068) {
#if defined(__aarch64__)
- char* p = __cxa_demangle("DTLeeeeeeeeeeeeeeeeeeeeeeeeeEEEEeeEEEE", 0, 0, 0);
+ char* p = abi::__cxa_demangle("DTLeeeeeeeeeeeeeeeeeeeeeeeeeEEEEeeEEEE", 0, 0, 0);
ASSERT_EQ(nullptr, p) << p;
free(p);
#endif
diff --git a/tests/clang_fortify_tests.cpp b/tests/clang_fortify_tests.cpp
index 40cb83f..544af43 100644
--- a/tests/clang_fortify_tests.cpp
+++ b/tests/clang_fortify_tests.cpp
@@ -387,6 +387,8 @@
}
static void testStdlib() {
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wnonnull"
char path_buffer[PATH_MAX - 1];
// expected-warning@+2{{ignoring return value of function}}
// expected-error@+1{{must be NULL or a pointer to a buffer with >= PATH_MAX bytes}}
@@ -401,6 +403,7 @@
// expected-warning@+2{{ignoring return value of function}}
// expected-error@+1{{flipped arguments?}}
realpath(nullptr, nullptr);
+#pragma clang diagnostic pop
}
} // namespace compilation_tests
#endif
diff --git a/tests/dlfcn_test.cpp b/tests/dlfcn_test.cpp
index c5d1218..939c092 100644
--- a/tests/dlfcn_test.cpp
+++ b/tests/dlfcn_test.cpp
@@ -1646,6 +1646,9 @@
}
TEST(dlfcn, dlopen_invalid_local_tls) {
+#if defined(__riscv)
+ // This is a test for bad gold behavior, and gold doesn't support riscv64.
+#else
const std::string libpath = GetPrebuiltElfDir() + "/libtest_invalid-local-tls.so";
void* handle = dlopen(libpath.c_str(), RTLD_NOW);
@@ -1658,6 +1661,7 @@
std::string expected_dlerror = std::string("dlopen failed: unexpected TLS reference to ") +
referent + " in \"" + libpath + "\"";
ASSERT_SUBSTR(expected_dlerror.c_str(), dlerror());
+#endif
}
TEST(dlfcn, dlopen_df_1_global) {
diff --git a/tests/fcntl_test.cpp b/tests/fcntl_test.cpp
index d50a438..862f498 100644
--- a/tests/fcntl_test.cpp
+++ b/tests/fcntl_test.cpp
@@ -23,6 +23,7 @@
#include <sys/vfs.h>
#include <android-base/file.h>
+#include <android-base/silent_death_test.h>
#include <android-base/stringprintf.h>
// Glibc v2.19 doesn't include these in fcntl.h so host builds will fail without.
@@ -33,6 +34,8 @@
#include <linux/magic.h>
#endif
+using fcntl_DeathTest = SilentDeathTest;
+
TEST(fcntl, fcntl_smoke) {
int fd = open("/proc/version", O_RDONLY);
ASSERT_TRUE(fd != -1);
@@ -356,3 +359,7 @@
ASSERT_EQ(0, close(fd));
#endif
}
+
+TEST(fcntl_DeathTest, fcntl_F_SETFD) {
+ EXPECT_DEATH(fcntl(0, F_SETFD, O_NONBLOCK), "non-FD_CLOEXEC");
+}
diff --git a/tests/heap_tagging_level_test.cpp b/tests/heap_tagging_level_test.cpp
index 96c2ffd..ae678b7 100644
--- a/tests/heap_tagging_level_test.cpp
+++ b/tests/heap_tagging_level_test.cpp
@@ -222,6 +222,7 @@
TEST_P(MemtagNoteTest, SEGV) {
#if defined(__BIONIC__) && defined(__aarch64__)
+ SKIP_WITH_NATIVE_BRIDGE; // http://b/242170715
// Note that we do not check running_with_hwasan() - what matters here is whether the test binary
// itself is built with HWASan.
bool withHWASAN = __has_feature(hwaddress_sanitizer);
diff --git a/tests/libs/Android.bp b/tests/libs/Android.bp
index 0c9a2e0..8ae2257 100644
--- a/tests/libs/Android.bp
+++ b/tests/libs/Android.bp
@@ -1661,6 +1661,7 @@
},
},
header_libs: ["bionic_libc_platform_headers"],
+ cflags: ["-fexceptions"],
}
cc_test {
@@ -1676,6 +1677,7 @@
},
},
header_libs: ["bionic_libc_platform_headers"],
+ cflags: ["-fexceptions"],
}
cc_genrule {
diff --git a/tests/libs/stack_tagging_helper.cpp b/tests/libs/stack_tagging_helper.cpp
index a239dc1..d29844d 100644
--- a/tests/libs/stack_tagging_helper.cpp
+++ b/tests/libs/stack_tagging_helper.cpp
@@ -260,6 +260,81 @@
CHECK(memtag_stack);
}
+static uintptr_t GetTag(void* addr) {
+ return reinterpret_cast<uintptr_t>(addr) & (0xFULL << 56);
+}
+
+static uintptr_t GetTag(volatile void* addr) {
+ return GetTag(const_cast<void*>(addr));
+}
+
+static volatile char* throw_frame;
+static volatile char* skip_frame3_frame;
+volatile char *x;
+
+__attribute__((noinline)) void throws() {
+ // Prevent optimization.
+ if (getpid() == 0) return;
+ throw_frame = reinterpret_cast<char*>(__builtin_frame_address(0));
+ throw "error";
+}
+
+__attribute__((noinline)) void maybe_throws() {
+ // These are all unique sizes so in case of a failure, we can see which ones
+ // are not untagged from the tag dump.
+ volatile char y[5 * 16]= {};
+ x = y;
+ // Make sure y is tagged.
+ CHECK(GetTag(&y) != GetTag(__builtin_frame_address(0)));
+ throws();
+}
+
+__attribute__((noinline, no_sanitize("memtag"))) void skip_frame() {
+ volatile char y[6*16] = {};
+ x = y;
+ // Make sure y is not tagged.
+ CHECK(GetTag(&y) == GetTag(__builtin_frame_address(0)));
+ maybe_throws();
+}
+
+__attribute__((noinline)) void skip_frame2() {
+ volatile char y[7*16] = {};
+ x = y;
+ // Make sure y is tagged.
+ CHECK(GetTag(&y) != GetTag(__builtin_frame_address(0)));
+ skip_frame();
+}
+
+__attribute__((noinline, no_sanitize("memtag"))) void skip_frame3() {
+ volatile char y[8*16] = {};
+ x = y;
+ skip_frame3_frame = reinterpret_cast<char*>(__builtin_frame_address(0));
+ // Make sure y is not tagged.
+ CHECK(GetTag(&y) == GetTag(__builtin_frame_address(0)));
+ skip_frame2();
+}
+
+void test_exception_cleanup() {
+ // This is here for debugging purposes, if something goes wrong we can
+ // verify that this placeholder did not get untagged.
+ volatile char placeholder[16*16] = {};
+ x = placeholder;
+ try {
+ skip_frame3();
+ } catch (const char* e) {
+ }
+ if (throw_frame >= skip_frame3_frame) {
+ fprintf(stderr, "invalid throw frame");
+ exit(1);
+ }
+ for (char* b = const_cast<char*>(throw_frame); b < skip_frame3_frame; ++b) {
+ if (mte_get_tag(b) != b) {
+ fprintf(stderr, "invalid tag at %p", b);
+ exit(1);
+ }
+ }
+}
+
int main(int argc, char** argv) {
if (argc < 2) {
printf("nothing to do\n");
@@ -296,6 +371,11 @@
return 0;
}
+ if (strcmp(argv[1], "exception_cleanup") == 0) {
+ test_exception_cleanup();
+ return 0;
+ }
+
printf("unrecognized command: %s\n", argv[1]);
return 1;
}
diff --git a/tests/memtag_stack_test.cpp b/tests/memtag_stack_test.cpp
index 84ee8d1..97084ec 100644
--- a/tests/memtag_stack_test.cpp
+++ b/tests/memtag_stack_test.cpp
@@ -44,13 +44,13 @@
#endif
}
-INSTANTIATE_TEST_SUITE_P(, MemtagStackTest,
- testing::Combine(testing::Values("vfork_execve", "vfork_execl",
- "vfork_exit", "longjmp",
- "longjmp_sigaltstack", "android_mallopt"),
- testing::Bool()),
- [](const ::testing::TestParamInfo<MemtagStackTest::ParamType>& info) {
- std::string s = std::get<0>(info.param);
- if (std::get<1>(info.param)) s += "_static";
- return s;
- });
+INSTANTIATE_TEST_SUITE_P(
+ , MemtagStackTest,
+ testing::Combine(testing::Values("vfork_execve", "vfork_execl", "vfork_exit", "longjmp",
+ "longjmp_sigaltstack", "android_mallopt", "exception_cleanup"),
+ testing::Bool()),
+ [](const ::testing::TestParamInfo<MemtagStackTest::ParamType>& info) {
+ std::string s = std::get<0>(info.param);
+ if (std::get<1>(info.param)) s += "_static";
+ return s;
+ });
diff --git a/tests/prebuilt-elf-files/riscv64/libtest_empty.so b/tests/prebuilt-elf-files/riscv64/libtest_empty.so
new file mode 100755
index 0000000..f3218f7
--- /dev/null
+++ b/tests/prebuilt-elf-files/riscv64/libtest_empty.so
Binary files differ
diff --git a/tests/prebuilt-elf-files/riscv64/libtest_invalid-empty_shdr_table.so b/tests/prebuilt-elf-files/riscv64/libtest_invalid-empty_shdr_table.so
new file mode 100755
index 0000000..9f15ff9
--- /dev/null
+++ b/tests/prebuilt-elf-files/riscv64/libtest_invalid-empty_shdr_table.so
Binary files differ
diff --git a/tests/prebuilt-elf-files/riscv64/libtest_invalid-rw_load_segment.so b/tests/prebuilt-elf-files/riscv64/libtest_invalid-rw_load_segment.so
new file mode 100755
index 0000000..32db3b9
--- /dev/null
+++ b/tests/prebuilt-elf-files/riscv64/libtest_invalid-rw_load_segment.so
Binary files differ
diff --git a/tests/prebuilt-elf-files/riscv64/libtest_invalid-textrels.so b/tests/prebuilt-elf-files/riscv64/libtest_invalid-textrels.so
new file mode 100755
index 0000000..5ee9aab
--- /dev/null
+++ b/tests/prebuilt-elf-files/riscv64/libtest_invalid-textrels.so
Binary files differ
diff --git a/tests/prebuilt-elf-files/riscv64/libtest_invalid-textrels2.so b/tests/prebuilt-elf-files/riscv64/libtest_invalid-textrels2.so
new file mode 100755
index 0000000..664d3df
--- /dev/null
+++ b/tests/prebuilt-elf-files/riscv64/libtest_invalid-textrels2.so
Binary files differ
diff --git a/tests/prebuilt-elf-files/riscv64/libtest_invalid-unaligned_shdr_offset.so b/tests/prebuilt-elf-files/riscv64/libtest_invalid-unaligned_shdr_offset.so
new file mode 100755
index 0000000..3e773c0
--- /dev/null
+++ b/tests/prebuilt-elf-files/riscv64/libtest_invalid-unaligned_shdr_offset.so
Binary files differ
diff --git a/tests/prebuilt-elf-files/riscv64/libtest_invalid-zero_shdr_table_content.so b/tests/prebuilt-elf-files/riscv64/libtest_invalid-zero_shdr_table_content.so
new file mode 100755
index 0000000..d3bcd9a
--- /dev/null
+++ b/tests/prebuilt-elf-files/riscv64/libtest_invalid-zero_shdr_table_content.so
Binary files differ
diff --git a/tests/prebuilt-elf-files/riscv64/libtest_invalid-zero_shdr_table_offset.so b/tests/prebuilt-elf-files/riscv64/libtest_invalid-zero_shdr_table_offset.so
new file mode 100755
index 0000000..956dca8
--- /dev/null
+++ b/tests/prebuilt-elf-files/riscv64/libtest_invalid-zero_shdr_table_offset.so
Binary files differ
diff --git a/tests/prebuilt-elf-files/riscv64/libtest_invalid-zero_shentsize.so b/tests/prebuilt-elf-files/riscv64/libtest_invalid-zero_shentsize.so
new file mode 100755
index 0000000..e663dae
--- /dev/null
+++ b/tests/prebuilt-elf-files/riscv64/libtest_invalid-zero_shentsize.so
Binary files differ
diff --git a/tests/prebuilt-elf-files/riscv64/libtest_invalid-zero_shstrndx.so b/tests/prebuilt-elf-files/riscv64/libtest_invalid-zero_shstrndx.so
new file mode 100755
index 0000000..294f854
--- /dev/null
+++ b/tests/prebuilt-elf-files/riscv64/libtest_invalid-zero_shstrndx.so
Binary files differ
diff --git a/tests/signal_test.cpp b/tests/signal_test.cpp
index 7f7f3db..fa648d2 100644
--- a/tests/signal_test.cpp
+++ b/tests/signal_test.cpp
@@ -823,9 +823,9 @@
#endif
TEST(signal, sigset_size) {
- // The setjmp implementations assume that sigset_t can fit in a
- // long. This is true because ARM and x86 have broken rt signal support,
- // and AArch64 and x86_64 both have a SIGRTMAX defined as 64.
+ // The setjmp implementations assume that sigset_t can fit in a long.
+ // This is true because the 32-bit ABIs have broken rt signal support,
+ // but the 64-bit ABIs both have a SIGRTMAX defined as 64.
#if defined(__BIONIC__)
static_assert(sizeof(sigset_t) <= sizeof(long), "sigset_t doesn't fit in a long");
#endif
diff --git a/tests/stdlib_test.cpp b/tests/stdlib_test.cpp
index f507e08..45169e3 100644
--- a/tests/stdlib_test.cpp
+++ b/tests/stdlib_test.cpp
@@ -494,7 +494,10 @@
TEST(stdlib, system_NULL) {
// "The system() function shall always return non-zero when command is NULL."
// http://pubs.opengroup.org/onlinepubs/9699919799/functions/system.html
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wnonnull"
ASSERT_NE(0, system(nullptr));
+#pragma clang diagnostic pop
}
// https://austingroupbugs.net/view.php?id=1440
diff --git a/tests/sys_ptrace_test.cpp b/tests/sys_ptrace_test.cpp
index a079ead..b8c1537 100644
--- a/tests/sys_ptrace_test.cpp
+++ b/tests/sys_ptrace_test.cpp
@@ -257,6 +257,9 @@
asm volatile("stm %0, { r0, r1, r2, r3 }" : : "r"(&data));
#elif defined(__aarch64__)
asm volatile("stp x0, x1, %0" : : "m"(data));
+#elif defined(__riscv)
+ UNUSED(data);
+ GTEST_LOG_(INFO) << "missing riscv64 instruction to store > 64 bits in one instruction";
#endif
}
diff --git a/tests/sys_resource_test.cpp b/tests/sys_resource_test.cpp
index 0247fcb..492fabd 100644
--- a/tests/sys_resource_test.cpp
+++ b/tests/sys_resource_test.cpp
@@ -26,6 +26,7 @@
ASSERT_NE(sizeof(rlimit), sizeof(rlimit64));
ASSERT_EQ(4U, sizeof(rlim_t));
#endif
+ ASSERT_EQ(8U, sizeof(rlim64_t));
}
class SysResourceTest : public ::testing::Test {
diff --git a/tests/time_test.cpp b/tests/time_test.cpp
index 40e5c6d..f0ad937 100644
--- a/tests/time_test.cpp
+++ b/tests/time_test.cpp
@@ -998,6 +998,10 @@
ASSERT_EQ(-1, ts.tv_sec);
}
+TEST(time, clock_getres_null_resolution) {
+ ASSERT_EQ(0, clock_getres(CLOCK_REALTIME, nullptr));
+}
+
TEST(time, clock) {
// clock(3) is hard to test, but a 1s sleep should cost less than 10ms on average.
static const clock_t N = 5;
diff --git a/tests/unistd_test.cpp b/tests/unistd_test.cpp
index 5fce5b8..2a36460 100644
--- a/tests/unistd_test.cpp
+++ b/tests/unistd_test.cpp
@@ -294,10 +294,13 @@
}
TEST(UNISTD_TEST, setenv_EINVAL) {
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wnonnull"
EXPECT_EQ(-1, setenv(nullptr, "value", 0));
EXPECT_EQ(EINVAL, errno);
EXPECT_EQ(-1, setenv(nullptr, "value", 1));
EXPECT_EQ(EINVAL, errno);
+#pragma clang diagnostic pop
EXPECT_EQ(-1, setenv("", "value", 0));
EXPECT_EQ(EINVAL, errno);
EXPECT_EQ(-1, setenv("", "value", 1));