x86: make the arithmetic codegen less wasteful of registers