LLVM的SelectInst的好处

时间:2013-09-07 12:21:07

标签: llvm llvm-ir

LLVM的SelectInst用于表示something = cond ? true-part : false-part等表达式。

此指令在IR中有什么好处,因为?:也可以由编译器始终降低到BranchInst?是否有支持此类指令的CPU?或者select是否被CodeGenerator降低为跳跃?

我认为分析传递可能有好处,因为select保证了隐式if的两个“分支”。但另一方面,编译器根本不需要使用该指令,因此这些通道必须能够处理br

1 个答案:

答案 0 :(得分:5)

是的,你总是可以使用条件分支而不是select指令,但select有几个优点:

  1. 确实有相关的CPU指令来降低这些指令,x86中最明显的例子是cmov和各种setcc instructions
  2. 选择更易于矢量化 - 实际上,矢量化的一个常见阶段是“if conversion”,即将控制流(条件分支)转换为数据流(选择)的过程。