从一条LLVM IR指令发出多个asm指令的最佳方式

时间:2018-09-05 08:44:33

标签: compiler-construction llvm llvm-ir isa

我正在为基于累加器的处理器实现LLVM后端。目前,我似乎在决定如何将IR指令正确匹配到ISA上。

一个示例可能是LLVM IR指令: %c =添加%a%b

需要将其打印为多个机器说明: load a add b store c

到目前为止,我看到的是可以将组合的LLVM IR操作匹配为单个机器代码操作(即[(set i32:$dst, (add (mul i32:$src1, i32:$src2), i32:$src3))]>),但是我无法找到类似的构造另一个方向。

当前,我看到的解决方案是使用模式来定义Pseudo指令以匹配LLVM IR,然后将其扩展为自定义C ++代码。我宁愿不这样做,因为这将完全绕开TableGen文件的用途,并且需要大量的自定义代码。

我有预感,必须可以在.td文件中指定此类构造,但是我无法在上游后端中找到任何内容。

据我所知,LLVM上游的所有可用后端都是寄存器注册机器-我无法找到带有 implicit 操作数的LLVM后端(例如蓄能器机器)。如果可以使用这种后端的开源实现,我将非常感谢与该后端的链接。

0 个答案:

没有答案