Spec-Zone.ru › GCC 8

6.59.16 Поддержка архитектуры MIPS SIMD (MSA)

• Встроенные функции архитектуры MIPS SIMD:

GCC предоставляет встроенные функции для доступа к инструкциям SIMD, предоставляемым архитектурой MIPS SIMD MSA. Интерфейс доступен путём включения <msa.h> и использования -mmsa -mhard-float -mfp64 -mnan=2008. Для каждой __builtin_msa_*, существует сокращённое имя встроенной функции, __msa_*.

MSA реализует 128-битные векторные регистры, работающие с 8-, 16-, 32- и 64-битными целочисленными, 16- и 32-битными фиксированными или 32- и 64-битными плавающими точками данными. Следующие типы векторов включены в msa.h:

  • v16i8, вектор шестнадцати знаково-знаковых 8-битных целых чисел;
  • v16u8, вектор шестнадцати беззнаковых 8-битных целых чисел;
  • v8i16, вектор восьми знаково-знаковых 16-битных целых чисел;
  • v8u16, вектор восьми беззнаковых 16-битных целых чисел;
  • v4i32, вектор четырёх знаково-знаковых 32-битных целых чисел;
  • v4u32, вектор четырёх беззнаковых 32-битных целых чисел;
  • v2i64, вектор двух знаково-знаковых 64-битных целых чисел;
  • v2u64, вектор двух беззнаковых 64-битных целых чисел;
  • v4f32, вектор четырёх 32-битных чисел с плавающей точкой;
  • v2f64, вектор двух 64-битных чисел двойной точности.

Инструкции и соответствующие встроенные функции могут иметь дополнительные ограничения и/или манипулировать значениями входных/выходных данных:

  • imm0_1, целое число в диапазоне от 0 до 1;
  • imm0_3, целое число в диапазоне от 0 до 3;
  • imm0_7, целое число в диапазоне от 0 до 7;
  • imm0_15, целое число в диапазоне от 0 до 15;
  • imm0_31, целое число в диапазоне от 0 до 31;
  • imm0_63, целое число в диапазоне от 0 до 63;
  • imm0_255, целое число в диапазоне от 0 до 255;
  • imm_n16_15, целое число в диапазоне от -16 до 15;
  • imm_n512_511, целое число в диапазоне от -512 до 511;
  • imm_n1024_1022, целое число в диапазоне от -512 до 511, сдвинутое влево на 1 бит, т.е., -1024, -1022, …, 1020, 1022;
  • imm_n2048_2044, целое число в диапазоне от -512 до 511, сдвинутое влево на 2 бита, т.е., -2048, -2044, …, 2040, 2044;
  • imm_n4096_4088, целое число в диапазоне от -512 до 511, сдвинутое влево на 3 бита, т.е., -4096, -4088, …, 4080, 4088;
  • imm1_4, целое число в диапазоне от 1 до 4;
  • i32, i64, u32, u64, f32, f64, определено следующим образом:
{
typedef int i32;
#if __LONG_MAX__ == __LONG_LONG_MAX__
typedef long i64;
#else
typedef long long i64;
#endif

typedef unsigned int u32;
#if __LONG_MAX__ == __LONG_LONG_MAX__
typedef unsigned long u64;
#else
typedef unsigned long long u64;
#endif

typedef double f64;
typedef float f32;
}

Следующая: Другие встроенные функции MIPS, Предыдущая: Встроенные функции MIPS Loongson, Вернуться: Встроенные функции целевой системы [Оглавление][Индекс]

© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-8.5.0/gcc/MIPS-SIMD-Architecture-_0028MSA_0029-Support.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API