Predication (computer architecture)

This was sufficient until designers began improving performance by implementing instruction pipelining, a method which is slowed down by branches.

Conditional move instructions write the contents of one register over another only if the predicate's value is true, whereas conditional select instructions choose which of two registers has its contents written to a third based on the predicate's value.

It also has a number of more subtle benefits: Predication's primary drawback is in increased encoding space.

Predicated instructions were popular in European computer designs of the 1950s, including the Mailüfterl (1955), the Zuse Z22 (1955), the ZEBRA (1958), and the Electrologica X1 (1958).

Digital Equipment Corporation's Alpha architecture (1992) also featured conditional move instructions.

The use of predication is essential in IA-64's implementation of software pipelining because it avoids the need for writing separated code for prologs and epilogs.

Some SIMD instruction sets, like AVX2, have the ability to use a logical mask to conditionally load/store values to memory, a parallel form of the conditional move, and may also apply individual mask bits to individual arithmetic units executing a parallel operation.

This form of predication is also used in vector processors and single instruction, multiple threads GPU computing.

All the techniques, advantages and disadvantages of single scalar predication apply just as well to the parallel processing case.