7.13.17 Поддержка MIPS Paired-Single
Архитектура MIPS64 включает ряд инструкций, работающих с парами значений с плавающей точкой одинарной точности. Каждая пара упаковывается в 64-битный регистр с плавающей точкой; один элемент обозначается как «верхняя половина», а другой — как «нижняя половина».
GCC поддерживает операции с парными значениями одинарной точности с помощью как обобщённых векторных расширений (см. Использование векторных инструкций с помощью встроенных функций), так и набора встроенных функций, специфичных для MIPS. Оба вида поддержки включаются параметром командной строки -mpaired-single.
Векторный тип, связанный со значениями Paired-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};
Примечание: Порядок байтов процессора определяет, какое значение хранится в верхней половине регистра, а какое — в нижней. На платформах с прямым порядком байтов первое значение является нижним, а второе — верхним. На платформах с обратным порядком байтов порядок противоположный. Например, приведённый выше код устанавливает в нижнюю половину a значение 1.5 на платформах с прямым порядком байтов и 9.1 на платформах с обратным порядком байтов.
© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-15.3.0/gcc/MIPS-Paired_002dSingle-Support.html