<html><head><style>body{font-family:Helvetica,Arial;font-size:13px}</style></head><body><div style="font-family:Helvetica,Arial;font-size:13px">Hi LLVM Folks</div><div style="font-family:Helvetica,Arial;font-size:13px"><br></div><div style="font-family:Helvetica,Arial;font-size:13px">This is a rather long message with many questions, so sorry for that. </div><div style="font-family:Helvetica,Arial;font-size:13px"><br></div><div style="font-family:Helvetica,Arial;font-size:13px">Over the last year-ish I created a new experimental target for the Propeller 2 microcontroller. It lives in my own fork of llvm-project here: <a href="https://github.com/ne75/llvm-project">https://github.com/ne75/llvm-project</a></div><div style="font-family:Helvetica,Arial;font-size:13px"><br></div><div style="font-family:Helvetica,Arial;font-size:13px">(Someone else had also reached out about creating their own target for P2 after they saw my work and the discussion was here, but I think their effort died as I haven’t heard any updates from them. That discussion was here <a href="https://lists.llvm.org/pipermail/llvm-dev/2021-February/148739.html">https://lists.llvm.org/pipermail/llvm-dev/2021-February/148739.html</a>) </div><div style="font-family:Helvetica,Arial;font-size:13px"><br></div><div style="font-family:Helvetica,Arial;font-size:13px">It’s not 100% complete (not all instructions are implemented yet, as there’s like 400 of them, mostly for controlling various hardware peripherals), but it’s relatively functional and can do most things that one commonly would want to do, and I’ve got a supporting C and runtime library. It’s about time it makes it’s way into the mainline LLVM repo I think, as there seem to be often changes to backend structure, prototypes, etc that whenever I pull in main into my fork, everything breaks and I spend two days refactoring my code to fix it, so it would be nice to have that changed by whoever as actually making the changes. </div><div style="font-family:Helvetica,Arial;font-size:13px"><br></div><div style="font-family:Helvetica,Arial;font-size:13px">1. Is submitting an “in development” backend that’s in this state and leaving it experimental acceptable? If not, what are the minimum requirements? </div><div style="font-family:Helvetica,Arial;font-size:13px"><br></div><div style="font-family:Helvetica,Arial;font-size:13px">2. My code doesn’t currently conform to LLVM’s style guide. Is this acceptable for an experimental/in development target? </div><div style="font-family:Helvetica,Arial;font-size:13px"><br></div><div style="font-family:Helvetica,Arial;font-size:13px">I struggle with LLVM’s style (just different than how I write code) so I want to avoid going through and fixing all the little things until actually necessary</div><div style="font-family:Helvetica,Arial;font-size:13px"><br></div><div style="font-family:Helvetica,Arial;font-size:13px">3. Currently, I am the only maintainer of this fork, so I would be the code owner. Does this mean I’d be on the hook for reviewing all the changes that might come down the pipeline that aren’t explicitly affecting functionality (say, some change in the Target class definition) </div><div style="font-family:Helvetica,Arial;font-size:13px"><br></div><div style="font-family:Helvetica,Arial;font-size:13px">I hope to get more folks from the Propeller community working on this in the future, but it’s a rather small project for now.</div><div style="font-family:Helvetica,Arial;font-size:13px"><br></div><div style="font-family:Helvetica,Arial;font-size:13px">On the testing side, I have a series of simple tests that run on the actual hardware (no simulator is available). They are not exhaustive of compiler features, microcontroller features, or code coverage of the target code in LLVM. They are just the bare minimum I run to make sure I didn’t break something massive and I can still compile and run simple applications. </div><div style="font-family:Helvetica,Arial;font-size:13px"><br></div><div style="font-family:Helvetica,Arial;font-size:13px">4. What is the minimum set of tests for the experimental target that must exist within the LLVM test suite. Is it acceptable to have none (since I’m the only developer and can run tests on my own)?</div><div style="font-family:Helvetica,Arial;font-size:13px"><br></div><div style="font-family:Helvetica,Arial;font-size:13px">Now to actually submit this change:</div><div><br></div><div class="gmail_signature"></div><div class="gmail_signature">5. Is submitting this fork to be reviewed and merged as simple as creating a patch and submitting it through Phabricator? (As described here: <a href="https://llvm.org/docs/DeveloperPolicy.html#making-and-submitting-a-patch">https://llvm.org/docs/DeveloperPolicy.html#making-and-submitting-a-patch</a> and here: <a href="https://llvm.org/docs/Phabricator.html">https://llvm.org/docs/Phabricator.html</a>) Or is there a different process since this is such a large change? </div><div class="gmail_signature"><br></div><div class="gmail_signature">Finally,</div><div class="gmail_signature"><br></div><div class="gmail_signature">6. Is there anything else I should know about submitting a new target? The dev policy docs (<a href="https://llvm.org/docs/DeveloperPolicy.html#adding-a-new-target">https://llvm.org/docs/DeveloperPolicy.html#adding-a-new-target</a>) don’t have a ton of info on it. </div><div class="gmail_signature"><br></div><div class="gmail_signature">Thanks,</div><div class="gmail_signature">Nikita</div><div class="gmail_signature"><br></div><div class="gmail_signature"><br></div><div class="gmail_signature"><br></div></body></html>