1. A method of processing instructions, comprising fetching, by a fetch unit, a plurality of instructions from an instruction source; decoding the plurality of instructions, by a decoder/dispatcher, the plurality of instructions including instructions that reference a target register of a general purpose register for storage of results thereof, the instructions that reference the target register including a current instruction and previous instructions; dispatching, by the decoder/dispatcher, the plurality of instructions to an issue queue, issuing, by the issue queue, the plurality of instructions that reference the particular target register out-of-order to execution units; storing a respective entry in a recovery buffer unit for each of the previous instructions and the current instruction, the previous instructions and the current instruction referencing the same target register; speculatively executing, by the execution units, the previous instructions and the current instruction; determining, by a branch execution unit, if an exception occurred for one of the previous instructions that requires an issue queue flush; performing an issue queue flush if an exception occurred in the determining step; performing, in response to the exception, a recovery buffer unit recovery to determine an oldest valid entry of the recovery buffer unit; and restoring the general purpose register to a known good state using a result of a target register corresponding to the oldest valid entry of the recovery buffer unit determined in the recovery buffer unit recovery.