[llvm-commits] [llvm] r141230 - /llvm/trunk/include/llvm/TableGen/Record.h

David A. Greene greened at obbligato.org
Fri Oct 7 07:26:25 PDT 2011


Evan Cheng <evan.cheng at apple.com> writes:

> Hi David,
>
> If I understand correctly, the reason you are pushing for all these
> extra abstraction features in TableGen language is to one day refactor
> SSE / AVX. The intention is to support future Intel ISA extensions
> which may extend AVX to vectors of arbitrary width. Am I understanding
> the purpose of these patches correctly?

Essentially, yes.  Really, what I want to do is write instruction
patterns that are generic with respect to type, register class, etc.
This unifies the specification and makes it orthogonal.

> Unfortunately I strongly disagree with the direction you are taking with this.

Ok.

> If we are to implement support for future Intel vector extension, we
> should add these instructions separately. I understand you are
> concerned about code duplication and would prefer to leverage what's
> already written. However, our experience has shown the extra levels of
> abstraction is always high level that makes TableGen debugging harder
> than it should. Adding more layers, as you are proposing, would just
> make it unnecessary difficult. I believe it will be counterproductive.

So you would rather do an entire cut and paste of the existing AVX/SSE
spec to support MIC, for example?  To me, that's a maintenance
nightmare.  We already have some patterns that are implemented for some
vector element types but not others.  This is not good, IMHO.

I don't get how abstraction makes debugging more difficult.  It's really
simple to just run TableGen on X86.td and look at the output.  If the
abstraction is designed well, it should enhance clarity.

> I have discussed this carefully with Chris and have decided this is
> not the direction where we want to go with TableGen. We would really
> appreciate that you would back out these changes.

Which changes are you referring to?

Could we please have that discussion in the open?  How can something be
completely dismissed without seeing it first?  At least one other
backend maintainer has need of at least some of these changes.

                                 -Dave



More information about the llvm-commits mailing list