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

Compiler construction 从单个LLVM IR指令发出多条asm指令的最佳方式,compiler-construction,llvm,llvm-ir,instruction-set,Compiler Construction,Llvm,Llvm Ir,Instruction Set,我正在为基于累加器的处理器实现LLVM后端。目前,我似乎陷入了如何将IR指令与ISA正确匹配的决策中 例如,LLVM IR指令: %c=添加%a%b 需要打印为多个机器指令: 装载 加b 商店c 到目前为止,我所看到的是,可以将组合的LLVM IR操作匹配到单个机器代码操作中(即,[(set i32:$dst,(add(mul i32:$src1,i32:$src2,i32:$src3))]>),但我还没有找到类似的“其他”方向的构造 目前,我所看到的解决方案是定义具有模式的伪指令以匹配LL

我正在为基于累加器的处理器实现LLVM后端。目前,我似乎陷入了如何将IR指令与ISA正确匹配的决策中

例如,LLVM IR指令: %c=添加%a%b

需要打印为多个机器指令:

装载
加b
商店c

到目前为止,我所看到的是,可以将组合的LLVM IR操作匹配到单个机器代码操作中(即,
[(set i32:$dst,(add(mul i32:$src1,i32:$src2,i32:$src3))]>
),但我还没有找到类似的“其他”方向的构造

目前,我所看到的解决方案是定义具有模式的伪指令以匹配LLVM IR,然后将它们扩展到自定义C++代码中。但我不想这样做,因为这将完全绕过TableGen文件的用途,并且需要大量自定义代码

我有一种预感,在.td文件中指定这样的构造肯定是可能的,但我在上游后端中找不到任何东西

据我所知,LLVM上游中所有可用的后端都是寄存器-寄存器机器-我无法找到具有隐式操作数的LLVM后端(例如累加器机器)。如果有这样一个后端的开源实现,我将非常感谢有这样一个链接