1. A method for managing divergent threads in a thread group when processing an indirect branch program instruction, the method comprising: obtaining the indirect branch program instruction; determining whether a condition associated with the indirect branch program instruction is satisfied for at least one active thread in the thread group, wherein the indirect branch program instruction specifies a target address value for each thread in the thread group; determining a target program counter corresponding to an indirect branch target address for the indirect branch program instruction based on the target value associated with the at least one active thread; and updating an active program counter to equal the target program counter.