2016-09-08 2 views
1

При векторизации, если цикл содержит «if constructs», llvm пытается сгладить их, заменив инструкции SELECT, чтобы поток управления был прямым, если базовые блоки не могут быть преобразованы в предикатные инструкции, такие как SELECT, llvm не может его векторизовать. До сих пор я предполагаю, что для SELECT, например IR-инструкций, должна быть какая-то эквивалентная инструкция. Я искал предварительную инструкцию в архитектуре Intel, я не получил ее. Может кто-нибудь, пожалуйста, скажите мне, поддерживает ли текущая архитектура ISA исходные инструкции? Если нет, то как инструкции SELECT будут опущены в машинные инструкции? Пожалуйста, поправьте меня, если я сделаю какие-то неправильные предположения.Что инструкция SELECT опускается в ISA?

Заранее спасибо

+0

Инструкции по выбору опускаются с помощью пользовательских инструкций опускания или псевдо. Оформить заказ MSP430ISelLowering.cpp для получения дополнительной информации – ConsistentProgrammer

+0

Не существует индивидуальной команды ISA для выбора, так как выбранный узел опускается в phi-узлы и базовые блоки – ConsistentProgrammer

+0

Ваш второй комментарий немного запутан, почему выбранный узел опускается в phi-узлы и базовые блоки. Не могли бы вы дать мне указатель на это. – DTharun

ответ

1

Да несколько архитектур поддержки условного/определяющееся исполнения. Например, ARM имеет csel AArch64 ISA.

Это довольно распространено в архитектуре VLIW, потому что им необходимо заполнить пакеты. Predicated execution

Смежные вопросы