I love QBE, but it does have its limitations:
- It handles the ABIs for passing and returning structures in registers, but only with superfluous copies to and from the stack.
- Can't generate debug info for data. This is probably due to lack of assembler support and/or complexity in the DWARF format.
- The line number debug info directives are currently undocumented and don't support inlined functions.
But it's smol, effective, and it doesn't make you deal with phi nodes!
Oh, it _does_ have string interpolation, my bad. Sadly, not by default -- you still have to go back and add an "f" before the string once you've started typing it and then realize that you want an interpolated string. Also, it doesn't always work -- if I define two interpolated string variables in one function, GCC chokes in a way I'm not understanding. And every interpolated string variable consumes 4K of global memory.
The GPU driver itself is largely the same, though it might need some tweaks for the specific variant in the K1.
The bigger hurdle will likely be the display controller. The TH1520 and JH7110 both use the Verisilicon DC8200, whereas the Spacemit K1 uses a custom display controller that will need its own DRM driver mainlined.
I love QBE, but it does have its limitations: - It handles the ABIs for passing and returning structures in registers, but only with superfluous copies to and from the stack. - Can't generate debug info for data. This is probably due to lack of assembler support and/or complexity in the DWARF format. - The line number debug info directives are currently undocumented and don't support inlined functions.
But it's smol, effective, and it doesn't make you deal with phi nodes!