LLVM
⚠️ НЕ РЕАЛИЗОВАНО: LLVM-бэкенд не используется: текущая реализация — транспилятор в код C++ с последующей сборкой через clang++ (LLVM IR не генерируется). Документ является справочником по инструкциям LLVM IR и не отражает фактический вывод компилятора
Инструкция возврата:
- ‘ret’ - инструкция возврата
ret <type> <value> ; Return a value from a non-void function ret void ; Return from void function
Инструкция передачи потока выполнения:
- ‘br’ - инструкция перехода (условного или безусловного)
- ‘switch’ - Инструкция передачи управления в одно из нескольких различных мест (обобщение инструкции «br»)
- ‘indirectbr’ - инструкция косвенного безусловного перехода
- ‘callbr’ - аналог безусловного перехода
Инструкции для обработки исключений:
- ‘invoke’ - аналог инструкции call с контролем исключения
- ‘resume’ - вспомогталеьная инстуркция для обарботки исключений
- ‘catchswitch’ - описание набора возможных обработчиков перехвата исключений
- ‘catchret’ - вспомогталеьная инстуркция для обарботки исключений
- ‘cleanupret’ - вспомогталеьная инстуркция для обарботки исключений
Инструкции для оптимизации:
- ‘unreachable’ - Инструкция для информирования оптимизатора о том, что данная часть кода недостижима.
Арифметические инструкции: ‘fneg’, ‘add’, ‘fadd’, ‘sub’, ‘fsub’, ‘mul’, ‘fmul’, ‘udiv’, ‘sdiv’, ‘fdiv’, ‘urem’, ‘srem’ , ‘frem’
Битовые операции: ‘shl’, ‘lshr’, ‘ashr’, ‘and’, ‘or’, ‘xor’
Операции над векторами и структурами: ‘extractelement’, ‘insertelement’, ‘shufflevector’, ‘extractvalue’, ‘insertvalue’
Операции с памятью и адресами:
- ‘alloca’ - выделение памяти на стеке с автоматичским освобождением после выхода из фукнции
- ‘load’ - инсутркция чтения из памяти
- ‘store’ - инсутркция записи в память
- ‘getelementptr’ - инсутркция вычисления адерса памяти для эелемента структуры
Операции синхронизации:
- ‘fence’ - инстуркция барьер для формирования порадка выполнения опеаторов???
- ‘cmpxchg’ - инструкция атомарного измерения памяти
- ‘atomicrmw’ - инструкция для атомарного выполнения следующего за ней оператора (xchg, add, sub, and, nand, or, xor, max, min, umax, umin, fadd, fsub, fmax, fmin, fmaximum, fminimum, uinc_wrap, udec_wrap, usub_cond, usub_sat)
Операторы конвертации: ‘trunc .. to’, ‘zext .. to’, ‘sext .. to’, ‘fptrunc .. to’, ‘fpext .. to’, ‘fptoui .. to’, ‘fptosi .. to’, ‘uitofp .. to’, ‘sitofp .. to’, ‘ptrtoint .. to’, ‘inttoptr .. to’ Instruction, ‘bitcast .. to’ Instruction, ‘addrspacecast .. to’
Other Operations
-
‘icmp’ - инструкция стравнения двух целых чисел
-
‘fcmp’ - инструкция стравнения двух чисел с плавающей запятой
-
‘phi’ - вспомогательная инструкция для SSA формы переменных
-
‘select’- инструкция для оптимизации вычислений
-
‘freeze’ - оптимиация
-
‘call’ - вызов функции с последующим воззвратом с помощью инструкции ret
-
‘va_arg’- инструкция дл доступа к переменному числу аргументов у функции
-
‘landingpad’ - вспомогталеьная инстуркция для обарботки исключений
-
‘catchpad’ - вспомогталеьная инстуркция для обарботки исключений
-
‘cleanuppad’ - вспомогталеьная инстуркция для обарботки исключений