Class: Kumi::IR::Base::Builder
- Inherits:
-
Object
- Object
- Kumi::IR::Base::Builder
- Defined in:
- lib/kumi/ir/base/builder.rb
Direct Known Subclasses
Kumi::IR::Buf::Builder, DF::Builder, Loop::Builder, Vec::Builder
Instance Attribute Summary collapse
-
#current_block ⇒ Object
readonly
Returns the value of attribute current_block.
-
#function ⇒ Object
readonly
Returns the value of attribute function.
-
#ir_module ⇒ Object
readonly
Returns the value of attribute ir_module.
Instance Method Summary collapse
- #emit(opcode, **kwargs) ⇒ Object
-
#initialize(ir_module:, function:) ⇒ Builder
constructor
A new instance of Builder.
- #new_block(name) ⇒ Object
- #set_block(block) ⇒ Object
Constructor Details
#initialize(ir_module:, function:) ⇒ Builder
Returns a new instance of Builder.
9 10 11 12 13 |
# File 'lib/kumi/ir/base/builder.rb', line 9 def initialize(ir_module:, function:) @ir_module = ir_module @function = function @current_block = function.entry_block end |
Instance Attribute Details
#current_block ⇒ Object (readonly)
Returns the value of attribute current_block.
7 8 9 |
# File 'lib/kumi/ir/base/builder.rb', line 7 def current_block @current_block end |
#function ⇒ Object (readonly)
Returns the value of attribute function.
7 8 9 |
# File 'lib/kumi/ir/base/builder.rb', line 7 def function @function end |
#ir_module ⇒ Object (readonly)
Returns the value of attribute ir_module.
7 8 9 |
# File 'lib/kumi/ir/base/builder.rb', line 7 def ir_module @ir_module end |
Instance Method Details
#emit(opcode, **kwargs) ⇒ Object
25 26 27 28 29 |
# File 'lib/kumi/ir/base/builder.rb', line 25 def emit(opcode, **kwargs) ensure_block! instr = instruction_class.new(**{ opcode: }.merge(kwargs)) @current_block.append(instr) end |
#new_block(name) ⇒ Object
19 20 21 22 23 |
# File 'lib/kumi/ir/base/builder.rb', line 19 def new_block(name) block = Block.new(name:) function.append_block(block) block end |
#set_block(block) ⇒ Object
15 16 17 |
# File 'lib/kumi/ir/base/builder.rb', line 15 def set_block(block) @current_block = block end |