Как gcc использует функции __builtin_ <target>_func во время компиляции - PullRequest
0 голосов
/ 26 апреля 2018

При компиляции gcc для цели aarch64 я вижу несколько функций __builtin_aarch64 _ ## func ## в файле include / arm_neon.h в каталоге сборки.

Например,

__extension__ extern __inline float64_t
__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
vmulxd_f64 (float64_t __a, float64_t __b)
{
  return __builtin_aarch64_fmulxdf (__a, __b);
}

Где находится определение __builtin_aarch64_fmulxdf ()?Я не могу понять, как эти встроенные модули подключаются к конкретным целевым md-файлам.

Означает ли вышеизложенное, что единственный способ создать эту инструкцию - это явный вызов этого расширения GCC?

1 Ответ

0 голосов
/ 29 мая 2018

Эти __builtin_aarch64_* функции являются встроенными в GCC специфичными для AArch64.Они в основном используются для реализации встроенных функций в arm_neon.h.

. GCC определяет их внутренне в своем коде, а не в каком-либо заголовочном файле.Они нигде не документированы, поскольку их можно изменять от выпуска к выпуску, и пользователи не должны полагаться на свое поведение.

Встроенные функции Advanced SIMD в arm_neon.h задокументированы и определены в ACLE (* 1009).* например), поэтому вы должны их использовать.

Сами встроенные функции, предназначенные для конкретной цели, являются лишь подробностями реализации в этом контексте.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...