Mi rendo conto, ma se non ricordo male è la strada preferita anche da Alpha, che non aveva pure lui un CCR e sfruttava la comparazione fra registri oppure testava il valore di un registro (0, != 0, >0, <0) ma adesso non ricordo.
Considera, tra l'altro, che Intel con la tecnica di macro-op internamente fa all'incirca così: "fonde" un'istruzione di compare/test e la seguente di salto condizionato, in modo da evitare di dipendere dalla generazione dei flag per eseguire il salto (i nuovi flag vengono generati lo stesso, ma il branch viene eseguito in parallelo).