Module: Kumi::Dev::IR
- Defined in:
- lib/kumi/dev/ir.rb
Class Method Summary collapse
Class Method Details
.format_value(val) ⇒ Object
33 34 35 36 37 38 39 40 41 42 43 44 |
# File 'lib/kumi/dev/ir.rb', line 33 def self.format_value(val) case val when true, false val.to_s when Symbol ":#{val}" when Array val.inspect else val.to_s end end |
.to_json(ir_module, pretty: true) ⇒ Object
46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 |
# File 'lib/kumi/dev/ir.rb', line 46 def to_json(ir_module, pretty: true) raise "nil IR" unless ir_module data = { inputs: ir_module.inputs, decls: ir_module.decls.map do |decl| { name: decl.name, kind: decl.kind, shape: decl.shape, ops: decl.ops.map do |op| { tag: op.tag, attrs: op.attrs, args: op.args } end } end } if pretty JSON.pretty_generate(data) else JSON.generate(data) end end |
.to_text(ir_module) ⇒ Object
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
# File 'lib/kumi/dev/ir.rb', line 10 def to_text(ir_module) raise "nil IR" unless ir_module lines = [] lines << "IR Module" lines << "decls: #{ir_module.decls.size}" ir_module.decls.each_with_index do |decl, i| lines << "decl[#{i}] #{decl.kind}:#{decl.name} shape=#{decl.shape} ops=#{decl.ops.size}" decl.ops.each_with_index do |op, j| # Sort attribute keys for deterministic output sorted_attrs = op.attrs.keys.sort.map { |k| "#{k}=#{format_value(op.attrs[k])}" }.join(" ") args_str = op.args.inspect lines << " #{j}: #{op.tag} #{sorted_attrs} #{args_str}".rstrip end end lines.join("\n") + "\n" end |