[llvm] [Offload] Define `_NUM_VARIANTS` macros for generated enumerations (PR #147314)

Ross Brunton via llvm-commits llvm-commits at lists.llvm.org
Tue Jul 8 05:25:40 PDT 2025


https://github.com/RossBrunton updated https://github.com/llvm/llvm-project/pull/147314

>From 7f935596c22340f7b7af8379e6b895044f8c0056 Mon Sep 17 00:00:00 2001
From: Ross Brunton <ross at codeplay.com>
Date: Mon, 7 Jul 2025 16:00:43 +0100
Subject: [PATCH 1/2] [Offload] Define `_NUM_VARIANTS` macros for generated
 enumerations

---
 offload/tools/offload-tblgen/APIGen.cpp | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/offload/tools/offload-tblgen/APIGen.cpp b/offload/tools/offload-tblgen/APIGen.cpp
index 35b080e3c8011..2a49ac6cc3e77 100644
--- a/offload/tools/offload-tblgen/APIGen.cpp
+++ b/offload/tools/offload-tblgen/APIGen.cpp
@@ -151,6 +151,12 @@ static void ProcessEnum(const EnumRec &Enum, raw_ostream &OS) {
                 Enum.getEnumValNamePrefix());
 
   OS << formatv("} {0};\n", Enum.getName());
+
+  // Add field for the number of variants
+  OS << formatv(TAB_1
+                "/// @brief Number of variants for the {0} enumeration\n" TAB_1
+                "#define {0}_NUM_VARIANTS {1}\n",
+                Enum.getEnumValNamePrefix(), EtorVal);
 }
 
 static void ProcessStruct(const StructRec &Struct, raw_ostream &OS) {

>From b44dcd793bd1b1d7e1852cc4abebb1cd17ca4d7b Mon Sep 17 00:00:00 2001
From: Ross Brunton <ross at codeplay.com>
Date: Tue, 8 Jul 2025 13:25:25 +0100
Subject: [PATCH 2/2] Use _LAST instead of a macro

---
 offload/tools/offload-tblgen/APIGen.cpp | 12 +++---------
 1 file changed, 3 insertions(+), 9 deletions(-)

diff --git a/offload/tools/offload-tblgen/APIGen.cpp b/offload/tools/offload-tblgen/APIGen.cpp
index 2a49ac6cc3e77..c52642592e934 100644
--- a/offload/tools/offload-tblgen/APIGen.cpp
+++ b/offload/tools/offload-tblgen/APIGen.cpp
@@ -144,19 +144,13 @@ static void ProcessEnum(const EnumRec &Enum, raw_ostream &OS) {
                   EnumVal.getName(), EtorVal++);
   }
 
-  // Add force uint32 val
-  OS << formatv(TAB_1 "/// @cond\n" TAB_1
+  // Add last_element/force uint32 val
+  OS << formatv(TAB_1 "/// @cond\n" TAB_1 "{0}_LAST = {1},\n" TAB_1
                       "{0}_FORCE_UINT32 = 0x7fffffff\n" TAB_1
                       "/// @endcond\n\n",
-                Enum.getEnumValNamePrefix());
+                Enum.getEnumValNamePrefix(), EtorVal);
 
   OS << formatv("} {0};\n", Enum.getName());
-
-  // Add field for the number of variants
-  OS << formatv(TAB_1
-                "/// @brief Number of variants for the {0} enumeration\n" TAB_1
-                "#define {0}_NUM_VARIANTS {1}\n",
-                Enum.getEnumValNamePrefix(), EtorVal);
 }
 
 static void ProcessStruct(const StructRec &Struct, raw_ostream &OS) {



More information about the llvm-commits mailing list