Investigating this lead me to an interesting polish company called semihalf who were recently acquired by google.
https://www.youtube.com/watch?v=qLh1FOcGysY
Apparently they added some Xtensa support to clang. I guess that means xtensa is very important in the android context.
Here's the ISA summary for Xtensa LX as used by the ESP32: https://www.cadence.com/content/dam/cadence-www/global/en_US...
The S2 & S3 are more powerful and capable than the currently available Espressif RISC-V microcontrollers. Perhaps it's best to think of them marking the summit or climax of Espressif's Xtensa parts. But the future clearly lies with RISC-V.
The Xtensa support in LLVM/Clang appears to have resulted (at least in part) from Espressif's active support for Rust on their microcontrollers. The recent Rust 1.81 release merged support for the ESP32, ESP32-S2 and ESP32-S3 into upstream rustc. It's great to see a microcontroller vendor directly support the use of Rust on its parts, and not just its "new" parts.
Edit: To be clear, the ESP-IDF framework is a huge C project, so Espressif working on LLVM support for Xtensa is clearly _not just_ for Rust. And "easy mode" Rust-on-Espressif (std support!) relies on the ESP-IDF so merging their patches into LLVM is beneficial all-round.
When instantiating an xtensa core you can choose how many registers you want, whether you want to have register windows or not, and many other options.
If you want a compiler that targets a given instance of that architecture you have to tailor it to those parameters.