78 lines
2.1 KiB
MLIR
78 lines
2.1 KiB
MLIR
func.func @simple(i64, i1) -> i64 {
|
|
// <- function.builtin
|
|
// ^ function
|
|
// ^ punctuation.bracket
|
|
// ^ type.builtin
|
|
// ^ punctuation.delimeter
|
|
// ^ type.builtin
|
|
// ^ punctuation.bracket
|
|
// ^ operator
|
|
// ^ type.builtin
|
|
// ^ punctuation.bracket
|
|
^bb0(%a: i64, %cond: i1):
|
|
// <- tag
|
|
// ^ variable.parameter
|
|
// ^ type.builtin
|
|
// ^ variable.parameter
|
|
// ^ type.builtin
|
|
cf.cond_br %cond, ^bb1, ^bb2
|
|
// ^ function.builtin
|
|
// ^ variable.parameter
|
|
// ^ tag
|
|
// ^ tag
|
|
|
|
^bb1:
|
|
// <- tag
|
|
cf.br ^bb3(%a: i64) // Branch passes %a as the argument
|
|
// ^ function.builtin
|
|
// ^ tag
|
|
// ^ variable.parameter
|
|
// ^ type.builtin
|
|
// ^ comment
|
|
|
|
^bb2:
|
|
// <- tag
|
|
%b = arith.addi %a, %a : i64
|
|
// ^ variable
|
|
// ^ operator
|
|
// ^ function.builtin
|
|
// ^ variable.parameter
|
|
// ^ variable.parameter
|
|
// ^ type.builtin
|
|
cf.br ^bb3(%b: i64) // Branch passes %b as the argument
|
|
// ^ function.builtin
|
|
// ^ tag
|
|
// ^ variable
|
|
// ^ type.builtin
|
|
// ^ comment
|
|
^bb3(%c: i64):
|
|
// <- tag
|
|
// ^ variable.parameter
|
|
// ^ type.builtin
|
|
cf.br ^bb4(%c, %a : i64, i64)
|
|
// ^ function.builtin
|
|
// ^ tag
|
|
// ^ variable.parameter
|
|
// ^ variable.parameter
|
|
// ^ type.builtin
|
|
// ^ type.builtin
|
|
^bb4(%d : i64, %e : i64):
|
|
// <- tag
|
|
// ^ variable.parameter
|
|
// ^ type.builtin
|
|
// ^ variable.parameter
|
|
// ^ type.builtin
|
|
%0 = arith.addi %d, %e : i64
|
|
// ^ variable
|
|
// ^ operator
|
|
// ^ function.builtin
|
|
// ^ variable.parameter
|
|
// ^ variable.parameter
|
|
// ^ type.builtin
|
|
return %0 : i64 // Return is also a terminator.
|
|
// ^ function.builtin
|
|
// ^ variable
|
|
// ^ type.builtin
|
|
// ^ comment
|
|
}
|
|
// <- punctuation.bracket
|