[llvm-dev] Extending TableGen's 'foreach' to work with 'multiclass' and 'defm'
Hal Finkel via llvm-dev
llvm-dev at lists.llvm.org
Wed Aug 23 09:58:32 PDT 2017
On 08/23/2017 11:35 AM, Jakob Stoklund Olesen wrote:
>
>> On Aug 22, 2017, at 14:15, Hal Finkel via llvm-dev
>> <llvm-dev at lists.llvm.org <mailto:llvm-dev at lists.llvm.org>> wrote:
>>
>> For situations well beyond TableGen's current language capabilities,
>> we have a decision to make. We can continue extending TableGen until
>> it can meet those needs. Alternatively, we can enable the use of some
>> more-powerful input language. For example, we could allow TableGen to
>> embed Python, and then use Python in order to generate record
>> definitions.
>
> For a project that’s not LLVM, I recently had the opportunity to
> replace both TableGen and *.td files with Python scripts. I found that
> TableGen’s features were easily matched by Python’s for loops and the
> ability to define functions. I am pretty happy with the approach so
> far. AMA
Interesting, thanks.
>
> This is a lot easier to do in a green field project than in an old
> project like LLVM, of course.
If we want to go down that route, I can certainly imagine a feasible
incremental-transitioning strategy. We could allow TableGen to use an
embedded Python interpreter to generate records based on Python data
structures, and then, combine records from the existing .td files with
those generated by the Python code. We'd use the existing TableGen
plugins (which we may need to continue to use regardless, compared to
writing Python, for performance reasons), and so we could incrementally
transition existing definitions from .td files to Python as appropriate.
-Hal
>
> Example “.td” file:
> https://github.com/stoklund/cretonne/blob/master/lib/cretonne/meta/isa/riscv/encodings.py
>
> Thanks,
> /jakob
--
Hal Finkel
Lead, Compiler Technology and Programming Languages
Leadership Computing Facility
Argonne National Laboratory
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20170823/925a7c33/attachment.html>
More information about the llvm-dev
mailing list