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

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

This mirrors incubat changes from https://github.com/llvm/clangir/pull/1724
This commit is contained in:
Henrich Lauko
2025-07-02 16:29:03 +02:00
committed by GitHub
parent 24828c8c45
commit 5491576a16
2 changed files with 44 additions and 1 deletions

View File

@@ -35,7 +35,8 @@ class CIR_Type<string name, string typeMnemonic, list<Trait> traits = [],
def CIR_IntType : CIR_Type<"Int", "int", [ def CIR_IntType : CIR_Type<"Int", "int", [
DeclareTypeInterfaceMethods<DataLayoutTypeInterface>, DeclareTypeInterfaceMethods<DataLayoutTypeInterface>,
DeclareTypeInterfaceMethods<CIR_SizedTypeInterface> DeclareTypeInterfaceMethods<CIR_SizedTypeInterface>,
DeclareTypeInterfaceMethods<CIR_IntTypeInterface>,
]> { ]> {
let summary = "Integer type with arbitrary precision up to a fixed limit"; let summary = "Integer type with arbitrary precision up to a fixed limit";
let description = [{ let description = [{

View File

@@ -15,6 +15,48 @@
include "mlir/IR/OpBase.td" 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"> { def CIR_FPTypeInterface : TypeInterface<"FPTypeInterface"> {
let description = [{ let description = [{
Contains helper functions to query properties about a floating-point type. Contains helper functions to query properties about a floating-point type.