With regard to LLVM, the concept of emitting code for a "virtual machine" that is then translated to code for any of several target machines is ancient.
One example is the Pascal-P environment from the 1970s. The compiler emitted "P-code" that was then translated to machine language. Oddly enough, P-code was so close to the machine language of the PDP-11 that the translator was trivial!