base/dispatch-x86ish.S: Capture the `xmm0' address in a register.
authorMark Wooding <mdw@distorted.org.uk>
Tue, 29 Oct 2019 18:58:15 +0000 (18:58 +0000)
committerMark Wooding <mdw@distorted.org.uk>
Sat, 9 May 2020 19:57:33 +0000 (20:57 +0100)
This saves 16 bytes overall, and makes for slightly more readable code.

base/dispatch-x86ish.S

index c3725fc..94f44ee 100644 (file)
@@ -132,16 +132,17 @@ FUNC(dispatch_x86ish_xmmregisters_p)
 
        // Save the floating point and SIMD registers, and try to clobber
        // xmm0.
+       lea     DX, [SP + 160]
        fxsave  [SP]
-       mov     eax, [SP + 160]
-       xor     dword ptr [SP + 160], 0xaaaa5555
+       mov     eax, [DX]
+       xor     dword ptr [DX], 0xaaaa5555
        fxrstor [SP]
 
        // Save them again, and read back the low word of xmm0.  Undo the
        // clobbering and restore.
        fxsave  [SP]
-       mov     ecx, [SP + 160]
-       mov     [SP + 160], eax
+       mov     ecx, [DX]
+       mov     [DX], eax
        fxrstor [SP]
 
        // The register are live if we read different things.