Skip to content

[CIR] Introduce IntTypeInterface to allow uniform integer types handling #146660

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Jul 2, 2025

Conversation

xlauko
Copy link
Contributor

@xlauko xlauko commented Jul 2, 2025

This will in future allow to use builtin integer types within cir operations

This mirrors incubat changes from llvm/clangir#1724

@xlauko
Copy link
Contributor Author

xlauko commented Jul 2, 2025

@xlauko xlauko requested review from andykaylor and erichkeane July 2, 2025 10:17
@xlauko xlauko marked this pull request as ready for review July 2, 2025 10:17
@llvmbot llvmbot added clang Clang issues not falling into any other category ClangIR Anything related to the ClangIR project labels Jul 2, 2025
@llvmbot
Copy link
Member

llvmbot commented Jul 2, 2025

@llvm/pr-subscribers-clang

@llvm/pr-subscribers-clangir

Author: Henrich Lauko (xlauko)

Changes

This will in future allow to use builtin integer types within cir operations

This mirrors incubat changes from llvm/clangir#1724


Full diff: https://github.com/llvm/llvm-project/pull/146660.diff

2 Files Affected:

  • (modified) clang/include/clang/CIR/Dialect/IR/CIRTypes.td (+2-1)
  • (modified) clang/include/clang/CIR/Interfaces/CIRTypeInterfaces.td (+42)
diff --git a/clang/include/clang/CIR/Dialect/IR/CIRTypes.td b/clang/include/clang/CIR/Dialect/IR/CIRTypes.td
index bfe42562abad7..898c26d22f6d1 100644
--- a/clang/include/clang/CIR/Dialect/IR/CIRTypes.td
+++ b/clang/include/clang/CIR/Dialect/IR/CIRTypes.td
@@ -35,7 +35,8 @@ class CIR_Type<string name, string typeMnemonic, list<Trait> traits = [],
 
 def CIR_IntType : CIR_Type<"Int", "int", [
     DeclareTypeInterfaceMethods<DataLayoutTypeInterface>,
-    DeclareTypeInterfaceMethods<CIR_SizedTypeInterface>
+    DeclareTypeInterfaceMethods<CIR_SizedTypeInterface>,
+    DeclareTypeInterfaceMethods<CIR_IntTypeInterface>,
 ]> {
   let summary = "Integer type with arbitrary precision up to a fixed limit";
   let description = [{
diff --git a/clang/include/clang/CIR/Interfaces/CIRTypeInterfaces.td b/clang/include/clang/CIR/Interfaces/CIRTypeInterfaces.td
index 1b1acf749e773..cf6c8571ddcd9 100644
--- a/clang/include/clang/CIR/Interfaces/CIRTypeInterfaces.td
+++ b/clang/include/clang/CIR/Interfaces/CIRTypeInterfaces.td
@@ -15,6 +15,48 @@
 
 include "mlir/IR/OpBase.td"
 
+def CIR_IntTypeInterface : TypeInterface<"IntTypeInterface"> {
+  let description = [{
+    Contains helper functions to query properties about an integer type.
+  }];
+  let cppNamespace = "::cir";
+  let methods = [
+    InterfaceMethod<[{
+        Returns true if this is a signed integer type.
+      }],
+      /*retTy=*/"bool",
+      /*methodName=*/"isSigned",
+      /*args=*/(ins),
+      /*methodBody=*/"",
+      /*defaultImplementation=*/[{
+        return $_type.isSigned();
+      }]
+    >,
+    InterfaceMethod<[{
+        Returns true if this is an unsigned integer type.
+      }],
+      /*retTy=*/"bool",
+      /*methodName=*/"isUnsigned",
+      /*args=*/(ins),
+      /*methodBody=*/"",
+      /*defaultImplementation=*/[{
+        return $_type.isUnsigned();
+      }]
+    >,
+    InterfaceMethod<[{
+        Returns the bit width of this integer type.
+      }],
+      /*retTy=*/"unsigned",
+      /*methodName=*/"getWidth",
+      /*args=*/(ins),
+      /*methodBody=*/"",
+      /*defaultImplementation=*/[{
+        return $_type.getWidth();
+      }]
+    >
+  ];
+}
+
 def CIR_FPTypeInterface : TypeInterface<"FPTypeInterface"> {
   let description = [{
     Contains helper functions to query properties about a floating-point type.

@xlauko
Copy link
Contributor Author

xlauko commented Jul 2, 2025

Merge activity

  • Jul 2, 2:25 PM UTC: A user started a stack merge that includes this pull request via Graphite.
  • Jul 2, 2:27 PM UTC: Graphite rebased this pull request as part of a merge.
  • Jul 2, 2:29 PM UTC: @xlauko merged this pull request with Graphite.

This will in future allow to use builtin integer types within cir operations

This mirrors incubat changes from llvm/clangir#1724
@xlauko xlauko force-pushed the users/xlauko/cir-int-type-interface branch from bd00b5a to 8fb5297 Compare July 2, 2025 14:27
@xlauko xlauko merged commit 5491576 into main Jul 2, 2025
5 of 7 checks passed
@xlauko xlauko deleted the users/xlauko/cir-int-type-interface branch July 2, 2025 14:29
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
clang Clang issues not falling into any other category ClangIR Anything related to the ClangIR project
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants