[LLVMdev] (tablegen) Machine instruction without result

Dale Johannesen dalej at apple.com
Fri Dec 5 10:04:19 PST 2008


On Dec 5, 2008, at 6:53 AMPST, Christian Sayer wrote:

> Hello,
>
> I am working on the backend for an architecture which has a compare  
> instruction that affects only an internal condition code register  
> (basically a sub without destination register).

You want to model the condition codes as a pseudo-register rather than  
using OutFlag.  See the X86 back end.

> I get the following assert in the scheduling phase:
>
>  llvm::SDNode::getValueType(unsigned int) const: Assertion `ResNo <  
> NumValues && "Illegal result number!"' failed.
>
> It turns out that ResNo and NumValues are both 1, which makes me  
> think somehow the no-result aspect has not been properly modelized.  
> Therefore, I suspect my tablegen description of this instruction to  
> be erroneous, so I paste it below with comments what I think I am  
> doing:
>
> //define an instruction profile with zero results,
> //2 inputs which are of the same type (int)
> def NOResSDTIntBinOp : SDTypeProfile<0, 2, [
>  SDTCisSameAs<0, 1>,  SDTCisInt<0>
> ]>;
>
> //define a node using that profile with a OutFlag
> //property (which is a way to modelise e.g. HW internal CC registers?)
> def MYcmpicc : SDNode<"MYISD::CMPICC", NOResSDTIntBinOp,  
> [SDNPOutFlag]>;
>
>
> //define the instruction
> def MYcmp : InstMYArch<(outs), (ins IntRegs:$src1, IntRegs:$src2),
>                          "cmp $src1 $src2;",
>                          [(MYcmpicc IntRegs:$src1, IntRegs:$src2)]>;
>
>
> Thanks for having a look on this.
> If the problem lies not in my .td files, where else do you think I  
> could dig for the cause of this error?
>
> Thank you,
> Christian
>
> --
>
> CONFIDENTIAL NOTICE: The contents of this message, including any  
> attachments, are confidential and are intended solely for the use of  
> the person or entity to whom the message was addressed. If you are  
> not the intended recipient of this message, please be advised that  
> any dissemination, distribution, or use of the contents of this  
> message is strictly prohibited. If you received this message in  
> error, please notify the sender. Please also permanently delete all  
> copies of the original message and any attached documentation. Thank  
> you.
>
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev




More information about the llvm-dev mailing list