Fix sparc

The result register was incorrectly marked and was
sometimes optimised differently to cause %3 to be
invalidated.

Also align 32 to 8 byte boundaries, as sparc can be
very fussy. Probably not needed

Change-Id: Iaa6d7a1f097e1d026d9128cbf43562ad80b03efa