January 15th, 2011

ДР Цертуса 2011

(no subject)

В 2011 году в наборы команд мейнстримных процессоров проникнет операция FMA4 = четырёхоперандный Fused multiply-add, т.е. операция вида:
    r = ab + c.
(r, a, b и с номера регистров.)

Мало кто знает об этом, однако существует и другая крайне полезная в хозяйстве четырёхоперандная операция: универсальная побитовая, emux. Начнём с того, что существует крайне полезная операция mux = multiplex by mask, делающая со своими аргументами вот что побитово:
r = (a ∧ c) ∨ (b ∧ ¬c).
Тут a, b и с либо задают либо номер регистра, либо константу 0, либо константу 1.

То есть, в тех местах, где c = 1 оно берёт содержимое a, а в тех местах, где c = 0, берёт содержимое b. Это с огромным отрывом наиболее часто используемая тернарная булева операция. Несколько доработав технические детали можно сделать так, чтобы все возможные бинарные логические операции были частными случаями mux.

Collapse )