https://github.com/Cheskaqiqi updated 
https://github.com/llvm/llvm-project/pull/196688

>From 4da965579c390b421105b164b4a358355dcc3852 Mon Sep 17 00:00:00 2001
From: Shuqi Liang <[email protected]>
Date: Sat, 9 May 2026 00:17:21 -0400
Subject: [PATCH 1/3] [XCore] Migrate BuiltinsXCore.def to TableGen

---
 clang/include/clang/Basic/BuiltinsXCore.def |  21 --
 clang/include/clang/Basic/BuiltinsXCore.td  |  20 ++
 clang/include/clang/Basic/CMakeLists.txt    |   4 +
 clang/include/clang/Basic/TargetBuiltins.h  |  17 +-
 clang/include/clang/Basic/convert_xcore.py  | 242 ++++++++++++++++++++
 clang/include/module.modulemap              |   1 -
 clang/lib/Basic/Targets/XCore.cpp           |  22 +-
 7 files changed, 286 insertions(+), 41 deletions(-)
 delete mode 100644 clang/include/clang/Basic/BuiltinsXCore.def
 create mode 100644 clang/include/clang/Basic/BuiltinsXCore.td
 create mode 100644 clang/include/clang/Basic/convert_xcore.py

diff --git a/clang/include/clang/Basic/BuiltinsXCore.def 
b/clang/include/clang/Basic/BuiltinsXCore.def
deleted file mode 100644
index c99b7ced13511..0000000000000
--- a/clang/include/clang/Basic/BuiltinsXCore.def
+++ /dev/null
@@ -1,21 +0,0 @@
-//===--- BuiltinsXCore.def - XCore Builtin function database ----*- 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
-//
-//===----------------------------------------------------------------------===//
-//
-// This file defines the XCore-specific builtin function database.  Users of
-// this file must define the BUILTIN macro to make use of this information.
-//
-//===----------------------------------------------------------------------===//
-
-// The format of this database matches clang/Basic/Builtins.def.
-
-BUILTIN(__builtin_bitrev, "UiUi", "nc")
-BUILTIN(__builtin_getid, "Si", "nc")
-BUILTIN(__builtin_getps, "UiUi", "n")
-BUILTIN(__builtin_setps, "vUiUi", "n")
-
-#undef BUILTIN
diff --git a/clang/include/clang/Basic/BuiltinsXCore.td 
b/clang/include/clang/Basic/BuiltinsXCore.td
new file mode 100644
index 0000000000000..140c28285d1a1
--- /dev/null
+++ b/clang/include/clang/Basic/BuiltinsXCore.td
@@ -0,0 +1,20 @@
+//===--- BuiltinsXCore.td - XCore Builtin function database ----*- 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
+//
+//===----------------------------------------------------------------------===//
+
+include "clang/Basic/BuiltinsBase.td"
+
+class XCoreBuiltin<string prototype, list<Attribute> Attr = []> : 
TargetBuiltin {
+  let Spellings = [NAME];
+  let Prototype = prototype;
+  let Attributes = Attr;
+}
+
+def __builtin_bitrev : XCoreBuiltin<"unsigned int(unsigned int)", [NoThrow, 
Const]>;
+def __builtin_getid : XCoreBuiltin<"signed int()", [NoThrow, Const]>;
+def __builtin_getps : XCoreBuiltin<"unsigned int(unsigned int)", [NoThrow]>;
+def __builtin_setps : XCoreBuiltin<"void(unsigned int, unsigned int)", 
[NoThrow]>;
diff --git a/clang/include/clang/Basic/CMakeLists.txt 
b/clang/include/clang/Basic/CMakeLists.txt
index 20172622ca424..07be7e29fcd0f 100644
--- a/clang/include/clang/Basic/CMakeLists.txt
+++ b/clang/include/clang/Basic/CMakeLists.txt
@@ -138,6 +138,10 @@ clang_tablegen(BuiltinsSystemZ.inc -gen-clang-builtins
   SOURCE BuiltinsSystemZ.td
   TARGET ClangBuiltinsSystemZ)
 
