目前llvm的add,sub,...指令需要3个操作数:dest
,src1
,src2
。
如何编写自定义"添加"只支持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;
感谢。
答案 0 :(得分:0)
您需要将其建模为3操作数指令,但添加一个源操作数之一等于目标的约束。请参阅X86后端作为如何执行此操作的典型示例。