Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[libc][math] Implement powf function correctly rounded to all rounding modes. #71188

Merged
merged 4 commits into from Nov 6, 2023

Conversation

lntue
Copy link
Contributor

@lntue lntue commented Nov 3, 2023

We compute pow(x, y) using the formula

  pow(x, y) = x^y = 2^(y * log2(x))

We follow similar steps as in log2f(x) and exp2f(x), by breaking down into hi + mid + lo parts, in which hi parts are computed using the exponent field directly, mid parts will use look-up tables, and lo parts are approximated by polynomials.

We add some speedup for common use-cases:

  pow(2, y) = exp2(y)
  pow(10, y) = exp10(y)
  pow(x, 2) = x * x
  pow(x, 1/2) = sqrt(x)
  pow(x, -1/2) = rsqrt(x) - to be added

@llvmbot
Copy link
Collaborator

llvmbot commented Nov 3, 2023

@llvm/pr-subscribers-libc

Author: None (lntue)

Changes

We compute pow(x, y) using the formula

  pow(x, y) = x^y = 2^(y * log2(x))

We follow similar steps as in log2f(x) and exp2f(x), by breaking down into hi + mid + lo parts, in which hi parts are computed using the exponent field directly, mid parts will use look-up tables, and lo parts are approximated by polynomials.

We add some speedup for common use-cases:

  pow(2, y) = exp2(y)
  pow(10, y) = exp10(y)
  pow(x, 2) = x * x
  pow(x, 1/2) = sqrt(x)
  pow(x, -1/2) = rsqrt(x) - to be added

Patch is 71.90 KiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/71188.diff

19 Files Affected:

  • (modified) libc/config/darwin/arm/entrypoints.txt (+1)
  • (modified) libc/config/linux/aarch64/entrypoints.txt (+1)
  • (modified) libc/config/linux/riscv/entrypoints.txt (+1)
  • (modified) libc/config/linux/x86_64/entrypoints.txt (+1)
  • (modified) libc/config/windows/entrypoints.txt (+1)
  • (modified) libc/docs/math/index.rst (+2-1)
  • (modified) libc/spec/stdc.td (+1)
  • (modified) libc/src/math/generic/CMakeLists.txt (+30)
  • (modified) libc/src/math/generic/common_constants.cpp (+87)
  • (modified) libc/src/math/generic/common_constants.h (+5)
  • (modified) libc/src/math/generic/log2f.cpp (-46)
  • (added) libc/src/math/generic/powf.cpp (+840)
  • (modified) libc/test/UnitTest/FPMatcher.h (+7)
  • (modified) libc/test/src/math/CMakeLists.txt (+13)
  • (added) libc/test/src/math/powf_test.cpp (+123)
  • (modified) libc/test/src/math/smoke/CMakeLists.txt (+12)
  • (added) libc/test/src/math/smoke/powf_test.cpp (+189)
  • (modified) libc/utils/MPFRWrapper/MPFRUtils.cpp (+8)
  • (modified) libc/utils/MPFRWrapper/MPFRUtils.h (+1)
