Add fn,def and value operations to slir

This commit is contained in:
Sameer Rahmani 2022-04-08 11:02:46 +01:00
parent aa7cd548cf
commit fe181755e7
2 changed files with 22 additions and 6 deletions

View File

@ -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
}

View File

@ -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;
}