自动提升LLVM指令的输入值

时间:2013-05-10 16:14:32

标签: c++ llvm

当使用IR Builder时,我可以建立无效的IR,例如通过添加两个具有不兼容类型的值,例如i32float。是否有一种设施可以根据指令的语义自动提升价值(或更好的用户)?类似的东西:

Value * CreateSafeFAdd (Value *LHS, Value *RHS, const Twine &Name="", MDNode *FPMathTag=0)

会促进输入值,例如如果他们是整数。如果其中一个输入参数类型为float而另一个为double,则会提升到更高的浮点精度。

如果没有,我认为我必须采取所有类型转换才能构建有效的IR。

1 个答案:

答案 0 :(得分:1)

类型对话必须由构建IR的人处理,但您可以使用Value::getType()

创建自己的CreateSafeFAdd函数