The LLVM is an assembly-like language. It provides type safety, low-level operations and flexibility. The LLVM bytecode is designed with three goals. As an in-memory compiler IR, as an on-disk bytecode representation and as a readable assembly language. This makes it both easy for the human and the compiler to work with the language.