Ivan Krysak
290d2e2c57
ptml::CTypeBuilder: rename into ModelCBuilder
2025-07-23 11:38:53 +02:00
Lauri Vasama
780e774b20
Add Clift legalization pipe
2025-07-17 16:45:03 +02:00
Lauri Vasama
9fda9f955d
Add NoMemoryEffect on Clift operations
...
This allows unused expressions to be automatically pruned during
transforms.
2025-07-17 16:45:03 +02:00
Lauri Vasama
4e17287cfc
Add LLVM-to-Clift import
2025-07-17 16:45:03 +02:00
Lauri Vasama
b9ce0a87df
Add Clift model verification
2025-07-17 16:45:03 +02:00
Lauri Vasama
74588ae684
Rename MLIRFunctionKind to CliftFunction
2025-07-17 16:45:03 +02:00
Lauri Vasama
237d246665
Factor out the default C target implementation
...
This commit also adds size 16 -> extended integer kind mapping.
While we are hardcoding this for now, some maintenance (as above) is
needed, so it's best to hardcode it only in one place and share that
definition.
2025-07-17 16:45:03 +02:00
Lauri Vasama
ee38ac933c
Make comparison op assembly syntax more explicit
...
```
// Old syntax:
// Argument types are !int32_t.
// The boolean result type is implicitly !int32_t.
clift.eq %0, %1 : !int32_t
// New syntax:
// The boolean result type must be specified explicitly.
clift.eq %0, %1 : !int32_t -> !int32_t
```
2025-07-17 16:45:03 +02:00
Lauri Vasama
c92f34b409
Add FunctionOp::getCliftReturnType
2025-07-17 16:45:03 +02:00
Lauri Vasama
50a96527cd
Add PtrAdd/PtrSub operand helpers
2025-07-17 16:45:03 +02:00
Lauri Vasama
fc682383e9
Implement Clift bytecode
...
Fixes bytecode emission of class types with very large trees of members.
See the new unit test: union-with-large-tree.mlir .
2025-07-17 16:45:03 +02:00
Lauri Vasama
d2e83b30a1
Add clift::getPointerType
2025-07-17 16:45:03 +02:00
Lauri Vasama
50c3c8f95a
Fix Clift union recursion parsing issue
2025-07-17 16:45:03 +02:00
Lauri Vasama
4bf1d8fe99
Remove Clift backend transform and model option
2025-06-04 15:13:47 +02:00
Lauri Vasama
7c9031bd98
Change MLIRContainer to focus on Clift, rename
2025-06-04 15:13:47 +02:00
Lauri Vasama
cc94e2d290
Constrain returnable types
2025-06-04 15:13:47 +02:00
Lauri Vasama
047511b1ed
Remove Clift break and continue ops
2025-06-04 15:13:47 +02:00
Lauri Vasama
3e065cb23d
Remove local and label names
2025-06-04 15:13:47 +02:00
Lauri Vasama
fdbc7b57fb
Add SwitchOp::getCaseRegions
2025-06-04 15:13:47 +02:00
Lauri Vasama
a0ec1305f1
Move ReturnOp type verification to FunctionOp
2025-06-04 15:13:47 +02:00
Lauri Vasama
f0091e699f
Remove clift::ModuleOp
...
A new dialect attribute is instead used to verify mlir::ModuleOp:
```
module attributes {clift.module} {
}
```
2025-06-04 15:13:47 +02:00
Lauri Vasama
51c4ed8201
Make Clift.td formatting more consistent
2025-06-04 15:13:47 +02:00
Lauri Vasama
6f3c8ee418
Add PrimitiveType builder with default const=false
2025-06-04 15:13:47 +02:00
Lauri Vasama
d17d23b8fc
Add getHandle on GlobalOpInterface
2025-06-04 15:13:47 +02:00
Lauri Vasama
a3ee0349a6
Inherit GlobalOpInterface from Symbol
2025-06-04 15:13:47 +02:00
Lauri Vasama
c44df5d591
Improve CliftOpInterfaces formatting consistency
2025-06-04 15:13:47 +02:00
Lauri Vasama
336b18d937
Overhaul Clift type syntax
...
* Removed syntax for defined type attributes.
* Added !clift.const<T> and removed const syntax from types kinds.
* Some restructuring of class type internals.
2025-06-04 15:13:47 +02:00
Lauri Vasama
460af9d7d4
Use full paths for Clift .td includes
2025-06-04 15:13:47 +02:00
Giacomo Vercesi
11f1e532c6
Implement dirty bit on Container
...
Add a `Dirty` boolean to the `ContainerBase` class. This will be set to
true when the container mutates itself (e.g. remove, mergeBack, clear).
The dirty bit is reset when running `PipelineManager.store`.
2025-04-03 15:59:18 +02:00
Lauri Vasama
d6a2ee387e
Add aliases for Clift types without handles
2025-03-24 09:26:43 +02:00
Lauri Vasama
e9c329e51d
Rename Clift unique handle to handle
2025-03-24 09:26:43 +02:00
Lauri Vasama
1325c75979
Move Clift op custom parsers out of header
2025-03-24 09:26:43 +02:00
Lauri Vasama
c85275cc70
Add expression region utilities in CliftOps.h
2025-03-24 09:26:43 +02:00
Lauri Vasama
b97c55980b
Change Clift type constraints to ValueType
...
clift.indirection %p : <8 to !int32_t>
The concrete type kinds would cause types in the assembly to be emitted
without type mnemonics. See the example above.
2025-03-24 09:26:43 +02:00
Lauri Vasama
5f475739ef
Rename reinterpret, add convert cast
2025-03-24 09:26:43 +02:00
Lauri Vasama
f884642f59
Overhaul clift.struct, clift.union assembly syntax
...
Old syntax:
```
unique_handle = "/model-type/1",
name = "my_struct",
size = 2,
fields = [
<
offset = 0
name = "",
type = !t
>,
<
offset = 1,
name = "my_field",
type = !t
>
]
>
unique_handle = "/model-type/1",
name = "my_union",
fields = [
<
offset = 0,
name = "",
type = !t
>,
<
offset = 0,
name = "my_field",
type = !t
>
]
>
```
New syntax:
```
"/model-type/1" as "my_struct" : size(1) {
offset(0) : !t,
offset(1) as "my_field" : !t
}
>
"/model-type/1" as "my_union" : {
!t,
"my_field" : !t
}
>
```
2025-03-24 09:26:43 +02:00
Lauri Vasama
5bd481ae5a
Overhaul clift.function assembly syntax
...
Old syntax:
```
unique_handle = "/model-type/1",
name = "my_function",
return_type = !t,
argument_types = [
!t
]
>
```
New syntax:
```
"/model-type/1" as "my_function" : !t(!t)
>
```
* Rename clift.function mnemonic to clift.func.
2025-03-24 09:26:43 +02:00
Lauri Vasama
281bf283e2
Overhaul clift.typedef assembly syntax
...
Old syntax:
```
unique_handle = "/model-type/1",
name = "my_typedef",
underlying_type = !t
>
```
New syntax:
```
"/model-type/1" as "my_typedef" : !t
>
```
2025-03-24 09:26:43 +02:00
Lauri Vasama
ea78766f10
Overhaul clift.enum assembly syntax
...
Old syntax:
```
unique_handle = "/model-type/1",
name = "my_enum",
underlying_type = !t,
fields = [
<
name = "my_enumerator",
raw_value = 42
>
]
>
```
New syntax:
```
"/model-type/1" as "my_enum" : !t {
42 as "my_enumerator"
}
>
```
2025-03-24 09:26:43 +02:00
Lauri Vasama
8482bcbf90
Overhaul clift.defined assembly syntax
...
Old syntax:
```
!clift.defined<#t>
!clift.defined<is_const = true, #t>
```
New syntax:
```
!clift.defined<#t>
!clift.defined<const #t>
```
2025-03-24 09:26:43 +02:00
Lauri Vasama
64fc21e9dd
Overhaul clift.pointer assembly syntax
...
Old syntax:
```
!clift.pointer<pointer_size = 8, pointee_type = !t>
!clift.pointer<is_const = true, pointer_size = 8, pointee_type = !t>
```
New syntax:
```
!clift.ptr<8 to !t>
!clift.ptr<const 8 to !t>
```
2025-03-24 09:26:43 +02:00
Lauri Vasama
872b157774
Overhaul clift.array assembly syntax
...
Old syntax:
```
!clift.array<elements_count = 42, element_type = !t>
```
New syntax:
```
!clift.array<42 x !t>
```
2025-03-24 09:26:43 +02:00
Lauri Vasama
eaf1bf35aa
Overhaul clift.primitive assembly syntax
...
Old syntax:
```
!clift.primitive<SignedKind 8>
!clift.primitive<is_const = true, SignedKind 8>
```
New syntax:
```
!clift.primitive<signed 8>
!clift.primitive<const signed 8>
```
2025-03-24 09:26:43 +02:00
Lauri Vasama
e2f4af30e9
Add custom builder for Clift FunctionOp
2025-03-24 09:26:43 +02:00
Lauri Vasama
8f44ebe12d
Improve Clift type constraint error messages
2025-03-24 09:26:43 +02:00
Lauri Vasama
23b47f825e
Add Clift AggregateOp
2025-03-24 09:17:38 +02:00
Lauri Vasama
1b63797640
Add Clift TernaryOp
2025-03-19 12:57:22 +02:00
Lauri Vasama
747a792f0f
Add Clift pointer arithmetic ops
2025-03-19 12:57:22 +02:00
Lauri Vasama
66246218b7
Add Clift StringOp
2025-03-19 12:57:21 +02:00
Lauri Vasama
df2003efb8
Add clift::removeConst in CliftTypes.h
2025-03-19 12:57:20 +02:00