llvmbot wrote:

<!--LLVM PR SUMMARY COMMENT-->

@llvm/pr-subscribers-clang-driver

Author: None (student433)

<details>
<summary>Changes</summary>

Fixes #<!-- -->114979, adding support for the cl2000 compiler to the clang 
frontend to get clangd working as discussed in 
https://discourse.llvm.org/t/ti-c2000-target-not-supported-in-clangd-lsp/83015

---

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


15 Files Affected:

- (modified) clang/include/clang/Driver/Driver.h (+5-1) 
- (modified) clang/include/clang/Driver/Options.h (+1) 
- (modified) clang/include/clang/Driver/Options.td (+64-10) 
- (modified) clang/lib/Basic/CMakeLists.txt (+1) 
- (modified) clang/lib/Basic/Targets.cpp (+4) 
- (added) clang/lib/Basic/Targets/C2000.cpp (+356) 
- (added) clang/lib/Basic/Targets/C2000.h (+100) 
- (modified) clang/lib/Driver/CMakeLists.txt (+1) 
- (modified) clang/lib/Driver/Driver.cpp (+13) 
- (modified) clang/lib/Driver/ToolChain.cpp (+1) 
- (added) clang/lib/Driver/ToolChains/Arch/C2000.cpp (+85) 
- (added) clang/lib/Driver/ToolChains/Arch/C2000.h (+22) 
- (modified) clang/lib/Driver/ToolChains/CommonArgs.cpp (+5) 
- (modified) llvm/include/llvm/TargetParser/Triple.h (+1) 
- (modified) llvm/lib/TargetParser/Triple.cpp (+7) 


