LLVM has a better myriad sequence for this, where they don't allocate a temporary register, but for now this will do.