From fe181755e718523ec5dfa73ae7f6043cdfeb7fff Mon Sep 17 00:00:00 2001 From: Sameer Rahmani Date: Fri, 8 Apr 2022 11:02:46 +0100 Subject: [PATCH] Add fn,def and value operations to slir --- docs/examples/slir/hello_world.mlir | 2 ++ libserene/include/serene/slir/ops.td | 26 ++++++++++++++++++++------ 2 files changed, 22 insertions(+), 6 deletions(-) diff --git a/docs/examples/slir/hello_world.mlir b/docs/examples/slir/hello_world.mlir index 4ec52a3..dbf88d3 100644 --- a/docs/examples/slir/hello_world.mlir +++ b/docs/examples/slir/hello_world.mlir @@ -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 } diff --git a/libserene/include/serene/slir/ops.td b/libserene/include/serene/slir/ops.td index eaab283..7cf5c8b 100644 --- a/libserene/include/serene/slir/ops.td +++ b/libserene/include/serene/slir/ops.td @@ -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:$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; }