Changes

Jump to navigation Jump to search
no edit summary
Line 49: Line 49:  
The situation becomes complex however when a VI reg is read AND written to in a sequence of instructions.
 
The situation becomes complex however when a VI reg is read AND written to in a sequence of instructions.
   −
Code:
+
<source lang="asm">
 
IADDIU vi05, vi00, 100
 
IADDIU vi05, vi00, 100
 
IADDIU vi05, vi05, 100
 
IADDIU vi05, vi05, 100
Line 55: Line 55:  
IADDIU vi05, vi05, 100
 
IADDIU vi05, vi05, 100
 
IBNE vi05, vi00 &lt;---- vi05's value is before any 100 value was added. (the value before the first IADDIU)
 
IBNE vi05, vi00 &lt;---- vi05's value is before any 100 value was added. (the value before the first IADDIU)
 +
</source>
    
When a VI reg is first written to, a 'chain' starts, and then if the next instruction reads AND writes to the same VI reg, the chain continues. It does this for a maximum of 4 instructions (the example above is the maximum). Then when the branch comes, the value that should be read is the value before the chain!
 
When a VI reg is first written to, a 'chain' starts, and then if the next instruction reads AND writes to the same VI reg, the chain continues. It does this for a maximum of 4 instructions (the example above is the maximum). Then when the branch comes, the value that should be read is the value before the chain!
Line 64: Line 65:  
It does:
 
It does:
   −
Code:
+
<source lang="asm">
 
[08b0] (000002ff) NOP
 
[08b0] (000002ff) NOP
 
[08b0] (100310fb) IADDIU vi03, vi02, 251
 
[08b0] (100310fb) IADDIU vi03, vi02, 251
Line 77: Line 78:  
[08d8] (000002ff) NOP
 
[08d8] (000002ff) NOP
 
[08d8] (81e2bb7d) SQI.xyzw vf23, vi02++
 
[08d8] (81e2bb7d) SQI.xyzw vf23, vi02++
 +
</source>
    
The first time the above block of code is run, the IBNE value for vi02 is the same value as it's value at [08b0] (before the chain starts).
 
The first time the above block of code is run, the IBNE value for vi02 is the same value as it's value at [08b0] (before the chain starts).
Line 97: Line 99:  
Example:
 
Example:
   −
Code:
+
<source lang="asm">
 
MAX vf02.x, vf00.x, vf01.x
 
MAX vf02.x, vf00.x, vf01.x
 +
</source>
    
Assuming vf01.x holds a positive denormal, the result in vf02.x will be that same denormal.
 
Assuming vf01.x holds a positive denormal, the result in vf02.x will be that same denormal.
ninja
782

edits

Navigation menu