Add fn,def and value operations to slir
This commit is contained in:
parent
aa7cd548cf
commit
fe181755e7
|
@ -16,11 +16,13 @@ module @some.ns {
|
|||
|
||||
// Def operator ----
|
||||
%baz = "serene.def"(%0){name = "baz"}: (i64) -> !serene.symbol
|
||||
"serene.ret"(%baz){} : (!serene.symbol)
|
||||
},
|
||||
{
|
||||
%3 = serene.value 4 : i32
|
||||
|
||||
// Def operator ----
|
||||
%baz1 = "serene.def"(%3){name = "baz"}: (i32) -> !serene.symbol
|
||||
!serene.ret %baz1 : !serene.symbol
|
||||
}){name = "some-fn", return_type = i32} : () -> !serene.fn
|
||||
}
|
||||
|
|
|
@ -122,17 +122,31 @@ def FnOp: Serene_Op<"fn", [
|
|||
let results = (outs SereneFn);
|
||||
}
|
||||
|
||||
def ReturnOp: Serene_Op<"ret", [NoSideEffect, HasParent<"FnOp">,
|
||||
ReturnLike, Terminator]> {
|
||||
def ReturnOp: Serene_Op<"ret", [
|
||||
NoSideEffect, HasParent<"FnOp">,
|
||||
ReturnLike, Terminator
|
||||
// MemRefsNormalizable
|
||||
]> {
|
||||
|
||||
let summary = "This operation marks the return value of a function";
|
||||
let description = [{
|
||||
ReturnOp
|
||||
`ret` marks the return value of a function body.
|
||||
Example:
|
||||
|
||||
```mlir
|
||||
|
||||
```
|
||||
}];
|
||||
|
||||
let arguments = (ins AnyType:$operand);
|
||||
let assemblyFormat =
|
||||
[{ attr-dict $operand `:` type($operand) }];
|
||||
let arguments = (ins Variadic<AnyType>:$operands);
|
||||
|
||||
let builders = [OpBuilder<(ins), [{
|
||||
build($_builder, $_state, llvm::None);
|
||||
}]>];
|
||||
|
||||
let assemblyFormat = "attr-dict ($operands^ `:` type($operands))?";
|
||||
// TODO: Turn on the verifier for `ret`
|
||||
// let hasVerifier = 1;
|
||||
}
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue