6.57.14 Поддержка парных однократных чисел MIPS
Архитектура MIPS64 включает ряд инструкций, работающих с парами чисел с плавающей точкой одинарной точности. Каждая пара упаковывается в 64-битный регистр с плавающей точкой, где один элемент обозначается как «верхняя половина», а другой — как «нижняя половина».
GCC поддерживает операции с парными однократными числами, используя как общие векторные расширения (см. Векторные расширения), так и набор функций MIPS-специфичных встроенных функций. Оба вида поддержки активируются параметром командной строки -mpaired-single.
Тип вектора, связанный с парными однократными числами, обычно называется v2sf. Он может быть определён в C следующим образом:
typedef float v2sf __attribute__ ((vector_size (8)));
v2sf значения инициализируются так же, как и агрегаты. Например:
v2sf a = {1.5, 9.1};
v2sf b;
float e, f;
b = (v2sf) {e, f}; Примечание: Порядок байтов процессора определяет, какое значение хранится в верхней половине регистра, а какое — в нижней. На целевых системах с прямым порядком байтов (little-endian) первое значение — нижнее, а второе — верхнее. Обратный порядок применяется для систем с обратным порядком байтов (big-endian). Например, код выше устанавливает нижнюю половину a в 1.5 на целевых системах с прямым порядком байтов и 9.1 на целевых системах с обратным порядком байтов.
© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-4.9.4/gcc/MIPS-Paired-Single-Support.html