Therefore, we prepared an overview about conformance of the Xtensa backend to these rules:
1. Every target must have a code owner.
I added myself in CODE_OWNERS.txt as responsible for Xtensa backend support in the first patch.
2. There must be an active community behind the target.
We have been developing the Xtensa backend project for 3 years, the latest version is ported to LLVM release 11.0.0.
https://github.com/espressif/llvm-project . The Xtensa backend project now implements object code generation, architecture-dependent optimizations and it became possible to use clang to compile software projects for the EPSP32 / ESP8266 processor family.
3. The code must be free of contentious issues.
The Xtensa backend code deisgned with minimum changes in IR behaviour.
4. The code conforms to all of the policies laid out in this developer policy document, including license, patent, and coding standards.
We paid attention to all these requirements in code design.
5. The target should have either reasonable documentation on how it works (ISA, ABI, etc.) or a publicly available simulator/hardware (either free or cheap enough) - preferably both.
Some time ago, we already presented this project for discussion to the LLVM community in a letter
3. Initial version of the Xtensa backend
https://reviews.llvm.org/D64829 .
4. Add basic * td files with Xtensa architecture description
https://reviews.llvm.org/D64830 .
6. Add Xtensa basic assembler parser
https://reviews.llvm.org/D64832 .
7. Add Xtensa instruction printer
https://reviews.llvm.org/D64833 .
9. Add basic support of Xtensa disassembler
https://reviews.llvm.org/D64835 .
10. Add relaxations and fixups. Add rest part of Xtensa Core Instructions.
https://reviews.llvm.org/D64836 .
Currently, patches 1 and 3 have been approved, but other patches are still waiting for review. The patches 1-10 in the Phabricator are updated in accordance with the latest LLVM API changes and comments from the patches review.
But for the further development of such projects, it would be much more convenient to have the Xtensa backend implementation in the main LLVM version.
So, it would be great if the LLVM community could help resume the review process.
All comments and suggestions are welcome!
Andrei Safronov