https://github.com/wzssyqa created 
https://github.com/llvm/llvm-project/pull/192204

openRuyi is a rolling release focusing on RISC-V support, which is launched by 
Institute of Software, CAS.

The default ISA level is set to RVA23U64.

See: https://openruyi.cn/

>From 5812e9ac6c21f76fc58f2bebee8432d7fbfc2449 Mon Sep 17 00:00:00 2001
From: YunQiang Su <[email protected]>
Date: Wed, 15 Apr 2026 15:48:55 +0800
Subject: [PATCH] Support Vendor openruyi

openRuyi is a rolling release focusing on RISC-V support, which is
launched by Institute of Software, CAS.

The default ISA level is set to RVA23U64.

See: https://openruyi.cn/
---
 clang/lib/Driver/ToolChains/Arch/RISCV.cpp | 4 ++++
 llvm/include/llvm/TargetParser/Triple.h    | 3 ++-
 llvm/lib/TargetParser/Triple.cpp           | 3 +++
 llvm/unittests/TargetParser/TripleTest.cpp | 6 ++++++
 4 files changed, 15 insertions(+), 1 deletion(-)

diff --git a/clang/lib/Driver/ToolChains/Arch/RISCV.cpp 
b/clang/lib/Driver/ToolChains/Arch/RISCV.cpp
index 7fda8ea50223d..63ceaefb11872 100644
--- a/clang/lib/Driver/ToolChains/Arch/RISCV.cpp
+++ b/clang/lib/Driver/ToolChains/Arch/RISCV.cpp
@@ -320,6 +320,8 @@ std::string riscv::getRISCVArch(const llvm::opt::ArgList 
&Args,
         return "rv64imafdcv_zba_zbb_zbs";
       if (Triple.isOSFuchsia())
         return "rva22u64_v";
+      if (Triple.getVendor() == llvm::Triple::openRuyi)
+        return "rva23u64";
       return "rv64imafdc";
     }
   }
@@ -341,6 +343,8 @@ std::string riscv::getRISCVArch(const llvm::opt::ArgList 
&Args,
     return "rv64imafdcv_zba_zbb_zbs";
   if (Triple.isOSFuchsia())
     return "rva22u64_v";
+  if (Triple.getVendor() == llvm::Triple::openRuyi)
+    return "rva23u64";
   return "rv64imafdc";
 }
 
diff --git a/llvm/include/llvm/TargetParser/Triple.h 
b/llvm/include/llvm/TargetParser/Triple.h
index fb4aaaa067ae9..a7632d3b67946 100644
--- a/llvm/include/llvm/TargetParser/Triple.h
+++ b/llvm/include/llvm/TargetParser/Triple.h
@@ -203,7 +203,8 @@ class Triple {
     OpenEmbedded,
     Intel,
     Meta,
-    LastVendorType = Meta
+    openRuyi,
+    LastVendorType = openRuyi
   };
   enum OSType {
     UnknownOS,
diff --git a/llvm/lib/TargetParser/Triple.cpp b/llvm/lib/TargetParser/Triple.cpp
index 63dac93b30df8..04ad67c4c4cc2 100644
--- a/llvm/lib/TargetParser/Triple.cpp
+++ b/llvm/lib/TargetParser/Triple.cpp
@@ -387,6 +387,8 @@ StringRef Triple::getVendorTypeName(VendorType Kind) {
     return "suse";
   case Meta:
     return "meta";
+  case openRuyi:
+    return "openruyi";
   }
 
   llvm_unreachable("Invalid VendorType!");
@@ -906,6 +908,7 @@ static Triple::VendorType parseVendor(StringRef VendorName) 
{
       .Case("oe", Triple::OpenEmbedded)
       .Case("intel", Triple::Intel)
       .Case("meta", Triple::Meta)
+      .Case("openruyi", Triple::openRuyi)
       .Default(Triple::UnknownVendor);
 }
 
diff --git a/llvm/unittests/TargetParser/TripleTest.cpp 
b/llvm/unittests/TargetParser/TripleTest.cpp
index 5f83fdd0ba000..b8cacc96777f9 100644
--- a/llvm/unittests/TargetParser/TripleTest.cpp
+++ b/llvm/unittests/TargetParser/TripleTest.cpp
@@ -854,6 +854,12 @@ TEST(TripleTest, ParsedIDs) {
   EXPECT_EQ(Triple::Hurd, T.getOS());
   EXPECT_EQ(Triple::GNU, T.getEnvironment());
 
+  T = Triple("riscv64-openruyi-linux");
+  EXPECT_EQ(Triple::riscv64, T.getArch());
+  EXPECT_EQ(Triple::openRuyi, T.getVendor());
+  EXPECT_EQ(Triple::Linux, T.getOS());
+  EXPECT_EQ(Triple::UnknownEnvironment, T.getEnvironment());
+
   T = Triple("armv7hl-suse-linux-gnueabi");
   EXPECT_EQ(Triple::arm, T.getArch());
   EXPECT_EQ(Triple::SUSE, T.getVendor());

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

Reply via email to