gpt4 book ai didi

compiler-construction - 如何获得 LLVM 后端来为 mul 指令生成函数调用?

转载 作者:行者123 更新时间:2023-12-04 03:08:12 26 4
gpt4 key购买 nike

我正在尝试为没有乘法指令的 ISA 编写后端,因此乘法需要通过加法循环来完成。

我正在关注 this guide.

我只是尝试不在 InstrInfo.td 文件中定义任何乘法,但这只会导致它在到达它时失败。这是一个完全 1:1 的翻译,所以有没有一种方法可以告诉编译器将任何 mul 指令替换为 Multiply() 函数调用(如果我在某处编写了它)?

最佳答案

每种架构都有一些限制。

如果体系结构不支持某个操作或特定类型的操作,则可以将它们设置为 LLVM 中的expand。代码生成器会将它们转换为 libcalls 或将它们分解为更小的受支持操作。

这些扩展调用可以在XXXISelLowering.cpp

中找到
setOperationAction(ISD::FDIV, MVT::f32, Expand);

对于上面的示例,F32 Div 将展开为 __divsf3 调用。

与您的情况类似,i32 乘法将扩展为 glibc 中的 __mulsi3 函数。

  • 检查 lib/CodeGen/TargetLoweringBase.cppinclude/llvm/IR/RuntimeLibcalls.def 中的所有此类库调用

关于compiler-construction - 如何获得 LLVM 后端来为 mul 指令生成函数调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47213041/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com