LLVM插入内在函数Cos

2023-12-14

我正在尝试将内部 cos() 函数调用插入到 LLVM pass。我在 FunctionPass 中的代码:

std::vector<Type *> arg_type;
arg_type.push_back(Type::getFloatTy(getGlobalContext()));
Function *fun = Intrinsic::getDeclaration(F.getParent(), Intrinsic::cos, arg_type);
CallInst* callInst = CallInst::Create(fun, args, Twine("cos"), (Instruction *)&I);

当我省略最后一行时,生成的 IR 是:

define i32 @main() nounwind uwtable {
entry:
...
}

declare float @llvm.cos.f32(float) nounwind readonly

,但是随着 CallInst 的加入,我得到的只是:

0  opt                0x000000000094f4bf
1  opt                0x000000000094f9c9
2  libpthread.so.0    0x00007fb92b652cb0
3  opt                0x00000000008be244 llvm::Instruction::Instruction(llvm::Type*, unsigned int, llvm::Use*, unsigned int, llvm::Instruction*) + 148
4  LLVMObfuscation.so 0x00007fb92a66c52f
5  LLVMObfuscation.so 0x00007fb92a66c9a5
6  LLVMObfuscation.so 0x00007fb92a66df21
7  opt                0x00000000008e921f llvm::FPPassManager::runOnFunction(llvm::Function&) + 591
8  opt                0x00000000008e9293 llvm::FPPassManager::runOnModule(llvm::Module&) + 51
9  opt                0x00000000008e8f34 llvm::MPPassManager::runOnModule(llvm::Module&) + 532
10 opt                0x00000000008ea4fb llvm::PassManagerImpl::run(llvm::Module&) + 171
11 opt                0x0000000000496208 main + 4104
12 libc.so.6          0x00007fb92a89376d __libc_start_main + 237
13 opt                0x000000000049cfe5

我还需要做什么?我认为我不需要在模块中定义这个函数。

发送到函数的 args 定义如下:

std::vector<Value *> args;
args.push_back(fp);

其中 fp 是先前插入的指令:

