Boxis R700 User Manual Page 37

  • Download
  • Add to my manuals
  • Print
  • Page
    / 392
  • Table of contents
  • BOOKMARKS
  • Rated. / 5. Based on customer reviews
Page view 36
ATI R700 Technology
ATI R700-Family Instruction Set Architecture 3-1
Copyright © 2009 Advanced Micro Devices, Inc. All rights reserved.
Chapter 3
Control Flow (CF) Programs
A control flow (CF) program is a main program. It directs the flow of program
clauses by using control-flow instructions (conditional jumps, loops, and
subroutines), and it can include memory-allocation instructions and other
instructions that specify when vertex and geometry programs have completed
their operations. The R700 hardware maintains a single, multi-entry stack for
saving and restoring active masks, loop counters, and returning addresses for
subroutines.
CF instructions can:
Execute an ALU, texture-fetch, or vertex-fetch clause, local data share
clause, or memory read clause. These operations take the address of the
clause to execute, and a count indicating the size of the clause. A program
can specify that a clause must wait until previously executed clauses
complete, or that a clause must execute conditionally (only active pixels
execute the clause, and the clause is skipped entirely if no pixels are active).
Execute a DirectX9-style loop. There are two instructions marking the
beginning and end of the loop. Each instruction takes the address of its
paired LOOP_START and LOOP_END instructions. A loop reads from one of 32
constants to get the loop count, initial index value, and index increment
value. Loops can be nested.
Execute a DirectX10-style loop. There are two instructions marking the
beginning and end of the loop. Each instruction takes an address of its paired
LOOP_START and LOOP_END instructions. Loops can be nested.
Execute a repeat loop (one that does not maintain a loop index). Repeat
loops are implemented with the LOOP_START_NO_AL and LOOP_END
instructions. These loops can be nested.
Break out of the innermost loop. LOOP_BREAK instructions take an address to
the corresponding LOOP_END instruction. LOOP_BREAK instructions can be
conditional (executing only for pixels that satisfy a break condition).
Continue a loop, starting with the next iteration of the innermost loop.
LOOP_CONTINUE instructions take an address to the corresponding LOOP_END
instruction. LOOP_CONTINUE instructions can be conditional.
Execute a subroutine CALL or RETURN. A CALL takes a jump address. A
RETURN never takes an address; it returns to the address at the top of the
stack. Calls can be conditional (only pixels satisfying a condition perform the
instruction). Calls can be nested.
Page view 36
1 2 ... 32 33 34 35 36 37 38 39 40 41 42 ... 391 392

Comments to this Manuals

No comments