LLVM的好处';s SelectInst

LLVM的好处';s SelectInst,llvm,llvm-ir,Llvm,Llvm Ir,LLVM有一个SelectInst,用于表示something=cond?正确部分:错误部分 此指令在IR中的好处是什么,因为?:也可以被编译器降低为分支?是否有支持此类指令的CPU?还是代码生成器将select降低为跳跃 我认为分析过程可能会有好处,因为select保证了隐式if的两个“分支”。但另一方面,编译器根本不需要使用该指令,因此这些过程无论如何都必须能够处理brs。是的,您可以始终使用条件分支而不是select指令,但select有几个优点: 确实有相关的CPU指令可以将这些指令降低

LLVM有一个
SelectInst
,用于表示
something=cond?正确部分:错误部分

此指令在IR中的好处是什么,因为
?:
也可以被编译器降低为
分支
?是否有支持此类指令的CPU?还是代码生成器将
select
降低为跳跃


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

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

  • 确实有相关的CPU指令可以将这些指令降低到内存中,x86中最明显的例子是和各种
  • select更易于矢量化-事实上,矢量化的一个常见阶段是“if转换”,即将控制流(条件分支)转换为数据流(select)的过程

  • 是的,ARM也有霓虹灯的选择指令。