Spec-Zone.ru › GCC 10

Далее: ARC SIMD Built-in Functions, Предыдущее: Altera Nios II Built-in Functions, Вверх: Built-in Functions Specific to Particular Target Machines [Содержание][Индекс]

6.60.4 Встроенные функции ARC ¶

Для целей ARC предоставляются следующие встроенные функции. Встроенные функции генерируют соответствующие инструкции ассемблера. В приведенных ниже примерах сгенерированный код часто требует, чтобы операнд или результат находились в регистре. При необходимости будет сгенерирован дополнительный код, чтобы обеспечить это, но для краткости это не описывается в каждом случае.

Примечание: Использование встроенной функции для генерации инструкции, не поддерживаемой целевой платформой, может вызвать проблемы. В настоящее время компилятор не гарантированно обнаруживает такое неправильное использование, и в результате может быть сгенерирована внутренняя ошибка компилятора.

Встроенная функция: int __builtin_arc_aligned (void *val, int alignval) ¶

Возвращает 1, если известно, что val имеет выравнивание байтов, заданное alignval, иначе возвращает 0. Обратите внимание, что это отличается от

__alignof__(*(char *)val) >= alignval

потому что __alignof__ видит только тип разыменования, тогда как __builtin_arc_align использует информацию о выравнивании как из указателя, так и из указываемого типа. Доступная информация будет зависеть от уровня оптимизации.

Встроенная функция: void __builtin_arc_brk (void) ¶

Генерирует

brk
Встроенная функция: unsigned int __builtin_arc_core_read (unsigned int regno) ¶

Операнд — это номер регистра для чтения. Генерирует:

mov  dest, rregno

где значение в dest будет результатом, возвращаемым встроенной функцией.

Встроенная функция: void __builtin_arc_core_write (unsigned int regno, unsigned int val) ¶

Первый операнд — это номер регистра для записи, второй операнд — константа времени компиляции для записи в этот регистр. Генерирует:

mov  rregno, val
Встроенная функция: int __builtin_arc_divaw (int a, int b) ¶

Доступно только если установлен либо -mcpu=ARC700, либо -meA. Генерирует:

divaw  dest, a, b

где значение в dest будет результатом, возвращаемым встроенной функцией.

Встроенная функция: void __builtin_arc_flag (unsigned int a) ¶

Генерирует

flag  a
Встроенная функция: unsigned int __builtin_arc_lr (unsigned int auxr) ¶

Операнд, auxv, является адресом вспомогательного регистра и должен быть константой времени компиляции. Генерирует:

lr  dest, [auxr]

Где значение в dest будет результатом, возвращаемым встроенной функцией.

Встроенная функция: void __builtin_arc_mul64 (int a, int b) ¶

Доступно только с -mmul64. Генерирует:

mul64  a, b
Встроенная функция: void __builtin_arc_mulu64 (unsigned int a, unsigned int b) ¶

Доступно только с -mmul64. Генерирует:

mulu64  a, b
Встроенная функция: void __builtin_arc_nop (void) ¶

Генерирует:

nop
Встроенная функция: int __builtin_arc_norm (int src) ¶

Допустимо только если инструкция ‘norm’ доступна через опцию -mnorm или по умолчанию с -mcpu=ARC700. Генерирует:

norm  dest, src

Где значение в dest будет результатом, возвращаемым встроенной функцией.

Встроенная функция: short int __builtin_arc_normw (short int src) ¶

Допустимо только если инструкция ‘normw’ доступна через опцию -mnorm или по умолчанию с -mcpu=ARC700. Генерирует:

normw  dest, src

Где значение в dest будет результатом, возвращаемым встроенной функцией.

Встроенная функция: void __builtin_arc_rtie (void) ¶

Генерирует:

rtie
Встроенная функция: void __builtin_arc_sleep (int a ¶

Генерирует:

sleep  a
Встроенная функция: void __builtin_arc_sr (unsigned int auxr, unsigned int val) ¶

Первый аргумент, auxv, — это адрес вспомогательного регистра, второй аргумент, val, — это константа времени компиляции, которая будет записана в регистр. Генерирует:

sr  auxr, [val]
Встроенная функция: int __builtin_arc_swap (int src) ¶

Допустимо только с -mswap. Генерирует:

swap  dest, src

Где значение в dest будет результатом, возвращаемым встроенной функцией.

Встроенная функция: void __builtin_arc_swi (void) ¶

Генерирует:

swi
Встроенная функция: void __builtin_arc_sync (void) ¶

Доступно только с -mcpu=ARC700. Генерирует:

sync
Встроенная функция: void __builtin_arc_trap_s (unsigned int c) ¶

Доступно только с -mcpu=ARC700. Генерирует:

trap_s  c
Встроенная функция: void __builtin_arc_unimp_s (void) ¶

Доступно только с -mcpu=ARC700. Генерирует:

unimp_s

Инструкции, генерируемые следующими встроенными функциями, не рассматриваются как кандидаты для планирования. Они не перемещаются компилятором во время планирования и, таким образом, можно ожидать, что они появятся там, где они размещены в коде C:

__builtin_arc_brk()
__builtin_arc_core_read()
__builtin_arc_core_write()
__builtin_arc_flag()
__builtin_arc_lr()
__builtin_arc_sleep()
__builtin_arc_sr()
__builtin_arc_swi()

Далее: Встроенные функции ARC SIMD, Предыдущее: Встроенные функции Altera Nios II, Вверх: Встроенные функции, специфичные для определённых целевых машин [Содержание][Индекс]

© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-10.5.0/gcc/ARC-Built-in-Functions.html

Spec-Zone.ru

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