[LLVMdev] Experimental C64X backend

Jeremy Morse jeremy.morse at gmail.com
Thu Aug 12 03:03:16 PDT 2010


Over the past few months I've been developing a LLVM backend for TIs
C64X family of DSPs. It can be found as a co-processor in a variety of
OMAP-based devices such as gumstix, beagleboard and even Nokia's N900
phone. A project I'm working on [0] has had need to put code on it, and
we wanted to avoid TIs proprietary compiler.

The DSP itself is a VLIW machine, with 64 32-bit registers in two banks
and can execute up to eight instructions a cycle. There are some
SIMD-like instructions, and well-known DSP features like circular
addressing and some onboard memories. A full description is on TIs
website at [1].

The work I've done is implementing simple codegen for the machine (as
well as a binutils port). I haven't gone anywhere near the parallel
functionality. As is well known, LLVM doesn't have any support or
frameworks for taking advantage of the advanced portions of VLIW.

Part of the motivation for this project was giving opportunity /
encouragement for developing such frameworks.

The code itself can be found in the git repo at [2] and is based on LLVM
2.7. (Binutils is at [3]). I'd welcome any feedback regarding the LLVM
backend - I've no prior experience with LLVM, so it's far from optimal
right now. In case anyone has a device handy, I've put some brief
documentation on getting code running at [4].

[0] http://studentrobotics.org
[1] http://focus.ti.com/lit/ug/spru395b/spru395b.pdf
[2] git://git.srobo.org/llvm-tic6x.git
[3] git://git.srobo.org/tic6x-binutils.git
[4] http://www.studentrobotics.org/trac/wiki/Beagleboard_DSP


-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 490 bytes
Desc: This is a digitally signed message part
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20100812/698bcd7b/attachment.sig>

More information about the llvm-dev mailing list