[llvm] [IntrinsicEmitter] Make AttributesMap bound inclusive (PR #158714)

Elvin Wang via llvm-commits llvm-commits at lists.llvm.org
Mon Sep 15 11:52:43 PDT 2025


https://github.com/elvinw-intel created https://github.com/llvm/llvm-project/pull/158714

This is a minor fix from comment https://github.com/llvm/llvm-project/pull/157965/files#r2347317186 introduced in #157965.

>From 80aea7f1a8bd17a0d3c7fa558c29d5fa06bf25b7 Mon Sep 17 00:00:00 2001
From: "Wang, Elvin" <elvin.wang at intel.com>
Date: Mon, 15 Sep 2025 11:38:02 -0700
Subject: [PATCH] [IntrinsicEmitter] Make AttributesMap bound inclusive

This is a minor fix from comment https://github.com/llvm/llvm-project/pull/157965/files#r2347317186
introduced in #157965.
---
 llvm/test/TableGen/intrinsic-attrs.td          | 4 ++--
 llvm/utils/TableGen/Basic/IntrinsicEmitter.cpp | 4 ++--
 2 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/llvm/test/TableGen/intrinsic-attrs.td b/llvm/test/TableGen/intrinsic-attrs.td
index ab808445f40a2..fbcc6aa0e9bf1 100644
--- a/llvm/test/TableGen/intrinsic-attrs.td
+++ b/llvm/test/TableGen/intrinsic-attrs.td
@@ -25,8 +25,8 @@ def int_deref_ptr_ret : Intrinsic<[llvm_ptr_ty], [], [Dereferenceable<RetIndex,
 // CHECK-NEXT: });
 
 // CHECK: static constexpr uint16_t IntrinsicsToAttributesMap[] = {
-// CHECK: 0 << 2 | 0, // llvm.deref.ptr.ret
-// CHECK: 1 << 2 | 1, // llvm.random.gen
+// CHECK: 0 << 1 | 0, // llvm.deref.ptr.ret
+// CHECK: 1 << 1 | 1, // llvm.random.gen
 // CHECK: }; // IntrinsicsToAttributesMap
 
 // CHECK: static constexpr ArgNoAttrIDPair ArgAttrIdTable[] = {
diff --git a/llvm/utils/TableGen/Basic/IntrinsicEmitter.cpp b/llvm/utils/TableGen/Basic/IntrinsicEmitter.cpp
index a702838afe463..a597edb399464 100644
--- a/llvm/utils/TableGen/Basic/IntrinsicEmitter.cpp
+++ b/llvm/utils/TableGen/Basic/IntrinsicEmitter.cpp
@@ -629,10 +629,10 @@ static constexpr uint16_t IntrinsicsToAttributesMap[] = {)";
     UniqAttributes.try_emplace(&Int, ID);
   }
 
-  const uint8_t UniqAttributesBitSize = Log2_32_Ceil(UniqAttributes.size() + 1);
+  const uint8_t UniqAttributesBitSize = Log2_32_Ceil(UniqAttributes.size());
   // Note, ID `-1` is used to indicate no function attributes.
   const uint8_t UniqFnAttributesBitSize =
-      Log2_32_Ceil(UniqFnAttributes.size() + 2);
+      Log2_32_Ceil(UniqFnAttributes.size() + 1);
   const uint16_t NoFunctionAttrsID =
       maskTrailingOnes<uint16_t>(UniqFnAttributesBitSize);
   if (UniqAttributesBitSize + UniqFnAttributesBitSize > 16)



More information about the llvm-commits mailing list