1. A method comprising: determining that a first instruction instance is a first branch instruction instance; responsive to determining that the first instruction instance is the first branch instruction instance, obtaining a first branch prediction for the first branch instruction instance and a first confidence level of the first branch prediction, wherein the first branch prediction and the first confidence level are based, at least in part, on a history of branch executions for a program that comprises the first branch instruction instance; determining that the first confidence level is below a threshold; before executing the first branch instruction instance and responsive to determining that the first confidence level is below the threshold, fetching one or more instructions of the first branch instruction instance and converting the one or more instructions to predicated instruction instances, wherein the predicated instruction instances include at least a first instruction execution path associated with a first predicate and a second instruction execution path associated with a second predicate, wherein converting the one or more instruction comprises adding metadata to the one or more instructions before sending the one or more instructions to an instruction decoder, the metadata to cause the instruction decoder to convert the one or more instructions to the predicated instruction instances; ascertaining a value of a condition before execution of the predicated instruction instances; and determining whether to execute the first instruction execution path or the second instruction execution path based, at least in part, on whether the first predicate or the second predicate matches the value of the condition.