1. A method of executing instructions in a microprocessor, the method comprising: translating a data dependent instruction into at least first and second data independent speculative instructions, wherein the data dependent instruction, when executed, produces results which are dependent on a data result provided by execution of a data independent instruction; executing the first data independent speculative instruction to generate a first speculative result; executing the second data independent speculative instruction to generate a second speculative result; executing the data independent instruction to generate the data result, wherein the first data independent speculative instruction and the second data independent speculative instruction are executed prior to or in parallel with the data independent instruction, and; invalidating one of the first and second speculative results depending on a value of the data result.