我正在为基于累加器的处理器实现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后端(例如蓄能器机器)。如果可以使用这种后端的开源实现,我将非常感谢与该后端的链接。