[LLVMdev] TableGen For Loops

Jakob Stoklund Olesen jolesen at apple.com
Thu Oct 6 11:25:07 PDT 2011


On Oct 6, 2011, at 10:25 AM, David A. Greene wrote:

> greened at obbligato.org (David A. Greene) writes:
> 
>> So here's why I think the for loop proposal can't be a preprocessing
>> phase.  Down in the guts of this I fundamentally need to be able to do
>> this:
>> 
>> multiclass blah<list<int> Values> {
>>  for v = Values {
>>    def DEF#v : base_class<v>;
>>  }
>> }
>> 
>> Will that work?  Is the for loop evaluated after parameter binding?
> 
> I think I can actually make this work using the existing multidef
> feature code.  The ideas are fundamentally the same.  I do like the
> for syntax a lot better.
> 
> Che-Liang, would you mind if I played around with changing the multidef
> parsing to recognize your for syntax?  Your code will work in places
> that multidefs can't right now (as Jakob noted) and we want to retain
> that ability.  I would be working on integrating for loops into TableGen
> proper, not as a preprocessor.

+1 for not adding a preprocessor.

There seems to be two use cases for this:

1. Generating a sequence of similar top-level defs, for example registers named R0--R15.

2. Injecting patterns into multiclasses.

It seems to me that the same mechanism could support both.

/jakob




More information about the llvm-dev mailing list