llvm:将3个操作数降低到2个操作数指令

时间:2015-03-16 05:02:11

标签: llvm operand

目前llvm的add,sub,...指令需要3个操作数:destsrc1src2

如何编写自定义"添加"只支持2个操作数的指令?
例如:dest = dest + src1

我在.td文件中尝试了这个,但它没有工作:

defm Reg: Instr<opcode, (outs RC:$dest), (ins RC:$A),
              !strconcat(opcodeStr, " $dest, $dest, $A"),
              [(set Ty:$dest, (opNode Ty:$dest, Ty:$A))]>;

它抱怨&#34;输入操作数$ dest出现在模式中但不出现在操作数列表中!&#34;

感谢。

1 个答案:

答案 0 :(得分:0)

您需要将其建模为3操作数指令,但添加一个源操作数之一等于目标的约束。请参阅X86后端作为如何执行此操作的典型示例。