6.58.26 Встроенные функции 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-5.5.0/gcc/SPU-Built-in-Functions.html