6.62.18 Поддержка MIPS Paired-Single
Архитектура 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};
Примечание: Порядок байтов (endianness) процессора определяет, какое значение хранится в верхней половине регистра, а какое — в нижней. На целевых платформах с little-endian порядок — первое значение нижнее, второе — верхнее. Обратный порядок применяется для платформ с big-endian. Например, код выше устанавливает нижнюю половину a в значение 1.5 на целевых платформах с little-endian и 9.1 на целевых платформах с big-endian.
© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-14.2.0/gcc/MIPS-Paired_002dSingle-Support.html