如何在LLVM中添加自定义的内在特性?

如何在LLVM中添加自定义的内在特性?,llvm,llvm-ir,Llvm,Llvm Ir,我是LLVM的新手。通过在include/llvm/IR/中创建IntrinsicsFoo.td,我添加了一个定制的内在foo_sqrt。然后,我构建了整个llvm项目,并成功地添加了内部foo(foo_sqrt已添加到内部名称空间)。但是我不知道如何为它添加伪指令,以便内在::getDeclaration()函数在我的过程中工作。如果我希望我的内在foo计算浮点数的平方根,我应该在哪里添加此指令?我在网上搜索了很多东西,没有找到任何具体的东西。 以下是td文件的内容: let TargetPr

我是LLVM的新手。通过在include/llvm/IR/中创建IntrinsicsFoo.td,我添加了一个定制的内在foo_sqrt。然后,我构建了整个llvm项目,并成功地添加了内部foo(foo_sqrt已添加到内部名称空间)。但是我不知道如何为它添加伪指令,以便内在::getDeclaration()函数在我的过程中工作。如果我希望我的内在foo计算浮点数的平方根,我应该在哪里添加此指令?我在网上搜索了很多东西,没有找到任何具体的东西。 以下是td文件的内容:

let TargetPrefix = "foo" in { // All intrinsics start with "llvm.foo."
def int_foo_sqrt : GCCBuiltin<"__builtin_foo_sqrt">,
                    Intrinsic<[llvm_anyfloat_ty], [llvm_anyfloat_ty],
                              [IntrNoMem]>;
} // end TargetPrefix
让{//中的TargetPrefix=“foo”以“llvm.foo”开头
def int_foo_sqrt:GCCBuiltin,
内在的;
}//结束TargetPrefix