6.57.27 Встроенные функции SPU
GCC предоставляет расширения для процессора SPU, как описано в Спецификации расширений языка SPU Sony/Toshiba/IBM, которую можно найти по адресам http://cell.scei.co.jp/ или http://www.ibm.com/developerworks/power/cell/. Реализация GCC отличается в нескольких аспектах.
- Не поддерживается необязательное расширение для указания векторных констант в скобках.
- Для инициализатора вектора не требуется приведение типов, если векторная константа имеет тот же тип, что и переменная, которую она инициализирует.
- Если
signedилиunsignedопущено, то знаковый тип векторного типа соответствует знаковому типу базового типа по умолчанию. Значение по умолчанию зависит от операционной системы, поэтому портативная программа должна всегда указывать знак. - По умолчанию добавляется ключевое слово
__vector. Макросvectorопределён в<spu_intrinsics.h>и может быть удалён. - GCC разрешает использование имени
typedefв качестве спецификатора типа для векторного типа. - Для языка C перегруженные функции реализованы с помощью макросов, поэтому следующее не работает:
spu_add ((vector signed int){1, 2, 3, 4}, foo);Поскольку
spu_addявляется макросом, векторная константа в примере обрабатывается как четыре отдельных аргумента. Для правильной работы оберните весь аргумент в скобки. - Расширенный вариант
__builtin_expectне поддерживается.
Примечание: Поддерживается только интерфейс, описанный в указанной выше спецификации. Внутренне GCC использует встроенные функции для реализации необходимой функциональности, но эти функции не поддерживаются и могут быть изменены без предварительного уведомления.
© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-4.9.4/gcc/SPU-Built-in-Functions.html