-
-
Notifications
You must be signed in to change notification settings - Fork 91
Expand file tree
/
Copy pathHashLib.inc
More file actions
172 lines (131 loc) · 5.33 KB
/
HashLib.inc
File metadata and controls
172 lines (131 loc) · 5.33 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
{ * ************************************************************************ * }
{ * HashLib Library * }
{ * Author - Ugochukwu Mmaduekwe * }
{ * Github Repository <https://github.com/Xor-el> * }
{ * * }
{ * Distributed under the MIT software license, see the accompanying file * }
{ * LICENSE * }
{ * or visit http://www.opensource.org/licenses/mit-license. * }
{ * * }
{ * ************************************************************************ * }
(* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& *)
{========================= Compiler Specific Settings =========================}
{$IFDEF FPC}
{$I HashLibFPC.inc}
{$ELSE}
// Delphi 2010 and Above
{$IF CompilerVersion < 21.0}
{$MESSAGE ERROR 'This Library requires Delphi 2010 or higher.'}
{$IFEND}
// Silence H2586 (legacy $IFEND) on XE4+ where $ENDIF can also close $IF.
// The $LEGACYIFEND directive itself was introduced in XE4 (25.0), so the
// guard is necessary to keep Delphi 2010 / XE / XE2 / XE3 compiling.
{$IF CompilerVersion >= 25.0}
{$LEGACYIFEND ON}
{$IFEND}
{$DEFINE DELPHI}
{$DEFINITIONINFO ON} // Enable code browsing (Ctrl+Click)
{$STRINGCHECKS OFF}
{$WARN DUPLICATE_CTOR_DTOR OFF}
{$DEFINE USE_UNROLLED_VARIANT}
{$IF CompilerVersion >= 25.0}
{$DEFINE SHIFT_OVERFLOW_BUG_FIXED}
{$IFEND}
{$IF CompilerVersion >= 28.0}
{$DEFINE HASHLIB_USE_PPL} // Use Parallel Programming Library
{$IFEND}
{============================= CPU Architecture =============================}
{$DEFINE HASHLIB_LITTLE_ENDIAN}
{$IFDEF CPUARM}
{$DEFINE HASHLIB_REQUIRES_PROPER_ALIGNMENT}
{$ENDIF}
{$IFDEF CPU386}
{$DEFINE HASHLIB_I386}
{$IFDEF MSWINDOWS}
{$DEFINE HASHLIB_I386_ASM}
{$ENDIF}
{$ENDIF}
{$IFDEF CPUX64}
{$DEFINE HASHLIB_X86_64}
{$IFDEF MSWINDOWS}
{$DEFINE HASHLIB_X86_64_ASM}
{$ENDIF}
{$ENDIF}
{$IFDEF CPUARM32}
{$DEFINE HASHLIB_ARM32}
{$ENDIF}
{$IFDEF CPUARM64}
{$DEFINE HASHLIB_AARCH64}
{$ENDIF}
{================================ Target OS =================================}
{$IFDEF MSWINDOWS}
{$DEFINE HASHLIB_MSWINDOWS}
{$ENDIF}
{$IFDEF IOS}
{$DEFINE HASHLIB_IOS}
{$ENDIF}
{$IFDEF MACOS}
{$IFNDEF IOS}
{$DEFINE HASHLIB_MACOS}
{$ENDIF}
{$ENDIF}
{$IFDEF ANDROID}
{$DEFINE HASHLIB_ANDROID}
{$ENDIF}
{$IFDEF LINUX}
{$DEFINE HASHLIB_LINUX}
{$ENDIF}
{$ENDIF}
{========================== Common Feature Detection ==========================}
{$IF DEFINED(HASHLIB_LITTLE_ENDIAN) AND NOT DEFINED(HASHLIB_REQUIRES_PROPER_ALIGNMENT)}
{$DEFINE HASHLIB_HAS_FAST_UNALIGNED_ACCESS_LE}
{$IFEND}
{========================== Common Compiler Settings ==========================}
{$HINTS OFF}
{$WARNINGS OFF}
{$RANGECHECKS OFF}
{$OVERFLOWCHECKS OFF}
{$SCOPEDENUMS ON}
{$POINTERMATH ON}
{========================== Common Defines Settings ===========================}
{$IF DEFINED(HASHLIB_I386) OR DEFINED(HASHLIB_X86_64)}
{$DEFINE HASHLIB_X86}
{$IFEND}
{$IF DEFINED(HASHLIB_ARM32) OR DEFINED(HASHLIB_AARCH64)}
{$DEFINE HASHLIB_ARM}
{$IFEND}
{============================ Common SIMD Settings ============================}
// Uncomment to force scalar dispatch (available on all platforms):
// {$DEFINE HASHLIB_FORCE_SCALAR}
{$IF DEFINED(HASHLIB_I386_ASM) OR DEFINED(HASHLIB_X86_64_ASM)}
{$DEFINE HASHLIB_X86_SIMD}
{$IFEND}
{$IF DEFINED(HASHLIB_ARM32_ASM) OR DEFINED(HASHLIB_AARCH64_ASM)}
{$DEFINE HASHLIB_ARM_SIMD}
{$IFEND}
{$IFDEF HASHLIB_X86_SIMD}
// Uncomment at most ONE to force a specific X86 SIMD dispatch level:
// {$DEFINE HASHLIB_FORCE_SSE2}
// {$DEFINE HASHLIB_FORCE_SSE3}
// {$DEFINE HASHLIB_FORCE_SSSE3}
// {$DEFINE HASHLIB_FORCE_SSE41}
// {$DEFINE HASHLIB_FORCE_SSE42}
{$IF (DEFINED(HASHLIB_FORCE_SCALAR) AND (DEFINED(HASHLIB_FORCE_SSE2) OR DEFINED(HASHLIB_FORCE_SSE3) OR DEFINED(HASHLIB_FORCE_SSSE3) OR DEFINED(HASHLIB_FORCE_SSE41) OR DEFINED(HASHLIB_FORCE_SSE42)))
OR (DEFINED(HASHLIB_FORCE_SSE2) AND (DEFINED(HASHLIB_FORCE_SSE3) OR DEFINED(HASHLIB_FORCE_SSSE3) OR DEFINED(HASHLIB_FORCE_SSE41) OR DEFINED(HASHLIB_FORCE_SSE42)))
OR (DEFINED(HASHLIB_FORCE_SSE3) AND (DEFINED(HASHLIB_FORCE_SSSE3) OR DEFINED(HASHLIB_FORCE_SSE41) OR DEFINED(HASHLIB_FORCE_SSE42)))
OR (DEFINED(HASHLIB_FORCE_SSSE3) AND (DEFINED(HASHLIB_FORCE_SSE41) OR DEFINED(HASHLIB_FORCE_SSE42)))
OR (DEFINED(HASHLIB_FORCE_SSE41) AND DEFINED(HASHLIB_FORCE_SSE42))}
{$MESSAGE ERROR 'Only one HASHLIB_FORCE_* (x86 level) define may be enabled at a time.'}
{$IFEND}
{$ENDIF}
{$IFDEF HASHLIB_ARM_SIMD}
// Uncomment at most ONE to force a specific Arm SIMD dispatch level:
// {$DEFINE HASHLIB_FORCE_NEON}
// {$DEFINE HASHLIB_FORCE_SVE}
{$IF (DEFINED(HASHLIB_FORCE_SCALAR) AND DEFINED(HASHLIB_FORCE_NEON))
OR (DEFINED(HASHLIB_FORCE_SCALAR) AND DEFINED(HASHLIB_FORCE_SVE))
OR (DEFINED(HASHLIB_FORCE_NEON) AND DEFINED(HASHLIB_FORCE_SVE))}
{$MESSAGE ERROR 'Only one HASHLIB_FORCE_* define may be enabled at a time.'}
{$IFEND}
{$ENDIF}
(* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& *)