@@ -76,7 +76,7 @@ static const CRC32TableT& GetCRC32Table(Polynomial Poly)
76
76
}
77
77
}
78
78
79
- constexpr std::uint32_t BitReverse32 (std::uint32_t Value)
79
+ consteval std::uint32_t BitReverse32 (std::uint32_t Value)
80
80
{
81
81
std::uint32_t Reversed = 0 ;
82
82
for ( std::uint32_t BitIndex = 0u ; BitIndex < 32u ; ++BitIndex )
@@ -88,7 +88,7 @@ constexpr std::uint32_t BitReverse32(std::uint32_t Value)
88
88
}
89
89
90
90
// BitReverse(x^(shift) mod P(x) << 32) << 1
91
- constexpr std::uint64_t
91
+ consteval std::uint64_t
92
92
KnConstant (std::uint32_t ByteShift, std::uint32_t Polynomial)
93
93
{
94
94
std::uint32_t Remainder = 1u << 24 ;
@@ -112,7 +112,7 @@ constexpr std::uint64_t
112
112
}
113
113
114
114
// BitReverse(x^64 / P(x)) << 1
115
- constexpr std::uint64_t MuConstant (uint32_t Polynomial)
115
+ consteval std::uint64_t MuConstant (uint32_t Polynomial)
116
116
{
117
117
std::uint32_t Remainder = 1u << 24 ;
118
118
std::uint32_t Quotient = 0u ;
@@ -173,7 +173,7 @@ std::uint32_t
173
173
// Todo: VPCLMULQDQ(AVX2, AVX512)
174
174
for ( ; Data.size () >= 64 ; Data = Data.subspan (64 ) )
175
175
{
176
- static const __m128i K1K2 = _mm_set_epi64x (
176
+ const __m128i K1K2 = _mm_set_epi64x (
177
177
KnConstant (64 - 4 , Polynomial), KnConstant (64 + 4 , Polynomial));
178
178
179
179
const __m128i MulLo0 = _mm_clmulepi64_si128 (CRCVec0, K1K2, 0b0000'0000 );
@@ -202,7 +202,7 @@ std::uint32_t
202
202
}
203
203
204
204
// Reduce 512 to 128
205
- static const __m128i K3K4 = _mm_set_epi64x (
205
+ const __m128i K3K4 = _mm_set_epi64x (
206
206
KnConstant (16 - 4 , Polynomial), KnConstant (16 + 4 , Polynomial));
207
207
208
208
// Reduce Vec1 into Vec0
@@ -239,7 +239,7 @@ std::uint32_t
239
239
}
240
240
241
241
// Reduce 128 to 64
242
- static const __m128i Lo32Mask64 = _mm_set1_epi64x (0xFFFFFFFF );
242
+ const __m128i Lo32Mask64 = _mm_set1_epi64x (0xFFFFFFFF );
243
243
{
244
244
const __m128i MulHiLo
245
245
= _mm_clmulepi64_si128 (CRCVec0, K3K4, 0b0001'0000 );
@@ -248,8 +248,7 @@ std::uint32_t
248
248
249
249
CRCVec0 = _mm_xor_si128 (Upper64, MulHiLo);
250
250
251
- static const __m128i K5K0
252
- = _mm_cvtsi64_si128 (KnConstant (8 , Polynomial));
251
+ const __m128i K5K0 = _mm_cvtsi64_si128 (KnConstant (8 , Polynomial));
253
252
254
253
const __m128i Upper96 = _mm_srli_si128 (CRCVec0, 4 );
255
254
@@ -262,7 +261,7 @@ std::uint32_t
262
261
263
262
// Reduce 64 to 32
264
263
{
265
- static const __m128i Poly = _mm_set_epi64x (
264
+ const __m128i Poly = _mm_set_epi64x (
266
265
MuConstant (Polynomial), KnConstant (4 , Polynomial) | 1 );
267
266
268
267
__m128i Trunc32 = _mm_and_si128 (CRCVec0, Lo32Mask64);
0 commit comments