Комментарии 10
Главный вопрос - сам бекенд (что генерирует макшинный код) для e2k таки свободный, или всё ещё проприетарщина?
Была рассмотрена схема принципиального устройства порта llvm-e2k
Наверное, некорректно в таком контексте говорить о портировании llvm-e2k. Это прикручивание фронтенда clang заместо edg к ecf_opt'у. По сути, llvm тут никаким боком, ну кроме llvm-IR
Тут есть один общий вопрос - зачем? И чуть более предметный - это на перформанс как-то появлияло?
Замечу, что вопрос регулярной публикации бинарных сборок (cross и native) для компилятора ecf_opt, сейчас рассматривается
На моей памяти, этот вопрос рассматривается года этак с 2010-го ))
Ну как зачем? Очевидно, это позволит обеспечить трансляцию для e2k программ, написанных на входных языках llvm. То есть собственно решить задачу портирования значительного объёма кода на Эльбрус.
По сути, llvm и gcc фронтенды закрывают сейчас основную часть потребностей в компиляции опенсоурсного кода.
Это прикручивание фронтенда clang заместо edg к ecf_opt'у
Ну большая часть кодовой базы современных компиляторов занимается оптимизацией,
и использование llvm-ir позволит переиспользовать все архитектурно независимые оптимизации,
коих довольно много в llvm проекте.
"хорошо раскрыта в различных статьях, в том числе, в статьях, опубликованных на habr.ru. "
Хабр уже давно не ру )
liblccopt (он же перекомпиленный ecf_opt под lccrt) можно достать из x86 версии дистрибутива Эльбрус ОС, а так же судя по всему написать на почту в саппорт и получить бинари (O_o?). Правда нет ни одной публичной которой можно было бы связать с исходниками выложенными на гитфлике, так что ждём релиза x86 версии Эльбрус ОС 7.2.
Кстати, для желающих разобраться в устройстве их проприетарного компилятора, там доступна вся отладочная информация. Что с этой информацией делать вы знаете. Чтобы МЦСТ не пытался родить обратно то, что уже выложил сам, есть зеркало на гитхабе: https://github.com/OpenE2K/llvm-lccrt/
Технология оптимизации для VLIW сильно отличается от классических RISC/CISC. Переделывать llvm под VLIW это очень долгий, трудный и не благодарный процесс. При этом вы никогда не сможете влить это в апстрим, потому что поддерживать существенную разработку под мертвую архитектуру, никому не нужно. Самый реалистичный и простой вариант, это сделать "бэкенд" для LLVM, который будет транслироваться в C код, и дальше уходить в их проприетарный бэкенд.
Подобный бэкенд для llvm существует, но находится в слабо поддерживаемом состоянии. Так же это поможет избавится от EDG, который насколько я понимаю стал "санкционным".
Задача lcbe-бэкенда состоит в преобразовании lccrt-IR пусть и с потерями производительности в компилируемый и исполняемый Си-код.
На понял. Мы хотим скомпилировать исходник на языке Си. После всех преобразований мы получили lccrt-IR, а затем преобразуем это опять в "компилируемый и исполняемый Си-код"?
Из серии: заглянем под капот clang-e2k/llvm-e2k из штатного дистрибутива для Эльбруса