Quick heads up: On LLVM trunk, the add, sub, and mul instructions no
longer accept floating-point operands. The fadd, fsub, and fmul instructions
should be used instead.
This change actually happened back in LLVM 2.6; since then, LLVM has just
been silently converting add into fadd and so on, and the change today is
that it no longer does this silent conversion.