Difference between revisions of "Instruction Set/rescue"

From Mill Computing Wiki
Jump to: navigation, search
Line 4:Line 4:
 
</div>
 
</div>
  
copy arguments to front of belt
+
Move belt items to the front of the belt.
 +
 
 +
This is an optimization of the [[Instruction_Set/conform|conform]] operation used whenever the belt arguments don't need to be reordered. It only uses a bitmask to select which belt items to be saved to the front of the belt and thus is a much shorter encoding.<br />
 +
For this reason it is also more suitable to rescue belt items from falling off the end of the belt and be discarded within an [[EBB]] for the next instuction. There is no need to reorder the items for different targets, the ordering can be fully statically scheduled in the operand indices themselves for the one possible case.
 +
 
 +
Since belt items further in the back are much more likely to need rescuing the bit mask to select the belt items to be moved to the front actually starts from the back of the belt to allow for smaller manifest constants.
 +
 
 +
<b>related operations:</b> [[Instruction_Set/conform|conform]]
 +
 
 
----
 
----
 
<code style="font-size:130%"><b style="color:#050">rescue</b>(<i><span style="color:#009">[[Immediates#off|off]]</span> <span title="manifest constant">args</span></i>) &#8594; [[Domains|ops]] r<sub>0</sub> ...</code>
 
<code style="font-size:130%"><b style="color:#050">rescue</b>(<i><span style="color:#009">[[Immediates#off|off]]</span> <span title="manifest constant">args</span></i>) &#8594; [[Domains|ops]] r<sub>0</sub> ...</code>

Revision as of 17:07, 16 December 2014

realizing  flow stream  flow block  conform phase   operation  

native on: all

Move belt items to the front of the belt.

This is an optimization of the conform operation used whenever the belt arguments don't need to be reordered. It only uses a bitmask to select which belt items to be saved to the front of the belt and thus is a much shorter encoding.
For this reason it is also more suitable to rescue belt items from falling off the end of the belt and be discarded within an EBB for the next instuction. There is no need to reorder the items for different targets, the ordering can be fully statically scheduled in the operand indices themselves for the one possible case.

Since belt items further in the back are much more likely to need rescuing the bit mask to select the belt items to be moved to the front actually starts from the back of the belt to allow for smaller manifest constants.

related operations: conform


rescue(off args) → ops r0 ...

operands: like Inv :


encoding: rescue(off ops, count c)
encoding: rescue(off ops, count c, lit ops)
encoding: rescue(off ops, count c, lit ops, lit ops)
encoding: rescue(off ops, count c, lit ops, lit ops, lit ops)

Core In Slots Latencies
Tin F0 1
Copper F0 F1 1
Silver F0 F1 F2 1
Gold F0 F1 F2 F3 1
Decimal8 F0 F1 F2 1
Decimal16 F0 F1 F2 1

rescue(ops args) → ops r0 ...

operands: like Inv :


encoding: rescue(off ops, count c)
encoding: rescue(off ops, count c, lit ops)
encoding: rescue(off ops, count c, lit ops, lit ops)
encoding: rescue(off ops, count c, lit ops, lit ops, lit ops)

Core In Slots Latencies
Tin F0 1
Copper F0 F1 1
Silver F0 F1 F2 1
Gold F0 F1 F2 F3 1
Decimal8 F0 F1 F2 1
Decimal16 F0 F1 F2 1


Instruction Set, alphabetical, Instruction Set by Category, Instruction Set, sortable, filterable