[llvm-dev] Operand does not exist in operand list (original) (raw)

Craig Topper via llvm-dev llvm-dev at lists.llvm.org
Tue Oct 16 17:51:22 PDT 2018


You need a register in the outs list too. To inform everything that your instruction produces an output. And it needs to be a different name than raandra and raandrb. So let's say $rd for destination. You need to do this:

let Constraints = "$ra = $rd" def ADDR : F_R<0b000000,(outs CPURegs:$rd) , (ins CPURegs:$rb, CPURegs:$ra),"ADDR ra,ra, ra,rb",[(set CPURegs:$rd, (add CPURegs:$ra, CPURegs:$rb))] >;

The Constraints line will tell the register allocation system that $ra and $rd should always be the same physical register.

~Craig

On Tue, Oct 16, 2018 at 5:30 PM m m via llvm-dev <llvm-dev at lists.llvm.org> wrote:

Hi,

Absolute LLVM newbie here. I am trying to define an add instruction which takes 2 register inputs ra and rb and writes the sum into ra.

def ADDR : FR<0b000000,(outs) , (ins CPURegs:$rb, CPURegs:$ra),"ADDR $ra,_ _$rb",[(set CPURegs:$ra, (add CPURegs:$ra, CPURegs:$rb))] >; I get this error: error: In ADDR: Operand $rb does not exist in operand list! Does anybody know what that means? Thanks.


LLVM Developers mailing list llvm-dev at lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20181016/6635a9d1/attachment.html>



More information about the llvm-dev mailing list