MLIR DAG rewriter w/ SSA IR, dominance and CFG analysis passes
1

Configure Feed

Select the types of activity you want to include in your feed.

nemo / lib / printer.ml
831 B 22 lines
1open Ir 2 3let string_of_inst = function 4 | Alloca a -> Printf.sprintf "alloca %d" a 5 | Load (r, p) -> Printf.sprintf "load %d, %d" r p 6 | Store (v, p) -> Printf.sprintf "store %d, %d" v p 7 | Phi (r, ops) -> 8 let ops_str = List.map (fun (v, b) -> Printf.sprintf "(%d, %d)" v b) ops |> String.concat ", " in 9 Printf.sprintf "phi %d [%s]" r ops_str 10 | Move (r, v) -> Printf.sprintf "move %d, %d" r v 11 | BinOp (r, v1, v2) -> Printf.sprintf "binop %d, %d, %d" r v1 v2 12 | Ret None -> "ret" 13 | Ret (Some v) -> Printf.sprintf "ret %d" v 14 | Br t -> Printf.sprintf "br %d" t 15 | CondBr (c, t1, t2) -> Printf.sprintf "condbr %d, %d, %d" c t1 t2 16 17let print_block b = 18 Printf.printf "block %d:\n" b.id; 19 List.iter (fun i -> Printf.printf " %s\n" (string_of_inst i)) b.insts 20 21let print_func f = 22 List.iter print_block f.blocks