1. A method to compile instructions, the method comprising: identifying a predicate dependency between a first compiled instruction and a second compiled instruction at a control flow join point, the second compiled instruction having different speculative assumptions corresponding to how the second compiled instruction will be executed based on an outcome of the first compiled instruction; organizing a first strand to execute a first instance of the second compiled instruction corresponding to a first one of the speculative assumptions, and a second strand to execute a second instance of the second compiled instruction corresponding to a second one of the speculative assumptions opposite to the first one of the speculative assumptions; preventing modification of a third instruction executing under the first one of the speculative assumptions, if the third instruction does not operate on a register location operated on by any instruction executing under the second one of the speculative assumptions; and executing the first instance of the second compiled instruction and the second instance of the second compiled instruction in an asynchronous manner relative to each other and to the first compiled instruction.