It's hard to me to understand your question. Anyway I wish folks here to understand about LLVM a little more, and I write my understanding about LLVM.
*LLVM* is more close to a code transformer rather than runtime. Low-level means it abstracts hardware level rather than OS level.
*LLVM IR* is just a intermediate code form to transform (or compiles) one code form to another code form. It can be treated as a little higher level of assembly language.
*LLVM Compiler* exactly means *Clang* compiler. Just another C/C++/Objective-C compiler mostly compatible with GCC in most behaviors and compile options.
*LLVM GCC* means modified version of GCC to produce LLVM IR instead of native code.
As far as I know, LLVM is primarily designed to produce statically compiled native code rather than running its own byte-code. It's core idea is using hardware-neutral assemble language to compile native code. LLVM has been used as a library rather than platform to get hardware-independence and compile-time optimization.
LLVM performs optimization while compiling IR into native code. Clang also performs optimization while it compiles C family code into IR in higher level.
Actually, Apple does not use any running VM runtime on iOS. All what they are doing on iOS is just running native code statically compiled with Clang and LLVM. Clang converts C/C++ code into LLVM-IR, and LLVM compiles LLVM-IR into native code. In theory, if you have pure LLVM-IR code, LLVM can produce native code for you on any supported platform. If your C/C++ source code is compilable with Clang, it means you can produce native code on any supported platform.
For example, there's LLVM-IR -> Javascript compiler which enables running existing C libraries on web-browser. Currently, they have working version of OpenGL-ES, SQLite, Box2D, Bullet, freetype and etc on web-browser. Check it out here.
https://github.com/kripken/emscripten/wiki Of course, if you're using some platform specific feature like SSE or NEON, it's out of range supported by LLVM.
Personally, I'm betting on LLVM/Clang, because currently, it's the only practically usable facility enables static transformation of C-family code into another code. And also I expect it will become very generic code transformer.