<div dir="ltr">I just wanted to say, regardless of whether this backend ultimately gets committed, this sequence of patches is some of the best practical documentation we have for how to get started writing an LLVM backend[*]. The patch series is very nicely broken down, and the architecture is simple enough that the purpose of most constructs (e.g. in TableGen files) and boilerplate can be inferred at a glance. Bravo.<div><br><div><br></div><div>As far as whether we should accept the backend, we have XCore, MSP430, and AVR which cover a decent spectrum of embedded use cases. If the goal is to simply serve as an example of an embedded target, maybe one of the existing backends could be improved (or sacrificed? XCore and MSP430 have been hanging around for.... a long time with very little activity).</div><div><br></div><div>The idea of a "stub" backend that would simply serve as a starting point for new backends has been around for a long time. AAP might be simple enough that it could serve that role? Anton, what do you think?</div><div><br></div><div><br></div><div>[*] it is a good complement to <a href="http://jonathan2251.github.io/lbd/">http://jonathan2251.github.io/lbd/</a> (backend tutorial) and <a href="https://jonathan2251.github.io/lbt/">https://jonathan2251.github.io/lbt/</a> (its cousin covering the rest of the toolchain, like compiler-rt and LLD)<br><div><div><br></div><div>-- Sean Silva</div></div></div></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Nov 16, 2016 at 8:36 AM, Ed Jones via llvm-dev <span dir="ltr"><<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi all,<br>
<br>
I have just updated most of the patches to roll them forwards to LLVM<br>
top-of-tree, and incorporated various suggested changes. We're still<br>
looking for reviewers, if anyone is interested.<br>
<br>
Thank you,<br>
Edward Jones<br>
<div class="HOEnZb"><div class="h5"><br>
On 15/09/16 17:12, Ed Jones wrote:<br>
> I have now posted the final two patches for the backend to add<br>
> Disassembler support, ISel and CodeGen. The full list of patches is now:<br>
><br>
> <a href="https://reviews.llvm.org/D23664" rel="noreferrer" target="_blank">https://reviews.llvm.org/<wbr>D23664</a> - AAP triple and target<br>
> <a href="https://reviews.llvm.org/D23665" rel="noreferrer" target="_blank">https://reviews.llvm.org/<wbr>D23665</a> - ELF definitions<br>
> <a href="https://reviews.llvm.org/D23667" rel="noreferrer" target="_blank">https://reviews.llvm.org/<wbr>D23667</a> - Stub backend<br>
> <a href="https://reviews.llvm.org/D23770" rel="noreferrer" target="_blank">https://reviews.llvm.org/<wbr>D23770</a> - InstrInfo, RegInfo Tablegen<br>
> <a href="https://reviews.llvm.org/D23771" rel="noreferrer" target="_blank">https://reviews.llvm.org/<wbr>D23771</a> - MC layer support<br>
> <a href="https://reviews.llvm.org/D23772" rel="noreferrer" target="_blank">https://reviews.llvm.org/<wbr>D23772</a> - AsmParser<br>
> <a href="https://reviews.llvm.org/D23773" rel="noreferrer" target="_blank">https://reviews.llvm.org/<wbr>D23773</a> - InstPrinter<br>
> <a href="https://reviews.llvm.org/D24612" rel="noreferrer" target="_blank">https://reviews.llvm.org/<wbr>D24612</a> - Disassembler support<br>
> <a href="https://reviews.llvm.org/D24613" rel="noreferrer" target="_blank">https://reviews.llvm.org/<wbr>D24613</a> - Code generation<br>
><br>
> Currently only the first patch has been accepted, and we are looking for<br>
> more people to review the remaining patches.<br>
><br>
> Thank you,<br>
> Ed Jones<br>
><br>
> On 18/08/16 08:34, Ed Jones wrote:<br>
>> Hi all,<br>
>><br>
>> We wish to submit our latest AAP implementation as an experimental<br>
>> backend into LLVM. We need community feedback and reviewers for patches<br>
>> which we will submit soon.<br>
>><br>
>> AAP was designed in early 2015 and aims to advance compiler development<br>
>> for small deeply embedded Harvard architectures, which are widely used<br>
>> commercially. AAP is freely available as an open source softcore for use<br>
>> in FPGA designs.<br>
>><br>
>> AAP has wide exposure: at ORCONF16 at CERN, at FOSDEM and at BCS and<br>
>> OSHUG meetings. It is also of commercial interest, because of the<br>
>> potential benefits of providing upstream LLVM support for features found<br>
>> in small embedded processors.<br>
>><br>
>> Currently there is a complete Clang and LLVM toolchain including gdb, ld<br>
>> and binutils, as well as two simulator implementations. The toolchain is<br>
>> passing all LLVM regression tests and a decent proportion of GCC<br>
>> regression tests. We are also working on a GCC port to allow comparison<br>
>> between compilers, which should be beneficial to both projects.<br>
>><br>
>> We believe the code base is sufficiently mature that it is appropriate<br>
>> for inclusion. Currently, the full source for AAP can be found on Github:<br>
>> <a href="https://github.com/embecosm" rel="noreferrer" target="_blank">https://github.com/embecosm</a><br>
>><br>
>> Details about the ISA, and the hardware implementation can be found on<br>
>> our website:<br>
>> <a href="http://www.embecosm.com/resources/appnotes/#EAN13" rel="noreferrer" target="_blank">http://www.embecosm.com/<wbr>resources/appnotes/#EAN13</a><br>
>> <a href="http://www.embecosm.com/resources/appnotes/#EAN14" rel="noreferrer" target="_blank">http://www.embecosm.com/<wbr>resources/appnotes/#EAN14</a><br>
>><br>
>> We are also planning to talk about AAP at the LLVM Cauldron in Hebden<br>
>> Bridge. We look forward to discussing our work on AAP with those who are<br>
>> attending.<br>
>><br>
>> Thank you,<br>
>> Ed Jones<br>
>><br>
______________________________<wbr>_________________<br>
LLVM Developers mailing list<br>
<a href="mailto:llvm-dev@lists.llvm.org">llvm-dev@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/<wbr>mailman/listinfo/llvm-dev</a><br>
</div></div></blockquote></div><br></div>