75 Commits

Author SHA1 Message Date
Ivan Krysak e02aa215fa makeNameAttr: soften the check
When de-serializing, MLIR pre-populates the value outside of our
control. As such, we cannot assert that it's always empty. So,
the least we can do is assert that value is the same.
2026-06-15 17:28:22 +02:00
Ivan Krysak 0d2ae728f3 makeNameAttr: better error message 2026-06-15 17:28:22 +02:00
Lauri Vasama aa48a01400 Fix overwriting of names in Clift type import 2026-06-15 17:28:22 +02:00
Ivan Krysak 686dc0877a hasModuleAttr -> isCliftModule 2026-06-15 17:28:22 +02:00
Ivan Krysak 2da35c1252 Clift: pull all the module creation in one place 2026-06-15 17:28:22 +02:00
Ivan Krysak bb71b0e5a6 Clift: pull all the context creation in one place 2026-06-15 17:28:22 +02:00
Lauri Vasama afaff540ed Implement Clift local variable self-assignment
Local variable initializer regions can now have a block argument
representing the local variable being initialized.
2026-05-25 09:00:41 +02:00
Lauri Vasama 3064653e37 Add StatementOpInterface::getBlockArgumentVariable
Translates a mlir::BlockArgument to an mlir::Value more directly
representing the entity or expression to which the block argument
refers, or null if not applicable for the statement in question.
2026-05-25 09:00:41 +02:00
Lauri Vasama 5d3e3f73d9 Add clift.require operation 2026-05-13 15:32:34 +02:00
Lauri Vasama f6d2eaea4b Add Clift DataModelAttr 2026-05-04 10:48:03 +03:00
Lauri Vasama be564f8944 Migrate isIntegerType users to unwrapped_isa 2026-04-30 15:09:16 +03:00
Lauri Vasama 9dced83bd6 Add Clift IntegralType interface 2026-04-30 15:09:16 +03:00
Lauri Vasama b6283c8684 Add ExpressionRegionOpInterface on loops, branches 2026-04-30 15:09:16 +03:00
Lauri Vasama 7126513af8 Add CallOp::getFunctionType 2026-04-30 15:09:16 +03:00
Lauri Vasama 49cc67db11 Make DefinedType implement AddressableType 2026-04-30 15:09:16 +03:00
Lauri Vasama ac5000b194 Add ModuleVisitor visitModuleOp call 2026-04-30 15:09:16 +03:00
Lauri Vasama 3d8d88096d Fix CIdentifierAttr formatting 2026-04-30 15:09:16 +03:00
Lauri Vasama a338194eb7 Move namespace mlir::clift out of namespace mlir 2026-04-27 12:48:24 +03:00
Lauri Vasama 4b4d5a2c28 Fix clift::getOnlyUser 2026-04-27 12:48:24 +03:00
Ivan Krysak ac3df7460d Introduce clift::ClassType::getCAttributes 2026-04-22 06:14:52 +00:00
Andrea Gussoni e0a9f4f484 EmitFieldAccesses: ignore qualifiers on Types 2026-04-14 09:24:48 +02:00
Lauri Vasama 4cadcafa2c Move operand constraints from C++ to tablegen 2026-04-08 12:30:31 +03:00
Lauri Vasama d35e54627c Add Clift ValueType interface
Value types is the set of non-array object types. These types are
assignable, can be used as function parameters, and as return types
(along with void), and in other scenarios where the type must have usual
value-like behaviour with no weirdness (such as array decay).
2026-04-08 12:28:45 +03:00
Lauri Vasama 80731d1a10 Migrate users to new Clift type casts 2026-04-08 12:27:32 +03:00
Lauri Vasama fb3cdbdf38 Rename ValueType to AddressableType 2026-04-08 12:26:18 +03:00
Lauri Vasama 29c935ac90 Replace Clift type category helpers with casts 2026-04-08 12:25:04 +03:00
Lauri Vasama ecaec9b2f1 Add typedef-unwrapping Clift type casts
* `clift::unwrapped_isa`
* `clift::unwrapped_isa_and_present`
* `clift::unwrapped_cast`
* `clift::unwrapped_cast_if_present`
* `clift::unwrapped_dyn_cast`
* `clift::unwrapped_dyn_cast_if_present`

