LLVM converts your input language into the intermediate representation (LLVM IR) with a frontend. Then, a backend takes IR and spits out code for an ISA.<p>IR is ISA agnostic. Compiling the same code to x86 and ARM will have the same IR, it&#x27;s only the backend step that&#x27;s different. Thus, of course you can take IR &quot;meant for ARM&quot; and compile it to &quot;x86&quot; and get full optimisation. The IR isn&#x27;t meant for ARM anyway, IR is just IR.