Domain Specific Languages with LLVM