[llvm] f4d3a0c - [TableGen] Simplify insertBits (NFC) (#137538)

via llvm-commits llvm-commits at lists.llvm.org
Sun Apr 27 12:35:56 PDT 2025


Author: Kazu Hirata
Date: 2025-04-27T12:35:54-07:00
New Revision: f4d3a0cb6a4d2e60ec969b5b5f94baefd7904bf9

URL: https://github.com/llvm/llvm-project/commit/f4d3a0cb6a4d2e60ec969b5b5f94baefd7904bf9
DIFF: https://github.com/llvm/llvm-project/commit/f4d3a0cb6a4d2e60ec969b5b5f94baefd7904bf9.diff

LOG: [TableGen] Simplify insertBits (NFC) (#137538)

We can use "constexpr if" to combine the two variants of functions.

Added: 
    

Modified: 
    llvm/utils/TableGen/DecoderEmitter.cpp

Removed: 
    


################################################################################
diff  --git a/llvm/utils/TableGen/DecoderEmitter.cpp b/llvm/utils/TableGen/DecoderEmitter.cpp
index 415fe13f87547..f0f07dfce4abb 100644
--- a/llvm/utils/TableGen/DecoderEmitter.cpp
+++ b/llvm/utils/TableGen/DecoderEmitter.cpp
@@ -2145,16 +2145,14 @@ static void emitInsertBits(formatted_raw_ostream &OS) {
 // Helper function for inserting bits extracted from an encoded instruction into
 // a field.
 template <typename InsnType>
-static std::enable_if_t<std::is_integral<InsnType>::value>
-insertBits(InsnType &field, InsnType bits, unsigned startBit, unsigned numBits) {
-  assert(startBit + numBits <= sizeof field * 8);
-  field |= (InsnType)bits << startBit;
-}
-
-template <typename InsnType>
-static std::enable_if_t<!std::is_integral<InsnType>::value>
-insertBits(InsnType &field, uint64_t bits, unsigned startBit, unsigned numBits) {
-  field.insertBits(bits, startBit, numBits);
+static void insertBits(InsnType &field, InsnType bits, unsigned startBit,
+                       unsigned numBits) {
+  if constexpr (std::is_integral<InsnType>::value) {
+    assert(startBit + numBits <= sizeof field * 8);
+    field |= (InsnType)bits << startBit;
+  } else {
+    field.insertBits(bits, startBit, numBits);
+  }
 }
 )";
 }


        


More information about the llvm-commits mailing list