This is great. Phi and getelementptr instructions are two difficulty spikes when learning to read and write LLVM IR. I suspect one reason is they don’t map cleanly to C or ASM.
Despite n years experience with LLVM IR, I still look up how to use GEP.
Picolisp on LLVM-IR: