[llvm] [IntrinsicEmitter] Make AttributesMap PackedID type-adaptive (PR #158383)

Elvin Wang via llvm-commits llvm-commits at lists.llvm.org
Mon Sep 15 10:31:01 PDT 2025


================
@@ -633,17 +631,25 @@ static constexpr uint16_t IntrinsicsToAttributesMap[] = {)";
   // Note, ID `-1` is used to indicate no function attributes.
   const uint8_t UniqFnAttributesBitSize =
       Log2_32_Ceil(UniqFnAttributes.size() + 2);
-  const uint16_t NoFunctionAttrsID =
-      maskTrailingOnes<uint16_t>(UniqFnAttributesBitSize);
-  if (UniqAttributesBitSize + UniqFnAttributesBitSize > 16)
-    PrintFatalError(
-        "More than 16 bits are used for IntrinsicsToAttributesMap's entry!");
-
-  // Assign a 16-bit packed ID for each intrinsic. The lower bits will be its
+  const uint32_t NoFunctionAttrsID =
+      maskTrailingOnes<uint32_t>(UniqFnAttributesBitSize);
+  uint8_t AttributesMapDataBitSize =
+      PowerOf2Ceil(UniqAttributesBitSize + UniqFnAttributesBitSize);
+  if (AttributesMapDataBitSize < 8)
+    AttributesMapDataBitSize = 8;
+  else if (AttributesMapDataBitSize > 64)
+    PrintFatalError("Packed ID of IntrinsicsToAttributesMap exceeds 64b!");
+  else if (AttributesMapDataBitSize > 16)
+    PrintWarning("Packed ID of IntrinsicsToAttributesMap exceeds 16b, "
----------------
elvinw-intel wrote:

I was wanting to add a warning because I saw this https://github.com/llvm/llvm-project/pull/106809 commit, this will bring awareness especially if intrinsic sets can be redesigned(adjust imm positions, etc.) to fit in smaller spaces

https://github.com/llvm/llvm-project/pull/158383


More information about the llvm-commits mailing list