27
27
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28
28
**********************************************************************/
29
29
#include <aarch64_multibinary.h>
30
+ #include "crc.h"
31
+ #include "crc64.h"
32
+
33
+ extern uint16_t
34
+ crc16_t10dif_pmull (uint16_t , uint8_t * , uint64_t );
35
+
36
+ extern uint16_t
37
+ crc16_t10dif_copy_pmull (uint16_t , uint8_t * , uint8_t * , uint64_t );
38
+
39
+ extern uint32_t
40
+ crc32_ieee_norm_pmull (uint32_t , uint8_t * , uint64_t );
41
+
42
+ extern unsigned int
43
+ crc32_iscsi_crc_ext (unsigned char * , int , unsigned int );
44
+ extern unsigned int
45
+ crc32_iscsi_3crc_fold (unsigned char * , int , unsigned int );
46
+ extern unsigned int
47
+ crc32_iscsi_refl_pmull (unsigned char * , int , unsigned int );
48
+
49
+ extern uint32_t
50
+ crc32_gzip_refl_crc_ext (uint32_t , uint8_t * , uint64_t );
51
+ extern uint32_t
52
+ crc32_gzip_refl_3crc_fold (uint32_t , uint8_t * , uint64_t );
53
+ extern uint32_t
54
+ crc32_gzip_refl_pmull (uint32_t , uint8_t * , uint64_t );
55
+
56
+ extern uint64_t
57
+ crc64_ecma_refl_pmull (uint64_t , const unsigned char * , uint64_t );
58
+
59
+ extern uint64_t
60
+ crc64_ecma_norm_pmull (uint64_t , const unsigned char * , uint64_t );
61
+
62
+ extern uint64_t
63
+ crc64_iso_refl_pmull (uint64_t , const unsigned char * , uint64_t );
64
+
65
+ extern uint64_t
66
+ crc64_iso_norm_pmull (uint64_t , const unsigned char * , uint64_t );
67
+
68
+ extern uint64_t
69
+ crc64_jones_refl_pmull (uint64_t , const unsigned char * , uint64_t );
70
+
71
+ extern uint64_t
72
+ crc64_jones_norm_pmull (uint64_t , const unsigned char * , uint64_t );
30
73
31
74
DEFINE_INTERFACE_DISPATCHER (crc16_t10dif )
32
75
{
33
76
#if defined(__linux__ )
34
77
unsigned long auxval = getauxval (AT_HWCAP );
35
78
if (auxval & HWCAP_PMULL )
36
- return PROVIDER_INFO ( crc16_t10dif_pmull ) ;
79
+ return crc16_t10dif_pmull ;
37
80
#elif defined(__APPLE__ )
38
81
if (sysctlEnabled (SYSCTL_PMULL_KEY ))
39
- return PROVIDER_INFO ( crc16_t10dif_pmull ) ;
82
+ return crc16_t10dif_pmull ;
40
83
#endif
41
- return PROVIDER_BASIC ( crc16_t10dif ) ;
84
+ return crc16_t10dif_base ;
42
85
}
43
86
44
87
DEFINE_INTERFACE_DISPATCHER (crc16_t10dif_copy )
45
88
{
46
89
#if defined(__linux__ )
47
90
unsigned long auxval = getauxval (AT_HWCAP );
48
91
if (auxval & HWCAP_PMULL )
49
- return PROVIDER_INFO ( crc16_t10dif_copy_pmull ) ;
92
+ return crc16_t10dif_copy_pmull ;
50
93
#elif defined(__APPLE__ )
51
94
if (sysctlEnabled (SYSCTL_PMULL_KEY ))
52
- return PROVIDER_INFO ( crc16_t10dif_copy_pmull ) ;
95
+ return crc16_t10dif_copy_pmull ;
53
96
#endif
54
- return PROVIDER_BASIC ( crc16_t10dif_copy ) ;
97
+ return crc16_t10dif_copy_base ;
55
98
}
56
99
57
100
DEFINE_INTERFACE_DISPATCHER (crc32_ieee )
58
101
{
59
102
#if defined(__linux__ )
60
103
unsigned long auxval = getauxval (AT_HWCAP );
61
104
if (auxval & HWCAP_PMULL ) {
62
- return PROVIDER_INFO ( crc32_ieee_norm_pmull ) ;
105
+ return crc32_ieee_norm_pmull ;
63
106
}
64
107
#elif defined(__APPLE__ )
65
108
if (sysctlEnabled (SYSCTL_PMULL_KEY ))
66
- return PROVIDER_INFO ( crc32_ieee_norm_pmull ) ;
109
+ return crc32_ieee_norm_pmull ;
67
110
#endif
68
- return PROVIDER_BASIC ( crc32_ieee ) ;
111
+ return crc32_ieee_base ;
69
112
}
70
113
71
114
DEFINE_INTERFACE_DISPATCHER (crc32_iscsi )
@@ -77,23 +120,23 @@ DEFINE_INTERFACE_DISPATCHER(crc32_iscsi)
77
120
case MICRO_ARCH_ID (ARM , NEOVERSE_N1 ):
78
121
case MICRO_ARCH_ID (ARM , CORTEX_A57 ):
79
122
case MICRO_ARCH_ID (ARM , CORTEX_A72 ):
80
- return PROVIDER_INFO ( crc32_iscsi_crc_ext ) ;
123
+ return crc32_iscsi_crc_ext ;
81
124
}
82
125
}
83
126
if ((HWCAP_CRC32 | HWCAP_PMULL ) == (auxval & (HWCAP_CRC32 | HWCAP_PMULL ))) {
84
- return PROVIDER_INFO ( crc32_iscsi_3crc_fold ) ;
127
+ return crc32_iscsi_3crc_fold ;
85
128
}
86
129
87
130
if (auxval & HWCAP_PMULL ) {
88
- return PROVIDER_INFO ( crc32_iscsi_refl_pmull ) ;
131
+ return crc32_iscsi_refl_pmull ;
89
132
}
90
133
#elif defined(__APPLE__ )
91
134
if (sysctlEnabled (SYSCTL_CRC32_KEY ))
92
- return PROVIDER_INFO ( crc32_iscsi_3crc_fold ) ;
135
+ return crc32_iscsi_3crc_fold ;
93
136
if (sysctlEnabled (SYSCTL_PMULL_KEY ))
94
- return PROVIDER_INFO ( crc32_iscsi_refl_pmull ) ;
137
+ return crc32_iscsi_refl_pmull ;
95
138
#endif
96
- return PROVIDER_BASIC ( crc32_iscsi ) ;
139
+ return crc32_iscsi_base ;
97
140
}
98
141
99
142
DEFINE_INTERFACE_DISPATCHER (crc32_gzip_refl )
@@ -106,22 +149,22 @@ DEFINE_INTERFACE_DISPATCHER(crc32_gzip_refl)
106
149
case MICRO_ARCH_ID (ARM , NEOVERSE_N1 ):
107
150
case MICRO_ARCH_ID (ARM , CORTEX_A57 ):
108
151
case MICRO_ARCH_ID (ARM , CORTEX_A72 ):
109
- return PROVIDER_INFO ( crc32_gzip_refl_crc_ext ) ;
152
+ return crc32_gzip_refl_crc_ext ;
110
153
}
111
154
}
112
155
if ((HWCAP_CRC32 | HWCAP_PMULL ) == (auxval & (HWCAP_CRC32 | HWCAP_PMULL ))) {
113
- return PROVIDER_INFO ( crc32_gzip_refl_3crc_fold ) ;
156
+ return crc32_gzip_refl_3crc_fold ;
114
157
}
115
158
116
159
if (auxval & HWCAP_PMULL )
117
- return PROVIDER_INFO ( crc32_gzip_refl_pmull ) ;
160
+ return crc32_gzip_refl_pmull ;
118
161
#elif defined(__APPLE__ )
119
162
if (sysctlEnabled (SYSCTL_CRC32_KEY ))
120
- return PROVIDER_INFO ( crc32_gzip_refl_3crc_fold ) ;
163
+ return crc32_gzip_refl_3crc_fold ;
121
164
if (sysctlEnabled (SYSCTL_PMULL_KEY ))
122
- return PROVIDER_INFO ( crc32_gzip_refl_pmull ) ;
165
+ return crc32_gzip_refl_pmull ;
123
166
#endif
124
- return PROVIDER_BASIC ( crc32_gzip_refl ) ;
167
+ return crc32_gzip_refl_base ;
125
168
}
126
169
127
170
DEFINE_INTERFACE_DISPATCHER (crc64_ecma_refl )
@@ -130,75 +173,75 @@ DEFINE_INTERFACE_DISPATCHER(crc64_ecma_refl)
130
173
unsigned long auxval = getauxval (AT_HWCAP );
131
174
132
175
if (auxval & HWCAP_PMULL )
133
- return PROVIDER_INFO ( crc64_ecma_refl_pmull ) ;
176
+ return crc64_ecma_refl_pmull ;
134
177
#elif defined(__APPLE__ )
135
178
if (sysctlEnabled (SYSCTL_PMULL_KEY ))
136
- return PROVIDER_INFO ( crc64_ecma_refl_pmull ) ;
179
+ return crc64_ecma_refl_pmull ;
137
180
#endif
138
- return PROVIDER_BASIC ( crc64_ecma_refl ) ;
181
+ return crc64_ecma_refl_base ;
139
182
}
140
183
141
184
DEFINE_INTERFACE_DISPATCHER (crc64_ecma_norm )
142
185
{
143
186
#if defined(__linux__ )
144
187
unsigned long auxval = getauxval (AT_HWCAP );
145
188
if (auxval & HWCAP_PMULL )
146
- return PROVIDER_INFO ( crc64_ecma_norm_pmull ) ;
189
+ return crc64_ecma_norm_pmull ;
147
190
#elif defined(__APPLE__ )
148
191
if (sysctlEnabled (SYSCTL_PMULL_KEY ))
149
- return PROVIDER_INFO ( crc64_ecma_norm_pmull ) ;
192
+ return crc64_ecma_norm_pmull ;
150
193
#endif
151
- return PROVIDER_BASIC ( crc64_ecma_norm ) ;
194
+ return crc64_ecma_norm_base ;
152
195
}
153
196
154
197
DEFINE_INTERFACE_DISPATCHER (crc64_iso_refl )
155
198
{
156
199
#if defined(__linux__ )
157
200
unsigned long auxval = getauxval (AT_HWCAP );
158
201
if (auxval & HWCAP_PMULL )
159
- return PROVIDER_INFO ( crc64_iso_refl_pmull ) ;
202
+ return crc64_iso_refl_pmull ;
160
203
#elif defined(__APPLE__ )
161
204
if (sysctlEnabled (SYSCTL_PMULL_KEY ))
162
- return PROVIDER_INFO ( crc64_iso_refl_pmull ) ;
205
+ return crc64_iso_refl_pmull ;
163
206
#endif
164
- return PROVIDER_BASIC ( crc64_iso_refl ) ;
207
+ return crc64_iso_refl_base ;
165
208
}
166
209
167
210
DEFINE_INTERFACE_DISPATCHER (crc64_iso_norm )
168
211
{
169
212
#if defined(__linux__ )
170
213
unsigned long auxval = getauxval (AT_HWCAP );
171
214
if (auxval & HWCAP_PMULL )
172
- return PROVIDER_INFO ( crc64_iso_norm_pmull ) ;
215
+ return crc64_iso_norm_pmull ;
173
216
#elif defined(__APPLE__ )
174
217
if (sysctlEnabled (SYSCTL_PMULL_KEY ))
175
- return PROVIDER_INFO ( crc64_iso_norm_pmull ) ;
218
+ return crc64_iso_norm_pmull ;
176
219
#endif
177
- return PROVIDER_BASIC ( crc64_iso_norm ) ;
220
+ return crc64_iso_norm_base ;
178
221
}
179
222
180
223
DEFINE_INTERFACE_DISPATCHER (crc64_jones_refl )
181
224
{
182
225
#if defined(__linux__ )
183
226
unsigned long auxval = getauxval (AT_HWCAP );
184
227
if (auxval & HWCAP_PMULL )
185
- return PROVIDER_INFO ( crc64_jones_refl_pmull ) ;
228
+ return crc64_jones_refl_pmull ;
186
229
#elif defined(__APPLE__ )
187
230
if (sysctlEnabled (SYSCTL_PMULL_KEY ))
188
- return PROVIDER_INFO ( crc64_jones_refl_pmull ) ;
231
+ return crc64_jones_refl_pmull ;
189
232
#endif
190
- return PROVIDER_BASIC ( crc64_jones_refl ) ;
233
+ return crc64_jones_refl_base ;
191
234
}
192
235
193
236
DEFINE_INTERFACE_DISPATCHER (crc64_jones_norm )
194
237
{
195
238
#if defined(__linux__ )
196
239
unsigned long auxval = getauxval (AT_HWCAP );
197
240
if (auxval & HWCAP_PMULL )
198
- return PROVIDER_INFO ( crc64_jones_norm_pmull ) ;
241
+ return crc64_jones_norm_pmull ;
199
242
#elif defined(__APPLE__ )
200
243
if (sysctlEnabled (SYSCTL_PMULL_KEY ))
201
- return PROVIDER_INFO ( crc64_jones_norm_pmull ) ;
244
+ return crc64_jones_norm_pmull ;
202
245
#endif
203
- return PROVIDER_BASIC ( crc64_jones_norm ) ;
246
+ return crc64_jones_norm_base ;
204
247
}
0 commit comments