These casts first unwrap typedefs and then behave equivalently to their
usual LLVM counterparts.
2026-04-08 12:23:49 +03:00
Lauri Vasama db2b57e867 Add Clift ObjectType type interface 2026-04-08 12:22:33 +03:00
Lauri Vasama 92ad229ff0 Move BytecodeClassAttr into a separate file 2026-04-08 12:21:16 +03:00
Lauri Vasama 9ba90e9b81 Replace ValueType with mlir::Type where applicable
`mlir::Type` is now used as the default C++ type for representing all
MLIR types, even when `ValueType` would be a valid constraint, unless
doing so provides a clear benefit in that specific context.
2026-04-08 12:20:00 +03:00
Lauri Vasama f9a4cb6384 Split up clift::dealias
* `unwrapTypedefs` matches `dealias(T, /*IgnoreQualifiers=*/true)`.
* `collapseTypedefs` matches `dealias(T)`.
2026-04-08 12:18:42 +03:00
Lauri Vasama be8351a17d Split up Clift PrimitiveType
* PrimitiveType is now an interface.
* VoidKind is now VoidType.
* FloatKind is now FloatType.
* The integer kinds are now IntegerType with IntegerKind.
2026-04-08 12:18:10 +03:00
Lauri Vasama a2be1b476a Split up Clift CastOp
* DecayOp - array or function to pointer decay. Not shown in C.
* BitCastOp - bit-preserving conversion. Emitted as bit_cast if
  necessary.
* ExtendOp - zero- or sign-extending conversion from any integer type to
  any wider integer type.
* TruncateOp - truncating conversion from any integer type to any
  narrower integer type.
* PtrResizeOp - resizes a pointer without changing its pointee type.
2026-04-08 12:11:54 +03:00
Lauri Vasama 4cd4de4f83 Improve Clift type tablegen definitions 2026-04-08 11:12:41 +03:00
Lauri Vasama 82ae097c18 Improve Clift operation type constraints 2026-04-08 11:12:41 +03:00
Lauri Vasama 5198af8ba7 Improve Clift free function type property helpers 2026-04-08 11:12:41 +03:00
Lauri Vasama 03c9b2288f Simplify Clift expression op definitions 2026-04-08 11:12:41 +03:00
Lauri Vasama fae3bb5788 Remove unnecessary Clift operand type constraints 2026-04-08 11:12:41 +03:00
Lauri Vasama 7b25803333 Remove unused BasicStatementOp default argument 2026-04-08 11:12:41 +03:00
Lauri Vasama dda0ef6292 Remove unused Clift_AnyLabelType constraint 2026-04-08 11:12:41 +03:00
Lauri Vasama 9e71f608b7 Fix Clift AliasableType description 2026-04-08 11:12:41 +03:00
Ivan Krysak 6f02461948 Clift: fix missed getAttributes methods
They are now correctly named `getCAttributes`.
2026-03-27 12:27:16 +00:00
Ivan Krysak c30f309f5e Clift: introduce getMutableComment 2026-03-27 08:09:09 +00:00
Ivan Krysak e34fbcb955 FunctionOp: add noreturn and always_inline 2026-03-27 08:08:08 +00:00
Ivan Krysak 7f66f25253 mlir::clift::ClassAttr: add attribute support 2026-03-27 07:19:27 +00:00
Ivan Krysak 928bcdb118 mlir::clift::FunctionType: add attribute support 2026-03-27 07:19:27 +00:00
Ivan Krysak 8a3a2082b5 CAttributeAttr: enforce argument types 2026-03-27 07:19:27 +00:00
Ivan Krysak f4e7d50361 Allow C-Attributes to accept integers and types 2026-03-27 07:18:49 +00:00
Lauri Vasama ad6f6df04e Improve function arg/result attribute interface 2026-03-27 07:18:49 +00:00
Ivan Krysak 1310b6ab62 Clift: append C to attribute classes we emit 2026-03-25 15:42:13 +00:00