<div dir="ltr">I want to use LLVM as the main component in my compilation process.  In doing so, I know I need to convert a high-level language to another language (python or a custom syntax.)<div><br></div><div>The architecture I'm targeting is non-traditional hardware: microfluidic devices.  Microfluidic devices are a specific class of reconfigurable computing; which don't necessarily adhere to a traditional Von-Neuamann architecture.  What I'm aiming to do is to take my high level language and convert it a language that is accepted by one of the synthesizers we have (in python or a custom syntax) which will then simulate/execute the given program.</div><div><br></div><div>The workflow I have is as such:</div><div>High level language -> parsed and converted to C++ -> LLVM -> machine code (python or custom syntax.)</div><div><br></div><div>I'm not 100% sure if I should write a full backend for python and our custom syntax.  The documentation here: <a href="https://llvm.org/docs/WritingAnLLVMBackend.html">https://llvm.org/docs/WritingAnLLVMBackend.html</a> discusses various hardware targets but nothing on software targets.</div><div><br></div><div>My questions are as such:</div><div>- Is my case the correct use of LLVM?</div><div>- Should I be writing an LLVM backend to transpile? (if not would a pass suffice?)</div><div>- Is there any documentation that I have missed trying to target a software architecture?</div><div><br></div><div>Thanks.</div></div>