[libc-commits] [libc] [llvm] [libc][math] Refactor log to header-only shared math (PR #175395)
via libc-commits
libc-commits at lists.llvm.org
Sat Jan 10 14:46:13 PST 2026
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-libc
Author: CarvedCoder (CarvedCoder)
<details>
<summary>Changes</summary>
Refactors log to a header-only shared math implementation.
- Moves implementation into shared/math/log.h
- Ensures compatibility with Clang and GCC 12.2
- Updates CMake and Bazel build files
- Updates shared math tests accordingly
This is in preparation for constexpr math support in libc.
Fixes #<!-- -->175369
---
Patch is 107.35 KiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/175395.diff
9 Files Affected:
- (modified) libc/shared/math.h (+1)
- (added) libc/shared/math/log.h (+22)
- (modified) libc/src/__support/math/CMakeLists.txt (+17)
- (added) libc/src/__support/math/log.h (+846)
- (modified) libc/src/math/generic/CMakeLists.txt (+1-10)
- (modified) libc/src/math/generic/log.cpp (+3-835)
- (modified) libc/test/shared/CMakeLists.txt (+1)
- (modified) libc/test/shared/shared_math_test.cpp (+2)
- (modified) utils/bazel/llvm-project-overlay/libc/BUILD.bazel (+18-10)
``````````diff
diff --git a/libc/shared/math.h b/libc/shared/math.h
index 7fb4c43f509c4..704ff8b412270 100644
--- a/libc/shared/math.h
+++ b/libc/shared/math.h
@@ -65,6 +65,7 @@
#include "math/ldexpf16.h"
#include "math/rsqrtf.h"
#include "math/rsqrtf16.h"
+#include "math/log.h"
#include "math/sin.h"
#endif // LLVM_LIBC_SHARED_MATH_H
diff --git a/libc/shared/math/log.h b/libc/shared/math/log.h
new file mode 100644
index 0000000000000..41f8c3cc4a131
--- /dev/null
+++ b/libc/shared/math/log.h
@@ -0,0 +1,22 @@
+//===-- Shared log function -------------------------------------*- C++ -*-===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_LIBC_SHARED_MATH_LOG_H
+#define LLVM_LIBC_SHARED_MATH_LOG_H
+
+#include "shared/libc_common.h"
+#include "src/__support/math/log.h"
+namespace LIBC_NAMESPACE_DECL {
+
+namespace shared {
+using math::log;
+} //namespace shared
+
+} // namespace LIBC_NAMESPACE_DECL
+
+#endif // LLVM_LIBC_SHARED_MATH_LOG_H
\ No newline at end of file
diff --git a/libc/src/__support/math/CMakeLists.txt b/libc/src/__support/math/CMakeLists.txt
index 741da7432c94f..8d6eeb7c4d807 100644
--- a/libc/src/__support/math/CMakeLists.txt
+++ b/libc/src/__support/math/CMakeLists.txt
@@ -1025,6 +1025,23 @@ add_header_library(
libc.src.__support.FPUtil.multiply_add
)
+add_header_library(
+ log
+ HDRS
+ log.h
+ DEPENDS
+ libc.src.__support.FPUtil.double_double
+ libc.src.__support.FPUtil.dyadic_float
+ libc.src.__support.FPUtil.fenv_impl
+ libc.src.__support.FPUtil.fp_bits
+ libc.src.__support.FPUtil.multiply_add
+ libc.src.__support.FPUtil.polyeval
+ libc.src.__support.integer_literals
+ libc.src.__support.macros.optimization
+ libc.src.__support.math.common_constants
+ .log_range_reduction
+)
+
add_header_library(
sin
HDRS
diff --git a/libc/src/__support/math/log.h b/libc/src/__support/math/log.h
new file mode 100644
index 0000000000000..0f42e522405c2
--- /dev/null
+++ b/libc/src/__support/math/log.h
@@ -0,0 +1,846 @@
+#ifndef LLVM_LIBC_SRC___SUPPORT_MATH_LOG_H
+#define LLVM_LIBC_SRC___SUPPORT_MATH_LOG_H
+
+#include "src/__support/FPUtil/FEnvImpl.h"
+#include "src/__support/FPUtil/FPBits.h"
+#include "src/__support/FPUtil/PolyEval.h"
+#include "src/__support/FPUtil/double_double.h"
+#include "src/__support/FPUtil/dyadic_float.h"
+#include "src/__support/FPUtil/multiply_add.h"
+#include "src/__support/common.h"
+#include "src/__support/integer_literals.h"
+#include "src/__support/macros/config.h"
+#include "src/__support/macros/optimization.h" // LIBC_UNLIKELY
+#include "log_range_reduction.h"
+#include "src/__support/math/common_constants.h"
+
+
+namespace LIBC_NAMESPACE_DECL {
+
+// 128-bit precision dyadic floating point numbers.
+using Float128 = typename fputil::DyadicFloat<128>;
+
+using LIBC_NAMESPACE::operator""_u128;
+
+namespace math {
+
+using namespace common_constants_internal;
+
+#ifndef LIBC_MATH_HAS_SKIP_ACCURATE_PASS
+// A simple upper bound for the error of e_x * log(2) - log(r).
+constexpr double HI_ERR = 0x1.0p-85;
+
+// Extra errors from P is from using x^2 to reduce evaluation latency.
+constexpr double P_ERR = 0x1.0p-50;
+
+// log(2) with 128-bit precision generated by SageMath with:
+// def format_hex(value):
+// l = hex(value)[2:]
+// n = 8
+// x = [l[i:i + n] for i in range(0, len(l), n)]
+// return "0x" + "'".join(x) + "_u128"
+// (s, m, e) = RealField(128)(2).log().sign_mantissa_exponent();
+// print(format_hex(m));
+constexpr Float128 LOG_2(Sign::POS, /*exponent=*/-128, /*mantissa=*/
+ 0xb17217f7'd1cf79ab'c9e3b398'03f2f6af_u128);
+
+alignas(16) constexpr LogRR LOG_TABLE = {
+ // -log(r) with 128-bit precision generated by SageMath with:
+ // for i in range(128):
+ // r = 2^-8 * ceil( 2^8 * (1 - 2^(-8)) / (1 + i*2^(-7)) );
+ // s, m, e = RealField(128)(r).log().sign_mantissa_exponent();
+ // print("{Sign::POS,", e, ", format_hex(m), "},");
+ /* .step_1= */ {
+ {Sign::POS, 0, 0_u128},
+ {Sign::POS, -134, 0x8080abac'46f38946'662d417c'ed007a46_u128},
+ {Sign::POS, -133, 0x8102b2c4'9ac23a4f'91d082dc'e3ddcd38_u128},
+ {Sign::POS, -133, 0xc2492946'4655f45c'da5f3cc0'b3251dbd_u128},
+ {Sign::POS, -132, 0x820aec4f'3a222380'b9e3aea6'c444ef07_u128},
+ {Sign::POS, -132, 0xa33576a1'6f1f4c64'521016bd'904dc968_u128},
+ {Sign::POS, -132, 0xc4a550a4'fd9a19a8'be97660a'23cc540d_u128},
+ {Sign::POS, -132, 0xe65b9e6e'ed965c36'e09f5fe2'058d6006_u128},
+ {Sign::POS, -131, 0x842cc5ac'f1d03445'1fecdfa8'19b96098_u128},
+ {Sign::POS, -131, 0x8cb9de8a'32ab368a'a7c98595'30a45153_u128},
+ {Sign::POS, -131, 0x9defad3e'8f73217a'976d3b5b'45f6ca0b_u128},
+ {Sign::POS, -131, 0xaf4ad26c'bc8e5be7'0e8b8b88'a14ff0ce_u128},
+ {Sign::POS, -131, 0xb8069857'560707a3'6a677b4c'8bec22e1_u128},
+ {Sign::POS, -131, 0xc99af2ea'ca4c4570'eaf51f66'692844ba_u128},
+ {Sign::POS, -131, 0xdb56446d'6ad8deff'a8112e35'a60e6375_u128},
+ {Sign::POS, -131, 0xe442c00d'e2591b47'196ab34c'e0bccd12_u128},
+ {Sign::POS, -131, 0xf639cc18'5088fe5d'4066e87f'2c0f7340_u128},
+ {Sign::POS, -131, 0xff4489ce'deab2ca6'c17bd40d'8d9291ec_u128},
+ {Sign::POS, -130, 0x88bc7411'3f23def1'9c5a0fe3'96f40f1e_u128},
+ {Sign::POS, -130, 0x8d515bf1'1fb94f1c'88713268'840cbcc0_u128},
+ {Sign::POS, -130, 0x968b0864'3409ceb6'65c0da50'6a088484_u128},
+ {Sign::POS, -130, 0x9b2fe580'ac80b17d'411a5b94'4aca8708_u128},
+ {Sign::POS, -130, 0xa489ec19'9dab06f2'a9fb6cf0'ecb411b7_u128},
+ {Sign::POS, -130, 0xa93f2f25'0dac67d1'cad2fb8d'48054ae0_u128},
+ {Sign::POS, -130, 0xb2ba75f4'6099cf8b'2c3c2e77'904afa78_u128},
+ {Sign::POS, -130, 0xb780945b'ab55dce4'34c7bc3d'32750fde_u128},
+ {Sign::POS, -130, 0xc11e0b2a'8d1e0ddb'9a631e83'0fd30904_u128},
+ {Sign::POS, -130, 0xc5f57f59'c7f46155'aa8b6997'a402bf30_u128},
+ {Sign::POS, -130, 0xcad2d6e7'b80bf914'2c507fb7'a3d0bf6a_u128},
+ {Sign::POS, -130, 0xd49f69e4'56cf1b79'5f53bd2e'406e66e7_u128},
+ {Sign::POS, -130, 0xd98ec2ba'de71e539'58a98f2a'd65bee9b_u128},
+ {Sign::POS, -130, 0xde8439c1'dec56877'4d57da94'5b5d0aaa_u128},
+ {Sign::POS, -130, 0xe881bf93'2af3dac0'c524848e'3443e040_u128},
+ {Sign::POS, -130, 0xed89ed86'a44a01aa'11d49f96'cb88317b_u128},
+ {Sign::POS, -130, 0xf29877ff'38809091'3b020fa1'820c9492_u128},
+ {Sign::POS, -130, 0xf7ad6f26'e7ff2ef7'54d2238f'75f969b1_u128},
+ {Sign::POS, -130, 0xfcc8e365'9d9bcbec'ca0cdf30'1431b60f_u128},
+ {Sign::POS, -129, 0x8389c302'6ac3139b'62dda9d2'270fa1f4_u128},
+ {Sign::POS, -129, 0x86216b3b'0b17188b'163ceae8'8f720f1e_u128},
+ {Sign::POS, -129, 0x88bc7411'3f23def1'9c5a0fe3'96f40f1e_u128},
+ {Sign::POS, -129, 0x8b5ae65d'67db9acd'f7a51681'26a58b9a_u128},
+ {Sign::POS, -129, 0x8dfccb1a'd35ca6ed'5147bdb6'ddcaf59c_u128},
+ {Sign::POS, -129, 0x934b1089'a6dc93c1'df5bb3b6'0554e152_u128},
+ {Sign::POS, -129, 0x95f783e6'e49a9cfa'4a5004f3'ef063313_u128},
+ {Sign::POS, -129, 0x98a78f0e'9ae71d85'2cdec347'84707839_u128},
+ {Sign::POS, -129, 0x9b5b3bb5'f088b766'd878bbe3'd392be25_u128},
+ {Sign::POS, -129, 0x9e1293b9'998c1daa'5b035eae'273a855f_u128},
+ {Sign::POS, -129, 0xa0cda11e'af46390d'bb243827'3918db7e_u128},
+ {Sign::POS, -129, 0xa38c6e13'8e20d831'f698298a'dddd7f32_u128},
+ {Sign::POS, -129, 0xa64f04f0'b961df76'e4f5275c'2d15c21f_u128},
+ {Sign::POS, -129, 0xa9157039'c51ebe70'8164c759'686a2209_u128},
+ {Sign::POS, -129, 0xabdfba9e'468fd6f6'f72ea077'49ce6bd3_u128},
+ {Sign::POS, -129, 0xaeadeefa'caf97d35'7dd6e688'ebb13b03_u128},
+ {Sign::POS, -129, 0xb1801859'd56249dc'18ce51ff'f99479cd_u128},
+ {Sign::POS, -129, 0xb45641f4'e350a0d3'2756eba0'0bc33978_u128},
+ {Sign::POS, -129, 0xb7307735'78cb90b2'be1116c3'466beb6d_u128},
+ {Sign::POS, -129, 0xba0ec3b6'33dd8b09'49dc60b2'b059a60b_u128},
+ {Sign::POS, -129, 0xbcf13343'e7d9ec7d'2efd1778'1bb3afec_u128},
+ {Sign::POS, -129, 0xbfd7d1de'c0a8df6f'37eda996'244bccb0_u128},
+ {Sign::POS, -129, 0xc2c2abbb'6e5fd56f'33337789'd592e296_u128},
+ {Sign::POS, -129, 0xc5b1cd44'596fa51e'1a18fb8f'9f9ef280_u128},
+ {Sign::POS, -129, 0xc8a5431a'dfb44ca5'688ce7c1'a75e341a_u128},
+ {Sign::POS, -129, 0xcb9d1a18'9ab56e76'2d7e9307'c70c0668_u128},
+ {Sign::POS, -129, 0xce995f50'af69d861'ef2f3f4f'861ad6a9_u128},
+ {Sign::POS, -129, 0xd19a2011'27d3c645'7f9d79f5'1dcc7301_u128},
+ {Sign::POS, -129, 0xd19a2011'27d3c645'7f9d79f5'1dcc7301_u128},
+ {Sign::POS, -129, 0xd49f69e4'56cf1b79'5f53bd2e'406e66e7_u128},
+ {Sign::POS, -129, 0xd7a94a92'466e833a'ad88bba7'd0cee8e0_u128},
+ {Sign::POS, -129, 0xdab7d022'31484a92'96c20cca'6efe2ac5_u128},
+ {Sign::POS, -129, 0xddcb08dc'0717d85b'f40a666c'87842843_u128},
+ {Sign::POS, -129, 0xe0e30349'fd1cec80'7fe8e180'2aba24d6_u128},
+ {Sign::POS, -129, 0xe0e30349'fd1cec80'7fe8e180'2aba24d6_u128},
+ {Sign::POS, -129, 0xe3ffce3a'2aa64922'3eadb651'b49ac53a_u128},
+ {Sign::POS, -129, 0xe72178c0'323a1a0f'304e1653'e71d9973_u128},
+ {Sign::POS, -129, 0xea481236'f7d35baf'e9a767a8'0d6d97e8_u128},
+ {Sign::POS, -129, 0xed73aa42'64b0ade9'4f91cf4b'33e42998_u128},
+ {Sign::POS, -129, 0xf0a450d1'39366ca6'fc66eb64'08ff6433_u128},
+ {Sign::POS, -129, 0xf0a450d1'39366ca6'fc66eb64'08ff6433_u128},
+ {Sign::POS, -129, 0xf3da161e'ed6b9aaf'ac8d42f7'8d3e65d3_u128},
+ {Sign::POS, -129, 0xf7150ab5'a09f27f4'5a470250'd40ebe90_u128},
+ {Sign::POS, -129, 0xfa553f70'18c966f2'b780a545'a1b54dcf_u128},
+ {Sign::POS, -129, 0xfa553f70'18c966f2'b780a545'a1b54dcf_u128},
+ {Sign::POS, -129, 0xfd9ac57b'd244217e'8f05924d'258c14c5_u128},
+ {Sign::POS, -128, 0x8072d72d'903d588b'89d1b09c'70c4010a_u128},
+ {Sign::POS, -128, 0x821b05f3'b01d6774'030d58c3'f7e2ea1f_u128},
+ {Sign::POS, -128, 0x821b05f3'b01d6774'030d58c3'f7e2ea1f_u128},
+ {Sign::POS, -128, 0x83c5f829'9e2b4091'20f6fafe'8fbb68b9_u128},
+ {Sign::POS, -128, 0x8573b716'82a7d21a'e21f9f89'c1ab80b2_u128},
+ {Sign::POS, -128, 0x8573b716'82a7d21a'e21f9f89'c1ab80b2_u128},
+ {Sign::POS, -128, 0x87244c30'8e670a66'01e005d0'6dbfa8f8_u128},
+ {Sign::POS, -128, 0x88d7c11e'3ad53cdc'223111a7'07b6de2c_u128},
+ {Sign::POS, -128, 0x88d7c11e'3ad53cdc'223111a7'07b6de2c_u128},
+ {Sign::POS, -128, 0x8a8e1fb7'94b09134'2eb628db'a173c82d_u128},
+ {Sign::POS, -128, 0x8c477207'91e53313'be2ad194'15fe25a5_u128},
+ {Sign::POS, -128, 0x8c477207'91e53313'be2ad194'15fe25a5_u128},
+ {Sign::POS, -128, 0x8e03c24d'73003959'bddae1cc'ce247838_u128},
+ {Sign::POS, -128, 0x8fc31afe'30b2c6de'9b00bf16'7e95da67_u128},
+ {Sign::POS, -128, 0x8fc31afe'30b2c6de'9b00bf16'7e95da67_u128},
+ {Sign::POS, -128, 0x918586c5'f5e4bf01'9b92199e'd1a4bab1_u128},
+ {Sign::POS, -128, 0x934b1089'a6dc93c1'df5bb3b6'0554e152_u128},
+ {Sign::POS, -128, 0x934b1089'a6dc93c1'df5bb3b6'0554e152_u128},
+ {Sign::POS, -128, 0x9513c368'76083695'f3cbc416'a2418012_u128},
+ {Sign::POS, -128, 0x96dfaabd'86fa1646'be1188fb'c94e2f15_u128},
+ {Sign::POS, -128, 0x96dfaabd'86fa1646'be1188fb'c94e2f15_u128},
+ {Sign::POS, -128, 0x98aed221'a03458b6'1d2f8932'1647b358_u128},
+ {Sign::POS, -128, 0x98aed221'a03458b6'1d2f8932'1647b358_u128},
+ {Sign::POS, -128, 0x9a81456c'ec642e0f'e549f9aa'ea3cb5e1_u128},
+ {Sign::POS, -128, 0x9c5710b8'cbb73a42'a2554b2d'd4619e63_u128},
+ {Sign::POS, -128, 0x9c5710b8'cbb73a42'a2554b2d'd4619e63_u128},
+ {Sign::POS, -128, 0x9e304061'b5fda919'30603d87'b6df81ad_u128},
+ {Sign::POS, -128, 0x9e304061'b5fda919'30603d87'b6df81ad_u128},
+ {Sign::POS, -128, 0xa00ce109'2e5498c3'67879c5a'30cd1242_u128},
+ {Sign::POS, -128, 0xa1ecff97'c91e267b'0b7efae0'8e597e16_u128},
+ {Sign::POS, -128, 0xa1ecff97'c91e267b'0b7efae0'8e597e16_u128},
+ {Sign::POS, -128, 0xa3d0a93f'45169a4a'83594fab'088c0d65_u128},
+ {Sign::POS, -128, 0xa3d0a93f'45169a4a'83594fab'088c0d65_u128},
+ {Sign::POS, -128, 0xa5b7eb7c'b860fb88'af6a62a0'dec6e073_u128},
+ {Sign::POS, -128, 0xa5b7eb7c'b860fb88'af6a62a0'dec6e073_u128},
+ {Sign::POS, -128, 0xa7a2d41a'd270c9d7'49362382'a768847a_u128},
+ {Sign::POS, -128, 0xa7a2d41a'd270c9d7'49362382'a768847a_u128},
+ {Sign::POS, -128, 0xa9917134'33c2b998'8ba4aea6'14d05701_u128},
+ {Sign::POS, -128, 0xa9917134'33c2b998'8ba4aea6'14d05701_u128},
+ {Sign::POS, -128, 0xab83d135'dc633301'7fe6607b'a902ef3c_u128},
+ {Sign::POS, -128, 0xab83d135'dc633301'7fe6607b'a902ef3c_u128},
+ {Sign::POS, -128, 0xad7a02e1'b24efd31'd60864fd'949b4bd3_u128},
+ {Sign::POS, -128, 0xad7a02e1'b24efd31'd60864fd'949b4bd3_u128},
+ {Sign::POS, -128, 0xaf741551'20c9011c'066d235e'e63073dd_u128},
+ {Sign::POS, 0, 0_u128},
+ },
+ // -log(r) for the second step, generated by SageMath with:
+ //
+ // for i in range(-2^6, 2^7 + 1):
+ // r = 2^-16 * round( 2^16 / (1 + i*2^(-14)) );
+ // s, m, e = RealField(128)(r).log().sign_mantissa_exponent();
+ // print("{Sign::POS," if s == -1 else "{Sign::NEG,", e, ",
+ // format_hex(m), "},");
+ /* .step_2 = */
+ {
+ {Sign::NEG, -135, 0x803faaca'c419abf2'a1c6f3fc'242ef8d0_u128},
+ {Sign::NEG, -136, 0xfc834da1'6f0d9f57'a225ebc0'2e6d9dd4_u128},
+ {Sign::NEG, -136, 0xf88735cc'c7433381'c33f6ad3'40ae18a9_u128},
+ {Sign::NEG, -136, 0xf48b0e17'1249b6bc'70b2a4d3'8a242244_u128},
+ {Sign::NEG, -136, 0xf08ed67f'd190e280'1d548190'48b811b0_u128},
+ {Sign::NEG, -136, 0xec928f06'86828706'aee59837'01d2a02b_u128},
+ {Sign::NEG, -136, 0xe89637aa'b2828aed'40abb8ab'72afa2d2_u128},
+ {Sign::NEG, -136, 0xe499d06b'd6eeead5'deb547a0'd4a26ef9_u128},
+ {Sign::NEG, -136, 0xe09d5949'751fb909'39c5bdfb'cf6087a0_u128},
+ {Sign::NEG, -136, 0xdca0d243'0e671d18'53ea9bf1'52de635f_u128},
+ {Sign::NEG, -136, 0xd8a43b58'2411537e'25b82043'6f5f4352_u128},
+ {Sign::NEG, -136, 0xd4a79488'3764ad41'3c2d13ea'1d0be058_u128},
+ {Sign::NEG, -136, 0xd0aaddd2'c9a18f95'4f3cfa62'bcb3ce3a_u128},
+ {Sign::NEG, -136, 0xccae1737'5c02737c'd0fff6cd'f14a86c7_u128},
+ {Sign::NEG, -136, 0xc8b140b5'6fbbe56a'7587b5f0'453ac3d2_u128},
+ {Sign::NEG, -136, 0xc4b45a4c'85fc84e2'b358ad16'dfd0d085_u128},
+ {Sign::NEG, -136, 0xc0b763fc'1fed041d'3c86fdce'5dbe7314_u128},
+ {Sign::NEG, -136, 0xbcba5dc3'beb027a6'70764e46'ac18a96d_u128},
+ {Sign::NEG, -136, 0xb8bd47a2'e362c600'c63be62b'8f285882_u128},
+ {Sign::NEG, -136, 0xb3c0d59a'244325a4'72e7b5a3'86e5e31b_u128},
+ {Sign::NEG, -136, 0xafc39bac'66434f27'c3ea2cd9'3f316b34_u128},
+ {Sign::NEG, -136, 0xabc651d4'91a7b438'1dfb11a7'cc892843_u128},
+ {Sign::NEG, -136, 0xa7c8f812'2773f38d'fc679a28'e9d9f212_u128},
+ {Sign::NEG, -136, 0xa3cb8e64'a8a5bbe6'e7bc977e'eec42254_u128},
+ {Sign::NEG, -136, 0x9fce14cb'9634cba6'b20f215b'd3b58c61_u128},
+ {Sign::NEG, -136, 0x9bd08b46'7112f078'abe28625'08d67a98_u128},
+ {Sign::NEG, -136, 0x97d2f1d4'ba2c06f0'd1aacedc'efe9d377_u128},
+ {Sign::NEG, -136, 0x93d54875'f265fa2c'f1eb25e7'7d05f58d_u128},
+ {Sign::NEG, -136, 0x8fd78f29'9aa0c375'cbef6fac'33691e95_u128},
+ {Sign::NEG, -136, 0x8bd9c5ef'33b669e0'27206404'62a0f8ad_u128},
+ {Sign::NEG, -136, 0x87dbecc6'3e7b01ed'e2f17751'34c8da75_u128},
+ {Sign::NEG, -136, 0x83de03ae'3bbcad2e'ff67e201'c8c50d67_u128},
+ {Sign::NEG, -137, 0xffc0154d'588733c5'3c742a7c'76356396_u128},
+ {Sign::NEG, -137, 0xf7c4035e'21a4052f'f90dd6b2'4aa686ec_u128},
+ {Sign::NEG, -137, 0xefc7d18d'd4485b9e'ca47c52b'7d7ffce2_u128},
+ {Sign::NEG, -137, 0xe7cb7fdb'71e0db36'3703617a'd3d8311f_u128},
+ {Sign::NEG, -137, 0xdfcf0e45'fbce3e80'7e4cfbd8'30393b88_u128},
+ {Sign::NEG, -137, 0xd7d27ccc'736555af'4f7a29cf'0fc2c38e_u128},
+ {Sign::NEG, -137, 0xcfd5cb6d'd9ef05dd'7370ae83'f9e72748_u128},
+ {Sign::NEG, -137, 0xc7d8fa29'30a84850'671486eb'4cd76f65_u128},
+ {Sign::NEG, -137, 0xbfdc08fd'78c229b9'e6dbb624'f9739782_u128},
+ {Sign::NEG, -137, 0xb7def7e9'b361c979'6b866e09'e57d9079_u128},
+ {Sign::NEG, -137, 0xafe1c6ec'e1a058dd'97fa2fd0'c9dc723e_u128},
+ {Sign::NEG, -137, 0xa7e47606'048b1a65'983e8089'7cf1e60f_u128},
+ {Sign::NEG, -137, 0x9fe70534'1d236102'7199cd06'ae5d39b3_u128},
+ {Sign::NEG, -137, 0x97e97476'2c5e8f58'43cd18a7'2a051a96_u128},
+ {Sign::NEG, -137, 0x8febc3cb'332616ff'7b6d1248'c3e1fd40_u128},
+ {Sign::NEG, -137, 0x87edf332'325777c5'f5572a88'14c703af_u128},
+ {Sign::NEG, -138, 0xffe00554'55887de0'26828c92'649a3a39_u128},
+ {Sign::NEG, -138, 0xefe3e464'3a640cf3'82c550bd'1216d82a_u128},
+ {Sign::NEG, -138, 0xdfe78392'14b4e8ae'da6959f7'f0e01bf0_u128},
+ {Sign::NEG, -138, 0xcfeae2db'e5d6736d'da93e2fa'85a8f214_u128},
+ {Sign::NEG, -138, 0xbfee023f'af0c2480'b47505bf'a5a03b06_u128},
+ {Sign::NEG, -138, 0xaff0e1bb'718186ad'b1475a51'80a43520_u128},
+ {Sign::NEG, -138, 0x9ff3814d'2e4a36b2'a8740b91'c95df537_u128},
+ {Sign::NEG, -138, 0x8ff5e0f2'e661e1c6'57d895d3'5921b59c_u128},
+ {Sign::NEG, -139, 0xfff00155'35588833'3c56c598'c659c2a3_u128},
+ {Sign::NEG, -139, 0xdff3c0e4'97ea4eb1'2ef8ec33'ed9d782a_u128},
+ {Sign::NEG, -139, 0xbff7008f'f5e0c257'379eba7e'6465ff63_u128},
+ {Sign::NEG, -139, 0x9ff9c053'5073a370'3f972b78'3fcab757_u128},
+ {Sign::NEG, -140, 0xfff80055'51558885'de026e27'1ee0549d_u128},
+ {Sign::NEG, -140, 0xbffb8023'febc0c25'eceb47ea'01f6c632_u128},
+ {Sign::NEG, -141, 0xfffc0015'54d55888'7333c578'57e1ed52_u128},
+ {Sign::NEG, -142, 0xfffe0005'55455588'87dde026'fa704374_u128},
+ {Sign::NEG, 0, 0_u128},
+ {Sign::POS, -141, 0x80010002'aab2aac4'44999abe'2fe2cc65_u128},
+ {Sign::POS, -140, 0x8002000a'aaeaac44'4eef3815'81464ccb_u128},
+ {Sign::POS, -140, 0xc0048024'01440c26'dfeb4850'85f6f454_u128},
+ {Sign::POS, -139, 0x8004002a'acaac445'99abe3be'3a1c6e93_u128},
+ {Sign::POS, -139, 0xa0064053'5a37a37a'6bc1e20e'ac8448b4_u128},
+ {Sign::POS, -139, 0xc0090090'0a20c275'979eedc0'64c242fd_u128},
+ {Sign::POS, -139, 0xe00c40e4'bd6e4efd'c72446cc'1bf728bd_u128},
+ {Sign::POS, -138, 0x800800aa'baac446e'f381b821'bbb569e5_u128},
+ {Sign::POS, -138, 0x900a20f3'19a3e273'569b26aa'a485ea5c_u128},
+ {Sign::POS, -138, 0xa00c814d'7c6a37f8'2dcf56c8'3c80b028_u128},
+ {Sign::POS, -138, 0xb00f21bb'e3e388ee'5f697682'84463b9b_u128},
+ {Sign::POS, -138, 0xc0120240'510c284c'b48ea6c0'5e2773a1_u128},
+ {Sign::POS, -138, 0xd01522dc'c4f87991'14d9d761'96d8043a_u128},
+ {Sign::POS, -138, 0xe0188393'40d4f241'e016a611'a4415d72_u128},
+ {Sign::POS, -138, 0xf01c2465'c5e61b6f'661e135f'49a47c40_u128},
+ {Sign::POS, -137, 0x801002ab'2ac4499a'be6bf0fa'435e8383_u128},
+ {Sign::POS, -137, 0x88121333'7898871e'9a31ba0c'bc030353_u128},
+ {Sign::POS, -137, 0x901443cc'cd362c9f'54b57dfe'0c4c840f_u128},
+ {Sign::POS, -137, 0x98169478'296fad41'7ad1e9c3'15328f7e_u128},
+ {Sign::POS, -137, 0xa0190536'8e2389b3'1f3f686c'f3d6be22_u128},
+ {Sign::POS, -137, 0xa81b9608'fc3c50ec'f105b66e'c4703ede_u128},
+ {Sign::POS, -137, 0xb01e46f0'74b0a0f3'610848c6'8df4d233_u128},
+ {Sign::POS, -137, 0xb82117ed'f8832797'd6aef30c'd312169a_u128},
+ {Sign::POS, -137, 0xc0240902'88c2a339'f3ac3796'08053d9d_u128},
+ {Sign::POS, -137, 0xc8271a2f'2689e388'e6e2acf8'f4d4c24a_u128},
+ {Sign::POS, -137, 0xd02a4b74'd2ffca44'ce6ae474'd860359f_u128},
+ {Sign::POS, -137, 0xd82d9cd4'8f574c00'28bb3cd9'f2a65fb5_u128},
+ {Sign::POS, -137, 0xe0310e4f'5ccf70e1'54f30dbe'f38a8066_u128},
+ {Sign::POS, -137, 0xe8349fe6'3cb35564'224a96f5'a7471c46_u128},
+ ...
[truncated]
``````````
</details>
https://github.com/llvm/llvm-project/pull/175395
More information about the libc-commits
mailing list