К чему приводит инструкция SELECT в ISA?

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

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


person DTharun    schedule 08.09.2016    source источник
comment
Инструкции по выбору снижаются с помощью настраиваемого понижения или псевдоинструкций. Проверьте MSP430ISelLowering.cpp для получения дополнительной информации.   -  person ConsistentProgrammer    schedule 08.09.2016
comment
Нет инструкции ISA один к одному для выбора, так как узел выбора понижен до фи-узлов и базовых блоков.   -  person ConsistentProgrammer    schedule 08.09.2016
comment
Ваш второй комментарий немного сбивает с толку, почему выбранный узел понижен до фи-узлов и базовых блоков. Не могли бы вы дать мне указатель на это.   -  person DTharun    schedule 09.09.2016
comment
узел выбора генерируется, например, для троичной операции. Поскольку такие операции в основном являются условиями if, они в основном низведены до условных структур; следовательно, у нас есть фи-узел и два основных блока для истинных и ложных условий.   -  person ConsistentProgrammer    schedule 09.09.2016
comment
То, что вы сказали, частично верно, узел выбора генерируется для троичной операции, кроме того, при векторизации компиляторы циклов сглаживают конструкции if, все инструкции в теле if, а else body будут преобразованы в операторы select. Их снова не опускают до условных структур.   -  person DTharun    schedule 12.09.2016
comment
Это неверно: например, выбор можно превратить в условный ход. Также обратите внимание, что некоторые архитектуры (на мой взгляд, GPU) имеют собственный выбор в своей ISA, иногда берущий 4 операнда (два для выполнения условия и 2 для возможных результатов).   -  person Joky    schedule 18.09.2016


Ответы (1)


Да, несколько архитектур поддерживают условное/предикативное выполнение. Например, у ARM есть csel AArch64. ИСА.

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

person A. K.    schedule 21.12.2017