Difference between revisions of "Instruction Set/rescue"
Line 4: | Line 4: | ||
</div> | </div> | ||
− | + | 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>) → [[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>) → [[Domains|ops]] r<sub>0</sub> ...</code> |
Revision as of 17:07, 16 December 2014
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
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 |
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