LLVM:如何将一些指令/内在的指令转换为几个链式说明
LLVM: How to convert some instruction/intrinsic into several chained instructions?
基本上,假设我有3个说明:load $src
,store $dest
和modify
。
我想添加一个固有/指令foo $x
load $x
modify
store $x
加载和存储只需修改一个无法直接访问的特殊寄存器即可。我面临的问题是,出于某种原因,表Gen中的Pattern<...>
输出多个指令不会编译,并且Pat<...>
不会执行此操作,因为该说明不直接使用彼此的结果(即,特殊寄存器参数是隐式的),所以我不能(或不知道如何)从它们中创建单节点dag模式。
那么我该如何解决?我考虑过将伪指令转变为多个说明,但我不确定编译器是否能够将两个连续的foo $x
优化到
load $x
modify
modify
store $x
那样。
我通过在mytargetDagtodag的Select
方法中添加特殊的内在处理来完成我想要的事情。我已经用链式说明节点替换给定的节点。但这解决了代码生成的问题,我还没有找到解决优化问题的解决方案。
相关文章:
- 使用C++库在Android项目中修改gradle中的cmake参数,用于插入指令的测试
- 无法编译 rtmidi 测试 cmidiin.cpp 文件, 非法指令
- C++:对不存在的命名空间使用命名空间指令
- 当使用通配符和null指针调用函数时,对输出的说明
- 函数名是c中该函数的第一条指令的地址吗
- 关于C++中具有多重继承"this"指针的说明
- 错误:无效的预处理指令 #i 的意思是 #if?
- 组装指令中乘法的下部和上部是什么
- 16 位到 10 位转换代码说明
- OpenMP 与有序和关键指令并行
- C++中的移动分配出现问题.非法指令: 4.
- C++ 基本 CTOR 说明 - 为什么不调用赋值/复制构造函数
- 嵌套命名空间的"using"指令,但需要命名内部命名空间
- C++CMake编译指令与
- 使用宏扩展的泛型:为什么指令缓存使用不当?
- 编译器指出结构和 int 说明的错误 2059
- 如何在 c++ 中确定一条指令(以字节为单位)在哪里结束,另一条指令从哪里开始?
- AVX 指令中寄存器和指针之间的客观差异
- 随机数生成函数说明
- LLVM:如何将一些指令/内在的指令转换为几个链式说明