I'm happy to see this problem has a simple solution though, as Tim Northover and Quentin Colombet point out the @earlyclobber constraint can be used to ensure the output register allocated is different to the input registers.