This document discusses the LLVM intermediate representation (IR) and the lowering process from LLVM IR to machine code. It covers: 1) The characteristics of LLVM IR including SSA form, infinite virtual registers, and phi nodes. 2) How the LLVM IRBuilder class is used to conveniently generate LLVM instructions. 3) The lowering flow from LLVM IR to selection DAGs to machine DAGs to machine instructions and finally machine code. 4) How assembler relaxation can optimize and correct instructions during assembly.