[llvm-branch-commits] [libc] [libc][wctype] Add perfect hash map for conversion functions (PR #187670)
via llvm-branch-commits
llvm-branch-commits at lists.llvm.org
Fri Mar 20 03:15:40 PDT 2026
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-libc
Author: Muhammad Bassiouni (bassiounix)
<details>
<summary>Changes</summary>
- Upstream PTRHash and PerfectHashTable
- Add monostate
- Add lowber_bound and distance
- Modify the generation Python script to interop with the C++ code directly
Depends on #<!-- -->184948
---
Patch is 171.51 KiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/187670.diff
14 Files Affected:
- (modified) libc/src/__support/CPP/CMakeLists.txt (+8)
- (modified) libc/src/__support/CPP/algorithm.h (+20)
- (modified) libc/src/__support/CPP/iterator.h (+36-1)
- (added) libc/src/__support/CPP/monostate.h (+31)
- (modified) libc/src/__support/wctype/CMakeLists.txt (+36)
- (added) libc/src/__support/wctype/lower_to_upper.h (+568)
- (removed) libc/src/__support/wctype/lower_to_upper.inc (-400)
- (added) libc/src/__support/wctype/perfect_hash_map.h (+876)
- (added) libc/src/__support/wctype/upper_to_lower.h (+553)
- (removed) libc/src/__support/wctype/upper_to_lower.inc (-390)
- (modified) libc/test/src/__support/wctype/CMakeLists.txt (+12-2)
- (added) libc/test/src/__support/wctype/wctype_perfect_hash_test.cpp (+35)
- (modified) libc/utils/wctype_utils/conversion/hex_writer.py (+71-1)
- (modified) libc/utils/wctype_utils/gen.py (+10-3)
``````````diff
diff --git a/libc/src/__support/CPP/CMakeLists.txt b/libc/src/__support/CPP/CMakeLists.txt
index bdfbc6151c773..678fb7f50e9cf 100644
--- a/libc/src/__support/CPP/CMakeLists.txt
+++ b/libc/src/__support/CPP/CMakeLists.txt
@@ -56,6 +56,14 @@ add_header_library(
libc.src.__support.macros.properties.types
)
+add_header_library(
+ monostate
+ HDRS
+ monostate.h
+ DEPENDS
+ libc.src.__support.common
+)
+
add_header_library(
mutex
HDRS
diff --git a/libc/src/__support/CPP/algorithm.h b/libc/src/__support/CPP/algorithm.h
index de0c47369d945..3e2ac8b7b95ce 100644
--- a/libc/src/__support/CPP/algorithm.h
+++ b/libc/src/__support/CPP/algorithm.h
@@ -49,6 +49,26 @@ LIBC_INLINE constexpr bool all_of(InputIt first, InputIt last, UnaryPred p) {
return find_if_not(first, last, p) == last;
}
+template <typename It, typename T, typename Comp>
+LIBC_INLINE constexpr It lower_bound(It first, It last, const T &value,
+ Comp comp) {
+ auto count = last - first;
+
+ while (count > 0) {
+ It it = first;
+ auto step = count / 2;
+ it += step;
+
+ if (comp(*it, value)) {
+ first = ++it;
+ count -= step + 1;
+ } else {
+ count = step;
+ }
+ }
+ return first;
+}
+
} // namespace cpp
} // namespace LIBC_NAMESPACE_DECL
diff --git a/libc/src/__support/CPP/iterator.h b/libc/src/__support/CPP/iterator.h
index 168a269731822..cfefbbd3b9101 100644
--- a/libc/src/__support/CPP/iterator.h
+++ b/libc/src/__support/CPP/iterator.h
@@ -9,6 +9,7 @@
#ifndef LLVM_LIBC_SRC___SUPPORT_CPP_ITERATOR_H
#define LLVM_LIBC_SRC___SUPPORT_CPP_ITERATOR_H
+#include "hdr/types/size_t.h"
#include "src/__support/CPP/type_traits/enable_if.h"
#include "src/__support/CPP/type_traits/is_convertible.h"
#include "src/__support/CPP/type_traits/is_same.h"
@@ -18,12 +19,22 @@
namespace LIBC_NAMESPACE_DECL {
namespace cpp {
-template <typename T> struct iterator_traits;
+struct input_iterator_tag {};
+struct random_access_iterator_tag : input_iterator_tag {};
+
+template <typename It> struct iterator_traits {
+ using iterator_category = typename It::iterator_category;
+};
template <typename T> struct iterator_traits<T *> {
using reference = T &;
+ using iterator_category = random_access_iterator_tag;
using value_type = T;
};
+template <typename T> struct iterator_traits<const T *> {
+ using iterator_category = random_access_iterator_tag;
+};
+
template <typename Iter> class reverse_iterator {
Iter current;
@@ -93,6 +104,30 @@ template <typename Iter> class reverse_iterator {
}
};
+namespace cpp_internal {
+
+template <typename It>
+LIBC_INLINE constexpr size_t distance(It first, It last,
+ random_access_iterator_tag) {
+ return last - first;
+}
+
+template <typename It>
+LIBC_INLINE constexpr auto distance(It first, It last, input_iterator_tag) {
+ size_t n = 0;
+ for (; first != last; ++first) {
+ ++n;
+ }
+ return n;
+}
+
+} // namespace cpp_internal
+
+template <typename It> auto distance(It first, It last) {
+ return cpp_internal::distance(
+ first, last, typename iterator_traits<It>::iterator_category{});
+}
+
} // namespace cpp
} // namespace LIBC_NAMESPACE_DECL
diff --git a/libc/src/__support/CPP/monostate.h b/libc/src/__support/CPP/monostate.h
new file mode 100644
index 0000000000000..231550cd4cc69
--- /dev/null
+++ b/libc/src/__support/CPP/monostate.h
@@ -0,0 +1,31 @@
+//===-- Definition of cpp::monostate ----------------------------*- 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_SRC___SUPPORT_CPP_MONOSTATE_H
+#define LLVM_LIBC_SRC___SUPPORT_CPP_MONOSTATE_H
+
+#include "src/__support/common.h"
+
+namespace LIBC_NAMESPACE_DECL {
+
+namespace cpp {
+
+struct monostate {};
+
+LIBC_INLINE constexpr bool operator==(monostate, monostate) { return true; }
+LIBC_INLINE constexpr bool operator!=(monostate, monostate) { return false; }
+LIBC_INLINE constexpr bool operator<(monostate, monostate) { return false; }
+LIBC_INLINE constexpr bool operator>(monostate, monostate) { return false; }
+LIBC_INLINE constexpr bool operator<=(monostate, monostate) { return true; }
+LIBC_INLINE constexpr bool operator>=(monostate, monostate) { return true; }
+
+} // namespace cpp
+
+} // namespace LIBC_NAMESPACE_DECL
+
+#endif // LIBC_SRC___SUPPORT_CPP_MONOSTATE_H
diff --git a/libc/src/__support/wctype/CMakeLists.txt b/libc/src/__support/wctype/CMakeLists.txt
index fcd4b777b2203..43c45d04ec2b7 100644
--- a/libc/src/__support/wctype/CMakeLists.txt
+++ b/libc/src/__support/wctype/CMakeLists.txt
@@ -1,3 +1,39 @@
+add_header_library(
+ perfect_hash_map
+ HDRS
+ perfect_hash_map.h
+ DEPENDS
+ libc.hdr.types.size_t
+ libc.hdr.types.wint_t
+ libc.src.__support.CPP.array
+ libc.src.__support.CPP.expected
+ libc.src.__support.CPP.monostate
+ libc.src.__support.CPP.optional
+ libc.src.__support.CPP.span
+ libc.src.__support.CPP.string
+ libc.src.__support.CPP.tuple
+ libc.src.__support.CPP.type_traits
+ libc.src.__support.OSUtil.osutil
+ libc.src.__support.math.ceil
+ libc.src.__support.math.log
+)
+
+add_header_library(
+ lower_to_upper
+ HDRS
+ lower_to_upper.h
+ DEPENDS
+ .perfect_hash_map
+)
+
+add_header_library(
+ upper_to_lower
+ HDRS
+ upper_to_lower.h
+ DEPENDS
+ .perfect_hash_map
+)
+
add_object_library(
wctype_classification_utils
HDRS
diff --git a/libc/src/__support/wctype/lower_to_upper.h b/libc/src/__support/wctype/lower_to_upper.h
new file mode 100644
index 0000000000000..489089c6ea628
--- /dev/null
+++ b/libc/src/__support/wctype/lower_to_upper.h
@@ -0,0 +1,568 @@
+//===-- Auto-generated lower to upper case mappings table -------*- 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
+//
+//===----------------------------------------------------------------------===//
+// DO NOT EDIT MANUALLY.
+// This file is generated by libc/utils/wctype_utils scripts.
+// This file is meant to be included directly into LLVM libc code
+// Format: {from_codepoint, to_codepoint}
+// Info: 1458 entries
+
+#ifndef LLVM_LIBC_SRC___SUPPORT_WCTYPE_LOWER_TO_UPPER_H
+#define LLVM_LIBC_SRC___SUPPORT_WCTYPE_LOWER_TO_UPPER_H
+
+#include "perfect_hash_map.h"
+
+namespace LIBC_NAMESPACE_DECL {
+
+LIBC_INLINE_VAR constexpr cpp::array<cpp::array<wint_t, 2>, 1458>
+ LOWER_TO_UPPER_DATA = {
+ {{0x61, 0x41}, {0x62, 0x42}, {0x63, 0x43},
+ {0x64, 0x44}, {0x65, 0x45}, {0x66, 0x46},
+ {0x67, 0x47}, {0x68, 0x48}, {0x69, 0x49},
+ {0x6A, 0x4A}, {0x6B, 0x4B}, {0x6C, 0x4C},
+ {0x6D, 0x4D}, {0x6E, 0x4E}, {0x6F, 0x4F},
+ {0x70, 0x50}, {0x71, 0x51}, {0x72, 0x52},
+ {0x73, 0x53}, {0x74, 0x54}, {0x75, 0x55},
+ {0x76, 0x56}, {0x77, 0x57}, {0x78, 0x58},
+ {0x79, 0x59}, {0x7A, 0x5A}, {0xB5, 0x39C},
+ {0xE0, 0xC0}, {0xE1, 0xC1}, {0xE2, 0xC2},
+ {0xE3, 0xC3}, {0xE4, 0xC4}, {0xE5, 0xC5},
+ {0xE6, 0xC6}, {0xE7, 0xC7}, {0xE8, 0xC8},
+ {0xE9, 0xC9}, {0xEA, 0xCA}, {0xEB, 0xCB},
+ {0xEC, 0xCC}, {0xED, 0xCD}, {0xEE, 0xCE},
+ {0xEF, 0xCF}, {0xF0, 0xD0}, {0xF1, 0xD1},
+ {0xF2, 0xD2}, {0xF3, 0xD3}, {0xF4, 0xD4},
+ {0xF5, 0xD5}, {0xF6, 0xD6}, {0xF8, 0xD8},
+ {0xF9, 0xD9}, {0xFA, 0xDA}, {0xFB, 0xDB},
+ {0xFC, 0xDC}, {0xFD, 0xDD}, {0xFE, 0xDE},
+ {0xFF, 0x178}, {0x101, 0x100}, {0x103, 0x102},
+ {0x105, 0x104}, {0x107, 0x106}, {0x109, 0x108},
+ {0x10B, 0x10A}, {0x10D, 0x10C}, {0x10F, 0x10E},
+ {0x111, 0x110}, {0x113, 0x112}, {0x115, 0x114},
+ {0x117, 0x116}, {0x119, 0x118}, {0x11B, 0x11A},
+ {0x11D, 0x11C}, {0x11F, 0x11E}, {0x121, 0x120},
+ {0x123, 0x122}, {0x125, 0x124}, {0x127, 0x126},
+ {0x129, 0x128}, {0x12B, 0x12A}, {0x12D, 0x12C},
+ {0x12F, 0x12E}, {0x131, 0x49}, {0x133, 0x132},
+ {0x135, 0x134}, {0x137, 0x136}, {0x13A, 0x139},
+ {0x13C, 0x13B}, {0x13E, 0x13D}, {0x140, 0x13F},
+ {0x142, 0x141}, {0x144, 0x143}, {0x146, 0x145},
+ {0x148, 0x147}, {0x14B, 0x14A}, {0x14D, 0x14C},
+ {0x14F, 0x14E}, {0x151, 0x150}, {0x153, 0x152},
+ {0x155, 0x154}, {0x157, 0x156}, {0x159, 0x158},
+ {0x15B, 0x15A}, {0x15D, 0x15C}, {0x15F, 0x15E},
+ {0x161, 0x160}, {0x163, 0x162}, {0x165, 0x164},
+ {0x167, 0x166}, {0x169, 0x168}, {0x16B, 0x16A},
+ {0x16D, 0x16C}, {0x16F, 0x16E}, {0x171, 0x170},
+ {0x173, 0x172}, {0x175, 0x174}, {0x177, 0x176},
+ {0x17A, 0x179}, {0x17C, 0x17B}, {0x17E, 0x17D},
+ {0x17F, 0x53}, {0x180, 0x243}, {0x183, 0x182},
+ {0x185, 0x184}, {0x188, 0x187}, {0x18C, 0x18B},
+ {0x192, 0x191}, {0x195, 0x1F6}, {0x199, 0x198},
+ {0x19A, 0x23D}, {0x19B, 0xA7DC}, {0x19E, 0x220},
+ {0x1A1, 0x1A0}, {0x1A3, 0x1A2}, {0x1A5, 0x1A4},
+ {0x1A8, 0x1A7}, {0x1AD, 0x1AC}, {0x1B0, 0x1AF},
+ {0x1B4, 0x1B3}, {0x1B6, 0x1B5}, {0x1B9, 0x1B8},
+ {0x1BD, 0x1BC}, {0x1BF, 0x1F7}, {0x1C6, 0x1C4},
+ {0x1C9, 0x1C7}, {0x1CC, 0x1CA}, {0x1CE, 0x1CD},
+ {0x1D0, 0x1CF}, {0x1D2, 0x1D1}, {0x1D4, 0x1D3},
+ {0x1D6, 0x1D5}, {0x1D8, 0x1D7}, {0x1DA, 0x1D9},
+ {0x1DC, 0x1DB}, {0x1DD, 0x18E}, {0x1DF, 0x1DE},
+ {0x1E1, 0x1E0}, {0x1E3, 0x1E2}, {0x1E5, 0x1E4},
+ {0x1E7, 0x1E6}, {0x1E9, 0x1E8}, {0x1EB, 0x1EA},
+ {0x1ED, 0x1EC}, {0x1EF, 0x1EE}, {0x1F3, 0x1F1},
+ {0x1F5, 0x1F4}, {0x1F9, 0x1F8}, {0x1FB, 0x1FA},
+ {0x1FD, 0x1FC}, {0x1FF, 0x1FE}, {0x201, 0x200},
+ {0x203, 0x202}, {0x205, 0x204}, {0x207, 0x206},
+ {0x209, 0x208}, {0x20B, 0x20A}, {0x20D, 0x20C},
+ {0x20F, 0x20E}, {0x211, 0x210}, {0x213, 0x212},
+ {0x215, 0x214}, {0x217, 0x216}, {0x219, 0x218},
+ {0x21B, 0x21A}, {0x21D, 0x21C}, {0x21F, 0x21E},
+ {0x223, 0x222}, {0x225, 0x224}, {0x227, 0x226},
+ {0x229, 0x228}, {0x22B, 0x22A}, {0x22D, 0x22C},
+ {0x22F, 0x22E}, {0x231, 0x230}, {0x233, 0x232},
+ {0x23C, 0x23B}, {0x23F, 0x2C7E}, {0x240, 0x2C7F},
+ {0x242, 0x241}, {0x247, 0x246}, {0x249, 0x248},
+ {0x24B, 0x24A}, {0x24D, 0x24C}, {0x24F, 0x24E},
+ {0x250, 0x2C6F}, {0x251, 0x2C6D}, {0x252, 0x2C70},
+ {0x253, 0x181}, {0x254, 0x186}, {0x256, 0x189},
+ {0x257, 0x18A}, {0x259, 0x18F}, {0x25B, 0x190},
+ {0x25C, 0xA7AB}, {0x260, 0x193}, {0x261, 0xA7AC},
+ {0x263, 0x194}, {0x264, 0xA7CB}, {0x265, 0xA78D},
+ {0x266, 0xA7AA}, {0x268, 0x197}, {0x269, 0x196},
+ {0x26A, 0xA7AE}, {0x26B, 0x2C62}, {0x26C, 0xA7AD},
+ {0x26F, 0x19C}, {0x271, 0x2C6E}, {0x272, 0x19D},
+ {0x275, 0x19F}, {0x27D, 0x2C64}, {0x280, 0x1A6},
+ {0x282, 0xA7C5}, {0x283, 0x1A9}, {0x287, 0xA7B1},
+ {0x288, 0x1AE}, {0x289, 0x244}, {0x28A, 0x1B1},
+ {0x28B, 0x1B2}, {0x28C, 0x245}, {0x292, 0x1B7},
+ {0x29D, 0xA7B2}, {0x29E, 0xA7B0}, {0x371, 0x370},
+ {0x373, 0x372}, {0x377, 0x376}, {0x37B, 0x3FD},
+ {0x37C, 0x3FE}, {0x37D, 0x3FF}, {0x3AC, 0x386},
+ {0x3AD, 0x388}, {0x3AE, 0x389}, {0x3AF, 0x38A},
+ {0x3B1, 0x391}, {0x3B2, 0x392}, {0x3B3, 0x393},
+ {0x3B4, 0x394}, {0x3B5, 0x395}, {0x3B6, 0x396},
+ {0x3B7, 0x397}, {0x3B8, 0x398}, {0x3B9, 0x399},
+ {0x3BA, 0x39A}, {0x3BB, 0x39B}, {0x3BC, 0x39C},
+ {0x3BD, 0x39D}, {0x3BE, 0x39E}, {0x3BF, 0x39F},
+ {0x3C0, 0x3A0}, {0x3C1, 0x3A1}, {0x3C2, 0x3A3},
+ {0x3C3, 0x3A3}, {0x3C4, 0x3A4}, {0x3C5, 0x3A5},
+ {0x3C6, 0x3A6}, {0x3C7, 0x3A7}, {0x3C8, 0x3A8},
+ {0x3C9, 0x3A9}, {0x3CA, 0x3AA}, {0x3CB, 0x3AB},
+ {0x3CC, 0x38C}, {0x3CD, 0x38E}, {0x3CE, 0x38F},
+ {0x3D0, 0x392}, {0x3D1, 0x398}, {0x3D5, 0x3A6},
+ {0x3D6, 0x3A0}, {0x3D7, 0x3CF}, {0x3D9, 0x3D8},
+ {0x3DB, 0x3DA}, {0x3DD, 0x3DC}, {0x3DF, 0x3DE},
+ {0x3E1, 0x3E0}, {0x3E3, 0x3E2}, {0x3E5, 0x3E4},
+ {0x3E7, 0x3E6}, {0x3E9, 0x3E8}, {0x3EB, 0x3EA},
+ {0x3ED, 0x3EC}, {0x3EF, 0x3EE}, {0x3F0, 0x39A},
+ {0x3F1, 0x3A1}, {0x3F2, 0x3F9}, {0x3F3, 0x37F},
+ {0x3F5, 0x395}, {0x3F8, 0x3F7}, {0x3FB, 0x3FA},
+ {0x430, 0x410}, {0x431, 0x411}, {0x432, 0x412},
+ {0x433, 0x413}, {0x434, 0x414}, {0x435, 0x415},
+ {0x436, 0x416}, {0x437, 0x417}, {0x438, 0x418},
+ {0x439, 0x419}, {0x43A, 0x41A}, {0x43B, 0x41B},
+ {0x43C, 0x41C}, {0x43D, 0x41D}, {0x43E, 0x41E},
+ {0x43F, 0x41F}, {0x440, 0x420}, {0x441, 0x421},
+ {0x442, 0x422}, {0x443, 0x423}, {0x444, 0x424},
+ {0x445, 0x425}, {0x446, 0x426}, {0x447, 0x427},
+ {0x448, 0x428}, {0x449, 0x429}, {0x44A, 0x42A},
+ {0x44B, 0x42B}, {0x44C, 0x42C}, {0x44D, 0x42D},
+ {0x44E, 0x42E}, {0x44F, 0x42F}, {0x450, 0x400},
+ {0x451, 0x401}, {0x452, 0x402}, {0x453, 0x403},
+ {0x454, 0x404}, {0x455, 0x405}, {0x456, 0x406},
+ {0x457, 0x407}, {0x458, 0x408}, {0x459, 0x409},
+ {0x45A, 0x40A}, {0x45B, 0x40B}, {0x45C, 0x40C},
+ {0x45D, 0x40D}, {0x45E, 0x40E}, {0x45F, 0x40F},
+ {0x461, 0x460}, {0x463, 0x462}, {0x465, 0x464},
+ {0x467, 0x466}, {0x469, 0x468}, {0x46B, 0x46A},
+ {0x46D, 0x46C}, {0x46F, 0x46E}, {0x471, 0x470},
+ {0x473, 0x472}, {0x475, 0x474}, {0x477, 0x476},
+ {0x479, 0x478}, {0x47B, 0x47A}, {0x47D, 0x47C},
+ {0x47F, 0x47E}, {0x481, 0x480}, {0x48B, 0x48A},
+ {0x48D, 0x48C}, {0x48F, 0x48E}, {0x491, 0x490},
+ {0x493, 0x492}, {0x495, 0x494}, {0x497, 0x496},
+ {0x499, 0x498}, {0x49B, 0x49A}, {0x49D, 0x49C},
+ {0x49F, 0x49E}, {0x4A1, 0x4A0}, {0x4A3, 0x4A2},
+ {0x4A5, 0x4A4}, {0x4A7, 0x4A6}, {0x4A9, 0x4A8},
+ {0x4AB, 0x4AA}, {0x4AD, 0x4AC}, {0x4AF, 0x4AE},
+ {0x4B1, 0x4B0}, {0x4B3, 0x4B2}, {0x4B5, 0x4B4},
+ {0x4B7, 0x4B6}, {0x4B9, 0x4B8}, {0x4BB, 0x4BA},
+ {0x4BD, 0x4BC}, {0x4BF, 0x4BE}, {0x4C2, 0x4C1},
+ {0x4C4, 0x4C3}, {0x4C6, 0x4C5}, {0x4C8, 0x4C7},
+ {0x4CA, 0x4C9}, {0x4CC, 0x4CB}, {0x4CE, 0x4CD},
+ {0x4CF, 0x4C0}, {0x4D1, 0x4D0}, {0x4D3, 0x4D2},
+ {0x4D5, 0x4D4}, {0x4D7, 0x4D6}, {0x4D9, 0x4D8},
+ {0x4DB, 0x4DA}, {0x4DD, 0x4DC}, {0x4DF, 0x4DE},
+ {0x4E1, 0x4E0}, {0x4E3, 0x4E2}, {0x4E5, 0x4E4},
+ {0x4E7, 0x4E6}, {0x4E9, 0x4E8}, {0x4EB, 0x4EA},
+ {0x4ED, 0x4EC}, {0x4EF, 0x4EE}, {0x4F1, 0x4F0},
+ {0x4F3, 0x4F2}, {0x4F5, 0x4F4}, {0x4F7, 0x4F6},
+ {0x4F9, 0x4F8}, {0x4FB, 0x4FA}, {0x4FD, 0x4FC},
+ {0x4FF, 0x4FE}, {0x501, 0x500}, {0x503, 0x502},
+ {0x505, 0x504}, {0x507, 0x506}, {0x509, 0x508},
+ {0x50B, 0x50A}, {0x50D, 0x50C}, {0x50F, 0x50E},
+ {0x511, 0x510}, {0x513, 0x512}, {0x515, 0x514},
+ {0x517, 0x516}, {0x519, 0x518}, {0x51B, 0x51A},
+ {0x51D, 0x51C}, {0x51F, 0x51E}, {0x521, 0x520},
+ {0x523, 0x522}, {0x525, 0x524}, {0x527, 0x526},
+ {0x529, 0x528}, {0x52B, 0x52A}, {0x52D, 0x52C},
+ {0x52F, 0x52E}, {0x561, 0x531}, {0x562, 0x532},
+ {0x563, 0x533}, {0x564, 0x534}, {0x565, 0x535},
+ {0x566, 0x536}, {0x567, 0x537}, {0x568, 0x538},
+ {0x569, 0x539}, {0x56A, 0x53A}, {0x56B, 0x53B},
+ {0x56C, 0x53C}, {0x56D, 0x53D}, {0x56E, 0x53E},
+ {0x56F, 0x53F}, {0x570, 0x540}, {0x571, 0x541},
+ {0x572, 0x542}, {0x573, 0x543}, {0x574, 0x544},
+ {0x575, 0x545}, {0x576, 0x546}, {0x577, 0x547},
+ {0x578, 0x548}, {0x579, 0x549}, {0x57A, 0x54A},
+ {0x57B, 0x54B}, {0x57C, 0x54C}, {0x57D, 0x54D},
+ {0x57E, 0x54E}, {0x57F, 0x54F}, {0x580, 0x550},
+ {0x581, 0x551}, {0x582, 0x552}, {0x583, 0x553},
+ {0x584, 0x554}, {0x585, 0x555}, {0x586, 0x556},
+ {0x10D0, 0x1C90}, {0x10D1, 0x1C91}, {0x10D2, 0x1C92},
+ {0x10D3, 0x1C93}, {0x10D4, 0x1C94}, {0x10D5, 0x1C95},
+ {0x10D6, 0x1C96}, {0x10D7, 0x1C97}, {0x10D8, 0x1C98},
+ {0x10D9, 0x1C99}, {0x10DA, 0x1C9A}, {0x10DB, 0x1C9B},
+ {0x10DC, 0x1C9C}, {0x10DD, 0x1C9D}, {0x10DE, 0x1C9E},
+ {0x10DF, 0x1C9F}, {0x10E0, 0x1CA0}, {0x10E1, 0x1CA1},
+ {0x10E2, 0x1CA2}, {0x10E3, 0x1CA3}, {0x10E4, 0x1CA4},
+ {0x10E5, 0x1CA5}, {0x10E6, 0x1CA6}, {0x10E7, 0x1CA7},
+ {0x10E8, 0x1CA8}, {0x10E9, 0x1CA9}, {0x10EA, 0x1CAA},
+ {0x10EB, 0x1CAB}, {0x10EC, 0x1CAC}, {0x10ED, 0x1CAD},
+ {0x10EE, 0x1CAE}, {0x10EF, 0x1CAF}, {0x10F0, 0x1CB0},
+ {0x10F1, 0x1CB1}, {0x10F2, 0x1CB2}, {0x10F3, 0x1CB3},
+ {0x10F4, 0x1CB4}, {0x10F5, 0x1CB5}, {0x10F6, 0x1CB6},
+ {0x10F7, 0x1CB7}, {0x10F8, 0x1CB8}, {0x10F9, 0x1CB9},
+ {0x10FA, 0x1CBA}, {0x10FD, 0x1CBD}, {0x10FE, 0x1CBE},
+ {0x10FF, 0x1CBF}, {0x13F8, 0x13F0}, {0x13F9, 0x13F1},
+ {0x13FA, 0x13F2}, {0x13FB, 0x13F3}, {0x13FC, 0x13F4},
+ {0x13FD, 0x13F5}, {0x1C80, 0x412}, {0x1C81, 0x414},
+ {0x1C82, 0x41E}, {0x1C83, 0x421}, {0x1C84, 0x422},
+ {0x1C85, 0x422}, {0x1C86, 0x42A}, {0x1C87, 0x462},
+ {0x1C88, 0xA64A}, {0x1C8A, 0x1C89}, {0x1D79, 0xA77D},
+ {0x1D7D, 0x2C63}, {0x1D8E, 0xA7C6}, {0x1E01, 0x1E00},
+ {0x1E03, 0x1E02}, {0x1E05, 0x1E04}, {0x1E07, 0x1E06},
+ {0x1E09, 0x1E08}, {0x1E0B, 0x1E0A}, {0x1E0D, 0x1E0C},
+ {0x1E0F, 0x1E0E}, {0x1E11, 0x1E10}, {0x1E13, 0x1E12},
+ {0x1E15, 0x1E14}, {0x1E17, 0x1E16}, {0x1E19, 0x1E18},
+ {0x1E1B, 0x1E1A}, {0x1E1D, 0x1E1C}, {0x1E1F, 0x1E1E},
+ {0x1E21, 0x1E20}, {0x1E23, 0x1E22}, {0x1E25, 0x1E24},
+ {0x1E27, 0x1E26}, {0x1E29, 0x1E28}, {0x1E2B, 0x1E2A},
+ {0x1E2D, 0x1E2C}, {0x1E2F, 0x1E2E}, {0x1E31, 0x1E30},
+ {0x1E33, 0x1E32}, {0x1E35, 0x1E34}, {0x1E37, 0x1E36},
+ {0x1E39, 0x1E38}, {0x1E3B, 0x1E3A}, {0x1E3D, 0x1E3C},
+ {0x1E3F, 0x1E3E}, {0x1E41, 0x1E40}, {0x1E43, 0x1E42},
+ {0x1E45, 0x1E44}, {0x1E47, 0x1E46}, {0x1E49, 0x1E48},
+ {0x1E4B, 0x1E4A}, {0x1E4D, 0x1E4C}, {0x1E4F, 0x1E4E},
+ {0x1E51, 0x1E50}, {0x1E53, 0x1E52}, {0x1E55, 0x1E54},
+ {0x1E57, 0x1E56}, {0x1E59, 0x1E58}, {0x1E5B, 0x1E5A},
+ {0x1E5D, 0x1E5C}, {0x1E5F, 0x1E5E}, {0x1E61, 0x1E60},
+ {0x1E63, 0x1E62}, {0x1E65, 0x1E64}, {0x1E67, 0x1E66},
+ {0x1E69, 0x1E68}, {0x1E6B, 0x1E6A}, {0x1E6D, 0x1E6C},
+ {0x1E6F, 0x1E6E}, {0x1E71, 0x1E70}, {0x1E73, 0x1E72},
+ {0x1E75, 0x1E74}, {0x1E77, 0x1E76}, {0x1E79, 0x1E78},
+ {0x1E7B, 0...
[truncated]
``````````
</details>
https://github.com/llvm/llvm-project/pull/187670
More information about the llvm-branch-commits
mailing list