Difference between revisions of "Instruction Set/callfl"

From Mill Computing Wiki
Jump to: navigation, search
(Created page with "{{DISPLAYTITLE:callfl}} <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>
  
function call
+
Predicated call on false 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/calltr|calltr]], [[Instruction_Set/retn|retn]]
 +
 
 
----
 
----
 
<code style="font-size:130%"><b style="color:#050">callfl</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">callfl</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#1116|Tin]] || F0 || 1
+
| [[Cores/Tin/Encoding#callfl|Tin]] || F0 || 1
 
|-
 
|-
| [[Cores/Copper/Encoding#1116|Copper]] || F0 F1 || 1
+
| [[Cores/Copper/Encoding#callfl|Copper]] || F0 F1 || 1
 
|-
 
|-
| [[Cores/Silver/Encoding#1116|Silver]] || F0 F1 F2 || 1
+
| [[Cores/Silver/Encoding#callfl|Silver]] || F0 F1 F2 || 1
 
|-
 
|-
| [[Cores/Gold/Encoding#1116|Gold]] || F0 F1 F2 F3 || 1
+
| [[Cores/Gold/Encoding#callfl|Gold]] || F0 F1 F2 F3 || 1
 
|-
 
|-
| [[Cores/Decimal8/Encoding#1116|Decimal8]] || F0 F1 F2 || 1
+
| [[Cores/Decimal8/Encoding#callfl|Decimal8]] || F0 F1 F2 || 1
 
|-
 
|-
| [[Cores/Decimal16/Encoding#1116|Decimal16]] || F0 F1 F2 || 1
+
| [[Cores/Decimal16/Encoding#callfl|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#1117|Tin]] || F0 || 1
+
| [[Cores/Tin/Encoding#callfl|Tin]] || F0 || 1
 
|-
 
|-
| [[Cores/Copper/Encoding#1117|Copper]] || F0 F1 || 1
+
| [[Cores/Copper/Encoding#callfl|Copper]] || F0 F1 || 1
 
|-
 
|-
| [[Cores/Silver/Encoding#1117|Silver]] || F0 F1 F2 || 1
+
| [[Cores/Silver/Encoding#callfl|Silver]] || F0 F1 F2 || 1
 
|-
 
|-
| [[Cores/Gold/Encoding#1117|Gold]] || F0 F1 F2 F3 || 1
+
| [[Cores/Gold/Encoding#callfl|Gold]] || F0 F1 F2 F3 || 1
 
|-
 
|-
| [[Cores/Decimal8/Encoding#1117|Decimal8]] || F0 F1 F2 || 1
+
| [[Cores/Decimal8/Encoding#callfl|Decimal8]] || F0 F1 F2 || 1
 
|-
 
|-
| [[Cores/Decimal16/Encoding#1117|Decimal16]] || F0 F1 F2 || 1
+
| [[Cores/Decimal16/Encoding#callfl|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:41, 4 February 2015

realizing  flow stream  flow block  call phase   operation  

native on: all

Predicated call on false 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, calltr, retn


callfl(op q, lit n, p target, args args) → ops r0 ...

operands: like Inv :


encoding: callfl(op q, lit n, p target, off argc, count args)
alternate encoding: callfl0, callfl1, callfln,

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

callfl(op q, lit n, lbl target, args args) → ops r0 ...

operands: like Inv :


encoding: callfl(op q, lit n, off target, count argc)
encoding: callfl(op q, lit n, off target, count argc, lit argv)
alternate encoding: callfl0, callfl1, callfln,

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