Инфраструктура компилятора LLVM для архитектур VLIW
1 ответ
На данный момент в базовой LLVM нет хорошей поддержки VLIW. / 2010-11
Несколько полезных постов: http://old.nabble.com/VLIW-Scheduling-td857833.html
http://old.nabble.com/vliw-compatability-td27935919.html
ОБНОВЛЕНИЕ / 2012-01
LLVM добавил (кажется, после выпуска 3.0; Аншуман Дасгупта) начальную поддержку "упаковщика VLIW", также называемого DFApacketizer, в инфраструктуру поддержки кодегенератора, независимую от цели: http://llvm.org/docs/CodeGenerator.html
Чтобы сгенерировать таблицы для цели VLIW, добавьте Target GenDFAPacketizer.inc в качестве цели в Makefile в целевом каталоге. Экспортированный API предоставляет три функции:
- DFAPacketizer:: clearResources (),
- DFAPacketizer:: ReserveResources(MachineInstr *MI) и
- DFAPacketizer::canReserveResources(MachineInstr *MI).
Эти функции позволяют целевому упаковщику добавить инструкцию к существующему пакету и проверить, может ли инструкция быть добавлена к пакету. Увидеть
llvm/CodeGen/DFAPacketizer.h
для дополнительной информации.
Пакет машинных инструкций в ветке LLVM Эвана Ченга в списке рассылки com.googlegroups.llvm-dev от 2 декабря 2011 года, описывающий базовую поддержку LLVM VLIW (Bundle). Они запланированы в LLVM 3.1 и документированы здесь.
Кроме того, в 3.1 "новая инфраструктура TableGen для поддержки связывания для очень длинных инструкций Word (VLIW)". добавлен.
На сегодняшний день существует несколько компиляторов VLIW, основанных на LLVM; но независимая от цели (общая) поддержка VLIW находится в самом начале своего длинного пути.
ОБНОВЛЕНИЕ 2012/12
Есть несколько слайдов из Quic: http://llvm.org/devmtg/2012-11/Larin-Trick-Scheduling.pdf