rand/rand-x86ish.S: Hoist argument register allocation outside.
authorMark Wooding <mdw@distorted.org.uk>
Mon, 6 Apr 2020 00:06:27 +0000 (00:06 +0000)
committerMark Wooding <mdw@distorted.org.uk>
Sat, 9 May 2020 19:57:33 +0000 (20:57 +0100)
This will soon be shared with another entry point for `rdseed'.

rand/rand-x86ish.S

index 3617625..70907fe 100644 (file)
 ///--------------------------------------------------------------------------
 /// Quick random generation.
 
+// Common register allocation.
+#if CPUFAM_X86
+#  define COUNT ecx
+#endif
+#if CPUFAM_AMD64 && ABI_SYSV
+#  define COUNT ecx
+#endif
+#if CPUFAM_AMD64 && ABI_WIN
+#  define COUNT r8d
+#endif
+
 FUNC(rand_quick_x86ish_rdrand)
        // Enter with a pointer to the random context in the first argument.
        // Return zero on success, or -1 on error.
@@ -44,15 +55,12 @@ FUNC(rand_quick_x86ish_rdrand)
 #if CPUFAM_X86
        mov     edx, [SP + 4]
        stalloc 28
-#  define COUNT ecx
 #endif
 #if CPUFAM_AMD64 && ABI_SYSV
        stalloc 8
-#  define COUNT ecx
 #endif
 #if CPUFAM_AMD64 && ABI_WIN
        stalloc 40
-#  define COUNT r8d
 #endif
   endprologue
 
@@ -104,9 +112,8 @@ FUNC(rand_quick_x86ish_rdrand)
        stfree  40
 #endif
        ret
+ENDFUNC
 
 #undef COUNT
 
-ENDFUNC
-
 ///----- That's all, folks --------------------------------------------------