[LLVMdev] bug in tablegen?
Sean Silva
silvas at purdue.edu
Tue Jul 3 17:35:46 PDT 2012
class FRRR16_ins<bits<2> _f, string asmstr, list<dag> pattern,
InstrItinClass itin> : // ...
This class has template args. You don't specify them in the first
template arg of
class ArithLogicR16<FRRR16_ins I, SDNode OpNode, bit isComm = 0>: // ...
--Sean Silva
On Tue, Jul 3, 2012 at 2:29 PM, reed kotler <rkotler at mips.com> wrote:
> Not sure what you mean.
>
> I.OutOperandList == (outs CPU16Regs:$rx)
>
> I.InOperandList == (ins CPU16Regs:$ry, CPU16Regs:$rz)
>
>
>
>
> On 07/02/2012 09:26 PM, Sean Silva wrote:
>>
>> I think you're missing the template args for `FRRR16_ins` in the first
>> argument. The switch in TGParser::ParseType() doesn't cover the case
>> of types with template args though... which makes me wonder what is
>> going on inside of TableGen to make `I.f` and `I.AsmString` valid...
>>
>> --Sean Silva
>>
>> On Mon, Jul 2, 2012 at 8:07 PM, reed kotler<rkotler at mips.com> wrote:
>>>
>>> I've filed the following bug. Maybe I'm doing something stupid here or
>>> maybe someone knows of a workaround.
>>>
>>> The following fragment from mips16 (not yet checked into main source).
>>>
>>> The problem is that I should be able to pass parameters:
>>> I.OutOperandList, I.InOperandList
>>>
>>> But instead, I must back substitute what I know the values of these are.
>>> (outs CPU16Regs:$rx), (ins CPU16Regs:$ry, CPU16Regs:$rz)
>>>
>>>
>>> class FRRR16_ins<bits<2> _f, string asmstr, list<dag> pattern,
>>> InstrItinClass itin> :
>>> FRRR16<_f, (outs CPU16Regs:$rz), (ins CPU16Regs:$rx,
>>> CPU16Regs:$ry),
>>> !strconcat(asmstr, "\t$rz, $rx, $ry"),
>>> pattern, itin>;
>>>
>>> class ArithLogicR16<FRRR16_ins I, SDNode OpNode, bit isComm = 0>:
>>> FRRR16<I.f, (outs CPU16Regs:$rx), (ins CPU16Regs:$ry, CPU16Regs:$rz),
>>> // tablegen bug: should be I.OutOperandList,
>>> I.InOperandList,
>>> I.AsmString,
>>> [(set CPU16Regs:$rx, (OpNode CPU16Regs:$ry, CPU16Regs:$rz))],
>>> I.Itinerary> {
>>> let isCommutable = isComm;
>>> let isReMaterializable = 1;
>>> }
>>> _______________________________________________
>>> 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