Tilera LLVM backend

Hi,

I would like to inform the community that I'm releasing the backend for
tile64 I developed in the past several months. It can be downloaded from

http://pnyf.inf.elte.hu/juhda/projects/tilera/

The version for LLVM 3.1 is a minimalist functioning implementation. Now
I am working on utilizing the VLIW packetizer of LLVM, and other
improvements are planned for the future.

I would be pleased to answer your comments and questions about the
backend both via this mailing list or in private message. Bug reports
are also very welcomed. :slight_smile:

Best regards,
David

Hi,

I would like to inform the community that I'm releasing the backend for
tile64 I developed in the past several months. It can be downloaded from

http://pnyf.inf.elte.hu/juhda/projects/tilera/

The version for LLVM 3.1 is a minimalist functioning implementation. Now
I am working on utilizing the VLIW packetizer of LLVM, and other
improvements are planned for the future.

I would be pleased to answer your comments and questions about the
backend both via this mailing list or in private message. Bug reports
are also very welcomed. :slight_smile:

Hi David,

I took a quick look at this, and it looks pretty good. I'm also working
on a VLIW target called R600[1] for AMD GPUs, so I'm interested in the
VLIW packetizer as well.

A few questions / comments:

1. You should look into upgrading your AsmPrinter to use the MC layer.
It has a lot of really nice features, and if you are planning to do a
code emitter you will want to use it, since the old style code emitter
may be deprecated at some point.

2. Are you planning to add a code emitter?

3. Is this something you'd eventually like to get upstream into the main
LLVM tree?

[1] http://cgit.freedesktop.org/~tstellar/llvm/tree/lib/Target/AMDGPU?h=r600-review-v8

-Tom

Hi Tom,

Hi,

I would like to inform the community that I'm releasing the
backend for tile64 I developed in the past several months. It can
be downloaded from

http://pnyf.inf.elte.hu/juhda/projects/tilera/

The version for LLVM 3.1 is a minimalist functioning
implementation. Now I am working on utilizing the VLIW packetizer
of LLVM, and other improvements are planned for the future.

I would be pleased to answer your comments and questions about the
backend both via this mailing list or in private message. Bug
reports are also very welcomed. :slight_smile:

Hi David,

I took a quick look at this, and it looks pretty good. I'm also
working on a VLIW target called R600[1] for AMD GPUs, so I'm
interested in the VLIW packetizer as well.

I looked into R600 ISA and bundling microcodes into instructions or
instructions into clauses seem to me more complicated than something the
current DFAPacketizer could handle on its own. But you should check that
out, I may be wrong at this point. However, I had to patch class
VLIWPacketizerList to perform extra checking in order to ensure making
valid bundles. Unfortunately, the VLIW scheduler uses DFAPacketizer, so
those checking should be integrated into DFAPacketizer rather than
VLIWPacketizerList. I will think over the problem when I have some time
and might come up with a solution. Now I just wondered if we could work
together on this in case you should run into the current limits of
DFAPacketizer.

A few questions / comments:

1. You should look into upgrading your AsmPrinter to use the MC
layer. It has a lot of really nice features, and if you are planning
to do a code emitter you will want to use it, since the old style
code emitter may be deprecated at some point.

Thanks for the information, I will look into it.

2. Are you planning to add a code emitter?

It's only a matter of time :slight_smile: But frankly, instruction formats of
Tilera are a little scary...

3. Is this something you'd eventually like to get upstream into the
main LLVM tree?

It started as my master's thesis, but now it seems to be grown beyond
that, so the development of the backend hopefully will continue. If
there is interest from the community, it would be great to get upstream! :slight_smile:

Best,
David