``````````diff
diff --git a/clang/include/clang/Driver/Driver.h 
b/clang/include/clang/Driver/Driver.h
index f4a52cc529b79c..55da823598f9b1 100644
--- a/clang/include/clang/Driver/Driver.h
+++ b/clang/include/clang/Driver/Driver.h
@@ -107,7 +107,8 @@ class Driver {
     CPPMode,
     CLMode,
     FlangMode,
-    DXCMode
+    DXCMode,
+    C2000Mode
   } Mode;
 
   enum SaveTempsMode {
@@ -253,6 +254,9 @@ class Driver {
   /// Whether the driver should follow dxc.exe like behavior.
   bool IsDXCMode() const { return Mode == DXCMode; }
 
+  // Whether the driver should follow cl2000.exe like behaviour.
+  bool IsC2000Mode() const { return Mode == C2000Mode; }
+
   /// Only print tool bindings, don't build any jobs.
   LLVM_PREFERRED_TYPE(bool)
   unsigned CCCPrintBindings : 1;
diff --git a/clang/include/clang/Driver/Options.h 
b/clang/include/clang/Driver/Options.h
index 0797410e9940e2..1613810a5bf741 100644
--- a/clang/include/clang/Driver/Options.h
+++ b/clang/include/clang/Driver/Options.h
@@ -39,6 +39,7 @@ enum ClangVisibility {
   FlangOption = (1 << 4),
   FC1Option = (1 << 5),
   DXCOption = (1 << 6),
+  CL2000Option = (1 << 7)
 };
 
 enum ID {
diff --git a/clang/include/clang/Driver/Options.td 
b/clang/include/clang/Driver/Options.td
index d38dd2b4e3cf09..44ce3c3413b09b 100644
--- a/clang/include/clang/Driver/Options.td
+++ b/clang/include/clang/Driver/Options.td
@@ -97,6 +97,10 @@ def FC1Option : OptionVisibility;
 // are made available when the driver is running in DXC compatibility mode.
 def DXCOption : OptionVisibility;
 
+// CL2000Option - This is a cl2000.exe compatibility option. Options with this 
flag
+// are made available when the driver is running in cl2000 compatibility mode.
+def CL2000Option : OptionVisibility;
+
 /////////
 // Docs
 
@@ -201,6 +205,9 @@ def hlsl_Group : OptionGroup<"<HLSL group>">, 
Group<f_Group>,
                    DocName<"HLSL options">,
                    Visibility<[ClangOption]>;
 
+def cl2000_group : OptionGroup<"<cl2000 group>">,
+                    Visibility<[CL2000Option]>;
+
 // Feature groups - these take command line options that correspond directly to
 // target specific features and can be translated directly from command line
 // options.
@@ -672,7 +679,7 @@ class InternalDriverOpt : Group<internal_driver_Group>,
   Flags<[NoXarchOption, HelpHidden]>;
 def driver_mode : Joined<["--"], "driver-mode=">, Group<internal_driver_Group>,
   Flags<[NoXarchOption, HelpHidden]>,
-  Visibility<[ClangOption, FlangOption, CLOption, DXCOption]>,
+  Visibility<[ClangOption, FlangOption, CLOption, DXCOption, CL2000Option]>,
   HelpText<"Set the driver mode to either 'gcc', 'g++', 'cpp', 'cl' or 
'flang'">;
 def rsp_quoting : Joined<["--"], "rsp-quoting=">, Group<internal_driver_Group>,
   Flags<[NoXarchOption, HelpHidden]>,
@@ -843,7 +850,7 @@ def C : Flag<["-"], "C">, Visibility<[ClangOption, 
CC1Option]>,
     HelpText<"Include comments in preprocessed output">,
     MarshallingInfoFlag<PreprocessorOutputOpts<"ShowComments">>;
 def D : JoinedOrSeparate<["-"], "D">, Group<Preprocessor_Group>,
-    Visibility<[ClangOption, CC1Option, FlangOption, FC1Option, DXCOption]>,
+    Visibility<[ClangOption, CC1Option, FlangOption, FC1Option, DXCOption, 
CL2000Option]>,
     MetaVarName<"<macro>=<value>">,
     HelpText<"Define <macro> to <value> (or 1 if <value> omitted)">;
 def E : Flag<["-"], "E">, Flags<[NoXarchOption]>,
@@ -929,7 +936,7 @@ def ObjCXX : Flag<["-"], "ObjC++">, Flags<[NoXarchOption]>,
 def ObjC : Flag<["-"], "ObjC">, Flags<[NoXarchOption]>,
   HelpText<"Treat source input files as Objective-C inputs">;
 def O : Joined<["-"], "O">, Group<O_Group>,
-  Visibility<[ClangOption, CC1Option, FC1Option, FlangOption]>;
+  Visibility<[ClangOption, CC1Option, FC1Option, FlangOption, CL2000Option]>;
 def O_flag : Flag<["-"], "O">, Visibility<[ClangOption, CC1Option, FC1Option]>,
   Alias<O>, AliasArgs<["1"]>;
 def Ofast : Joined<["-"], "Ofast">, Group<O_Group>,
@@ -1035,10 +1042,10 @@ def Xassembler : Separate<["-"], "Xassembler">,
   Group<CompileOnly_Group>;
 def Xclang : Separate<["-"], "Xclang">,
   HelpText<"Pass <arg> to clang -cc1">, MetaVarName<"<arg>">,
-  Flags<[NoXarchOption]>, Visibility<[ClangOption, CLOption, DXCOption]>,
+  Flags<[NoXarchOption]>, Visibility<[ClangOption, CLOption, DXCOption, 
CL2000Option]>,
   Group<CompileOnly_Group>;
 def : Joined<["-"], "Xclang=">, Group<CompileOnly_Group>,
-  Flags<[NoXarchOption]>, Visibility<[ClangOption, CLOption, DXCOption]>,
+  Flags<[NoXarchOption]>, Visibility<[ClangOption, CLOption, DXCOption, 
CL2000Option]>,
   Alias<Xclang>,
   HelpText<"Alias for -Xclang">, MetaVarName<"<arg>">;
 def Xcuda_fatbinary : Separate<["-"], "Xcuda-fatbinary">,
@@ -4023,7 +4030,7 @@ def fdriver_only : Flag<["-"], "fdriver-only">, 
Flags<[NoXarchOption]>,
   Group<Action_Group>, HelpText<"Only run the driver.">;
 def fsyntax_only : Flag<["-"], "fsyntax-only">,
   Flags<[NoXarchOption]>,
-  Visibility<[ClangOption, CLOption, DXCOption, CC1Option, FC1Option, 
FlangOption]>,
+  Visibility<[ClangOption, CLOption, DXCOption, CC1Option, FC1Option, 
FlangOption, CL2000Option]>,
   Group<Action_Group>,
   HelpText<"Run the preprocessor, parser and semantic analysis stages">;
 def ftabstop_EQ : Joined<["-"], "ftabstop=">, Group<f_Group>;
@@ -4470,7 +4477,7 @@ defm emit_compact_unwind_non_canonical : 
BoolFOption<"emit-compact-unwind-non-ca
           "Try emitting Compact-Unwind for non-canonical entries. Maybe 
overridden by other constraints">,
   NegFlag<SetFalse>>;
 def g_Flag : Flag<["-"], "g">, Group<g_Group>,
-    Visibility<[ClangOption, CLOption, DXCOption, FlangOption]>,
+    Visibility<[ClangOption, CLOption, DXCOption, FlangOption, CL2000Option]>,
     HelpText<"Generate source-level debug information">;
 def gline_tables_only : Flag<["-"], "gline-tables-only">, Group<gN_Group>,
   Visibility<[ClangOption, CLOption, DXCOption, FlangOption]>,
@@ -5817,11 +5824,11 @@ def rdynamic : Flag<["-"], "rdynamic">, 
Group<Link_Group>,
   Visibility<[ClangOption, FlangOption]>;
 def resource_dir : Separate<["-"], "resource-dir">,
   Flags<[NoXarchOption, HelpHidden]>,
-  Visibility<[ClangOption, CC1Option, CLOption, DXCOption, FlangOption, 
FC1Option]>,
+  Visibility<[ClangOption, CC1Option, CLOption, DXCOption, FlangOption, 
FC1Option, CL2000Option]>,
   HelpText<"The directory which holds the compiler resource files">,
   MarshallingInfoString<HeaderSearchOpts<"ResourceDir">>;
 def resource_dir_EQ : Joined<["-"], "resource-dir=">, Flags<[NoXarchOption]>,
-  Visibility<[ClangOption, CLOption, DXCOption, FlangOption]>,
+  Visibility<[ClangOption, CLOption, DXCOption, FlangOption, CL2000Option]>,
   Alias<resource_dir>;
 def rpath : Separate<["-"], "rpath">, Flags<[LinkerInput]>, Group<Link_Group>,
   Visibility<[ClangOption, FlangOption]>;
@@ -6020,7 +6027,7 @@ def w : Flag<["-"], "w">, HelpText<"Suppress all 
warnings">,
   MarshallingInfoFlag<DiagnosticOpts<"IgnoreWarnings">>;
 def x : JoinedOrSeparate<["-"], "x">,
 Flags<[NoXarchOption]>,
-  Visibility<[ClangOption, CC1Option, FlangOption, FC1Option, CLOption]>,
+  Visibility<[ClangOption, CC1Option, FlangOption, FC1Option, CLOption, 
CL2000Option]>,
   HelpText<"Treat subsequent input files as having type <language>">,
   MetaVarName<"<language>">;
 def y : Joined<["-"], "y">;
@@ -9111,3 +9118,50 @@ def wasm_opt : Flag<["--"], "wasm-opt">,
   Group<m_Group>,
   HelpText<"Enable the wasm-opt optimizer (default)">,
   MarshallingInfoNegativeFlag<LangOpts<"NoWasmOpt">>;
+
+
+
+//===----------------------------------------------------------------------===//
+// cl2000 Options
+//===----------------------------------------------------------------------===//
+
+
+
+
+def cl2000_include_path : Joined<["--"], "include_path=">, Group<cl2000_group>,
+                    HelpText<"specify include search paths for cl2000 driver 
mode">, Alias<isystem>;
+
+def eabi :        Joined<["--"], "abi=">, Group<cl2000_group>,
+                  HelpText<"abi">;
+def strict_ansi : Joined<["--"], "strict_ansi">, Group<cl2000_group>,
+                  HelpText<"strict ANSI/ISO Mode">;
+def fp_mode :     Joined<["--"], "fp_mode=">, Group<cl2000_group>,
+                  HelpText<"fp mode">;
+def cla_support : Joined<["--"], "cla_support=">, Group<cl2000_group>,
+                  HelpText<"cla Support">;
+def float_support :   Joined<["--"], "float_support=">, Group<cl2000_group>,
+                      HelpText<"Float Support">;
+def idiv_support  :   Joined<["--"], "idiv_support=">, Group<cl2000_group>,
+                      HelpText<"idiv Support">;
+def tmu_support   :   Joined<["--"], "tmu_support=">, Group<cl2000_group>,
+                      HelpText<"tmu Support">;
+def vcu_support   :   Joined<["--"], "vcu_support=">, Group<cl2000_group>,
+                      HelpText<"vcu Support">;
+def opt_level   :   Joined<["--"], "opt_level=">, Group<cl2000_group>,
+                      HelpText<"opt level">, Alias<O>;
+def silicon_version     :   Joined<["-"], "v28">, Group<cl2000_group>,
+                    HelpText<"silicon version">;
+def large_model    :   Joined<["-"], "ml">, Group<cl2000_group>,
+                    HelpText<"large model">;
+def unified_memory     :   Joined<["-"], "mt">, Group<cl2000_group>,
+                    HelpText<"unified memory">;
+def output_file     :   Joined<["--"], "output_file=">, Group<cl2000_group>,
+                      HelpText<"output file">, Alias<o>;
+def source_file     :   Joined<["--"], "">, Group<cl2000_group>,
+                      HelpText<"source file">;
+def symdebug_dwarf     :   Joined<["--"], "symdebug:dwarf">, 
Group<cl2000_group>,
+                      HelpText<"Alias for -g">, Alias<g_Flag>;
+def relaxed_ansi     :   Joined<["--"], "relaxed_ansi">, Group<cl2000_group>,
+                      HelpText<"relaxed ansi mode">;
+def compile_only   :   Joined<["--"], "compile_only">, Group<cl2000_group>,
+                      HelpText<"compile only">, Alias<c>;
diff --git a/clang/lib/Basic/CMakeLists.txt b/clang/lib/Basic/CMakeLists.txt
index 331dfbb3f4b67e..bc71f93fe101a2 100644
--- a/clang/lib/Basic/CMakeLists.txt
+++ b/clang/lib/Basic/CMakeLists.txt
@@ -99,6 +99,7 @@ add_clang_library(clangBasic
   Targets/ARM.cpp
   Targets/AVR.cpp
   Targets/BPF.cpp
+  Targets/C2000.cpp
   Targets/CSKY.cpp
   Targets/DirectX.cpp
   Targets/Hexagon.cpp
diff --git a/clang/lib/Basic/Targets.cpp b/clang/lib/Basic/Targets.cpp
index 281aebdb1c35d3..9f5045a73b2d83 100644
--- a/clang/lib/Basic/Targets.cpp
+++ b/clang/lib/Basic/Targets.cpp
@@ -19,6 +19,7 @@
 #include "Targets/ARM.h"
 #include "Targets/AVR.h"
 #include "Targets/BPF.h"
+#include "Targets/C2000.h"
 #include "Targets/CSKY.h"
 #include "Targets/DirectX.h"
 #include "Targets/Hexagon.h"
@@ -272,6 +273,9 @@ std::unique_ptr<TargetInfo> AllocateTarget(const 
llvm::Triple &Triple,
   case llvm::Triple::msp430:
     return std::make_unique<MSP430TargetInfo>(Triple, Opts);
 
+  case llvm::Triple::c2000:
+    return std::make_unique<C2000TargetInfo>(Triple, Opts);
+
   case llvm::Triple::mips:
     switch (os) {
     case llvm::Triple::Linux:
diff --git a/clang/lib/Basic/Targets/C2000.cpp 
b/clang/lib/Basic/Targets/C2000.cpp
new file mode 100644
index 00000000000000..5fe53377f10878
--- /dev/null
+++ b/clang/lib/Basic/Targets/C2000.cpp
@@ -0,0 +1,356 @@
+#include "C2000.h"
+#include "Targets.h"
+#include "clang/Basic/Builtins.h"
+#include "clang/Basic/Diagnostic.h"
+#include "clang/Basic/MacroBuilder.h"
+#include "clang/Basic/TargetBuiltins.h"
+
+using namespace clang;
+using namespace clang::targets;
+
+const char *const C2000TargetInfo::GCCRegNames[] = {
+    "ACC", "XAR0", "XAR1", "XAR2", "XAR3", "XAR4", "XAR5", "XAR6", "XAR7"};
+
+ArrayRef<const char *> C2000TargetInfo::getGCCRegNames() const {
+  return llvm::ArrayRef(GCCRegNames);
+}
+
+bool C2000TargetInfo::handleTargetFeatures(std::vector<std::string> &Features,
+                                           DiagnosticsEngine &Diags) {
+
+  for (const auto &Feature : Features) {
+    if (Feature == "+eabi") {
+      eabi = true;
+      continue;
+    }
+    if (Feature == "+strict_ansi") {
+      strict = true;
+      continue;
+    }
+    if (Feature == "+cla_support") {
+      cla_support = true;
+    }
+    if (Feature == "+cla0") {
+      cla0 = true;
+      continue;
+    }
+    if (Feature == "+cla1") {
+      cla1 = true;
+      continue;
+    }
+    if (Feature == "+cla2") {
+      cla2 = true;
+      continue;
+    }
+    if (Feature == "+relaxed") {
+      relaxed = true;
+      continue;
+    }
+    if (Feature == "+fpu64") {
+      fpu64 = true;
+      continue;
+    }
+    if (Feature == "+fpu32") {
+      fpu32 = true;
+      continue;
+    }
+    if (Feature == "+tmu_support") {
+      tmu_support = true;
+    }
+    if (Feature == "+tmu1") {
+      tmu1 = true;
+      continue;
+    }
+    if (Feature == "+idiv0") {
+      idiv0 = true;
+      continue;
+    }
+    if (Feature == "+vcu_support") {
+      vcu_support = true;
+    }
+    if (Feature == "+vcu2") {
+      vcu2 = true;
+      continue;
+    }
+    if (Feature == "+vcrc") {
+      vcrc = true;
+      continue;
+    }
+    if (Feature == "+opt_level") {
+      opt = true;
+      continue;
+    }
+  }
+  return true;
+}
+
+bool C2000TargetInfo::hasFeature(StringRef Feature) const {
+  return llvm::StringSwitch<bool>(Feature)
+      .Case("eabi", eabi)
+      .Case("strict_ansi", strict)
+      .Case("cla-support", cla_support)
+      .Case("cla0", cla0)
+      .Case("cla1", cla1)
+      .Case("cla2", cla2)
+      .Case("relaxed", relaxed)
+      .Case("fpu64", fpu64)
+      .Case("fpu32", fpu32)
+      .Case("tmu-support", tmu_support)
+      .Case("tmu1", tmu1)
+      .Case("vcu-support", vcu_support)
+      .Case("vcu2", vcu2)
+      .Case("vcrc", vcrc)
+      .Case("opt-level", opt)
+      .Default(false);
+}
+
+void C2000TargetInfo::getTargetDefines(const LangOptions &Opts,
+                                       MacroBuilder &Builder) const {
+  Builder.undefineMacro("__CHAR_BIT__"); // FIXME: Implement 16-bit char
+  Builder.defineMacro("__CHAR_BIT__", "16");
+  Builder.defineMacro("__TMS320C2000__");
+  Builder.defineMacro("_TMS320C2000");
+  Builder.defineMacro("__TMS320C28XX__");
+  Builder.defineMacro("_TMS320C28XX");
+  Builder.defineMacro("__TMS320C28X__");
+  Builder.defineMacro("_TMS320C28X");
+  Builder.defineMacro("__TI_STRICT_FP_MODE__");
+  Builder.defineMacro("__COMPILER_VERSION__");
+  Builder.defineMacro("__TI_COMPILER_VERSION__");
+  Builder.defineMacro("__TI_COMPILER_VERSION__QUAL_ID");
+  Builder.defineMacro("__TI_COMPILER_VERSION__QUAL__", "QUAL_LETTER");
+  Builder.defineMacro("__little_endian__");
+  Builder.defineMacro("__PTRDIFF_T_TYPE__", "signed long");
+  Builder.defineMacro("__SIZE_T_TYPE__", "unsigned long");
+  Builder.defineMacro("__WCHAR_T_TYPE__", "long unsigned");
+  Builder.defineMacro("__TI_WCHAR_T_BITS", "16");
+  Builder.defineMacro("__TI_C99_COMPLEX_ENABLED");
+  Builder.defineMacro("__TI_GNU_ATTRIBUTE_SUPPORT__");
+  Builder.defineMacro("__LARGE_MODEL__");
+  Builder.defineMacro("__signed_chars__");
+  Builder.defineMacro("__OPTIMIZE_FOR_SPACE");
+
+  if (hasFeature("eabi"))
+    Builder.defineMacro("__TI_EABI__");
+  if (hasFeature("strict_ansi"))
+    Builder.defineMacro("__TI_STRICT_ANSI_MODE__");
+  if (hasFeature("cla-support"))
+    Builder.defineMacro("__TMS320C28XX_CLA__");
+
+  if (hasFeature("cla0"))
+    Builder.defineMacro("__TMS320C28XX_CLA0__");
+  else if (hasFeature("cla1"))
+    Builder.defineMacro("__TMS320C28XX_CLA1__");
+  else if (hasFeature("cla2"))
+    Builder.defineMacro("__TMS320C28XX_CLA2__");
+
+  if (hasFeature("fpu64")) {
+    Builder.defineMacro("__TMS320C28XX_FPU64__");
+    Builder.defineMacro("__TMS320C28XX_FPU32__");
+  } else if (hasFeature("fpu32"))
+    Builder.defineMacro("__TMS320C28XX_FPU32__");
+  if (hasFeature("idiv0"))
+    Builder.defineMacro("__TMS320C28XX_IDIV__");
+  if (hasFeature("tmu1"))
+    Builder.defineMacro("__TMS320C28XX_TMU1__");
+  if (hasFeature("tmu-support")) {
+    Builder.defineMacro("__TMS320C28XX_TMU0__");
+    Builder.defineMacro("__TMS320C28XX_TMU__");
+  }
+  if (hasFeature("vcu-support"))
+    Builder.defineMacro("__TMS320C28XX_VCU0__");
+  if (hasFeature("vcu2"))
+    Builder.defineMacro("__TMS320C28XX_VCU2__");
+  else if (hasFeature("vcrc"))
+    Builder.defineMacro("__TMS320C28XX_VCRC__");
+  if (hasFeature("opt-level"))
+    Builder.defineMacro("_INLINE");
+  if (hasFeature("relaxed"))
+    Builder.undefineMacro("__TI_STRICT_FP_MODE__");
+
+  Builder.defineMacro("__cregister", "");
+  Builder.defineMacro("interrupt", "");
+  Builder.defineMacro("__interrupt", "");
+
+  // Assembly Instrinsics
+
+  Builder.append("int __abs16_sat( int src );");
+  Builder.append("void __add( int *m, int b );");
+  Builder.append("long __addcu( long src1, unsigned int src2 );");
+  Builder.append("void __addl( long *m, long b );");
+  Builder.append("void __and(int *m, int b);");
+  Builder.append("int *__byte_func( int *array, unsigned int byte_index );");
+  Builder.defineMacro("__byte(array, byte_index)",
+                      "*__byte_func(array, byte_index)");
+  Builder.append("unsigned long *__byte_peripheral_32_func(unsigned long 
*x);");
+  Builder.defineMacro("__byte_peripheral_32(x)",
+                      "*__byte_peripheral_32_func(x)");
+  Builder.append("void __dec( int *m );");
+
+  // dmac needs macro magic
+  Builder.append("unsigned int __disable_interrupts( );");
+  Builder.append("void __eallow( void );");
+  Builder.append("void __edis( void );");
+  Builder.append("unsigned int __enable_interrupts( );");
+  Builder.append("int __flip16(int src);");
+  Builder.append("long __flip32(long src);");
+  Builder.append("long long __flip64(long long src);");
+  Builder.append("void __inc( int *m );");
+  Builder.append("long __IQ( long double A , int N );");
+  Builder.append("long __IQmpy( long A, long B , int N );");
+  Builder.append("long __IQsat( long A, long max, long min );");
+  Builder.append("long __IQxmpy(long A , long B, int N);");
+  Builder.append("long long __llmax(long long dst, long long src);");
+  Builder.append("long long __llmin(long long dst, long long src);");
+  Builder.append("long __lmax(long dst, long src);");
+  Builder.append("long __lmin(long dst, long src);");
+  Builder.append("int __max(int dst, int src);");
+  Builder.append("int __min(int dst, int src);");
+  Builder.append("int __mov_byte( int *src, unsigned int n );");
+  Builder.append("long __mpy( int src1, int src2 );");
+  Builder.append("long __mpyb( int src1, unsigned int src2 );");
+  Builder.append("long __mpy_mov_t( int src1, int src2, int * dst2 );");
+  Builder.append("unsigned long __mpyu(unsigned int src2, unsigned int 
srt2);");
+  Builder.append("long __mpyxu( int src1, unsigned int src2 );");
+  Builder.append("long __norm32(long src, int * shift );");
+  Builder.append("long long __norm64(long long src, int * shift );");
+  Builder.append("void __or(int *m, int b);");
+  Builder.append("long __qmpy32( long src32a, long src32b, int q );");
+  Builder.append("long __qmpy32by16(long src32, int src16, int q);");
+  Builder.append("void __restore_interrupts(unsigned int val );");
+  Builder.append("long __rol( long src );");
+  Builder.append("long __ror( long src );");
+  Builder.append("void * __rpt_mov_imm(void * dst , int src ,int count );");
+  Builder.append("int __rpt_norm_inc( long src, int dst, int count );");
+  Builder.append("int __rpt_norm_dec(long src, int dst, int count);");
+  Builder.append("long __rpt_rol(long src, int count);");
+  Builder.append("long __rpt_ror(long src, int count);");
+  Builder.append("long __rpt_subcu(long dst, int src, int count);");
+  Builder.append("unsigned long __rpt_subcul(unsigned long num, unsigned long "
+                 "den, unsigned long remainder, int count);");
+  Builder.append("long __sat( long src );");
+  Builder.append("long __sat32( long src, long limit );");
+  Builder.append("long __sathigh16(long src, int limit);");
+  Builder.append("long __satlow16( long src );");
+  Builder.append("long __sbbu( long src1 , unsigned int src2 );");
+  Builder.append("void __sub( int * m, int b );");
+  Builder.append("long __subcu( long src1, int src2 );");
+  Builder.append("unsigned long __subcul(unsigned long num, unsigned long den, 
"
+                 "unsigned long remainder);");
+  Builder.append("void __subl( long * m, long b )...
[truncated]

``````````

</details>


https://github.com/llvm/llvm-project/pull/125663
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to