gallium: document breakc and switch/case/default/endswitch

docs were missing, especially the opcode-from-hell switch however is anything
but obvious.

Reviewed-by: Jose Fonseca <jfonseca@vmware.com>
This commit is contained in:
Roland Scheidegger
2013-04-20 00:34:20 +02:00
parent 443950c6aa
commit 794579105a

View File

@@ -861,7 +861,18 @@ This instruction replicates its result.
.. opcode:: BRK - Break
TBD
Unconditionally moves the point of execution to the instruction after the
next endloop or endswitch. The instruction must appear within a loop/endloop
or switch/endswitch.
.. opcode:: BREAKC - Break Conditional
Conditionally moves the point of execution to the instruction after the
next endloop or endswitch. The instruction must appear within a loop/endloop
or switch/endswitch.
Condition evaluates to true if src0.x != 0 where src0.x is interpreted
as an integer register.
.. opcode:: IF - Float If
@@ -892,6 +903,45 @@ This instruction replicates its result.
Ends an IF or UIF block.
.. opcode:: SWITCH - Switch
Starts a C-style switch expression. The switch consists of one or multiple
CASE statements, and at most one DEFAULT statement. Execution of a statement
ends when a BRK is hit, but just like in C falling through to other cases
without a break is allowed. Similarly, DEFAULT label is allowed anywhere not
just as last statement, and fallthrough is allowed into/from it.
CASE src arguments are evaluated at bit level against the SWITCH src argument.
Example:
SWITCH src[0].x
CASE src[0].x
(some instructions here)
(optional BRK here)
DEFAULT
(some instructions here)
(optional BRK here)
CASE src[0].x
(some instructions here)
(optional BRK here)
ENDSWITCH
.. opcode:: CASE - Switch case
This represents a switch case label. The src arg must be an integer immediate.
.. opcode:: DEFAULT - Switch default
This represents the default case in the switch, which is taken if no other
case matches.
.. opcode:: ENDSWITCH - End of switch
Ends a switch expression.
.. opcode:: PUSHA - Push Address Register On Stack
push(src.x)
@@ -1210,11 +1260,6 @@ XXX wait what
TBD
.. opcode:: BREAKC - Break Conditional
TBD
.. _doubleopcodes:
Double ISA