Skip to content

Commit 3ea0dbd

Browse files
committed
SIMD Common Updates
1 parent 8fb627b commit 3ea0dbd

7 files changed

Lines changed: 16 additions & 12 deletions

File tree

HashLib/src/Include/HashLib.inc

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,10 @@
134134

135135
{============================ Common SIMD Settings ============================}
136136

137+
{$IF DEFINED(HASHLIB_X86_64) AND NOT DEFINED(HASHLIB_MSWINDOWS)}
138+
{$DEFINE HASHLIB_SYSV_X64_ABI}
139+
{$IFEND}
140+
137141
// Uncomment to force scalar dispatch (available on all platforms):
138142
// {$DEFINE HASHLIB_FORCE_SCALAR}
139143

HashLib/src/Include/Simd/Common/SimdProc1Begin_x86_64.inc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
// Shared SIMD procedure prologue for 1-parameter assembly functions.
22
// After inclusion: rcx = param1 (MS x64 ABI).
3-
// On FPC non-Windows (Unix ABI), remaps rdi -> rcx.
3+
// When HASHLIB_SYSV_X64_ABI is defined, remaps rdi -> rcx.
44
// Usage:
55
// procedure MyProc(P1: Pointer);
66
// {$I SimdProc1Begin_x86_64.inc}
@@ -9,7 +9,7 @@
99
{$IFDEF FPC}
1010
assembler; nostackframe;
1111
asm
12-
{$IFNDEF MSWINDOWS}
12+
{$IFDEF HASHLIB_SYSV_X64_ABI}
1313
mov rcx, rdi
1414
{$ENDIF}
1515
{$ELSE}

HashLib/src/Include/Simd/Common/SimdProc2Begin_x86_64.inc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
// Shared SIMD procedure prologue for 2-parameter assembly functions.
22
// After inclusion: rcx = param1, rdx = param2 (MS x64 ABI).
3-
// On FPC non-Windows (Unix ABI), remaps rdi,rsi -> rcx,rdx.
3+
// When HASHLIB_SYSV_X64_ABI is defined, remaps rdi,rsi -> rcx,rdx.
44
// Usage:
55
// procedure MyProc(P1, P2: Pointer);
66
// {$I SimdProc2Begin_x86_64.inc}
@@ -9,7 +9,7 @@
99
{$IFDEF FPC}
1010
assembler; nostackframe;
1111
asm
12-
{$IFNDEF MSWINDOWS}
12+
{$IFDEF HASHLIB_SYSV_X64_ABI}
1313
mov rdx, rsi
1414
mov rcx, rdi
1515
{$ENDIF}

HashLib/src/Include/Simd/Common/SimdProc3Begin_x86_64.inc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
// Shared SIMD procedure prologue for 3-parameter assembly functions.
22
// After inclusion: rcx = param1, rdx = param2, r8 = param3 (MS x64 ABI).
3-
// On FPC non-Windows (Unix ABI), remaps rdi,rsi,rdx -> rcx,rdx,r8.
3+
// When HASHLIB_SYSV_X64_ABI is defined, remaps rdi,rsi,rdx -> rcx,rdx,r8.
44
// Move order avoids register clobbering: save rdx before overwriting.
55
// Usage:
66
// procedure MyProc(P1, P2, P3: Pointer);
@@ -10,7 +10,7 @@
1010
{$IFDEF FPC}
1111
assembler; nostackframe;
1212
asm
13-
{$IFNDEF MSWINDOWS}
13+
{$IFDEF HASHLIB_SYSV_X64_ABI}
1414
mov r8, rdx
1515
mov rdx, rsi
1616
mov rcx, rdi

HashLib/src/Include/Simd/Common/SimdProc4Begin_x86_64.inc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
// Shared SIMD procedure prologue for 4-parameter assembly functions.
22
// After inclusion: rcx = param1, rdx = param2, r8 = param3, r9 = param4
33
// (MS x64 ABI).
4-
// On FPC non-Windows (Unix ABI), remaps rdi,rsi,rdx,rcx -> rcx,rdx,r8,r9.
4+
// When HASHLIB_SYSV_X64_ABI is defined, remaps rdi,rsi,rdx,rcx -> rcx,rdx,r8,r9.
55
// Move order avoids register clobbering: save rcx and rdx first.
66
// Usage:
77
// procedure MyProc(P1, P2, P3: Pointer; P4: Int32);
@@ -11,7 +11,7 @@
1111
{$IFDEF FPC}
1212
assembler; nostackframe;
1313
asm
14-
{$IFNDEF MSWINDOWS}
14+
{$IFDEF HASHLIB_SYSV_X64_ABI}
1515
mov r9, rcx
1616
mov r8, rdx
1717
mov rdx, rsi

HashLib/src/Include/Simd/Common/SimdProc5Begin_x86_64.inc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
// Shared SIMD procedure prologue for 5-parameter assembly functions.
22
// After inclusion: rcx = param1, rdx = param2, r8 = param3, r9 = param4, r10 = param5
33
// (MS x64 ABI).
4-
// On FPC non-Windows (Unix ABI), remaps rdi,rsi,rdx,rcx,r8 -> rcx,rdx,r8,r9,r10.
4+
// When HASHLIB_SYSV_X64_ABI is defined, remaps rdi,rsi,rdx,rcx,r8 -> rcx,rdx,r8,r9,r10.
55
// Move order avoids register clobbering.
66
// On MS x64, param5 is loaded from [rsp+40] (after shadow space).
77
// Usage:
@@ -12,7 +12,7 @@
1212
{$IFDEF FPC}
1313
assembler; nostackframe;
1414
asm
15-
{$IFNDEF MSWINDOWS}
15+
{$IFDEF HASHLIB_SYSV_X64_ABI}
1616
mov r10, r8
1717
mov r9, rcx
1818
mov r8, rdx

HashLib/src/Include/Simd/Common/SimdProc6Begin_x86_64.inc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
// Shared SIMD procedure prologue for 6-parameter assembly functions.
22
// After inclusion: rcx = param1, rdx = param2, r8 = param3, r9 = param4,
33
// r10 = param5, r11 = param6 (MS x64 ABI layout).
4-
// On FPC non-Windows (Unix ABI), remaps rdi,rsi,rdx,rcx,r8,r9 ->
4+
// When HASHLIB_SYSV_X64_ABI is defined, remaps rdi,rsi,rdx,rcx,r8,r9 ->
55
// rcx,rdx,r8,r9,r10,r11. Move order avoids register clobbering.
66
// On MS x64, param5/6 are loaded from [rsp+40]/[rsp+48] (after shadow space).
77
// Usage:
@@ -12,7 +12,7 @@
1212
{$IFDEF FPC}
1313
assembler; nostackframe;
1414
asm
15-
{$IFNDEF MSWINDOWS}
15+
{$IFDEF HASHLIB_SYSV_X64_ABI}
1616
mov r11, r9
1717
mov r10, r8
1818
mov r9, rcx

0 commit comments

Comments
 (0)