39 lines
1.3 KiB
MLIR
39 lines
1.3 KiB
MLIR
serene.ns @some.ns {
|
|
// Value operator ----
|
|
%0 = "serene.value"(){value= 3} : () -> i64
|
|
// compact form
|
|
%1 = serene.value 3 : i32
|
|
|
|
%x = serene.symbol "some.ns" "x"
|
|
// Def operator ----
|
|
%foo = "serene.define"(%0){sym_name = "foo"}: (i64) -> !serene.symbol
|
|
// compact form
|
|
%bar = serene.define "bar", %0 : i64
|
|
|
|
// Fn operator ----
|
|
%f1 = "serene.fn"()({
|
|
^entry(%fnarg1 : i1, %fnarg2 : !serene.symbol):
|
|
%2 = serene.value 3 : i32
|
|
|
|
// Def operator ----
|
|
%baz = "serene.define"(%fnarg1){sym_name = "baz"}: (i1) -> !serene.symbol
|
|
serene.ret %baz : !serene.symbol
|
|
},
|
|
{
|
|
^b1(%f1 : i1):
|
|
%3 = serene.value 4 : i32
|
|
|
|
// Def operator ----
|
|
%baz1 = "serene.define"(%3){sym_name = "baz"}: (i32) -> !serene.symbol
|
|
serene.ret %baz1 : !serene.symbol
|
|
^b2:
|
|
%baz2 = "serene.define"(%3){sym_name = "baz"}: (i32) -> !serene.symbol
|
|
serene.ret %baz2 : !serene.symbol
|
|
}){name = "some-fn", return_type = i32} : () -> !serene.fn
|
|
|
|
%a1 = serene.value 1 : i1
|
|
%a2 = serene.value "x" : !serene.symbol
|
|
|
|
%result = serene.call %f1(%a1, %a2){} : (i1, !serene.symbol) -> i32
|
|
}
|