Jacques Pienaar
|
4bf33958da
|
[mlir] Update builders to use new form. (#154132)
Mechanically applied using clang-tidy.
|
2025-08-18 15:19:34 +00:00 |
|
Jaden Angella
|
bfda0e777d
|
[mlir][EmitC] Expand the MemRefToEmitC pass - Lowering CopyOp (#151206)
This patch lowers `memref.copy` to `emitc.call_opaque "memcpy"`.
From:
```
func.func @copying(%arg0 : memref<9x4x5x7xf32>, %arg1 : memref<9x4x5x7xf32>) {
memref.copy %arg0, %arg1 : memref<9x4x5x7xf32> to memref<9x4x5x7xf32>
return
}
```
To:
```cpp
#include <cstring>
void copying(float v1[9][4][5][7], float v2[9][4][5][7]) {
size_t v3 = 0;
float* v4 = &v2[v3][v3][v3][v3];
float* v5 = &v1[v3][v3][v3][v3];
size_t v6 = sizeof(float);
size_t v7 = 1260;
size_t v8 = v6 * v7;
memcpy(v5, v4, v8);
return;
}
```
|
2025-08-14 05:25:55 -07:00 |
|
Jaden Angella
|
5949f4596e
|
[mlir][EmitC]Expand the MemRefToEmitC pass - Lowering AllocOp (#148257)
This aims to lower `memref.alloc` to `emitc.call_opaque “malloc” ` or
`emitc.call_opaque “aligned_alloc” `
From:
```
module{
func.func @allocating() {
%alloc_5 = memref.alloc() : memref<999xi32>
return
}
}
```
To:
```
module {
emitc.include <"stdlib.h">
func.func @allocating() {
%0 = emitc.call_opaque "sizeof"() {args = [i32]} : () -> !emitc.size_t
%1 = "emitc.constant"() <{value = 999 : index}> : () -> index
%2 = emitc.mul %0, %1 : (!emitc.size_t, index) -> !emitc.size_t
%3 = emitc.call_opaque "malloc"(%2) : (!emitc.size_t) -> !emitc.ptr<!emitc.opaque<"void">>
%4 = emitc.cast %3 : !emitc.ptr<!emitc.opaque<"void">> to !emitc.ptr<i32>
return
}
}
```
Which is then translated as:
```
#include <stdlib.h>
void allocating() {
size_t v1 = sizeof(int32_t);
size_t v2 = 999;
size_t v3 = v1 * v2;
void* v4 = malloc(v3);
int32_t* v5 = (int32_t*) v4;
return;
}
```
|
2025-07-28 18:48:26 -07:00 |
|
Simon Camphausen
|
0009a17834
|
[mlir][EmitC] Add pass that combines all available emitc conversions (#117549)
|
2025-05-01 07:24:01 -07:00 |
|
Longsheng Mou
|
c34dc9a0cf
|
[mlir][SCFToEmitC] Don't convert unsupported types in EmitC (#131786)
This PR adds check for unsupported types in emitc, which fixes a crash.
Fixes #131442.
|
2025-03-19 14:18:51 +08:00 |
|
Simon Camphausen
|
95c2d79814
|
[mlir][EmitC] memref-to-emitc: insert conversion_casts (#114204)
Add materializations to the conversion pass, such that types of
non-converted operands are legalized.
|
2024-10-30 15:27:23 +01:00 |
|
Longsheng Mou
|
3c5374595b
|
[mlir][EmitC] Do not convert illegal types in EmitC (#104571)
This patch adds check for unsupported types in emitc, which fixes a
crash. Fix #103706.
|
2024-08-20 17:49:58 +08:00 |
|
Matthias Gehre
|
0aa6d57e57
|
[MLIR] Add initial convert-memref-to-emitc pass (#85389)
This converts `memref.alloca`, `memref.load` & `memref.store` to
`emitc.variable`, `emitc.subscript` and `emitc.assign`.
|
2024-03-21 14:27:37 +01:00 |
|