Instruction *fp = BinaryOperator::Create(Instruction::FSub, ...

变量 I 是 inst_iterator,但我是在 for 循环之外执行此操作。

谢谢。


我建议你使用IRBuilder。它简化了 LLVM 通道内的 IR 生成。在你的情况下,你可以这样使用它:

std::vector<Type *> arg_type;
arg_type.push_back(Type::getFloatTy(getGlobalContext()));
Function *fun = Intrinsic::getDeclaration(F.getParent(), Intrinsic::cos, arg_type);
IRBuilder<> Builder(&I);
Builder.CreateCall(fun, args);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

LLVM插入内在函数Cos 的相关文章

  • 有没有一种舒适的方法可以在 PARI/GP 中生成 n 中的 k 组合?

    假设我在 PARI GP 中有一个包含 n 个元素的向量 我想从 n 个元素中生成 k 个组合 例如 如果向量为 3 7 11 14 18 且 k 3 则输出应为 3 7 11 3 7 14 3 7 18 3 11 14 3 11 18 3
  • 从数据库结果生成多维数组的递归函数

    我正在编写一个函数 它接受页面 类别数组 来自平面数据库结果 并根据父 ID 生成嵌套页面 类别项目数组 我想递归地执行此操作 以便可以完成任何级别的嵌套 例如 我在一个查询中获取所有页面 这就是数据库表的样子 id parent id t
  • 如何调用进行 API 调用的类的实例以及该类中发出请求的函数,并将其分配给变量?迅速

    这是以下问题的后续 为什么代码不在第二个 URLSession shared dataTask 之后 之内执行 即在初始 URLSession shared dataTask 的 do 块内 迅速 https stackoverflow c
  • 在 numpy/scipy 中查找 matlab 函数

    是否有一个等价的函数find A gt 9 1 来自 numpy scipy 的 matlab 我知道有nonzeronumpy 中的函数 但我需要的是第一个索引 以便我可以在另一个提取的列中使用第一个索引 Ex A 1 2 3 9 6 4
  • C++ 实现友元/内联函数

    我似乎找不到这个新手问题的答案 如果我有课 头文件 h Class X public friend bool operator const X const X inline size type rows const ETC 当我去实现X的
  • 将 Python 列表(JSON 或其他)插入 MySQL 数据库

    所以我在Python中有一堆数组数据 嗯 相反 我有一个清单 我试图将此数组存储到 MySQL 数据库中的单个单元格中 我尝试使用 JSON 来序列化我的数据 但也许我不明白 JSON 是如何工作的 因此 在连接到我的数据库后 我尝试了上游
  • Verilog 中如何使用函数?

    在我的 FPGA Verilog 课程中 我的教授只是回顾了函数 他说在函数中 你可以按程序编写代码 然后 当您想要调用该函数时 您可以在always块中调用它 即 程序性地 也可以使用分配语句来调用它 对我来说 如何使用过程代码编写函数
  • R:在函数中包含循环?

    以下代码可用于创建一个 data frame 其中 Kendall Tau 和 Spearman 相关结果彼此相邻 data mtcars mtcars correlation lt function x y df1 cor data fr
  • 如何从文件中获取整个函数

    好的 我现在正在逐行阅读一个文件 我知道文件中的每个函数名称 因为它是在 XML 文档中的其他位置定义的 应该是这样的 function function name 其中 function name 是函数的名称 我从 XML 文档中获取所
  • jquery 中的函数返回未定义[重复]

    这个问题在这里已经有答案了 我在 jquery 中调用的函数返回未定义 我检查了该函数 当我对其进行调试时 它返回正确的数据 function addToPlaylist component type add to pl value pl
  • R:(中缀)运算符的两个定义之间的冲突:如何指定包?

    在 R 中 每当两个包定义相同的函数时 很容易指定要使用哪个包pkg foo 但是 当冲突的功能是一个时 你该怎么办 infix运算符 即使用定义 举个例子 两者ggplot2 and crayon define 有没有一种方法可以让我默认
  • 在 C# 中调用 C++ 库 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我有很多用 C 编写的库 我想从 C 调用这些库 但是 我遇到了很多问题 我想知道是否有书籍或指南告诉我如何做到这一点 Dll导入 htt
  • 如何从命令行执行 PHP 代码?

    我想执行单个 PHP 语句 例如if function exists my func echo function exists 直接使用命令行 无需使用单独的 PHP 文件 这怎么可能 如果您要在命令行中执行 PHP 我建议您安装phpsh
  • PHP runkit_function_rename 不起作用?

    这段代码不起作用 为什么不 我真正想要的是这个 我正在使用一个具有功能的系统 当我在本地主机上时 我希望该函数做一些不同的事情 我想用自己的东西覆盖该函数 也欢迎所有替代方案 您是否安装了 PECL 扩展 http www php net
  • 通过另一个函数将数据和列名称传递给 ggplot

    我将直接跳到一个示例并在后进行评论 cont lt data frame value c 1 20 variable c 1 20 1 20 1 5 1 20 2 group rep c 1 2 3 each 20 value variab
  • 如何在 Azure PowerShell 函数中导入模块?

    我尝试从函数查询天蓝色表 使用 Get AzTableRow 在我的笔记本电脑上工作得很好 但模块 aztable 不存在于天蓝色功能中 因此我得到的只是红屏 有办法安装吗 谢谢 大卫 您无需自行在 Azure Function 中安装 A
  • 在函数调用时加载外部 Javascript

    我想知道如何从函数将外部 Javascript 加载到我的文档中 这是一种方法 function loadDaFun var script document createElement script script src path to y
  • Python:在函数名中使用空格?

    我正在编写一个 python 脚本来调用函数 通常调用函数 def myCall print Hello World 但我想将该函数命名 使用为 def my Call print I did it 我知道世界会开始思考为什么程序员会这样命
  • 如何在运行时找到当前函数的名称?

    在使用又大又丑的 MFC ASSERT 宏多年之后 我终于决定放弃它并创建终极的 ASSERT 宏 我可以很好地获取文件和行号 甚至失败的表达式 我可以显示一个消息框 其中包含中止 重试 取消按钮 当我按下 Retry 时 VS 调试器会跳
  • c++ - <未解析的重载函数类型>

    在我的班级里叫Mat 我想要一个将另一个函数作为参数的函数 现在我有下面 4 个函数 但是在调用 print 时出现错误 第二行给了我一个错误 但我不明白为什么 因为第一行有效 唯一的区别是功能f不是班级成员Mat but f2是 失败的是

随机推荐

  • 在使用独立应用程序之前,是否必须在系统上安装 .net core?

    我正在使用 Visual Studio 2019 发布一个独立的 net core 2 1 应用程序 发布期间会发出许多文件 应用程序文件以及核心库 但发布的文件中不包含 dotnet exe 如果没有 dotnet exe 我无法启动已发
  • Chart.js 在条形图和折线图上具有双轴

    我正在使用本主题中的 Quince 的 Chart js 版本Chart js如何获得组合条形图和折线图 条形图和折线图看起来非常漂亮 无论如何 轴必须分为 Y1 和 Y2 我找不到 Quince 的版本支持 我又搜索了一下 发现了这个主题
  • 将列转换为 2D 向量的 C++ 文本文件

    我有一个包含值的文本文件 我想将它们放入二维向量中 我可以用数组来做到这一点 但我不知道如何用向量来做到这一点 矢量大小应该像我事先不知道的 vector2D nColumns nLines 我最多可以在文本文件中包含列数 但不能包含行数
  • Jetpack Compose Text 超链接文本的某些部分

    如何将超链接添加到文本组件文本的某些部分 With buildAnnotatedString我可以设置link蓝色部分并带有下划线 如下图所示 但我怎样才能将该部分变成链接 val annotatedLinkString buildAnno
  • Android EditText 值转为整数

    我正在创建一个抵押计算器 Android 程序 我试图弄清楚如何获取 EditText 值 作为可编辑返回 以转换为整数 以便我可以在抵押计算中使用这些整数 我知道有一个 toString 方法 这是一种可行的方法 然后尝试将其从字符串转换
  • 如何重新定位MKMapView的指南针?

    我想移动 MKMapView 指南针 我想通过这样的方式获得它的参考 let compassView mapView subviews filter 0 is NSClassFromString MKCompassView 然而编译器抱怨
  • ASP.NET Web API 2:如何使用外部身份验证服务登录?

    根据这篇文章http www asp net web api overview security external authentication services 我可以使用local身份验证服务 使用新的 ASP NET 身份框架 但我找
  • 访问 Web 服务的客户端的传入 IP 地址

    我有一个 Web 服务 WCF 并在 IIS 中配置它 现在 有什么方法可以查看尝试访问 Web 服务的客户端 IP 地址 传入 吗 Thanks 请参阅 Keyvan Nayyeri 关于该主题的精彩博客文章 在 WCF 3 5 中检测客
  • 用于选择和取消选择电子表格中所有其他复选框的复选框

    我有一个电子表格 其中包含每个行项目的复选框 我想在顶部放置一个复选框 当选择 取消选择电子表格时 该复选框将选择和取消选择电子表格中的所有其他复选框 以下是我到目前为止的代码 如果选择了 复选框 1 它将选择所有复选框 但如果取消选择 则
  • 如何使用 Roxygen 正确记录来自不同包的泛型的 S3 方法?

    我正在编写一个包 定义一个新类 测量员和print方法 即print surveyor 我的代码工作正常 我使用 roxygen 进行内联文档 但R CMD check发出警告 函数 方法的用途 文档对象 print surveyor 但不
  • 使用数据注释指定日期时间的格式?

    我的视图模型中有这个属性 DataType DataType DateTime public DateTime StartDate get set 如果我想显示日期 或用日期填充文本框 我有这些 每当显示日期时 都会显示如下 01 01 2
  • 为什么 psycopg2 INSERT 需要这么长时间才能循环运行以及如何加快速度?

    我正在尝试在 for 循环中使用 psycopg2 INSERT 将 source lat source long destination lat destination long 行从 Pandas 数据帧插入到 PostgreSQL 表
  • 将编码信息添加到 FOR XML 的结果中[重复]

    这个问题在这里已经有答案了 我有一个脚本 它在 SQL 2008 中使用 FOR XML 返回 XML 有没有办法在输出的开头添加版本和编码信息 最终 我计划将输出保存在文件中 例如 现在我的输出看起来像这样
  • Google Admin sdk 目录 403

    我正在尝试将 googleapi 2 0 与服务帐户一起使用 以在企业域上的用户上使用 Directory gooogle admin sdk 我已按照建议进行操作 this例如 并准备了一个 希望工作 的poc java代码 像这样的东西
  • Cocos2dx Android 构建错误:“arm-linux-androideabi-g++:没有这样的文件或目录”

    我下载了最新的cocos2dx 3 10 和NDK r11 我执行的时候出现以下错误cocos compile p android android studio Error AndroidDev android ndk r11 toolch
  • Delphi 代码格式化程序

    是否有任何实用程序可以重新格式化 Delphi 代码 EDIT 我使用的是德尔福2006 一些反馈 感谢所有回答这个问题的人 我一直在使用 JCF 代码格式化程序 它运行良好 我的代码已格式化为对象 Pascal 风格指南 您可以尝试 绝地
  • 如何使用 php 和 jquery 验证向导表单?

    简要说明这个简单的 jQuery 向导如何工作 会话用于保存每个步骤的数据 由一个会话变量组成 用于保存我们所处的步骤 由一个用于存储表单数据的会话变量组成 每次更改步骤时 我们都会使用 ajax 请求保存表单数据和会话中的步骤 如果数据被
  • Python-要列出的字符串

    我需要将列表转换为字符串并将字符串返回到列表 有一种 python 方法可以实现这种行为吗 l1 aa bb cc s str l1 l2 cast string to list s print l2 aa bb cc 使用序列化库 例如j
  • 这是在 ES6 中克隆对象的好方法吗?

    谷歌搜索 javascript克隆对象 带来了一些非常奇怪的结果 其中一些已经过时了 有些太复杂了 是不是很简单 let clone original 这有什么问题吗 这很好用于浅克隆 The 对象传播是 ECMAScript 2018 的
  • LLVM插入内在函数Cos

    我正在尝试将内部 cos 函数调用插入到 LLVM pass 我在 FunctionPass 中的代码 std vector