+clang_tablegen(BuiltinsXCore.inc -gen-clang-builtins
+  SOURCE BuiltinsXCore.td
+  TARGET ClangBuiltinsXCore)
+
 clang_tablegen(BuiltinsX86.inc -gen-clang-builtins
   SOURCE BuiltinsX86.td
   TARGET ClangBuiltinsX86)
diff --git a/clang/include/clang/Basic/TargetBuiltins.h 
b/clang/include/clang/Basic/TargetBuiltins.h
index ae4bcdb9eeb64..e7d2fe32ce7cc 100644
--- a/clang/include/clang/Basic/TargetBuiltins.h
+++ b/clang/include/clang/Basic/TargetBuiltins.h
@@ -442,16 +442,17 @@ namespace clang {
     };
   }
 
-  /// XCore builtins
+ /// XCore builtins
   namespace XCore {
-    enum {
-        LastTIBuiltin = clang::Builtin::FirstTSBuiltin-1,
-#define BUILTIN(ID, TYPE, ATTRS) BI##ID,
-#include "clang/Basic/BuiltinsXCore.def"
-        LastTSBuiltin
-    };
+  enum {
+    LastTIBuiltin = clang::Builtin::FirstTSBuiltin - 1,
+#define GET_BUILTIN_ENUMERATORS
+#include "clang/Basic/BuiltinsXCore.inc"
+#undef GET_BUILTIN_ENUMERATORS
+    LastTSBuiltin
+  };
   }