diff --git a/libc/config/darwin/arm/entrypoints.txt b/libc/config/darwin/arm/entrypoints.txt
index ecdd2d0624fcf5d..362138c92a6869f 100644
--- a/libc/config/darwin/arm/entrypoints.txt
+++ b/libc/config/darwin/arm/entrypoints.txt
@@ -199,6 +199,7 @@ set(TARGET_LIBM_ENTRYPOINTS
     libc.src.math.nextafter
     libc.src.math.nextafterf
     libc.src.math.nextafterl
+    libc.src.math.powf
     libc.src.math.remainderf
     libc.src.math.remainder
     libc.src.math.remainderl
diff --git a/libc/config/linux/aarch64/entrypoints.txt b/libc/config/linux/aarch64/entrypoints.txt
index 52e9e8036a3fae3..096e2afb06e5a9d 100644
--- a/libc/config/linux/aarch64/entrypoints.txt
+++ b/libc/config/linux/aarch64/entrypoints.txt
@@ -316,6 +316,7 @@ set(TARGET_LIBM_ENTRYPOINTS
     libc.src.math.nextafter
     libc.src.math.nextafterf
     libc.src.math.nextafterl
+    libc.src.math.powf
     libc.src.math.remainderf
     libc.src.math.remainder
     libc.src.math.remainderl
diff --git a/libc/config/linux/riscv/entrypoints.txt b/libc/config/linux/riscv/entrypoints.txt
index 52ca12121812d12..7dadbc7f8285477 100644
--- a/libc/config/linux/riscv/entrypoints.txt
+++ b/libc/config/linux/riscv/entrypoints.txt
@@ -325,6 +325,7 @@ set(TARGET_LIBM_ENTRYPOINTS
     libc.src.math.nextafter
     libc.src.math.nextafterf
     libc.src.math.nextafterl
+    libc.src.math.powf
     libc.src.math.remainderf
     libc.src.math.remainder
     libc.src.math.remainderl
diff --git a/libc/config/linux/x86_64/entrypoints.txt b/libc/config/linux/x86_64/entrypoints.txt
index ab105e1d6344725..31ea282edb59126 100644
--- a/libc/config/linux/x86_64/entrypoints.txt
+++ b/libc/config/linux/x86_64/entrypoints.txt
@@ -329,6 +329,7 @@ set(TARGET_LIBM_ENTRYPOINTS
     libc.src.math.nextafter
     libc.src.math.nextafterf
     libc.src.math.nextafterl
+    libc.src.math.powf
     libc.src.math.remainderf
     libc.src.math.remainder
     libc.src.math.remainderl
diff --git a/libc/config/windows/entrypoints.txt b/libc/config/windows/entrypoints.txt
index 1ee088e399438b7..5611b399e8bca8b 100644
--- a/libc/config/windows/entrypoints.txt
+++ b/libc/config/windows/entrypoints.txt
@@ -198,6 +198,7 @@ set(TARGET_LIBM_ENTRYPOINTS
     libc.src.math.nextafter
     libc.src.math.nextafterf
     libc.src.math.nextafterl
+    libc.src.math.powf
     libc.src.math.remainderf
     libc.src.math.remainder
     libc.src.math.remainderl
diff --git a/libc/docs/math/index.rst b/libc/docs/math/index.rst
index 77b3c8b99a0c2bc..7c83691c0d9c801 100644
--- a/libc/docs/math/index.rst
+++ b/libc/docs/math/index.rst
@@ -420,7 +420,7 @@ Higher Math Functions
 +------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+
 | pow        |         |         |         |         |         |         |         |         |         |         |         |         |
 +------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+
-| powf       |         |         |         |         |         |         |         |         |         |         |         |         |
+| powf       | |check| | |check| |         | |check| | |check| |         |         | |check| |         |         |         |         |
 +------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+
 | powl       |         |         |         |         |         |         |         |         |         |         |         |         |
 +------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+
@@ -493,6 +493,7 @@ log            |check|          |check|
 log10          |check|          |check|
 log1p          |check|          |check|
 log2           |check|          |check|
+pow            |check|
 sin            |check|          large
 sincos         |check|          large
 sinh           |check|
diff --git a/libc/spec/stdc.td b/libc/spec/stdc.td
index 1e9043b841ff1d8..239d8f9843cfc0f 100644
--- a/libc/spec/stdc.td
+++ b/libc/spec/stdc.td
@@ -491,6 +491,7 @@ def StdC : StandardSpec<"stdc"> {
           FunctionSpec<"nextafter", RetValSpec<DoubleType>, [ArgSpec<DoubleType>, ArgSpec<DoubleType>]>,
           FunctionSpec<"nextafterl", RetValSpec<LongDoubleType>, [ArgSpec<LongDoubleType>, ArgSpec<LongDoubleType>]>,
 
+          FunctionSpec<"powf", RetValSpec<FloatType>, [ArgSpec<FloatType>, ArgSpec<FloatType>]>,
           FunctionSpec<"pow", RetValSpec<DoubleType>, [ArgSpec<DoubleType>, ArgSpec<DoubleType>]>,
 
           FunctionSpec<"coshf", RetValSpec<FloatType>, [ArgSpec<FloatType>]>,
diff --git a/libc/src/math/generic/CMakeLists.txt b/libc/src/math/generic/CMakeLists.txt
index 843349ccdc196a7..8fc2b0850fbc077 100644
--- a/libc/src/math/generic/CMakeLists.txt
+++ b/libc/src/math/generic/CMakeLists.txt
@@ -747,6 +747,36 @@ add_entrypoint_object(
     -O3
 )
 
+add_entrypoint_object(
+  powf
+  SRCS
+    powf.cpp
+  HDRS
+    ../powf.h
+  DEPENDS
+    .common_constants
+    .explogxf
+    .exp2f
+    .exp10f
+    libc.src.__support.builtin_wrappers
+    libc.src.__support.CPP.bit
+    libc.src.__support.CPP.optional
+    libc.src.__support.FPUtil.fenv_impl
+    libc.src.__support.FPUtil.fp_bits
+    libc.src.__support.FPUtil.multiply_add
+    libc.src.__support.FPUtil.nearest_integer
+    libc.src.__support.FPUtil.polyeval
+    libc.src.__support.FPUtil.rounding_mode
+    libc.src.__support.FPUtil.sqrt
+    libc.src.__support.FPUtil.triple_double
+    libc.src.__support.macros.optimization
+    libc.include.errno
+    libc.src.errno.errno
+    libc.include.math
+  COMPILE_OPTIONS
+    -O3
+)
+
 add_entrypoint_object(
   copysign
   SRCS
diff --git a/libc/src/math/generic/common_constants.cpp b/libc/src/math/generic/common_constants.cpp
index 737d2ab77121adb..1a23d00297105f7 100644
--- a/libc/src/math/generic/common_constants.cpp
+++ b/libc/src/math/generic/common_constants.cpp
@@ -227,6 +227,51 @@ alignas(64) const double LOG_R[128] = {
     0x1.5707a26bb8c66p-1, 0x1.5af405c3649ep-1,  0x1.5af405c3649ep-1,
     0x1.5ee82aa24192p-1,  0x0.000000000000p0};
 
+alignas(64) const double LOG2_R[128] = {
+    0x0.0000000000000p+0, 0x1.72c7ba20f7327p-7, 0x1.743ee861f3556p-6,
+    0x1.184b8e4c56af8p-5, 0x1.77394c9d958d5p-5, 0x1.d6ebd1f1febfep-5,
+    0x1.1bb32a600549dp-4, 0x1.4c560fe68af88p-4, 0x1.7d60496cfbb4cp-4,
+    0x1.960caf9abb7cap-4, 0x1.c7b528b70f1c5p-4, 0x1.f9c95dc1d1165p-4,
+    0x1.097e38ce60649p-3, 0x1.22dadc2ab3497p-3, 0x1.3c6fb650cde51p-3,
+    0x1.494f863b8df35p-3, 0x1.633a8bf437ce1p-3, 0x1.7046031c79f85p-3,
+    0x1.8a8980abfbd32p-3, 0x1.97c1cb13c7ec1p-3, 0x1.b2602497d5346p-3,
+    0x1.bfc67a7fff4ccp-3, 0x1.dac22d3e441d3p-3, 0x1.e857d3d361368p-3,
+    0x1.01d9bbcfa61d4p-2, 0x1.08bce0d95fa38p-2, 0x1.169c05363f158p-2,
+    0x1.1d982c9d52708p-2, 0x1.249cd2b13cd6cp-2, 0x1.32bfee370ee68p-2,
+    0x1.39de8e1559f6fp-2, 0x1.4106017c3eca3p-2, 0x1.4f6fbb2cec598p-2,
+    0x1.56b22e6b578e5p-2, 0x1.5dfdcf1eeae0ep-2, 0x1.6552b49986277p-2,
+    0x1.6cb0f6865c8eap-2, 0x1.7b89f02cf2aadp-2, 0x1.8304d90c11fd3p-2,
+    0x1.8a8980abfbd32p-2, 0x1.921800924dd3bp-2, 0x1.99b072a96c6b2p-2,
+    0x1.a8ff971810a5ep-2, 0x1.b0b67f4f4681p-2,  0x1.b877c57b1b07p-2,
+    0x1.c043859e2fdb3p-2, 0x1.c819dc2d45fe4p-2, 0x1.cffae611ad12bp-2,
+    0x1.d7e6c0abc3579p-2, 0x1.dfdd89d586e2bp-2, 0x1.e7df5fe538ab3p-2,
+    0x1.efec61b011f85p-2, 0x1.f804ae8d0cd02p-2, 0x1.0014332be0033p-1,
+    0x1.042bd4b9a7c99p-1, 0x1.08494c66b8efp-1,  0x1.0c6caaf0c5597p-1,
+    0x1.1096015dee4dap-1, 0x1.14c560fe68af9p-1, 0x1.18fadb6e2d3c2p-1,
+    0x1.1d368296b5255p-1, 0x1.217868b0c37e8p-1, 0x1.25c0a0463bebp-1,
+    0x1.2a0f3c340705cp-1, 0x1.2e644fac04fd8p-1, 0x1.2e644fac04fd8p-1,
+    0x1.32bfee370ee68p-1, 0x1.37222bb70747cp-1, 0x1.3b8b1c68fa6edp-1,
+    0x1.3ffad4e74f1d6p-1, 0x1.44716a2c08262p-1, 0x1.44716a2c08262p-1,
+    0x1.48eef19317991p-1, 0x1.4d7380dcc422dp-1, 0x1.51ff2e30214bcp-1,
+    0x1.5692101d9b4a6p-1, 0x1.5b2c3da19723bp-1, 0x1.5b2c3da19723bp-1,
+    0x1.5fcdce2727ddbp-1, 0x1.6476d98ad990ap-1, 0x1.6927781d932a8p-1,
+    0x1.6927781d932a8p-1, 0x1.6ddfc2a78fc63p-1, 0x1.729fd26b707c8p-1,
+    0x1.7767c12967a45p-1, 0x1.7767c12967a45p-1, 0x1.7c37a9227e7fbp-1,
+    0x1.810fa51bf65fdp-1, 0x1.810fa51bf65fdp-1, 0x1.85efd062c656dp-1,
+    0x1.8ad846cf369a4p-1, 0x1.8ad846cf369a4p-1, 0x1.8fc924c89ac84p-1,
+    0x1.94c287492c4dbp-1, 0x1.94c287492c4dbp-1, 0x1.99c48be2063c8p-1,
+    0x1.9ecf50bf43f13p-1, 0x1.9ecf50bf43f13p-1, 0x1.a3e2f4ac43f6p-1,
+    0x1.a8ff971810a5ep-1, 0x1.a8ff971810a5ep-1, 0x1.ae255819f022dp-1,
+    0x1.b35458761d479p-1, 0x1.b35458761d479p-1, 0x1.b88cb9a2ab521p-1,
+    0x1.b88cb9a2ab521p-1, 0x1.bdce9dcc96187p-1, 0x1.c31a27dd00b4ap-1,
+    0x1.c31a27dd00b4ap-1, 0x1.c86f7b7ea4a89p-1, 0x1.c86f7b7ea4a89p-1,
+    0x1.cdcebd2373995p-1, 0x1.d338120a6dd9dp-1, 0x1.d338120a6dd9dp-1,
+    0x1.d8aba045b01c8p-1, 0x1.d8aba045b01c8p-1, 0x1.de298ec0bac0dp-1,
+    0x1.de298ec0bac0dp-1, 0x1.e3b20546f554ap-1, 0x1.e3b20546f554ap-1,
+    0x1.e9452c8a71028p-1, 0x1.e9452c8a71028p-1, 0x1.eee32e2aeccbfp-1,
+    0x1.eee32e2aeccbfp-1, 0x1.f48c34bd1e96fp-1, 0x1.f48c34bd1e96fp-1,
+    0x1.fa406bd2443dfp-1, 0x1.0000000000000p0};
+
 // Generated by Sollya with:
 // for i from 0 to 127 do {
 //     r = 2^-8 * ceil( 2^8 * (1 - 2^(-8)) / (1 + i*2^-7) );
@@ -395,6 +440,48 @@ alignas(64) const int S2[193] = {
     -0x1cd, -0x1d1, -0x1d5, -0x1d9, -0x1dd, -0x1e0, -0x1e4, -0x1e8, -0x1ec,
     -0x1f0, -0x1f4, -0x1f8, -0x1fc};
 
+alignas(64) const double R2[193] = {
+    0x1.0101p0,  0x1.00fdp0,  0x1.00f9p0,  0x1.00f5p0,  0x1.00f1p0,
+    0x1.00edp0,  0x1.00e9p0,  0x1.00e5p0,  0x1.00e1p0,  0x1.00ddp0,
+    0x1.00d9p0,  0x1.00d5p0,  0x1.00d1p0,  0x1.00cdp0,  0x1.00c9p0,
+    0x1.00c5p0,  0x1.00c1p0,  0x1.00bdp0,  0x1.00b9p0,  0x1.00b4p0,
+    0x1.00bp0,   0x1.00acp0,  0x1.00a8p0,  0x1.00a4p0,  0x1.00ap0,
+    0x1.009cp0,  0x1.0098p0,  0x1.0094p0,  0x1.009p0,   0x1.008cp0,
+    0x1.0088p0,  0x1.0084p0,  0x1.008p0,   0x1.007cp0,  0x1.0078p0,
+    0x1.0074p0,  0x1.007p0,   0x1.006cp0,  0x1.0068p0,  0x1.0064p0,
+    0x1.006p0,   0x1.005cp0,  0x1.0058p0,  0x1.0054p0,  0x1.005p0,
+    0x1.004cp0,  0x1.0048p0,  0x1.0044p0,  0x1.004p0,   0x1.003cp0,
+    0x1.0038p0,  0x1.0034p0,  0x1.003p0,   0x1.002cp0,  0x1.0028p0,
+    0x1.0024p0,  0x1.002p0,   0x1.001cp0,  0x1.0018p0,  0x1.0014p0,
+    0x1.001p0,   0x1.000cp0,  0x1.0008p0,  0x1.0004p0,  0x1p0,
+    0x1.fff8p-1, 0x1.fffp-1,  0x1.ffe8p-1, 0x1.ffep-1,  0x1.ffd8p-1,
+    0x1.ffdp-1,  0x1.ffc8p-1, 0x1.ffcp-1,  0x1.ffb8p-1, 0x1.ffbp-1,
+    0x1.ffa8p-1, 0x1.ffap-1,  0x1.ff98p-1, 0x1.ff9p-1,  0x1.ff88p-1,
+    0x1.ff8p-1,  0x1.ff78p-1, 0x1.ff7p-1,  0x1.ff68p-1, 0x1.ff6p-1,
+    0x1.ff58p-1, 0x1.ff5p-1,  0x1.ff48p-1, 0x1.ff4p-1,  0x1.ff38p-1,
+    0x1.ff3p-1,  0x1.ff28p-1, 0x1.ff2p-1,  0x1.ff18p-1, 0x1.ff1p-1,
+    0x1.ff08p-1, 0x1.ffp-1,   0x1.fef8p-1, 0x1.fefp-1,  0x1.fee8p-1,
+    0x1.feep-1,  0x1.fed8p-1, 0x1.fedp-1,  0x1.fec8p-1, 0x1.fecp-1,
+    0x1.feb8p-1, 0x1.febp-1,  0x1.fea8p-1, 0x1.feap-1,  0x1.fe98p-1,
+    0x1.fe92p-1, 0x1.fe8ap-1, 0x1.fe82p-1, 0x1.fe7ap-1, 0x1.fe72p-1,
+    0x1.fe6ap-1, 0x1.fe62p-1, 0x1.fe5ap-1, 0x1.fe52p-1, 0x1.fe4ap-1,
+    0x1.fe42p-1, 0x1.fe3ap-1, 0x1.fe32p-1, 0x1.fe2ap-1, 0x1.fe22p-1,
+    0x1.fe1ap-1, 0x1.fe12p-1, 0x1.fe0ap-1, 0x1.fe02p-1, 0x1.fdfap-1,
+    0x1.fdf2p-1, 0x1.fdeap-1, 0x1.fde2p-1, 0x1.fddap-1, 0x1.fdd2p-1,
+    0x1.fdcap-1, 0x1.fdc2p-1, 0x1.fdbap-1, 0x1.fdb2p-1, 0x1.fdaap-1,
+    0x1.fda2p-1, 0x1.fd9ap-1, 0x1.fd92p-1, 0x1.fd8cp-1, 0x1.fd84p-1,
+    0x1.fd7cp-1, 0x1.fd74p-1, 0x1.fd6cp-1, 0x1.fd64p-1, 0x1.fd5cp-1,
+    0x1.fd54p-1, 0x1.fd4cp-1, 0x1.fd44p-1, 0x1.fd3cp-1, 0x1.fd34p-1,
+    0x1.fd2cp-1, 0x1.fd24p-1, 0x1.fd1cp-1, 0x1.fd14p-1, 0x1.fd0cp-1,
+    0x1.fd04p-1, 0x1.fcfcp-1, 0x1.fcf4p-1, 0x1.fcecp-1, 0x1.fce4p-1,
+    0x1.fcdcp-1, 0x1.fcd6p-1, 0x1.fccep-1, 0x1.fcc6p-1, 0x1.fcbep-1,
+    0x1.fcb6p-1, 0x1.fcaep-1, 0x1.fca6p-1, 0x1.fc9ep-1, 0x1.fc96p-1,
+    0x1.fc8ep-1, 0x1.fc86p-1, 0x1.fc7ep-1, 0x1.fc76p-1, 0x1.fc6ep-1,
+    0x1.fc66p-1, 0x1.fc5ep-1, 0x1.fc56p-1, 0x1.fc4ep-1, 0x1.fc46p-1,
+    0x1.fc4p-1,  0x1.fc38p-1, 0x1.fc3p-1,  0x1.fc28p-1, 0x1.fc2p-1,
+    0x1.fc18p-1, 0x1.fc1p-1,  0x1.fc08p-1,
+};
+
 // Logarithm range reduction - Step 3:
 //   r(k) = 2^-21 round(2^21 / (1 + k*2^-21)) for k = -80 .. 80.
 // Output range:
diff --git a/libc/src/math/generic/common_constants.h b/libc/src/math/generic/common_constants.h
index df9d7828bf1609d..13fc8d757cb8ca3 100644
--- a/libc/src/math/generic/common_constants.h
+++ b/libc/src/math/generic/common_constants.h
@@ -34,6 +34,9 @@ extern const double CD[128];
 extern const double LOG_R[128];
 extern const NumberPair<double> LOG_R_DD[128];
 
+// Lookup table for -log2(r)
+extern const double LOG2_R[128];
+
 // Minimax polynomial for (log(1 + x) - x)/x^2, generated by sollya with:
 // > P = fpminimax((log(1 + x) - x)/x^2, 5, [|D...|], [-2^-8, 2^-7]);
 constexpr double LOG_COEFFS[6] = {-0x1.fffffffffffffp-2, 0x1.5555555554a9bp-2,
@@ -45,6 +48,8 @@ extern const int S2[193];
 extern const int S3[161];
 extern const int S4[130];
 
+extern const double R2[193];
+
 // log(2) generated by Sollya with:
 // > a = 2^-43 * nearestint(2^43*log(2));
 // LSB = 2^-43 is chosen so that e_x * LOG_2_HI is exact for -1075 < e_x < 1024.
diff --git a/libc/src/math/generic/log2f.cpp b/libc/src/math/generic/log2f.cpp
index cbb71fb91b10705..7665a90f092359f 100644
--- a/libc/src/math/generic/log2f.cpp
+++ b/libc/src/math/generic/log2f.cpp
@@ -53,52 +53,6 @@
 
 namespace LIBC_NAMESPACE {
 
-// Lookup table for log2(f) = log2(1 + n*2^(-7)) where n = 0..127.
-static constexpr double LOG2_R[128] = {
-    0x0.0000000000000p+0, 0x1.72c7ba20f7327p-7, 0x1.743ee861f3556p-6,
-    0x1.184b8e4c56af8p-5, 0x1.77394c9d958d5p-5, 0x1.d6ebd1f1febfep-5,
-    0x1.1bb32a600549dp-4, 0x1.4c560fe68af88p-4, 0x1.7d60496cfbb4cp-4,
-    0x1.960caf9abb7cap-4, 0x1.c7b528b70f1c5p-4, 0x1.f9c95dc1d1165p-4,
-    0x1.097e38ce60649p-3, 0x1.22dadc2ab3497p-3, 0x1.3c6fb650cde51p-3,
-    0x1.494f863b8df35p-3, 0x1.633a8bf437ce1p-3, 0x1.7046031c79f85p-3,
-    0x1.8a8980abfbd32p-3, 0x1.97c1cb13c7ec1p-3, 0x1.b2602497d5346p-3,
-    0x1.bfc67a7fff4ccp-3, 0x1.dac22d3e441d3p-3, 0x1.e857d3d361368p-3,
-    0x1.01d9bbcfa61d4p-2, 0x1.08bce0d95fa38p-2, 0x1.169c05363f158p-2,
-    0x1.1d982c9d52708p-2, 0x1.249cd2b13cd6cp-2, 0x1.32bfee370ee68p-2,
-    0x1.39de8e1559f6fp-2, 0x1.4106017c3eca3p-2, 0x1.4f6fbb2cec598p-2,
-    0x1.56b22e6b578e5p-2, 0x1.5dfdcf1eeae0ep-2, 0x1.6552b49986277p-2,
-    0x1.6cb0f6865c8eap-2, 0x1.7b89f02cf2aadp-2, 0x1.8304d90c11fd3p-2,
-    0x1.8a8980abfbd32p-2, 0x1.921800924dd3bp-2, 0x1.99b072a96c6b2p-2,
-    0x1.a8ff971810a5ep-2, 0x1.b0b67f4f4681p-2,  0x1.b877c57b1b07p-2,
-    0x1.c043859e2fdb3p-2, 0x1.c819dc2d45fe4p-2, 0x1.cffae611ad12bp-2,
-    0x1.d7e6c0abc3579p-2, 0x1.dfdd89d586e2bp-2, 0x1.e7df5fe538ab3p-2,
-    0x1.efec61b011f85p-2, 0x1.f804ae8d0cd02p-2, 0x1.0014332be0033p-1,
-    0x1.042bd4b9a7c99p-1, 0x1.08494c66b8efp-1,  0x1.0c6caaf0c5597p-1,
-    0x1.1096015dee4dap-1, 0x1.14c560fe68af9p-1, 0x1.18fadb6e2d3c2p-1,
-    0x1.1d368296b5255p-1, 0x1.217868b0c37e8p-1, 0x1.25c0a0463bebp-1,
-    0x1.2a0f3c340705cp-1, 0x1.2e644fac04fd8p-1, 0x1.2e644fac04fd8p-1,
-    0x1.32bfee370ee68p-1, 0x1.37222bb70747cp-1, 0x1.3b8b1c68fa6edp-1,
-    0x1.3ffad4e74f1d6p-1, 0x1.44716a2c08262p-1, 0x1.44716a2c08262p-1,
-    0x1.48eef19317991p-1, 0x1.4d7380dcc422dp-1, 0x1.51ff2e30214bcp-1,
-    0x1.5692101d9b4a6p-1, 0x1.5b2c3da19723bp-1, 0x1.5b2c3da19723bp-1,
-    0x1.5fcdce2727ddbp-1, 0x1.6476d98ad990ap-1, 0x1.6927781d932a8p-1,
-    0x1.6927781d932a8p-1, 0x1.6ddfc2a78fc63p-1, 0x1.729fd26b707c8p-1,
-    0x1.7767c12967a45p-1, 0x1.7767c12967a45p-1, 0x1.7c37a9227e7fbp-1,
-    0x1.810fa51bf65fdp-1, 0x1.810fa51bf65fdp-1, 0x1.85efd062c656dp-1,
-    0x1.8ad846cf369a4p-1, 0x1.8ad846cf369a4p-1, 0x1.8fc924c89ac84p-1,
-    0x1.94c287492c4dbp-1, 0x1.94c287492c4dbp-1, 0x1.99c48be2063c8p-1,
-    0x1.9ecf50bf43f13p-1, 0x1.9ecf50bf43f13p-1, 0x1.a3e2f4ac43f6p-1,
-    0x1.a8ff971810a5ep-1, 0x1.a8ff971810a5ep-1, 0x1.ae255819f022dp-1,
-    0x1.b35458761d479p-1, 0x1.b35458761d479p-1, 0x1.b88cb9a2ab521p-1,
-    0x1.b88cb9a2ab521p-1, 0x1.bdce9dcc96187p-1, 0x1.c31a27dd00b4ap-1,
-    0x1.c31a27dd00b4ap-1, 0x1.c86f7b7ea4a89p-1, 0x1.c86f7b7ea4a89p-1,
-    0x1.cdcebd2373995p-1, 0x1.d338120a6dd9dp-1, 0x1.d338120a6dd9dp-1,
-    0x1.d8aba045b01c8p-1, 0x1.d8aba045b01c8p-1, 0x1.de298ec0bac0dp-1,
-    0x1.de298ec0bac0dp-1, 0x1.e3b20546f554ap-1, 0x1.e3b20546f554ap-1,
-    0x1.e9452c8a71028p-1, 0x1.e9452c8a71028p-1, 0x1.eee32e2aeccbfp-1,
-    0x1.eee32e2aeccbfp-1, 0x1.f48c34bd1e96fp-1, 0x1.f48c34bd1e96fp-1,
-    0x1.fa406bd2443dfp-1, 0x1.0000000000000p0};
-
 LLVM_LIBC_FUNCTION(float, log2f, (float x)) {
   using FPBits = typename fputil::FPBits<float>;
   FPBits xbits(x);
diff --git a/libc/src/math/generic/powf.cpp b/libc/src/math/generic/powf.cpp
new file mode 100644
index 000000000000000..c432a4fa372f24b
--- /dev/null
+++ b/libc/src/math/generic/powf.cpp
@@ -0,0 +1,840 @@
+//===-- Single-precision x^y function -------------------------------------===//
+//
+// 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
+//
+//===----------------------------------------------------------------------===//
+
+#include "src/math/powf.h"
+#include "common_constants.h" // Lookup tables EXP_M1 and EXP_M2.
+#include "src/__support/CPP/bit.h"
+#include "src/__support/CPP/optional.h"
+#include "src/__support/FPUtil/FPBits.h"
+#include "src/__support/FPUtil/PolyEval.h"
+#include "src/__support/FPUtil/double_double.h"
+#include "src/__support/FPUtil/except_value_utils.h"
+#include "src/__support/FPUtil/multiply_add.h"
+#include "src/__support/FPUtil/nearest_integer.h"
+#include "src/__support/FPUtil/rounding_mode.h"
+#include "src/__support/FPUtil/sqrt.h"
+#include "src/__support/builtin_wrappers.h"
+#include "src/__support/common.h"
+#include "src/__support/macros/optimization.h" // LIBC_UNLIKELY
+#include "src/math/exp10f.h"
+#include "src/math/exp2f.h"
+
+#include <errno.h>
+
+namespace LIBC_NAMESPACE {
+
+using fputil::DoubleDouble;
+using fputil::TripleDouble;
+
+namespace {
+
+#ifdef LIBC_TARGET_CPU_HAS_FMA
+constexpr uint64_t ERR = 64;
+#else
+constexpr uint64_t ERR = 128;
+#endif // LIBC_TARGET_CPU_HAS_FMA
+
+// We choose the precision of the high part to be 53 - 24 - 8, so that when
+//   y * (e_x + LOG2_R_DD[i].hi) is exact.
+// Generated by Sollya with:
+// > for i from 0 to 127 do {
+//     r = 2^-8 * ceil(2^8 * (1 - 2^-8) / (1 + i * 2^-7) );
+//     a = -log2(r);
+//     b = round(1 + a, 53 - 24 - 8, RN) - 1;
+//     c = round(a - b, D, RN);
+//     d = round(a - b - c, D, RN);
+//     print("{", d, ",", c, ", ", b, "},");
+//    };
+static constexpr TripleDouble LOG2_R_TD[128] = {
+    {0.0, 0.0, 0.0},
+    {0x1.84a2c615b70adp-79, -0x1.177c23362928cp-25, 0x1.72c8p-7},
+    {-0x1.f27b820fd03eap-76, -0x1.179e0caa9c9abp-22, 0x1.744p-6},
+    {-0x1.f27ef487c8f34p-77, -0x1.c6cea541f5b7p-23, 0x1.184cp-5},
+    {-0x1.e3f80fbc71454p-76, -0x1.66c4d4e554434p-22, 0x1.773ap-5},
+    {-0x1.9f8ef14d5f6eep-79, -0x1.70700a00fdd55p-24, 0x1.d6ecp-5},
+    {0x1.452bbce7398c1p-77, 0x1.53002a4e86631p-23, 0x1.1bb3p-4},
+    {-0x1.990555535afdp-81, 0x1.fcd15f101c142p-25, 0x1.4c56p-4},
+    {0x1.447e30ad393eep-78, 0x1.25b3eed319cedp-22, 0x1.7d6p-4},
+    {0x1.b7759da88a2dap-76, -0x1.4195120d8486fp-22, 0x1.960dp-4},
+    {0x1.cee7766ece702p-78, 0x1.45b878e27d0d9p-23, 0x1.c7b5p-4},
+    {-0x1.a55c745ecdc2fp-77, 0x1.770744593a4cbp-22, 0x1.f9c9p-4},
+    {0x1.f7ec992caa67fp-77, 0x1.c673032495d24p-22, 0x1.097ep-3},
+    {-0x1.433638c6ece3ep-77, -0x1.1eaa65b49696ep-22, 0x1.22dbp-3},
+    {0x1.58f27b6518824p-76, 0x1.b2866f2850b22p-22, 0x1.3c6f8p-3},
+    {-0x1.86bdcfdfd4a4cp-79, 0x1.8ee37cd2ea9d3p-25, 0x1.494f8p-3},
+    {-0x1.ff7044a68a7fap-80, 0x1.7e86f9c2154fbp-24, 0x1.633a8p-3},
+    {-0x1.aa21694561327p-81, 0x1.8e3cfc25f0ce6p-26, 0x1.7046p-3},
+    {-0x1.d209f2d4239c6p-87, 0x1.57f7a64ccd537p-28, 0x1.8a898p-3},
+    {-0x1.a55e97e60e632p-76, -0x1.a761c09fbd2aep-22, 0x1.97c2p-3},
+    {0x1.261179225541ep-76, 0x1.24bea9a2c66f3p-22, 0x1.b26p-3},
+    {-0x1.08fa30510fca9p-82, -0x1.60002ccfe43f5p-25, 0x1.bfc68p-3},
+    {-0x1.63ec8d56242f9p-76, 0x1.69f220e97f22cp-22, 0x1.dac2p-3}...
[truncated]

@lntue
Copy link
Contributor Author

lntue commented Nov 3, 2023

@zimmermann6

Copy link
Contributor

@michaelrj-google michaelrj-google left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Mostly LGTM with some design comments

// d = round(a - b - c, D, RN);
// print("{", d, ",", c, ", ", b, "},");
// };
static constexpr TripleDouble LOG2_R_TD[128] = {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

should these tables be in common_constants.h?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Currently I only move tables to common_constants.h if they are used by at least 2 different targets. Otherwise I only keeping it local to the only target using it. That would reduce the dependency and make common_constants.h less clutter.

switch (x_u) {
case 0x3f80'0000: // x = 1.0f
return 1.0f;
// TODO: Put these 2 entrypoint dependency under control flag.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The usual way to do this is to move the functionality into a shared utility, since we want to avoid depending on other entrypoints

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks like with the current cmake setup, libc.src.errno.errno was compiled differently between object_library and entrypoint_object. That forces any codes using libc_errno to be either header_library or entrypoint_object. I move exp2f and exp10f implementations to exp2f_impl.h and exp10f_impl.h respectively. But I will revisit the cmake setup for object_library so that bigger math functions implementations can be put in a common object_library instead of header_library.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That sounds like a good plan.

DEPENDS
.common_constants
.explogxf
.exp2f
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

is it possible to avoid these dependencies between entrypoints?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done.

@zimmermann6
Copy link

sounds good to me, the performance is very similar to that of core-math on the machine I used

…d with powf and remove dependency between entrypoints.
if (rounding == FE_DOWNWARD || rounding == FE_TOWARDZERO)
return static_cast<float>(FPBits(FPBits::MAX_NORMAL));

fputil::set_errno_if_required(ERANGE);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The usual way we've handled needing to set errno based on internal functions is by returning it in a struct (e.g. str_to_num_result). That would let you make the internal implementations object libraries while also sharing the complicated logic.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

With that structure, the errno check-and-set logic will be delegated to the entrypoint implementations, which will insert this extra checks in the critical path (of exp2f, exp10f), instead of exceptional input code path. This reduces the throughputs of exp2f and exp10f substantially, since their reciprocal throughputs are only few clocks.

So for performance reason, we keep the logic in exp2f and exp10f unmodified, making them acting as entrypoint functions without registering as such, that will be delegated by powf with special inputs.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

that makes sense, in that case I'm okay with this.

#include "src/__support/builtin_wrappers.h"
#include "src/__support/common.h"
#include "src/__support/macros/optimization.h" // LIBC_UNLIKELY
#include "src/math/exp10f.h"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

does this include need to be here?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Removed

Copy link
Contributor

@michaelrj-google michaelrj-google left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@lntue lntue merged commit bc7a3bd into llvm:main Nov 6, 2023
4 checks passed
@lntue lntue deleted the powf branch November 6, 2023 21:54
fadlyas07 pushed a commit to greenforce-project/llvm-project that referenced this pull request Nov 11, 2023
* llvm-project/main:
  [llvm] Stop including llvm/ADT/PointerIntPair.h (NFC)
  [mlir] Stop including llvm/ADT/Any.h (NFC)
  [clang] Replace uses of CreatePointerBitCastOrAddrSpaceCast (NFC) (llvm#68277)
  [ConstraintElim] Remove redundant debug output (NFC).
  [VPlan] Handle conditional ordered reductions with scalar VFs.
  [clang][CodeGen] Regenerate `wasm-eh.cpp` test (NFC)
  [clang-tidy][DOC] Add relase notes for bugprone-sizeof-expression
  [clang-tidy] Tweak diag ranges for bugprone-sizeof-expression
  [clang-tidy][DOC] Add release notes for modernize-avoid-bind
  [clang-tidy] modernize-avoid-bind: Fix handling of operators
  [mlir][bazel] Fix build for 00c3c73
  [mlir][gpu] Fix build error after barrier elimination code moved (llvm#72019)
  [clang][CodeGen] Ensure consistent `mustprogress` attribute emission
  [llvm] Stop including llvm/ADT/SmallPtrSet.h (NFC)
  [llvm] Stop including llvm/ADT/DenseMapInfo.h (NFC)
  [llvm] Stop including llvm/ADT/MapVector.h (NFC)
  [llvm] Stop including llvm/ADT/SetVector.h (NFC)
  [llvm] Stop including llvm/ADT/StringMap.h (NFC)
  [RISCV][GISel] Promote s32 constant shift amounts to s64 on RV64.
  [ELF] Improve symbol resolution tests related to both DSO and archive
  [clangd] Check for valid location in ExtractionContext::exprIsValidOutside (llvm#71162)
  [ELF] Improve symbol resolution tests related to both DSO and archive
  [RISCV] Add an add.uw pattern using zext for -riscv-experimental-rv64-legal-i32 and global isel
  [RISCV][GISel] Add isel patterns for SHXADD with s32 type on RV64.
  [RISCV] Peek through zext in selectShiftMask.
  [RISCV] Add test case showing unnecessary zext of shift amounts with -riscv-experimental-rv64-legal-i32. NFC
  [LLDB] Ensure the data of apple accelerator tables is kept around (llvm#71828)
  [mlir][gpu] Separate the barrier elimination code from transform ops (llvm#71762)
  [Analysis] Make test require asserts
  Revert "Revert "[IR] Mark lshr and ashr constant expressions as undesirable""
  Revert "Revert "[Clang] Generate test checks (NFC)""
  Revert "[Clang] Generate test checks (NFC)"
  Revert "[IR] Mark lshr and ashr constant expressions as undesirable"
  [Attributor] New attribute to identify what byte ranges are alive for an allocation (llvm#66148)
  Fix a little thinko in sending events to secondary listeners. (llvm#71997)
  [lldb] Read Checksum from DWARF line tables (llvm#71458)
  [OpenMP][FIX] Ensure device reduction geps work for multi-var reductions
  [mlir][vector] Drop incorrect startRootUpdate calls in vector distribution (llvm#71988)
  [lldb] Fix a off-by-one error in ParseSupportFilesFromPrologue (llvm#71984)
  [AMDGPU] Simplify commuted operand handling. NFCI. (llvm#71965)
  [SampleProfile] Fix bug where remapper returns empty string and crashing Sample Profile loader (llvm#71479)
  [clang-format] Handle variable declarations in BreakAfterAttributes (llvm#71935)
  [BOLT][DWARF] Fix --dwarf-output-path (llvm#71886)
  [asan] Report executable/DSO name for report_globals=2 and odr-violation checking (llvm#71879)
  [RISCV][GISel] Legalizer and register bank selection for G_JUMP_TABLE and G_BRJT (llvm#71970)
  [OpenMP] Rework handling of global ctor/dtors in OpenMP (llvm#71739)
  [lldb] Change interface of StructuredData::Array::GetItemAtIndexAsDictionary (llvm#71961)
  [mlir][sparse] support sparsifying 2:4 block sparsity (llvm#71749)
  [libc] Fix missing ; in spec.td. (llvm#71977)
  Fix WebKit static analyzers to support ref and deref methods to be defined on different classes. (llvm#69985)
  [gold] Enable `MCTargetOptions::AsmVerbose` along with `emit-asm` (llvm#71606)
  [lldb] Only run ignored_artificial_fields.test when gcc is available.
  [mlir][vector] Notify the rewriter when sinking out of warp ops (llvm#71964)
  Revert "[Support]Look up in top-level subcommand as a fallback when looking options for a custom subcommand (llvm#71975)
  [OMPIRBuilder] Do not call __kmpc_push_num_threads for device parallel (llvm#71934)
  [libc][math] Add initial support for C23 float128 math functions, starting with copysignf128. (llvm#71731)
  [builtins] Guard the divtc3_test.c test with CRT_HAS_TF_MODE (llvm#71876)
  [TOSA] Add TosaToMLProgram conversion (llvm#69787)
  [Docs] Instructions for new contributors to find reviewers (llvm#71936)
  [Clang][BPF] Add __BPF_CPU_VERSION__ macro (llvm#71856)
  [clang-tidy][NFC] Reduce map lookups in IncludeSorter
  [mlir][vector] Take dim sizes into account in DropInnerMostUnitDims. (llvm#71752)
  [Support]Look up in top-level subcommand as a fallback when looking options for a custom subcommand. (llvm#71776)
  [AMDGPU] Call the `FINI_ARRAY` destructors in the correct order (llvm#71815)
  [SLP][NFC]Add a test for gather node with mixed load/non-load scalars.
  [flang][windows] Add option to link against specific MSVC CRT (llvm#70833)
  [Sema] Fix strict ordering in overload candidate comparisons
  Revert "[AMDGPU] Call the `FINI_ARRAY` destructors in the correct order (llvm#71815)"
  [InstCombine] Avoid use of shift constant expressions (NFCI)
  [mlir] Add sm_90a GEMM test 128x128x128 (F32 += F16 * F16) (llvm#69913)
  [mlir] Add sm_90a GEMM test 128x128x128 (F32 =F16*F16) with predicate (llvm#70028)
  Update test to consider incompatible align attribute
  [mlir] Fix sm90 test for new verifier
  [libc] Update configure.rst after config.json modification (llvm#71942)
  [AMDGPU] Call the `FINI_ARRAY` destructors in the correct order (llvm#71815)
  [NVPTX] Allow the ctor/dtor lowering pass to emit kernels (llvm#71549)
  [Clang] Add missing REQUIRES to tests (NFC)
  [IR] Mark lshr and ashr constant expressions as undesirable
  [Clang] Generate test checks (NFC)
  [InstCombine] Require immediate constant in canEvaluateShifted()
  [mlir][vector] Add distribution pattern for vector.create_mask (llvm#71619)
  [clang][deps] Skip writing `DIAG_PRAGMA_MAPPINGS` record (llvm#70874)
  [InstCombine] Avoid uses of ConstantExpr::getLShr()
  [InstCombine] Avoid some uses of ConstantExpr::getLShr() (NFC)
  [Driver][LTO] Copy fix empty stats filename to AIX (llvm#71738)
  [Clang][SME2] Add single and multi min and max builtins (llvm#71688)
  [mlir][vector] NFC: Rename helper to check for all ones mask for consistency (llvm#71810)
  [InstCombine] Remove bitcast handling from SimplifyDemandedBits
  [AIX] Enable tests relating to 64-bit XCOFF object files (llvm#71814)
  [ConstantFolding] Avoid use of ConstantExpr::getLShr() (NFC)
  [AMDGPU][NFC] Eliminate unnecessary TableGen casts. (llvm#71802)
  [AMDGPU] Fix operand definitions for atomic scalar memory instructions. (llvm#71799)
  [NFC] [docs] Clarify we are talking about a function
  [ConstantFolding] Remove unnecessary pointer handling in FoldBitCast (NFCI)
  [mlir][vector] Root the transfer write distribution pattern on the warp op (llvm#71868)
  Revert "[lldb] Remove the newly-added test in 66acd1e"
  Revert "ValueTracking: Identify implied fp classes by general fcmp (llvm#66505)"
  [AArch64][GlobalISel] Expand handling for sitofp and uitofp (llvm#71282)
  [RISCV][SDAG] Prefer ShortForwardBranch to lower sdiv by pow2 (llvm#67364)
  Reland "[lldb][test] Only add -m(64|32) for GCC on non Arm/AArch64 platforms"
  Rehome libcxx-builder docker image & attempt gentler termination. (llvm#71604)
  [flang][OpenMP] Skip default privatization for crashing cases (llvm#71922)
  Revert "[lldb][test] Only add -m(64|32) for GCC on non Arm/AArch64 platforms"
  [llvm][docs] Fix typo in Contributing guide
  [clangd] Fix builds after 0255b21
  [lldb][test] Only add -m(64|32) for GCC on non Arm/AArch64 platforms
  [lldb] Remove the newly-added test in 66acd1e
  [AMDGPU] Fix GCNUpwardRPTracker. (llvm#71186)
  [lldb][docs] Update Discord invite link
  [IRBuilder] Add IsNonNeg param to CreateZExt() (NFC)
  [flang][driver] add -flang-deprecated-no-hlfir hidden option (llvm#71820)
  [clang][Interp][NFC] Use direct Get{Local,Global} when possible
  Revert "[clang-format] Handle variable declarations in BreakAfterAttributes (llvm#71755)"
  [libc] Adding a version of memset with software prefetching (llvm#70857)
  Reland "[clang-format] Handle variable declarations in BreakAfterAttributes (llvm#71755)"
  [LLDB] Ignore actual-needed artificial members in DWARFASTParserClang::ParseSingleMember (llvm#70779)
  [llvm][lldb][Docs] Add release note for register field info in lldb-server
  [lldb][AArch64][Linux] Add register field information for SME's SVCR register (llvm#71809)
  Revert "[ARM][FPEnv] Lowering of fpenv intrinsics"
  [clang-format][NFC] Refactor isPointerOrReference
  [ARM][FPEnv] Lowering of fpenv intrinsics
  [bazel] Add missing deps for libc's exp2f_impl and exp10f_impl targets.
  [gn build] Port 0255b21
  [clangd] Add tweak for turning an unscoped into a scoped enum (llvm#69481)
  [lldb][AArch64][Linux] Add field information for the mte_ctrl register (llvm#71808)
  [RISCV] Add missing component Scalar (llvm#71905)
  [sanitizer][msan] fix AArch64 vararg support for KMSAN (llvm#70660)
  [AMDGPU] si-wqm: Skip only LiveMask COPY
  [flang][OpenMP] Fix common block missing symbol crash (llvm#67330)
  [lld][ELF] Add a corner testcase for elf::getLoongArchPageDelta
  AMDGPU: Use an explicit triple in test to avoid bot failures
  [gn build] Port f7d7847
  [LoongArch][MC] Refine MCInstrAnalysis based on registers used (llvm#71276)
  [mlir][linalg] Add an e2e test for linalg.matmul_transpose_a to ArmSME (llvm#71644)
  [mlir][ArmSME] Lower transfer_write + transpose to vertical store (llvm#71181)
  [BOLT][AArch64] Fix ADR relaxation (llvm#71835)
  [BOLT] Read .rela.dyn in static non-pie binary (llvm#71635)
  [BOLT][AArch64] Fix strict usage during ADR Relax (llvm#71377)
  [RISCV] Enable LoopDataPrefetch pass (llvm#66201)
  Revert "[clang-format] Handle variable declarations in BreakAfterAttributes (llvm#71755)"
  CodeGenPGO: simplify. NFC
  [X86][AVX10] Permit AVX512 options/features used together with AVX10 (llvm#71318)
  [mlir] Fix handling of "no rank reduction" case in two Patterns (llvm#71293)
  Reorder HipStdPar.h after D155856. NFC
  [clang-format] Handle variable declarations in BreakAfterAttributes (llvm#71755)
  [RISCV][GISel] Add support for G_FCMP with F and D extensions. (llvm#70624)
  [RISCV] Use Align(8) for the stack temporary created for SPLAT_VECTOR_SPLIT_I64_VL.
  [RISCV][GISel] Add regbank select for G_INVOKE_REGION_START.
  [C++20] [Modules] Enhance better diagnostic for implicit global module and module partitions
  ValueTracking: Identify implied fp classes by general fcmp (llvm#66505)
  fix a typo
  [Clang][OpenMP] Return empty QualType when a negative array was created (llvm#71552)
  [CUDA][HIP] Make template implicitly host device (llvm#70369)
  Reapply "RegisterCoalescer: Generate test checks"
  [GISel] Make target's PartMapping, ValueMapping, and BankIDToCopyMapIdx arrays const. (llvm#71079)
  [libc++] Update Clang version check in __config (llvm#71849)
  [gn build] Port f6d525f
  [gn build] Port b002b38
  [gn build] Properly set _LIBCPP_HARDENING_MODE_DEFAULT
  [mlir][resources] Add elideLargeResourceString OpPrintingFlags API (llvm#71829)
  [RISCV][GISel] Legalize G_BITREVERSE.
  [YAMLParser] Unfold multi-line scalar values (llvm#70898)
  [YAMLParser] Fix handling escaped line breaks in double-quoted scalars (llvm#71775)
  [X86] Respect blockaddress offsets when performing X86 LEA fixups (llvm#71641)
  [YAMLParser] Enable tests for flow scalar styles. NFC (llvm#71774)
  [mlir][gpu] Eliminate redundant gpu.barrier ops (llvm#71575)
  [OpenMP][SystemZ] Compile __kmpc_omp_task_begin_if0() with backchain (llvm#71834)
  [InstCombine] Fix buggy transform in `foldNestedSelects`; PR 71330
  [InstCombine] Add reduced test for PR 71330; NFC
  [DebugInfo][RemoveDIs] Add conversion utilities for new-debug-info format
  [XCOFF] Ensure .file is emitted before any .info pseudo-ops (llvm#71577)
  [NFC][asan] Change asan_init and asan_init_is_running; add setters/getters
  [ASan] Clang-format for llvm#71833
  [mlir][sparse] temporarily disable BSR GPU libgen tests. (llvm#71870)
  [lldb] Change interface of StructuredData::Array::GetItemAtIndexAsString (llvm#71613)
  [lldb] Change Breakpoint::AddName return value (llvm#71236)
  [TextAPI] Add error code for invalid input formats (llvm#71824)
  [RISCV][GISel] Enable libcall expansion for G_FCEIL and G_FFLOOR.
  [scudo] Relax MemtagTag.SelectRandomTag. (llvm#68048)
  [runtimes] Add a qemu-system executor script (llvm#68643)
  [gn] port 64d413e (hardening mode)
  [sanitizer_common] Fix build breakage by guarding #include <dlfcn.h>
  [flang][openacc] Avoid creation of duplicate global ctor (llvm#71846)
  [sanitizer_common] Add experimental flag to tweak dlopen(<main program>) (llvm#71715)
  [OpenMP] Fix record-replay allocation order for kernel environment (llvm#71863)
  [BOLT] Run EliminateUnreachableBlocks in parallel (llvm#71299)
  Revert "[lldb] Read Checksum from DWARF line tables" (llvm#71864)
  [mlir][sparse] re-enable aarch64 test. (llvm#71855)
  [mlir][tensor] Fold when source is const (llvm#71643)
  [CodeGen][LLT] Add isFixedVector and isScalableVector (llvm#71713)
  [BOLT] Fix typos (llvm#68121)
  [mlir][sparse] try fix flanky test. (llvm#71845)
  [libc++] Remove outdated _LIBCPP_CLANG_VER check (llvm#71759)
  [libc++][AIX] Adjust support of timespec_get test (llvm#71827)
  [mlir][sparse] disable aarch64 test to fix buildbot error. (llvm#71818)
  [NFC][InstrProf]Refactor readPGOFuncNameStrings (llvm#71566)
  [OpenMP] Fix a condition for KMP_OS_SOLARIS. (llvm#71831)
  [RISCV] Disable Zbs special case in performTRUNCATECombine with -riscv-experimental-rv64-legal-i32.
  [CodeGen] Revamp counted_by calculations (llvm#70606)
  [BOLT][DWARF] Fix invalid address ranges (llvm#71474)
  [RISCV] Disable early promotion for Zbs in performANDCombine with riscv-experimental-rv64-legal-i32
  [IR][NFC] Fix warnings for variables that are only used in assertions
  [RISCV] Support R_RISCV_SET_ULEB128/R_RISCV_SUB_ULEB128 for .uleb128 directives
  [llvm][TextAPI] Add new `not_for_dyld_shared_cache` attribute to file… (llvm#71735)
  [ADT][NFC] Remove Bitset comments copied from FeatureBitset (llvm#71778)
  [clang-tidy] readability-identifier-naming: add support for concepts (llvm#71586)
  [UTC] Escape multiple {{ or }} in input for check lines. (llvm#71790)
  [RISCV] Add BSET/BCLR/BINV/BEXT patterns for riscv-experimental-rv64-legal-i32.
  Obsolete WebKit Calling Convention (llvm#71567)
  [llvm][metadata][NFC] Minimize local variable scopes (llvm#68438)
  [lldb] Read Checksum from DWARF line tables (llvm#71458)
  Make SmallVectorImpl destructor protected (llvm#71746)
  [mlir][vector] Fix cases with multiple yielded transfer_read ops (llvm#71625)
  [AArch64][GlobalISel] Legalize G_VECREDUCE_{MIN/MAX} (llvm#69461)
  [RISCVInsertVSETVLI] Allow PRE with non-immediate AVLs (llvm#71728)
  [scudo] document allocation_ring_buffer_size (llvm#71812)
  [clang][dataflow] Fix buggy assertion: Compare an unqualified type to an unqualified type. (llvm#71573)
  [X86] Support EGPR (R16-R31) for APX (llvm#70958)
  Revert "[SROA] Limit the number of allowed slices when trying to split allocas"
  [DebugInfo][RemoveDIs] Add new behind-the-scenes plumbing for debug-info
  [LLD][COFF] Fix `/dependentloadflag` tests with AArch64
  [libc][fix] Call GPU destructors in the correct order
  [UTC] Add test where double braces need to be escaped.
  [MemCpyOpt] Require writable object during call slot optimization (llvm#71542)
  [mlir][vector] Add pattern to distribute masked reads (llvm#71610)
  [MLIR][Affine] Generalize/fix mdg init for region-holding ops with known control flow (llvm#71754)
  [Flang][OpenMP] Finalize Statement context of clauses before op creation (llvm#71679)
  [Flang][OpenMP] Process reduction only once for parallel do (llvm#70844)
  [CFIInstrInserter] Use number of supported registers (NFC) (llvm#71797)
  [NFC][RemoveDIs] Shuffle header inclusions for "new" debug-info
  [lldb][Utility] Fix GCC suggest braces warning for checksum value
  [NFC][TableGen] Update CHECK lines in test typeof-errors.td
  [ExpandMemCmp] Improve memcmp optimisation for boolean results (llvm#71221)
  [doc] Add casting style preference to coding standards
  [InstCombine] Drop poison flags in simplifyAssocCastAssoc()
  [InstCombine] Add test for zext nneg miscompile (NFC)
  [lldb][AArch64][Linux] Fix HWCAP constant sizes when built on 32 bit
  [mlir][ArmSME] Add constructor for `-convert-vector-to-arm-sme` pass (NFC) (llvm#71705)
  [LAA] Add tests for llvm#69744.
  Update tests after landing llvm#71693 (fbc6520)
  [C++20] [Modules] Allow export from language linkage
  [lldb][AArch64][Linux] Add fields for FPCR register (llvm#71694)
  [BranchFolding] Remove dubious assert from operator< (llvm#71639)
  [JITLink][AArch32] Unittest for error paths of readAddend and applyFixup functionality (llvm#69636)
  [llvm-dwarfdump] pretty-print DW_AT_call_origin reference (llvm#71693)
  [JITLink][AArch32] Add support for ELF::R_ARM_THM_MOV{W_PREL_NC,T_PREL} (llvm#70364)
  [X86] Return more accurate getNumSupportedRegs() (NFC) (llvm#71690)
  [lldb][AArch64][Linux] Add field information for the fpsr register (llvm#71651)
  [BOLT] Fix typo in test
  [compiler-rt][www] replace deprecated LLVM_CONFIG_PATH with LLVM_CMAKE_DIR (llvm#71500)
  [clang][dataflow][NFC] Fix stale comments. (llvm#71654)
  [NFC] [C++20] [Modules] Remove 'ModuleInterface' bit in Sema::ModuleScope
  [RISCV][NFC] Pass MCSubtargetInfo instead of FeatureBitset in RISCVMatInt (llvm#71770)
  [mlir][llvmir] fix docs (llvm#71765)
  [clang][Interp] Consider bit width in IntegralAP::toAPSInt() (llvm#71646)
  [Coroutines] Introduce [[clang::coro_only_destroy_when_complete]] (llvm#71014)
  [RISCV] Add a Zbb+Zbs command line to rv*zbs.ll to get coverage on an existing isel pattern. NFC
  [OpenMP] Cleanup and fixes for ABI agnostic DeviceRTL (llvm#71234)
  Revert "Revert "[AMDGPU] const-fold imm operands of (llvm#71669)
  [SimplifyCFG] Fix the compile crash for invalid upper bound value (llvm#71351)
  [lldb] Add Checksum to FileSpec (llvm#71457)
  [libc++][ASan] Removing clang version checks (llvm#71673)
  [clang-format] Add ability for clang-format-diff to exit with non-0 status (llvm#70883)
  [RISCV] Support Strict FP arithmetic Op when only have Zvfhmin (llvm#68867)
  [MLIR][Affine] NFC. Move misplaced MDG init method (llvm#71665)
  [MLIR][Affine] NFC. Fix stale  comments and style in affine libraries (llvm#71660)
  [lldb] Fix assert in ScriptedProcess destructor (llvm#71744)
  Improve VSCode DAP logpoint value summary (llvm#71723)
  [BOLT][AArch64] Fix ifuncs test header inclusion (llvm#71741)
  Revert "[Pass][CodeGen] Add some necessary passes for codegen (llvm#70903)"
  [lld][MachO] Prevent doubled N_SO when comp_dir and name absolute (llvm#71608)
  [libc++][hardening] Fix references to old names for hardening modes (llvm#71743)
  [mlir][cmake] export list of CAPI libs (llvm#71722)
  [flang][hlfir] patch for assumed shape dummy with VALUE keyword when lowering to HLFIR (llvm#70391)
  [mlir][vector] Add folders for full constant transfer masks (llvm#71676)
  [ELF] Fix assertion in cdsort (llvm#71708)
  [LLD][COFF] Support /DEPENDENTLOADFLAG[:flags] (llvm#71537)
  [flang] Change `uniqueCGIdent` separator from `.` to `X` (llvm#71338)
  Fix SmallVector usage in SerailzeToHsaco (llvm#71702)
  Revert "Reland [clang] Canonicalize system headers in dependency file when -canonical-prefixes" (llvm#71697)
  [AMDGPU] Add inreg support for SGPR arguments (llvm#67182)
  [mlir][sparse] end-to-end matmul between Dense and BSR tensors (llvm#71448)
  [libc++][hardening] Rework macros for enabling the hardening mode. (llvm#70575)
  [gn build] Port c6cf329
  [CodeGen] Implement post-opt linking option for builtin bitocdes (llvm#69371)
  [BOLT] Follow-up to "Fix incorrect basic block output addresses" (llvm#71630)
  Make DWARFUnitVector threadsafe. (llvm#71487)
  [gn build] Port 7ef7a92
  [lldb] Add Checksum class to lldbUtility (llvm#71456)
  Simplify ValueObject::GetQualifiedRepresentationIfAvailable(). (llvm#71559)
  [mlir][sparse][gpu] cleanup GPUDataTransferStrategy (llvm#71615)
  [scudo] Calling initCache() in init() of SizeClassAllocatorLocalCache (llvm#71427)
  [InstSimplify] Precommit extra tests for PR71528
  [GuardWidening] Require analyses only if necessary
  [libc++][CI] Adds a new CMake version in Docker. (llvm#71582)
  Implement syncstream (p0053)
  Reapply 7d77bbe, adding new debug-info classes
  [X86] Add fabs test coverage for Issue llvm#70947
  [X86] vec_fabs.ll - add AVX2 test coverage
  [OpenMP] Add skewed iteration distribution on hybrid systems (llvm#69946)
  [OCaml] Fix tests after const_uitofp removal (NFC)
  [CVP] Fix use after scope
  [InstCombine] Handle scalable geps in EmitGEPOffset (llvm#71565)
  [InstSimplify] Check call for FMF instead of CtxI (llvm#71585)
  [lldb][test] Skip ScriptedProcess missing methods test on Windows
  [llvm][AArch64][NFC] Correct 70ea64d
  [llvm][AArch64][NFC] Correct AArch64Combine.td filename in license comment
  [SystemZ] Do not run mbackchain-4.c test without SystemZ target (llvm#71678)
  [AArch64] Remove unused variable 'MaskSize' in GenerateFixedLengthSVETBL (NFC)
  [AArch64][SME] Shuffle lowering, assume that the minimal SVE register is 128-bit, when NOEN is not available. (llvm#71647)
  [flang] Fix typo in ExpressionAnalyzer::CheckIntrinsicKind, NFC
  [ConstraintElim] Make sure add-rec is for the current loop.
  Revert "[DAGCombiner] Transform `(icmp eq/ne (and X,C0),(shift X,C1))` to use rotate or to getter constants." due to a miscompile (llvm#71598)
  [SystemZ] Add backchain target-feature (llvm#71668)
  [ConstraintElim] Add test for mis-compile with adjacent loops.
  [CVP] Try to fold sdiv to constant
  [CVP] Add additional sdiv tests (NFC)
  [mlir][python] Add support for arg_attrs and other attrs to NamedSequenceOp
  [clangd] Allow hover over 128-bit variable without crashing (llvm#71415)
  [AMDGPU] Fix -Wunused-variable in SIFrameLowering.cpp (NFC)
  [clang][NFC] Partially annotate `IdentifierInfo` with `preferred_type`
  [mlir] Fix -Wsign-compare in NVGPUDialect.cpp (NFC)
  [InstSimplify] Precommit test for PR71528
  [gn build] Port e28157e
  Revert "[clangd] Allow hover over 128-bit variable without crashing (llvm#71415)"
  Revert "[AMDGPU] const-fold imm operands of amdgcn_update_dpp intrinsic (llvm#71139)"
  [IndVars] Add check of loop invariant for trunc instructions (llvm#71072)
  [MLIR][NVGPU] Improve and Cleanup verifier of TMA OPs (llvm#70923)
  [BOLT] Support instrumentation hook via DT_FINI_ARRAY (llvm#67348)
  Fix MSVC "not all control paths return a value" warning. NFC.
  [X86] LowerABD - remove freeze from abd*(lhs, rhs) -> trunc(abs(sub(*ext(lhs), *ext(rhs))))
  [X86] Add test coverage for ABDS/ABDU patterns with mismatching extension types
  [clangd] Allow hover over 128-bit variable without crashing (llvm#71415)
  [SCEV] Support larger than 64-bit types in ashr(add(shl(x, n), c), m) (llvm#71600)
  [clang-tidy] Improve performance-enum-size to exclude empty enums (llvm#71640)
  Revert "[OpenMP] atomic compare fail : Parser & AST support"
  [lldb][AArch64][Linux] Add field information for the CPSR register (llvm#70300)
  [InstCombine] Remove inttoptr/ptrtoint handling from indexed compare fold
  [RegScavenger] Simplify state tracking for backwards scavenging (llvm#71202)
  [clang][Interp] Fix creating APSInt from IntegralAP (llvm#71410)
  [AMDGPU] const-fold imm operands of amdgcn_update_dpp intrinsic (llvm#71139)
  [mlir][python] Reland - Add sugared builder for transform.named_sequence
  Revert "[mlir][python]Add sugared buider for transform.named_sequence (llvm#71597)"
  Revert "[mlir][python] NFC - Lint fix"
  [TableGen][GlobalISel] Add MIFlags matching & rewriting (llvm#71179)
  [NFC] turn comment into static_assert (llvm#71504)
  [lldb][AArch64][Linux] Add SME2 release notes and usage docs (llvm#70935)
  [AArch64] (NFC) Fix test after loosening requirements for register renaming (llvm#71634)
  [mlir][python] NFC - Lint fix
  [mlir][ArmSME] Add support for lowering masked tile_load ops (llvm#70915)
  [AMDGPU] ISel for llvm.amdgcn.set.inactive.chain.arg
  [mlir][python]Add sugared buider for transform.named_sequence (llvm#71597)
  [InstCombine] Infer zext nneg flag (llvm#71534)
  [clang][Interp][NFC] Fix right shifting signed IntegralAP values
  [AMDGPU][PEI] Set up SP for chain functions
  [RISCV][GISel] Use default lowering for G_DYN_STACKALLOC.
  [AMDGPU] Add llvm.amdgcn.set.inactive.chain.arg intrinsic (llvm#71530)
  [BOLT][AArch64] Handle IFUNCS properly (llvm#71104)
  [BOLT][AArch64] Don't change layout in PatchEntries (llvm#71278)
  [AMDGPU] Callee saves for amdgpu_cs_chain[_preserve] (llvm#71526)
  [Pass][CodeGen] Add some necessary passes for codegen (llvm#70903)
  [lldb/test] Fix TestScriptedProcess.py failures on arm linux bots
  [Pass] Support MachineFunction in getIRName (llvm#70901)
  [TableGen][GlobalISel] Add rule-wide type inference (llvm#66377)
  [TSAN] Add __tsan_check_no_mutexes_held helper (llvm#71568)
  [PowerPC] Fix incorrect symbol name of frexp libcall (llvm#71626)
  [lldb] Check for abstract methods implementation in Scripted Plugin Objects (llvm#71260)
  [mlir][Tensor] Fold destination-style ops into `tensor.unpack` operation. (llvm#71468)
  [RISCV] Use masked pseudo peephole for reduction pseudos (llvm#71508)
  [SEH] Fix assertin when return scalar value from __try block. (llvm#71488)
  [clang][dataflow] Expand debug dumping of `Value`s. (llvm#71527)
  [OpenMP ]Adding more libomptarget reduction tests (llvm#71616)
  [clang][dataflow] Replace one remaining call to deprecated `addToFlowCondition()`. (llvm#71547)
  [NFC] Add f128 frexp intrinsics for PowerPC
  [AMDGPU] Move WWM register pre-allocation to during regalloc (llvm#70618)
  [OpenMP] Add a missing 'const' (NFC) (llvm#71596)
  [libc++][hardening] Add `_LIBCPP_ASSERT_NON_NULL` to check for null pointers (llvm#71428)
  [mlir][python] factor out pure python core sources (llvm#71592)
  Revert "[PM] Execute IndVarSimplifyPass precede RessociatePass" (llvm#71617)
  [PM] Execute IndVarSimplifyPass precede RessociatePass (llvm#71054)
  [OpenMP][FIX] Fix the compile error introduced by reverting eab828d
  [RISCV][GISel] Add support for G_SITOFP/G_UITOFP with F and D extensions.
  Revert "[OpenMP] Provide a specialized team reduction for the common case (llvm#70766)"
  [clang][DepScan] Make OptimizeArgs a bit mask enum and enable by default (llvm#71588)
  [libc][FIXME] Disable math tests to make the GPU bots green (llvm#71603)
  Revert "[DebugMetadata][DwarfDebug] Support function-local types in lexical block scopes (4/7)"
  [OpenMP] atomic compare fail : Parser & AST support
  [mlir][vector] Add support for distributing masked writes (llvm#71482)
  [MachineVerifier] Fix COPY check in MachineVerifier for scalable vectors
  [flang][openacc] Allow constant variable in data clause (llvm#71580)
  [ORC] Remove an unused typedef.
  [BOLT] Move instrumentation option check (NFC) (llvm#71581)
  [BOLT] Fix typo (NFC) (llvm#71579)
  [InstCombine] Favour `CreateZExtOrTrunc` in `narrowFunnelShift` (NFC)
  Revert "[lldb] Check for abstract methods implementation in Scripted Plugin Objects (llvm#71260)"
  Changed the phrase sparse-compiler to sparsifier in comments (llvm#71578)
  [lldb] Check for abstract methods implementation in Scripted Plugin Objects (llvm#71260)
  [openacc] Remove duplicate operand from LoopOp getDataOperand (llvm#71576)
  [CodeGen][MachineVerifier] Use TypeSize instead of unsigned for getRe… (llvm#70881)
  [clang][NFC] Add a missing comment to llvm#71322 changes
  [lldb] BreakpointResolver{*}::CreateFromStructuredData should return shared pointers (llvm#71477)
  [libc][NFC] Remove libcpp include from atanf_test (llvm#71449)
  [RISCV][GISel] Add support for G_FPTOSI/G_FPTOUI with F and D extensions.
  [mlir][vector] Remove obsolete mask docs in transfer_write op (llvm#71490)
  [JITLink][AArch32] Add test for ELF::R_ARM_THM_MOV{W_ABS_NC,T_ABS} (llvm#70346)
  [lldb/Interpreter] Make Scripted*Interface base class abstract (llvm#71465)
  [lldb] Fix calls to Type::getInt8PtrTy (llvm#71561)
  [clang] Remove no-op ptr-to-ptr bitcasts (NFC)
  APFloat: Add some missing function declarations
  [mlir][python] value casting (llvm#69644)
  [RISCV] Add processor definition for XiangShan-NanHu (llvm#70294)
  [OpenMP][Offload] Automatically map indirect function pointers (llvm#71462)
  [NFC] Remove Type::getInt8PtrTy (llvm#71029)
  [RISCV][Clang][TargetParser] Support getting feature unaligned-scalar-mem from mcpu. (llvm#71513)
  [InstCombine] Check FPMathOperator for Ctx before FMF check
  [indvars] Always fallback to truncation if AddRec widening fails (llvm#70967)
  Silence diagnostics about not all control paths returning a value; NFC
  [Clang][SME2] Add multi-vector add/sub builtins (llvm#69725)
  [Clang][OpenMP] fixed crash due to invalid binary expression in checking atomic semantics (llvm#71480)
  Test update after a7f35d
  Disable UBSan vptr tests on Android.
  [SCEV] Extend isImpliedCondOperandsViaRanges to independent predicates (llvm#71110)
  Revert "[TSAN] Add __tsan_check_no_mutexes_held helper (llvm#69372)"
  [C++20] [Modules] Don't import function bodies from other module units even with optimizations (llvm#71031)
  Revert "Reland "clang][DebugInfo] Emit global variable definitions for static data members with constant initializers (llvm#70639)""
  [clang][dataflow] Fix -Wrange-loop-construct in DataflowAnalysisContext.cpp (NFC)
  [AMDGPU] PromoteAlloca: Handle load/store subvectors using non-constant indexes (llvm#71505)
  [clang][dataflow] Simplify flow conditions displayed in HTMLLogger. (llvm#70848)
  Revert "RegisterCoalescer: Generate test checks"
  Revert "Reapply "RegisterCoalescer: Add implicit-def of super register when coalescing SUBREG_TO_REG""
  [mlir][memref] Add memref alias folding for masked transfers (llvm#71476)
  [InstSimplify] Remove redundant simplifyAndOrOfICmpsWithZero() fold (NFCI)
  RegisterCoalescer: Clear isSSA property
  [NFC][MLIR][OpenMP] Add test for lowering omp target parallel (llvm#70795)
  [InstSimplify] Remove redundant simplifyAndOrOfICmpsWithLimitConst() fold (NFCI)
  [AMDGPU] Fix subtarget predicates for some V_MAD, V_FMA and V_DOT instructions. (llvm#71194)
  [clang] Improve `_Alignas` on a `struct` declaration diagnostic (llvm#65638)
  [libc][bazel] Add powf target and fix bazel overlay. (llvm#71464)
  [MLIR][OpenMP] Add check to see if map operand is of PtrType before creating LoadInst
  [InstCombine] Zero-extend shift amounts in narrow funnel shift ops
  [analyzer] Improve diagnostics from ArrayBoundCheckerV2 (llvm#70056)
  Revert "Revert "[Flang][OpenMP] Fix to support privatisation of alloc strings (llvm#71204)""
  [NFC][IRCE] Add unit test to show room for improvement (llvm#71506)
  Revert "[Flang][OpenMP] Fix to support privatisation of alloc strings (llvm#71204)"
  [Flang][OpenMP] Fix to support privatisation of alloc strings (llvm#71204)
  Reapply: [lld] Restore "REQUIRES: amdgpu" in amdgpu-abi-version
  [JITLink][AArch32] Tests for ELF::R_ARM_ABS32 and ELF::R_ARM_REL32
  Reland: [AMDGPU] Remove Code Object V3 (llvm#67118)
  [clang][analyzer][NFC] Remove redundant code in StreamChecker (llvm#71394)
  [SpeculativeExecution] Add only-if-divergent-target pass option
  [clang][ExtractAPI] Update availability serialization in SGF (llvm#71418)
  [AArch64] Sink vscale calls into loops for better isel (llvm#70304)
  [RISCV] Add tests for pseudos that shouldn't have vmerge folded into them. NFC
  Revert "[IR] Mark mul and ashr const exprs as undesirable"
  [MLIR] Use different constant expression in test (NFC)
  [LLD] [COFF] Fix deducing the machine type from LTO objects for ARM/Thumb (llvm#71335)
  Revert "Reland [SimplifyCFG] Delete the unnecessary range check for small mask operation (llvm#70542)"
  [LLD] [COFF] Error out if new LTO objects are pulled in after the main LTO compilation (llvm#71337)
  [LLD] [COFF] Mark the symbol _tls_used as a GC root (llvm#71336)
  [clang-repl] Fix BUILD_SHARED_LIBS symbols from libclangInterpreter on MinGW (llvm#71393)
  [IR] Mark mul and ashr const exprs as undesirable
  Reapply llvm#2 [clang-repl] [test] Make an XFAIL more precise (llvm#71168)
  [lldb][test] Remove xfail for integral member test on Windows
  [GlobalOpt] Cache whether CC is changeable (llvm#71381)
  Reland "[lldb] Add template method for getting const or mutable regs from DynamicRegisterInfo (llvm#71402)"
  [bazel] Fix the bazel build for 2400c54
  Revert "[lldb] Add template method for getting const or mutable regs from DynamicRegisterInfo (llvm#71402)"
  [RISCV] Fix using undefined variable %pt2 in mask-reg-alloc.mir testcase (llvm#70764)
  [bazel] Port for libc change bc7a3bd
  [lldb] Add template method for getting const or mutable regs from DynamicRegisterInfo (llvm#71402)
  Improve error message for cmake failure (llvm#71404)
  [clang][dataflow] Fix assert-fail when calling assignment operator with by-value parameter. (llvm#71384)
  [AArch64][GlobalISel] Remove -O0 from a legalizer test, which causes legalization failures to be silent.
  [IR] Remove FP cast constant expressions (llvm#71408)
  [RISCV] Disable performCombineVMergeAndVOps for PseduoVIOTA_M. (llvm#71483)
  [flang][hlfir] Lower parent component in constant structure constructors (llvm#71421)
  [InterleavedAccessPass] Avoid optimizing load instructions if it has dead binop users (llvm#71339)
  [HWASAN] Add memset interceptor (llvm#71244)
  RegisterCoalescer: Generate test checks
  Reapply "RegisterCoalescer: Add implicit-def of super register when coalescing SUBREG_TO_REG"
  [libc] Optimize mempcy size thresholds (llvm#70049)
  [InstCombine] Split the FMul with reassoc into a helper function, NFC (llvm#71493)
  [libc++] Make sure ranges algorithms and views handle boolean-testable correctly (llvm#69378)
  AMDGPU: Port AMDGPUAttributor to new pass manager (llvm#71349)
  [X86] Add a EVEX256 macro to match with GCC and MSVC (llvm#71317)
  [mlir][sparse][gpu] add GPU BSR SDDMM check test (llvm#71491)
  [Clang][CodeGen] Stoping emitting alignment assumes for `align_{up,down}`
  [NFC] Remove unused member function 'Error' from PCHValidator
  [Github] Fix github automation script on empty descriptions (llvm#71274)
  [NewPM] Remove AAEval Legacy Pass (llvm#71358)
  [lldb][test] TestConstStaticIntegralMember.py: un-XFAIL on Linux (llvm#71486)
  [GlobalISel] Fall back for bf16 conversions. (llvm#71470)
  [lldb][test] TestVTableValue.py: skip base_class_ptr test case on older Clang versions
  [clang][examples] Remove unused variable 'key' in LLVMPrintFunctionNames.cpp (NFC)
  Reland "[lldb][test] Add FindGlobalVariables tests for C++ inline static data members (llvm#70641)"
  Reland "[lldb][DWARFASTParserClang] Fetch constant value from variable defintion if available (llvm#71004)"
  Reland "clang][DebugInfo] Emit global variable definitions for static data members with constant initializers (llvm#70639)"
  [Clang] Add codegen option to add passbuilder callback functions (llvm#70171)
  Add known and demanded bits support for zext nneg (llvm#70858)
  [flang][OpenMP] Add semantic check for declare target (llvm#71425)
  Add GlobalISel sync-up meeting information
  Revert "[Clang] Remove unneeded template keyword" (llvm#71478)
  [Clang] Remove unneeded template keyword (llvm#71435)
  [flang][openacc] Allow acc routine before implicit part (llvm#71460)
  [flang][openacc] Correctly lower acc routine in interface block (llvm#71451)
  [InstCombinePHI] Remove dead PHI on UnaryOperator (llvm#71386)
  [clang][CGObjCGNU] Remove no-op ptr-to-ptr bitcasts (NFC)
  [mlir][vector] Add leading unit dim folding patterns for masked transfers (llvm#71466)
  [clang][modules] Avoid modules diagnostics for `__has_include()` (llvm#71450)
  [mlir][sparse] implement loose-compressed/2:4 on direct IR codegen path (llvm#71461)
  Add SANITIZER_CDECL to __tsan_check_no_mutexes_held (llvm#71471)
  [LLDB] Don't forcefully initialize the process trace plugin (llvm#71455)
  [flang][openacc] Support variable from equivalence in data clauses (llvm#71434)
  [mlir][linalg] Add support for vectorizing dynamic elementwise named ops (llvm#71454)
  [libc][math] Add min/max/min_denorm/max_denorm constants to FPBits and clean up its constants return types. (llvm#71298)
  [flang][OpenMP] Add semantic check for target update (llvm#71305)
  [BOLT] Fix build after 0df1546
  [clang] Fix test after 4f31d32
  [flang][openacc] Issue an error when TBP are used in data clause (llvm#71444)
  [flang][openacc] Generate data bounds for array addressing. (llvm#71254)
  [clang] Improve `SourceManager::PrintStats()`
  [flang][openacc][NFC] Remove unused variable
  [BOLT] Use Label annotation instead of EHLabel pseudo. NFCI. (llvm#70179)
  [CMake][Fuchsia] Use unchecked hardening mode for libc++
  [flang][openacc] Support variable in equivalence in declare directive (llvm#71242)
  [BOLT] Use direct storage for Label annotations. NFCI. (llvm#70147)
  [Vectorize] Remove Transforms/Vectorize.h (llvm#71294)
  [libc][math] Implement powf function correctly rounded to all rounding modes. (llvm#71188)
  Modify llvm-gsymutil to ignore invalid file indexes (llvm#71431)
  [scudo] Use the releaseAndZeroPagesToOS function. (llvm#71256)
  [lldb][NFCI] Change parameter type in Target::AddNameToBreakpoint (llvm#71241)
  [OpenMP] Replace CUDART_VERSION with CUDA_VERSION
  [OpenMP] Move the recording code to account for KernelLaunchEnvironment
  Add missing `llvm::to_underlying` in `AST/CommentParser.cpp` unit test
  [BOLT] Modify MCPlus annotation internals. NFCI. (llvm#70412)
  [flang] Add more scenarios for Cray pointer in HLFIR (NFC) (llvm#69839)
  [clang][NFC] Annotate `AST/Comment.h` with `preferred_type`
  [ELF] Set `file` for synthesized _binary_ symbols
  [clang][NFC] Refactor `ParamCommandComment::PassDirection`
  [OpenMP][NFC] Split the reduction buffer size into two components
  [OpenMP] Remove alignment for global <-> local reduction functions
  [OpenMP][NFC] Delete dead code
  [BOLT] Reduce the number of emitted symbols. NFCI. (llvm#70175)
  [clang][NFC] Refactor `InlineCommandComment::RenderKind`
  [ObjC] Fix offsets following `[[no_unique_address]]` for `@encode()` (llvm#71321)
  [compiler-rt] Pass CMAKE_TOOLCHAIN_FILE through to custom libc++ build
  [BOLT] Fix address mapping for ICP code (llvm#70136)
  [libc++][NFC] Make data members of counted_iterator private (llvm#70491)
  [clang][NFC] Refactor `Comment::CommentKind`
  [mlir][vector] Hoist uniform scalar loop code after scf.for distribution (llvm#71422)
  [lldb][test] TestVTableValue.py: skip test for older versions of clang (llvm#71372)
  Reland "[Intrinsics][ObjC] Mark objc_retain and friends as thisreturn."
  [BOLT][DWARF] Refactor address ranges processing (llvm#71225)
  [mlir][MemRef] Add subview folding pattern for vector.maskedload (llvm#71380)
  Reland "VectorUtils: mark xrint as trivially vectorizable" (llvm#71416)
  [AMDGPU] Remove dead handling of S_SETPC_B64 (llvm#71275)
  [MLIR] Add support for calling conventions to LLVM::CallOp and LLVM::InvokeOp (llvm#71319)
  Remove extra "git" word that made it into the GSYMTest.cpp file.
  Fix line table lookups in line tables with multiple lines with the sa… (llvm#70879)
  [flang][OpenMP] Add semantic checks for is_device_ptr (llvm#71255)
  Revert "Reland "[Intrinsics][ObjC] Mark objc_retain and friends as thisreturn.""
  [clang][NFC] Annotate `Stmt.h` with `preferred_type`
  [TraceIntelPT]Migrate to new function template for TraceIntelPT (llvm#71258)
  [PowerPC] Add an alias for -mregnames so that full register names used in assembly. (llvm#70255)
  [AArch64] Fix missing opcode when calling `isAArch64FrameOffsetLegal`
  [clang][NFC] Refactor `CXXNewExpr::InitializationStyle` (re-land) (llvm#71417)
  [Transforms] Use StringRef::starts_with/ends_with instead of startswith/endswith. NFC.
  [Flang][OpenMP] Small fix to handle CharBoxValue types for implicit target maps
  Reland "[Intrinsics][ObjC] Mark objc_retain and friends as thisreturn."
  [AMDGPU] Remove AMDGPUAsmPrinter::isBlockOnlyReachableByFallthrough (llvm#71407)
  [gn] Fix typo
  [clang][CGObjCMac] Remove no-op ptr-to-ptr bitcasts (NFC)
  [VPlan] Add VPValue::replaceUsesWithIf (NFCI).
  [Flang][OpenMP] Dont add PreDetermined Flag if symbol is privatized already (llvm#70931)
  [flang] Match argument types for std::min (llvm#71102)
  [SCEV] Remove mul handling from BuildConstantFromSCEV()
  [libc][bazel] Prevent LIBC_NAMESPACE leakeage (llvm#70455)
  [ADT] StringSwitch.h - use StringRef::starts_with/ends_with instead of startswith/endswith. NFC.
  [IPO] Remove unnecessary bitcasts (NFC)
  [OpenMP][libomptarget] Fixes possible no-return warning (llvm#70808)
  [AMDGPU] Regenerate checks for long-branch-reserve-register.ll
  [SLP]Improve tryToGatherExtractElements by using per-register analysis.
  [llvm][docs]: fix typos (llvm#71303)
  [DebugInfo] Use StringRef::starts_with/ends_with instead of startswith/endswith. NFC.
  [mlir][emitc] Fix corner case in translation of literal ops (llvm#71375)
  [DebugInfo][Verifier] Verify that array types have base types present (llvm#70803)
  [IR] Mark FP casts constant exprs as undesirable
  [Flang][OpenMP] Mark mergeable and untied clauses as unsupported (llvm#71209)
  [SDAG] Avoid use of ConstantExpr::getFPTrunc() (NFC)
  [MLIR][LLVM] Remove typed pointers from the LLVM dialect (llvm#71285)
  [AMDGPU] Regenerate test to fix failure
  [LibCallsShrinkWrap] Avoid use of ConstantExpr::getFPExtend() (NFC)
  [Attributor] Avoid use of ConstantExpr::getFPTrunc() (NFC)
  [InstCombine] Avoid use of FP cast constant expressions (NFC)
  Improve selection of conditional branch on amdgcn.ballot!=0 condition in SelectionDAG. (llvm#68714)
  [clang][Interp] Fix IntAP(s) to IntAP(s) casts (llvm#69915)
  Fix load64_aligned (llvm#71391)
  Revert "[clang][NFC] Refactor `CXXNewExpr::InitializationStyle`" (llvm#71395)
  [AMDGPU] Select v_lshl_add_u32 instead of v_mul_lo_u32 by constant (llvm#71035)
  [InstCombine] Avoid some FP cast constant expressions (NFCI)
  [clang][NFC] Refactor `CXXNewExpr::InitializationStyle` (llvm#71322)
  Revert "Fix compression header size check in ELF writer (llvm#66888)"
  [AsmPrinter] Use StringRef::starts_with/ends_with instead of startswith/endswith. NFC.
  [AutoUpgrade] Use StringRef::starts_with/ends_with instead of startswith/endswith. NFC.
  [mlir][Bazel] Adjust SPIRVTarget and add missing dependency.
  [OpenMP][Flang]Fix some of the Fortan OpenMP Offloading tests
  [OpenMP][MLIR]OMPEarlyOutliningPass removal
  [OpenMP][MLIR] Add "IsolatedFromAbove" trait to omp.target
  [OpenMP][Flang] Add "IsolatedFromAbove" trait to omp.target
  [mlir][vector] Fix extractelement/insertelement folder crash on poison attr (llvm#71333)
  [ValueTracking] Avoid FP cast constant expressions
  Revert "[SLP]Improve tryToGatherExtractElements by using per-register analysis."
  [mlir][memref] Fix segfault in SROA (llvm#71063)
  [mlir] fix broken python test
  [mlir][bazel] Fix build for d9dadfd
  [bazel] Fix the bazel build for mlir:SPIRVTarget target.
  [mlir] support scalable vectors in python bindings (llvm#71050)
  llvm: [NFC] Robustify testcase (llvm#71120)
  [Flang][HLFIR] : Use the attributes from the ultimate symbol (llvm#71195)
  [mlir][ArmSME] remove addressof ops to undefined symbols (NFC)
  [BOLT] Add itrace aggregation for AUX data (llvm#70426)
  Add missing header in MigratorOptions.h for 1a0e743.
  [RISCV] Add FileCheck prefixes for test where RV32/RV64 output differs. NFC
  [lldb][AArch64] Move register info reconfigure into architecture plugin (llvm#70950)
  [AMDGPU] ISel for @llvm.amdgcn.cs.chain intrinsic (llvm#68186)
  [BOLT] Set NOOP size only on X86 (NFC) (llvm#71307)
  [mlir][ArmSME] Add support for lowering masked tile_store ops (llvm#71180)
  [clang][NFC] Annotate most of `clang/Basic` headers with `preferred_type`
  [ConstantRange] Handle `Intrinsic::cttz` (llvm#67917)
  Revert "[clang][DebugInfo] Emit global variable definitions for static data members with constant initializers (llvm#70639)"
  Revert "[lldb][DWARFASTParserClang] Fetch constant value from variable defintion if available (llvm#71004)"
  Revert "[lldb][test] Add FindGlobalVariables tests for C++ inline static data members (llvm#70641)"
  [OpenMP][OMPIRBuilder] Add support to omp target parallel (llvm#67000)
  [clang][NFC] Annotate `clang/Frontend` headers with `preferred_type`
  [AArch64] Preserve undef on registers when expanding CALL_RVMARKER. (llvm#71177)
  [llvm][TableGen] Fix value description made by OptRSTEmitter
  [lldb][DWARFASTParserClang] Fetch constant value from variable defintion if available (llvm#71004)
  [lldb][test] Add FindGlobalVariables tests for C++ inline static data members (llvm#70641)
  [clang][DebugInfo] Emit global variable definitions for static data members with constant initializers (llvm#70639)
  [mlir][bazel] Fix build.
  [clang][NFC] Annotate `clang/Lex` headers with `preferred_type`
  [clang][DebugInfo][NFC] Add createConstantValueExpression helper (llvm#70674)
  [mlir][docs] Add link to Visual Studio Code extension (llvm#71190)
  [objcopy] Implement --weaken, --weaken-symbol(s) flags for Mach-O Object Files (llvm#70560)
  [clang][NFC] Annotate `Decl.h` with `preferred_type`
  [clang][NFC] Refactor `ImplicitParamDecl::ImplicitParamKind`
  [gn] port cf7d4f5
  [CMake][Fuchsia] Set the runtimes for the second stage
  [clang][NFC] Annotate `Sema.h` with `preferred_type`
  [ConstantRange] Handle `Intrinsic::ctpop` (llvm#68310)
  [clang][NFC] Annotate `PrettyPrinter.h` with `preferred_type`
  [clang][NFC] Annotate `RawCommentList.h` with `preferred_type`
  [clang][NFC] Annotate `DeclTemplate.h` with `preferred_type`
  [clang]]NFC] Annotate `DeclObjC.h` with `preferred_type`
  [clang][NFC] Annotate `DeclFriend.h` with `preferred_type`
  [clang][NFC] Annotate `DeclCXX.h` with `preferred_type`
  [clang] Change representation of CurLexerKind (llvm#70381)
  [clang][NFC] Annotate ``DependentDiagnostic.h` with `preferred_type`
  [X86] Fix typo in comment in X86FixupLEAs. NFC
  [clang][NFC] Annotate `CXXInheritance.h` with `preferred_type`
  [clang][NFC] Annotate `Attr.h` with `preferred_type`
  [Driver][LTO] Copy fix empty stats filename to AVR, FreeBSD, Fuchsia (llvm#71359)
  [clang][NFC] Annotate `TemplateBase.h` with `preferred_type`
  [sanitizer] Fix pthread_exit interceptor's return type (llvm#71253)
  [VP][RISCV] Add llvm.experimental.vp.reverse. (llvm#70405)
  [clang][NFC] Annotate `TemplateName.h` with `preferred_type`
  [clang][NFC] Clean up commented-out code in `StringLiteral`
  [PowerPC] Support more mcmodel options for AIX (llvm#70652)
  [VP] Mark llvm.experimental.vp.splice as having no functional equivalent (llvm#70647)
  [llvm] Stop including llvm/Support/Endian.h (NFC)
  Reapply [AMDGPU] Generate wwm-reserved.ll (NFC)
  [Clang][Sema] Skip RecordDecl when checking scope of declarations (llvm#69432)
  Revert "[OpenMP] Simplify parallel reductions (llvm#70983)"
  [RISCV] Introduce and use BF16 in Xsfvfwmaccqqq intrinsics (llvm#71140)
  [mlir] Prepare convert-gpu-to-spirv for OpenCL support (llvm#69941)
  [RISCV][GISel] Emit ADJCALLSTACKDOWN/UP instructions in RISCVCallLowering::lowerCall.
  [RISCV][GISel] Remove what I think is an unnecessary insert point adjustment from RISCVCallLowering::lowerCall.
  [mlir][emitc] Fix literal translation (llvm#71296)
  [mlir][gpu] Clean GPU `Passes.h` from external SPIRV includes (llvm#71331)
  [libc++] Implement std::experimental::observer_ptr
  [libc++] Handle threads-related .cpp files like we do all other source files (llvm#71100)
  Fix compression header size check in ELF writer (llvm#66888)
  [libc++] Guard the whole print.cpp file with _LIBCPP_WIN32API (llvm#71122)
  [libc++] Improve tests for std::find_if and std::find_if_not (llvm#71192)
  [sanitizers] Do not define __has_feature in sanitizer/common_interface_defs.h (llvm#66628)
  [LLD] [COFF] Handle undefined weak symbols in LTO (llvm#70430)
  [RISCV][GISel] Pass the IsFixed flag into CC_RISCV for outgoing arguments.
  [GISel] Make the PartialMapping and ValueMapping constructors constexpr.
  [llvm] Remove redundant override 'RecordStreamer::emitInstruction' (NFC)
  [Driver][Solaris][NFC] A little bit of clean up (llvm#69867)
  [RISCV][GISel] Add call preserved regmask to calls created by RISCVCallLowering::lowerCall.
  [Clang][Driver][LTO] Fix empty stats filename when in LTO mode (llvm#71197)
  [mlir][spirv] Fix missing dependency and remove unnecessary headers
  [gn build] Port 745e8bf
  [lldb] Remove LocateSymbolFile (llvm#71301)
  [clang][CodeGenModule] Remove no-op ptr-to-ptr bitcasts (NFC)
  [mlir][spirv] Implement gpu::TargetAttrInterface (llvm#69949)
  [CMake] Fix __builtin_thread_pointer check with LTO
  [libc++] Bump the C++ Standard used to compile the dylib to C++23 (llvm#66824)
  [clang][NFC] Refactor `CXXConstructExpr::ConstructionKind`
  [libc++][format] Fix a missing include in `<format>` tests. (llvm#71252)
  [clang][NFC] Refactor `PredefinedExpr::IdentKind`
  [gn] port c3a302d (SymbolLocator) more
  [gn] port c3a302d (SymbolLocator)
  [gn] port e7c6147
  [clang][NFC] Refactor `CharacterLiteral::CharacterKind`
  [clang][NFC] Refactor `StringLiteral::StringKind`
  [ItaniumCXXABI] Add -fassume-nothrow-exception-dtor to assume that all exception objects' destructors are non-throwing
  [clang][Interp] Implement IntegralAP::truncate() (llvm#69912)
  [RISCV][GISel] Fix incorrect call to getGlobalAddress in selectGlobalValue.
  [RISCV][GISel] Use ArrayRef version of buildInstr to reduce code. NFC
  [mlir][spirv][cf] legalize block arguments when convert cf to spirv (llvm#71288)
  [mlir][memref] Remove redundant `memref.tensor_store` op (llvm#71010)
  [mlir][linalg][NFC] Remove linalg subset hoisting (llvm#70636)
  [mlir][transform] LISH: Add transform op (llvm#70630)
  [Driver] Check crt* when shared linking on OpenBSD
  [RISCV][GISel] Use libcalls for G_MEMCPY, G_MEMMOVE, and G_MEMSET.
  [CGObjC] Remove no-op ptr-to-ptr bitcasts (NFC)
  [lldb] Move DownloadObjectAndSymbolFile to SymbolLocator plugin (llvm#71267)
  [CGException] Remove no-op ptr-to-ptr bitcasts (NFC)
  [InstCombine] Improve eq/ne by parts to handle `ult/ugt` equality pattern.
  [InstCombine] Add tests for new eq/ne patterns combining eq/ne by parts; NFC
  [StaticAnalyzer] Fix -Wunused-variable in SVals.h (NFC)
  [ELF] Improve .o preempting DSO tests
  [LLD] [COFF] Handle manually defined __imp_ pointers in LTO (llvm#70777)
  [flang][OpenMP] Added semantic checks for target update (llvm#71270)
  [gn] port 3fe69ba (all archs in llvm-config.h :/)
  [Serialization] Fix warnings
  Revert "[GISel] Add LookThroughInstrs for getIConstantVRegVal and getIConstan… (llvm#68327)"
  [Clang][CodeGen] Emit `llvm.ptrmask` for `align_up` and `align_down`
  [RISCV][GISel] Add instruction selection for G_FCONSTANT using integer materialization.
  [RISCV][GISel] Refactor most of selectConstant into a general constant materialization function.
  [mlir][emitc] Add literal op testing (NFC)

Change-Id: I8363bf94b7f938249d6f962d96d02c619007c199
Signed-off-by: greenforce-auto-merge <greenforce-auto-merge@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

4 participants