GPU/Shader Instruction Set: Difference between revisions

Neobrain (talk | contribs)
No edit summary
Neobrain (talk | contribs)
Line 629: Line 629:
== Relative addressing ==
== Relative addressing ==


There are 3 global address registers : a0.x, a0.y and aL (loop counter). For format 1 instructions, when IDX != 0, the value of the corresponding address register is added to SRC1's value.
There are 3 address registers: a0.x, a0.y and aL (loop counter). For format 1 instructions, when IDX != 0, the value of the corresponding address register is added to SRC1's value. For example, if IDX = 2, a0.y = 3 and SRC1 = c8, then instead SRC1+a0.y = c11 will be used for the instruction.


For example, if IDX = 2, a0.y = 3 and SRC1 = c8, then instead SRC1+a0.y = c11 will be used for the instruction.
a0.x and a0.y are set manually through the MOVA instruction by rounding a float value to integer precision. Hence, they may take negative values.


a0.x and a0.y can be set manually through the MOVA instruction. aL is set automatically by the LOOP instruction. Note that aL is still accessible and valid after exiting a LOOP block.
aL can only be set indirectly by the LOOP instruction. It is still accessible and valid after exiting a LOOP block, though.


== Comparison operator ==
== Comparison operator ==