-
+  
   /// SystemZ builtins
   namespace SystemZ {
     enum {
diff --git a/clang/include/clang/Basic/convert_xcore.py 
b/clang/include/clang/Basic/convert_xcore.py
new file mode 100644
index 0000000000000..8b18a0ae6df8c
--- /dev/null
+++ b/clang/include/clang/Basic/convert_xcore.py
@@ -0,0 +1,242 @@
+#!/usr/bin/env python3
+
+import re
+import sys
+from typing import List, Tuple, Optional
+
+
+class XCoreConverter:
+    def __init__(self):
+        self.base_types = {
+            'v': 'void',
+            'b': 'bool',
+            'c': 'char',
+            's': 'short',
+            'i': 'int',
+            'h': '__fp16',
+            'x': '_Float16',
+            'y': '__bf16',
+            'f': 'float',
+            'd': 'double',
+            'z': 'size_t',
+            'w': 'wchar_t',
+            'F': 'CFString',
+            'G': 'id',
+            'H': 'SEL',
+            'M': 'struct objc_super',
+            'a': '__builtin_va_list',
+            'A': '__builtin_va_list&',
+            'Y': 'ptrdiff_t',
+            'P': 'FILE*',
+            'J': 'jmp_buf',
+            'p': 'pid_t',
+        }
+
+        self.attributes = {
+            'n': 'NoThrow',
+            'r': 'NoReturn',
+            'U': 'Pure',
+            'c': 'Const',
+            't': 'CustomTypeChecking',
+            'T': 'TypeGeneric',
+            'F': 'LibBuiltin',
+            'f': 'LibFunction',
+            'h': 'RequiresHeader',
+            'i': 'RuntimeLibFunction',
+            'e': 'ConstWithoutErrnoAndExceptions',
+            'g': 'ConstWithoutExceptions',
+            'j': 'ReturnsTwice',
+            'u': 'NoSideEffects',
+            'z': 'CXXNamespaceStd',
+            'E': 'ConstantEvaluated',
+            'G': 'CXXConsteval',
+        }
+
+
+    def parse_builtin_line(self, line: str) -> Optional[Tuple[str, str, str]]:
+        # XCore uses BUILTIN instead of TARGET_BUILTIN
+        pattern = r'BUILTIN\(([^,]+),\s*"([^"]*)",\s*"([^"]*)"\)'
+        match = re.match(pattern, line.strip())
+        if match:
+            return match.group(1), match.group(2), match.group(3)
+        return None
+
+
+    def parse_type_encoding(self, encoding: str) -> Tuple[str, List[str]]:
+        if not encoding:
+            return "void", []
+
+        i = 0
+        return_type = self._parse_single_type(encoding, i)
+        i = return_type[1]
+
+        params = []
+        while i < len(encoding):
+            if encoding[i] == '.':
+                params.append("...")
+                break
+            param_type = self._parse_single_type(encoding, i)
+            params.append(param_type[0])
+            i = param_type[1]
+
+        return return_type[0], params
+
+
+    def _parse_single_type(self, encoding: str, start_pos: int) -> Tuple[str, 
int]:
+        i = start_pos
+        if i >= len(encoding):
+            return "void", i
+
+        prefixes = []
+        while i < len(encoding):
+            if encoding[i:i+2] == 'LL':
+                prefixes.append('long long')
+                i += 2
+            elif encoding[i] == 'L':
+                prefixes.append('long')
+                i += 1
+            elif encoding[i] == 'U':
+                prefixes.append('unsigned')
+                i += 1
+            elif encoding[i] == 'S':
+                prefixes.append('signed')
+                i += 1
+            elif encoding[i] in 'ZWNOI':
+                i += 1
+            else:
+                break
+
+        if i >= len(encoding):
+            return "void", i
+
+        base_type = self.base_types.get(encoding[i], 
f"UnknownType_{encoding[i]}")
+        i += 1
+
+        cv = []
+        ptrs = []
+        while i < len(encoding):
+            ch = encoding[i]
+            if ch == '*':
+                ptrs.append('*')
+                i += 1
+            elif ch == '&':
+                ptrs.append('&')
+                i += 1
+            elif ch == 'C':
+                cv.append('const')
+                i += 1
+            elif ch == 'D':
+                cv.append('volatile')
+                i += 1
+            elif ch == 'R':
+                cv.append('restrict')
+                i += 1
+            else:
+                break
+
+        prefix_str = (" ".join(prefixes) + " ") if prefixes else ""
+        cv_str = (" " + " ".join(cv)) if cv else ""
+        ptr_str = "".join((" *" if p == "*" else " &") for p in ptrs)
+        return f"{prefix_str}{base_type}{cv_str}{ptr_str}".strip(), i
+
+
+    def decode_attributes(self, attr_str: str) -> List[str]:
+        attrs = []
+        for char in attr_str:
+            if char in self.attributes:
+                attrs.append(self.attributes[char])
+        return attrs
+
+
+    def convert_file(self, input_file: str, output_file: str = None):
+        try:
+            with open(input_file, 'r') as f:
+                lines = f.readlines()
+        except FileNotFoundError:
+            print(f"Error: File not found {input_file}")
+            return
+
+        builtins = []
+        for line in lines:
+            line = line.strip()
+            if line.startswith('BUILTIN'):
+                parsed = self.parse_builtin_line(line)
+                if parsed:
+                    builtins.append(parsed)
+
+        # Generate output
+        output_lines = []
+        
+        # Header
+        output_lines.append("//===--- BuiltinsXCore.td - XCore Builtin 
function database ----*- C++ -*-===//")
+        output_lines.append("//")
+        output_lines.append("// Part of the LLVM Project, under the Apache 
License v2.0 with LLVM Exceptions.")
+        output_lines.append("// See https://llvm.org/LICENSE.txt for license 
information.")
+        output_lines.append("// SPDX-License-Identifier: Apache-2.0 WITH 
LLVM-exception")
+        output_lines.append("//")
+        
output_lines.append("//===----------------------------------------------------------------------===//")
+        output_lines.append("")
+        output_lines.append('include "clang/Basic/BuiltinsBase.td"')
+        output_lines.append("")
+        
+        # Base class
+        output_lines.append("class XCoreBuiltin<string prototype, 
list<Attribute> Attr = []> : TargetBuiltin {")
+        output_lines.append("  let Spellings = [NAME];")
+        output_lines.append("  let Prototype = prototype;")
+        output_lines.append("  let Attributes = Attr;")
+        output_lines.append("}")
+        output_lines.append("")
+
+        # Builtins
+        for name, proto_encoding, attr_encoding in builtins:
+            try:
+                return_type, param_types = 
self.parse_type_encoding(proto_encoding)
+                attributes = self.decode_attributes(attr_encoding)
+
+                # Build prototype
+                if not param_types:
+                    prototype = f"{return_type}()"
+                else:
+                    prototype = f"{return_type}({', '.join(param_types)})"
+
+                # Build definition
+                if attributes:
+                    attr_str = f", [{', '.join(attributes)}]"
+                else:
+                    attr_str = ""
+
+                output_lines.append(f'def {name} : 
XCoreBuiltin<"{prototype}"{attr_str}>;')
+
+            except Exception as e:
+                output_lines.append(f"// ERROR converting {name}: {e}")
+
+        output_content = '\n'.join(output_lines) + '\n'
+        
+        if output_file:
+            with open(output_file, 'w') as f:
+                f.write(output_content)
+            print(f"Conversion completed!")
+            print(f"Output file: {output_file}")
+            print(f"Successfully converted: {len(builtins)} functions")
+        else:
+            print(output_content)
+
+
+def main():
+    converter = XCoreConverter()
+
+    if len(sys.argv) > 1:
+        input_file = sys.argv[1]
+        output_file = sys.argv[2] if len(sys.argv) > 2 else 'BuiltinsXCore.td'
+        converter.convert_file(input_file, output_file)
+    else:
+        print("XCore Builtin Function Converter")
+        print("Usage:")
+        print("  python convert_xcore.py input.def [output.td]")
+        print("")
+        print("Example:")
+        print("  python convert_xcore.py BuiltinsXCore.def BuiltinsXCore.td")
+
+
+if __name__ == "__main__":
+    main()
diff --git a/clang/include/module.modulemap b/clang/include/module.modulemap
index 62a3ba104b0df..3f6e63c0e41dc 100644
--- a/clang/include/module.modulemap
+++ b/clang/include/module.modulemap
@@ -51,7 +51,6 @@ module Clang_Basic {
   textual header "clang/Basic/BuiltinsVE.def"
   textual header "clang/Basic/BuiltinsVEVL.gen.def"
   textual header "clang/Basic/BuiltinsWebAssembly.def"
-  textual header "clang/Basic/BuiltinsXCore.def"
   textual header "clang/Basic/CFProtectionOptions.def"
   textual header "clang/Basic/CodeGenOptions.def"
   textual header "clang/Basic/DebugOptions.def"
diff --git a/clang/lib/Basic/Targets/XCore.cpp 
b/clang/lib/Basic/Targets/XCore.cpp
index c725703ede5b0..9a4f8f125f29f 100644
--- a/clang/lib/Basic/Targets/XCore.cpp
+++ b/clang/lib/Basic/Targets/XCore.cpp
@@ -21,17 +21,17 @@ using namespace clang::targets;
 static constexpr int NumBuiltins =
     XCore::LastTSBuiltin - Builtin::FirstTSBuiltin;
 
-static constexpr llvm::StringTable BuiltinStrings =
-    CLANG_BUILTIN_STR_TABLE_START
-#define BUILTIN CLANG_BUILTIN_STR_TABLE
-#include "clang/Basic/BuiltinsXCore.def"
-    ;
-
-static constexpr auto BuiltinInfos = Builtin::MakeInfos<NumBuiltins>({
-#define BUILTIN CLANG_BUILTIN_ENTRY
-#define LIBBUILTIN CLANG_LIBBUILTIN_ENTRY
-#include "clang/Basic/BuiltinsXCore.def"
-});
+#define GET_BUILTIN_STR_TABLE
+#include "clang/Basic/BuiltinsXCore.inc"
+#undef GET_BUILTIN_STR_TABLE
+
+static constexpr Builtin::Info BuiltinInfos[] = {
+#define GET_BUILTIN_INFOS
+#include "clang/Basic/BuiltinsXCore.inc"
+#undef GET_BUILTIN_INFOS
+};
+
+static_assert(std::size(BuiltinInfos) == NumBuiltins);
 
 void XCoreTargetInfo::getTargetDefines(const LangOptions &Opts,
                                        MacroBuilder &Builder) const {

>From 7e5e690cb100f9bc89b9e0fc8e377598eb117edd Mon Sep 17 00:00:00 2001
From: Shuqi Liang <[email protected]>
Date: Sat, 9 May 2026 00:51:57 -0400
Subject: [PATCH 2/3] Fix clang-format issues

---
 clang/include/clang/Basic/TargetBuiltins.h | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/clang/include/clang/Basic/TargetBuiltins.h 
b/clang/include/clang/Basic/TargetBuiltins.h
index e7d2fe32ce7cc..18275d18293eb 100644
--- a/clang/include/clang/Basic/TargetBuiltins.h
+++ b/clang/include/clang/Basic/TargetBuiltins.h
@@ -442,7 +442,7 @@ namespace clang {
     };
   }
 
- /// XCore builtins
+  /// XCore builtins
   namespace XCore {
   enum {
     LastTIBuiltin = clang::Builtin::FirstTSBuiltin - 1,
@@ -452,7 +452,7 @@ namespace clang {
     LastTSBuiltin
   };
   }
-  
+
   /// SystemZ builtins
   namespace SystemZ {
     enum {

>From 3a64f3ff3fff8501c00970bbe10fb1b8759709f9 Mon Sep 17 00:00:00 2001
From: Shuqi Liang <[email protected]>
Date: Sat, 9 May 2026 01:00:35 -0400
Subject: [PATCH 3/3] Fix Python formatting issues

---
 clang/include/clang/Basic/convert_xcore.py | 167 +++++++++++----------
 1 file changed, 88 insertions(+), 79 deletions(-)

diff --git a/clang/include/clang/Basic/convert_xcore.py 
b/clang/include/clang/Basic/convert_xcore.py
index 8b18a0ae6df8c..8758461c96a70 100644
--- a/clang/include/clang/Basic/convert_xcore.py
+++ b/clang/include/clang/Basic/convert_xcore.py
@@ -8,51 +8,50 @@
 class XCoreConverter:
     def __init__(self):
         self.base_types = {
-            'v': 'void',
-            'b': 'bool',
-            'c': 'char',
-            's': 'short',
-            'i': 'int',
-            'h': '__fp16',
-            'x': '_Float16',
-            'y': '__bf16',
-            'f': 'float',
-            'd': 'double',
-            'z': 'size_t',
-            'w': 'wchar_t',
-            'F': 'CFString',
-            'G': 'id',
-            'H': 'SEL',
-            'M': 'struct objc_super',
-            'a': '__builtin_va_list',
-            'A': '__builtin_va_list&',
-            'Y': 'ptrdiff_t',
-            'P': 'FILE*',
-            'J': 'jmp_buf',
-            'p': 'pid_t',
+            "v": "void",
+            "b": "bool",
+            "c": "char",
+            "s": "short",
+            "i": "int",
+            "h": "__fp16",
+            "x": "_Float16",
+            "y": "__bf16",
+            "f": "float",
+            "d": "double",
+            "z": "size_t",
+            "w": "wchar_t",
+            "F": "CFString",
+            "G": "id",
+            "H": "SEL",
+            "M": "struct objc_super",
+            "a": "__builtin_va_list",
+            "A": "__builtin_va_list&",
+            "Y": "ptrdiff_t",
+            "P": "FILE*",
+            "J": "jmp_buf",
+            "p": "pid_t",
         }
 
         self.attributes = {
-            'n': 'NoThrow',
-            'r': 'NoReturn',
-            'U': 'Pure',
-            'c': 'Const',
-            't': 'CustomTypeChecking',
-            'T': 'TypeGeneric',
-            'F': 'LibBuiltin',
-            'f': 'LibFunction',
-            'h': 'RequiresHeader',
-            'i': 'RuntimeLibFunction',
-            'e': 'ConstWithoutErrnoAndExceptions',
-            'g': 'ConstWithoutExceptions',
-            'j': 'ReturnsTwice',
-            'u': 'NoSideEffects',
-            'z': 'CXXNamespaceStd',
-            'E': 'ConstantEvaluated',
-            'G': 'CXXConsteval',
+            "n": "NoThrow",
+            "r": "NoReturn",
+            "U": "Pure",
+            "c": "Const",
+            "t": "CustomTypeChecking",
+            "T": "TypeGeneric",
+            "F": "LibBuiltin",
+            "f": "LibFunction",
+            "h": "RequiresHeader",
+            "i": "RuntimeLibFunction",
+            "e": "ConstWithoutErrnoAndExceptions",
+            "g": "ConstWithoutExceptions",
+            "j": "ReturnsTwice",
+            "u": "NoSideEffects",
+            "z": "CXXNamespaceStd",
+            "E": "ConstantEvaluated",
+            "G": "CXXConsteval",
         }
 
-
     def parse_builtin_line(self, line: str) -> Optional[Tuple[str, str, str]]:
         # XCore uses BUILTIN instead of TARGET_BUILTIN
         pattern = r'BUILTIN\(([^,]+),\s*"([^"]*)",\s*"([^"]*)"\)'
@@ -61,7 +60,6 @@ def parse_builtin_line(self, line: str) -> 
Optional[Tuple[str, str, str]]:
             return match.group(1), match.group(2), match.group(3)
         return None
 
-
     def parse_type_encoding(self, encoding: str) -> Tuple[str, List[str]]:
         if not encoding:
             return "void", []
@@ -72,7 +70,7 @@ def parse_type_encoding(self, encoding: str) -> Tuple[str, 
List[str]]:
 
         params = []
         while i < len(encoding):
-            if encoding[i] == '.':
+            if encoding[i] == ".":
                 params.append("...")
                 break
             param_type = self._parse_single_type(encoding, i)
@@ -81,7 +79,6 @@ def parse_type_encoding(self, encoding: str) -> Tuple[str, 
List[str]]:
 
         return return_type[0], params
 
-
     def _parse_single_type(self, encoding: str, start_pos: int) -> Tuple[str, 
int]:
         i = start_pos
         if i >= len(encoding):
@@ -89,19 +86,19 @@ def _parse_single_type(self, encoding: str, start_pos: int) 
-> Tuple[str, int]:
 
         prefixes = []
         while i < len(encoding):
-            if encoding[i:i+2] == 'LL':
-                prefixes.append('long long')
+            if encoding[i : i + 2] == "LL":
+                prefixes.append("long long")
                 i += 2
-            elif encoding[i] == 'L':
-                prefixes.append('long')
+            elif encoding[i] == "L":
+                prefixes.append("long")
                 i += 1
-            elif encoding[i] == 'U':
-                prefixes.append('unsigned')
+            elif encoding[i] == "U":
+                prefixes.append("unsigned")
                 i += 1
-            elif encoding[i] == 'S':
-                prefixes.append('signed')
+            elif encoding[i] == "S":
+                prefixes.append("signed")
                 i += 1
-            elif encoding[i] in 'ZWNOI':
+            elif encoding[i] in "ZWNOI":
                 i += 1
             else:
                 break
@@ -116,20 +113,20 @@ def _parse_single_type(self, encoding: str, start_pos: 
int) -> Tuple[str, int]:
         ptrs = []
         while i < len(encoding):
             ch = encoding[i]
-            if ch == '*':
-                ptrs.append('*')
+            if ch == "*":
+                ptrs.append("*")
                 i += 1
-            elif ch == '&':
-                ptrs.append('&')
+            elif ch == "&":
+                ptrs.append("&")
                 i += 1
-            elif ch == 'C':
-                cv.append('const')
+            elif ch == "C":
+                cv.append("const")
                 i += 1
-            elif ch == 'D':
-                cv.append('volatile')
+            elif ch == "D":
+                cv.append("volatile")
                 i += 1
-            elif ch == 'R':
-                cv.append('restrict')
+            elif ch == "R":
+                cv.append("restrict")
                 i += 1
             else:
                 break
@@ -139,7 +136,6 @@ def _parse_single_type(self, encoding: str, start_pos: int) 
-> Tuple[str, int]:
         ptr_str = "".join((" *" if p == "*" else " &") for p in ptrs)
         return f"{prefix_str}{base_type}{cv_str}{ptr_str}".strip(), i
 
-
     def decode_attributes(self, attr_str: str) -> List[str]:
         attrs = []
         for char in attr_str:
@@ -147,10 +143,9 @@ def decode_attributes(self, attr_str: str) -> List[str]:
                 attrs.append(self.attributes[char])
         return attrs
 
-
     def convert_file(self, input_file: str, output_file: str = None):
         try:
-            with open(input_file, 'r') as f:
+            with open(input_file, "r") as f:
                 lines = f.readlines()
         except FileNotFoundError:
             print(f"Error: File not found {input_file}")
@@ -159,28 +154,40 @@ def convert_file(self, input_file: str, output_file: str 
= None):
         builtins = []
         for line in lines:
             line = line.strip()
-            if line.startswith('BUILTIN'):
+            if line.startswith("BUILTIN"):
                 parsed = self.parse_builtin_line(line)
                 if parsed:
                     builtins.append(parsed)
 
         # Generate output
         output_lines = []
-        
+
         # Header
-        output_lines.append("//===--- BuiltinsXCore.td - XCore Builtin 
function database ----*- C++ -*-===//")
+        output_lines.append(
+            "//===--- BuiltinsXCore.td - XCore Builtin function database 
----*- C++ -*-===//"
+        )
         output_lines.append("//")
-        output_lines.append("// Part of the LLVM Project, under the Apache 
License v2.0 with LLVM Exceptions.")
-        output_lines.append("// See https://llvm.org/LICENSE.txt for license 
information.")
-        output_lines.append("// SPDX-License-Identifier: Apache-2.0 WITH 
LLVM-exception")
+        output_lines.append(
+            "// Part of the LLVM Project, under the Apache License v2.0 with 
LLVM Exceptions."
+        )
+        output_lines.append(
+            "// See https://llvm.org/LICENSE.txt for license information."
+        )
+        output_lines.append(
+            "// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception"
+        )
         output_lines.append("//")
-        
output_lines.append("//===----------------------------------------------------------------------===//")
+        output_lines.append(
+            
"//===----------------------------------------------------------------------===//"
+        )
         output_lines.append("")
         output_lines.append('include "clang/Basic/BuiltinsBase.td"')
         output_lines.append("")
-        
+
         # Base class
-        output_lines.append("class XCoreBuiltin<string prototype, 
list<Attribute> Attr = []> : TargetBuiltin {")
+        output_lines.append(
+            "class XCoreBuiltin<string prototype, list<Attribute> Attr = []> : 
TargetBuiltin {"
+        )
         output_lines.append("  let Spellings = [NAME];")
         output_lines.append("  let Prototype = prototype;")
         output_lines.append("  let Attributes = Attr;")
@@ -205,15 +212,17 @@ def convert_file(self, input_file: str, output_file: str 
= None):
                 else:
                     attr_str = ""
 
-                output_lines.append(f'def {name} : 
XCoreBuiltin<"{prototype}"{attr_str}>;')
+                output_lines.append(
+                    f'def {name} : XCoreBuiltin<"{prototype}"{attr_str}>;'
+                )
 
             except Exception as e:
                 output_lines.append(f"// ERROR converting {name}: {e}")
 
-        output_content = '\n'.join(output_lines) + '\n'
-        
+        output_content = "\n".join(output_lines) + "\n"
+
         if output_file:
-            with open(output_file, 'w') as f:
+            with open(output_file, "w") as f:
                 f.write(output_content)
             print(f"Conversion completed!")
             print(f"Output file: {output_file}")
@@ -227,7 +236,7 @@ def main():
 
     if len(sys.argv) > 1:
         input_file = sys.argv[1]
-        output_file = sys.argv[2] if len(sys.argv) > 2 else 'BuiltinsXCore.td'
+        output_file = sys.argv[2] if len(sys.argv) > 2 else "BuiltinsXCore.td"
         converter.convert_file(input_file, output_file)
     else:
         print("XCore Builtin Function Converter")

_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to