Вопросы по теме 'llvm-ir'

Как узнать, находится ли llvm::Instruction в пределах управления потоком?
С LLVM я пытаюсь выяснить, присутствует ли инструкция в управлении потоком (if/switch/for) и т. д., и я должен сделать это на уровне IR. Псевдокод выглядит примерно так, как показано ниже. if cond inst endif Я смотрю на SCC функции, но я...
895 просмотров
schedule 26.12.2023

в llvm не создается терминатор базового блока
я новичок в llvm и только сделал онлайн-учебник здесь: http://llvm.org/docs/tutorial/LangImpl1.html Теперь я хотел сделать свой собственный маленький язык и столкнулся с небольшой проблемой. Я хочу разобрать это: (def i 1) Он должен делать...
3529 просмотров
schedule 29.10.2023

Преобразование LLVM-IR в C-подобный язык
Я работаю над проектом, в котором мне нужно написать код для преобразования LLVM-IR в C-подобный язык. Этот язык имеет конструкции, очень похожие на C. Проведя небольшой опрос, я обнаружил, что до версии 3.0 LLVM существовал файл с именем...
2011 просмотров
schedule 05.12.2022

Константа времени компиляции во встроенный LLVM
У меня есть константа времени компиляции, и мне нужно передать ее встроенному через ее аргументы, например. @1 = private constant [4 x i8] c"dev\00", align 1 // intrinsic define linkonce i32 @myIntrinsic( i32 %p0 ) alwaysinline { %r0 = call i32...
144 просмотров
schedule 22.04.2023

Ошибка LLVM при доступе к loopinfo в проходе функции
Я пытаюсь получить информацию о цикле от IR, написав функцию pass. Поэтому я последовал некоторым примерам и написал следующее. Я не очень хорошо разбираюсь в написании пассов и менеджеров пассов. #include <iostream> #include...
1801 просмотров
schedule 21.07.2022

анализ данных и циклических зависимостей с помощью LLVM
Кто-нибудь знает, как я могу выполнить анализ зависимости от данных/цикла с помощью LLVM и clang? Глядя на веб-страницу пропусков -da , очевидно, было упомянуто, что этот проход выполняет свою работу, но использование этого прохода ничего не...
1550 просмотров

Создать работоспособный LLVM IR из сценария Julia?
Мне интересно, как преобразовать код Julia в работающий LLVM IR (файл *.ll). Существует команда с именем code_llvm , которая может скомпилировать функцию Julia в LLVM IR. Но его результат содержит что-то вроде %jl_value_t* , который кажется...
910 просмотров
schedule 26.10.2022

как использовать встроенные функции llvm @llvm.read_register?
Я заметил, что llvm.read_register() может читать значение указателя стека, а llvm.write_register() может устанавливать значение указателя стека. Я добавляю основную функцию в stackpointer.ll , которую можно найти в llvm src: ;stackpointer.ll...
660 просмотров
schedule 02.02.2024

Как различать знаковые и беззнаковые целые числа в LLVM
Проект LLVM не делает различий между целыми числами со знаком и без знака, как описано здесь . Бывают ситуации, когда вам нужно знать, следует ли интерпретировать конкретную переменную как знаковую или как беззнаковую, например, когда она...
3394 просмотров
schedule 20.02.2024

Как разобрать PNaCl как удобочитаемый LLVM IR?
У меня есть .pexe и я хочу получить IR-код LLVM. Как это может быть сделано? Это файл, который я хочу преобразовать в LLVM IR: NaClAMBullet.pexe Я не понимаю, почему это еще не читаемый код LLVM IR: Портативный исполняемый файл PNaCl...
145 просмотров
schedule 14.08.2023

Clang создает локальное хранилище в LLVM IR
Я изучаю LLVM IR через Clang и обнаружил, что функция C выглядит так: int inc(int x) { return x+1; } Генерирует этот IR (оптимизации отключены): define i32 @inc(i32 %x) #0 { entry: %x.addr = alloca i32, align 4 store i32 %x, i32*...
265 просмотров
schedule 18.01.2024

Общее расположение пространства памяти NVPTX в архитектуре
В NVPTX(LLVM IR) для программ CUDA есть идентификаторы адресного пространства памяти от 0 до 5 (см. Таблицу ниже). Я видел в той же программе LLVM IR, что адреса памяти идентифицируются как «Generic» или другие типы, как показано на...
499 просмотров
schedule 04.07.2022

Что означает эта встроенная сборка в тестовом примере LLVM-IR CodeGen?
Я пытаюсь понять тестовый пример LLVM CodeGen/Generic, чтобы я мог передать его для бэкэнда для нового процессора. Это тестовый пример (llvm/test/CodeGen/Generic/2007-04-08-MultipleFrameIndices.ll): ; RUN: llc -no-integrated-as < %s ; XFAIL:...
531 просмотров
schedule 23.02.2023

Как -fPIE передается в llc?
Я работаю над бэкэндом LLVM для новой архитектуры, и нам нужны исполняемые файлы, независимые от позиции. Я могу передать «-fPIE» в командной строке clang, но я не вижу никаких указаний на это в результирующем LLVM IR. Например, если я запускаю:...
1199 просмотров
schedule 24.07.2023

Инструкция вызова llvm irbuilder выдает исключение при проходе встраивания функции
Я новичок в LLVM. Я использую API Clang C++ для компиляции нескольких файлов-заглушек (в c) в IR, а затем склеиваю их вместе с помощью IR Builder (после их связывания), чтобы в конечном итоге запустить через JIT. Все это прекрасно работает, если...
173 просмотров
schedule 18.04.2023

Генерация исполняемого файла Rust из битового кода LLVM
Как я могу сгенерировать исполняемый файл приложения, написанного на Rust, который был скомпилирован в биткод LLVM-IR? Если я попытаюсь скомпилировать файл .bc с помощью rustc, он скажет мне stream did not contain valid UTF-8 , и я не могу понять,...
2020 просмотров
schedule 20.03.2023

Как Clang генерирует код для параметров функции?
В функции я хочу знать, как параметры передаются в тело функции, чтобы отслеживать поток параметров. Я попробовал простой код и обнаружил, что для каждого параметра существует шаблон alloc - store , интересно, правда это или нет? Демонстрационный...
599 просмотров
schedule 01.06.2023

Как вставить инструкцию предварительной выборки в LLVM?
У меня есть результат инструкции getelementptr, который является адресом, с которого мне нужно выполнить предварительную выборку.
525 просмотров
schedule 20.02.2023

Почему шаблонные функции не отображаются в LLVM-IR?
Почему шаблонные функции не отображаются в LLVM-IR, если функция не вызывается при генерации LLVM IR из кода C++, в отличие от других типов функций (int, float...), которые будут присутствовать в примере llvm ir: следующая функция func1 не...
681 просмотров
schedule 14.05.2024

Выполнение кода LLVM IR, сгенерированного из исходного кода Rust/Python.
Когда я генерирую IR-код LLVM из C++, я могу использовать консольную команду clang++ -emit-llvm –S test.cpp , чтобы получить файл test.ll, который представляет собой LLVM IR, который мне нужен. Чтобы получить исполняемый файл, выполните следующие...
1753 просмотров
schedule 17.05.2024