Eric Smith wrote:
This instruction is especially useful, as it allows the software to
directly implement an NFA (nondeterministic finite automaton) without
having to transform it into a DFA (deterministic). NFAs are used for
regular expression matching and lexical analysis, but the transformation
to a DFA as needed on processors without the BBW instruction can be
expensive in both time and memory.
On a more serious note, many state-of-the-art processors do sort of
implement "branch both ways" in the sense that they do speculative
execution of both paths then discard the results on one path once the
condition is resolved. A limited form of speculative execution was
used by the IBM 7030 Data Processing System (AKA "Stretch"), introduced
in 1961. I'm not aware of any other production systems with speculative
execution that are on-charter for this list (e.g., introduced before
12-nov-1993).
Eric
Notice to all: I'm claiming an extra geek point because this entire message
makes perfect sense to me. --Patrick