Difference between revisions of "Instruction Set/calltr"
(Created page with "{{DISPLAYTITLE:calltr}} <div style="font-size:80%;line-height:90%;margin-bottom:2em">realizing flow stream Decode|flow blo...") | |||
(2 intermediate revisions by the same user not shown) | |||
Line 4: | Line 4: | ||
</div> | </div> | ||
− | + | Predicated call on true condition. | |
+ | |||
+ | Everything that applies to [[Instruction_Set/call|call]] applies also here. The difference is the predicate to make it a conditional call. And there is one less possible argument in all the encodings. | ||
+ | |||
+ | When a conditional call is not taken, the correct number of return values will still be dropped on the belt as dummy arguments, so the scheduling is the same in both cases. | ||
+ | |||
+ | <b>related operations:</b> [[Instruction_Set/call|call]], [[Instruction_Set/callfl|callfl]], [[Instruction_Set/retn|retn]] | ||
+ | |||
---- | ---- | ||
<code style="font-size:130%"><b style="color:#050">calltr</b>(<span style="color:#009">[[Domains#op|op]]</span> <span title="call argument from calls window">q</span>, <i><span style="color:#009">[[Immediates#lit|lit]]</span> <span title="morsel-sized manifest constant">n</span></i>, <span style="color:#009">[[Domains#p|p]]</span> <span title="call argument from | <code style="font-size:130%"><b style="color:#050">calltr</b>(<span style="color:#009">[[Domains#op|op]]</span> <span title="call argument from calls window">q</span>, <i><span style="color:#009">[[Immediates#lit|lit]]</span> <span title="morsel-sized manifest constant">n</span></i>, <span style="color:#009">[[Domains#p|p]]</span> <span title="call argument from | ||
Line 21: | Line 28: | ||
! [[Cores|Core]] || [[Slot|In Slots]]|| [[Latency|Latencies]] | ! [[Cores|Core]] || [[Slot|In Slots]]|| [[Latency|Latencies]] | ||
|- | |- | ||
− | | [[Cores/Tin/Encoding# | + | | [[Cores/Tin/Encoding#calltr|Tin]] || F0 || 1 |
|- | |- | ||
− | | [[Cores/Copper/Encoding# | + | | [[Cores/Copper/Encoding#calltr|Copper]] || F0 F1 || 1 |
|- | |- | ||
− | | [[Cores/Silver/Encoding# | + | | [[Cores/Silver/Encoding#calltr|Silver]] || F0 F1 F2 || 1 |
|- | |- | ||
− | | [[Cores/Gold/Encoding# | + | | [[Cores/Gold/Encoding#calltr|Gold]] || F0 F1 F2 F3 || 1 |
|- | |- | ||
− | | [[Cores/Decimal8/Encoding# | + | | [[Cores/Decimal8/Encoding#calltr|Decimal8]] || F0 F1 F2 || 1 |
|- | |- | ||
− | | [[Cores/Decimal16/Encoding# | + | | [[Cores/Decimal16/Encoding#calltr|Decimal16]] || F0 F1 F2 || 1 |
|} | |} | ||
Line 52: | Line 59: | ||
! [[Cores|Core]] || [[Slot|In Slots]]|| [[Latency|Latencies]] | ! [[Cores|Core]] || [[Slot|In Slots]]|| [[Latency|Latencies]] | ||
|- | |- | ||
− | | [[Cores/Tin/Encoding# | + | | [[Cores/Tin/Encoding#calltr|Tin]] || F0 || 1 |
|- | |- | ||
− | | [[Cores/Copper/Encoding# | + | | [[Cores/Copper/Encoding#calltr|Copper]] || F0 F1 || 1 |
|- | |- | ||
− | | [[Cores/Silver/Encoding# | + | | [[Cores/Silver/Encoding#calltr|Silver]] || F0 F1 F2 || 1 |
|- | |- | ||
− | | [[Cores/Gold/Encoding# | + | | [[Cores/Gold/Encoding#calltr|Gold]] || F0 F1 F2 F3 || 1 |
|- | |- | ||
− | | [[Cores/Decimal8/Encoding# | + | | [[Cores/Decimal8/Encoding#calltr|Decimal8]] || F0 F1 F2 || 1 |
|- | |- | ||
− | | [[Cores/Decimal16/Encoding# | + | | [[Cores/Decimal16/Encoding#calltr|Decimal16]] || F0 F1 F2 || 1 |
|} | |} | ||
+ | |||
+ | |||
+ | [[Instruction_Set|Instruction Set, alphabetical]], [[Instruction Set by Category]], [http://millcomputing.com/instructions.html?collapse=7#ops Instruction Set, sortable, filterable] |
Latest revision as of 17:46, 4 February 2015
Predicated call on true condition.
Everything that applies to call applies also here. The difference is the predicate to make it a conditional call. And there is one less possible argument in all the encodings.
When a conditional call is not taken, the correct number of return values will still be dropped on the belt as dummy arguments, so the scheduling is the same in both cases.
related operations: call, callfl, retn
calltr(op q, lit n, p target, args args) → ops r0 ...
encoding:
calltr(op q, lit n, p target, off argc, count args)
alternate encoding: calltr0, calltr1, calltrn,
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 |
calltr(op q, lit n, lbl target, args args) → ops r0 ...
encoding:
calltr(op q, lit n, off target, count argc)
encoding:
calltr(op q, lit n, off target, count argc, lit argv)
alternate encoding: calltr0, calltr1, calltrn,
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