@@ -71,7 +71,6 @@ read8_to_u64(UC const *chars) {
7171#ifdef FASTFLOAT_SSE2
7272
7373fastfloat_really_inline uint64_t simd_read8_to_u64 (__m128i const &data) {
74- FASTFLOAT_SIMD_DISABLE_WARNINGS
7574 // _mm_packus_epi16 is SSE2+, converts 8×u16 → 8×u8
7675 __m128i const packed = _mm_packus_epi16 (data, data);
7776#ifdef FASTFLOAT_64BIT
@@ -82,30 +81,23 @@ fastfloat_really_inline uint64_t simd_read8_to_u64(__m128i const &data) {
8281 _mm_storel_epi64 (reinterpret_cast <__m128i *>(&value), packed);
8382 return value;
8483#endif
85- FASTFLOAT_SIMD_RESTORE_WARNINGS
8684}
8785
8886fastfloat_really_inline uint64_t simd_read8_to_u64 (char16_t const *chars) {
89- FASTFLOAT_SIMD_DISABLE_WARNINGS
9087 return simd_read8_to_u64 (
91- _mm_loadu_si128 (reinterpret_cast <__m128i const *>(chars)));
92- FASTFLOAT_SIMD_RESTORE_WARNINGS
88+ _mm_loadu_si128 (reinterpret_cast <__m128i const *>(chars))); // TODO: V1032 https://pvs-studio.com/en/docs/warnings/v1032/ The pointer 'chars' is cast to a more strictly aligned pointer type.
9389}
9490
9591#elif defined(FASTFLOAT_NEON)
9692
9793fastfloat_really_inline uint64_t simd_read8_to_u64 (uint16x8_t const &data) {
98- FASTFLOAT_SIMD_DISABLE_WARNINGS
9994 uint8x8_t utf8_packed = vmovn_u16 (data);
10095 return vget_lane_u64 (vreinterpret_u64_u8 (utf8_packed), 0 );
101- FASTFLOAT_SIMD_RESTORE_WARNINGS
10296}
10397
10498fastfloat_really_inline uint64_t simd_read8_to_u64 (char16_t const *chars) {
105- FASTFLOAT_SIMD_DISABLE_WARNINGS
10699 return simd_read8_to_u64 (
107100 vld1q_u16 (reinterpret_cast <uint16_t const *>(chars)));
108- FASTFLOAT_SIMD_RESTORE_WARNINGS
109101}
110102
111103#endif
@@ -162,10 +154,9 @@ simd_parse_if_eight_digits_unrolled(char16_t const *chars,
162154 return false ;
163155 }
164156#ifdef FASTFLOAT_SSE2
165- FASTFLOAT_SIMD_DISABLE_WARNINGS
166157 // Load 8 UTF-16 characters (16 bytes)
167158 __m128i const data =
168- _mm_loadu_si128 (reinterpret_cast <__m128i const *>(chars));
159+ _mm_loadu_si128 (reinterpret_cast <__m128i const *>(chars)); // TODO: V1032 https://pvs-studio.com/en/docs/warnings/v1032/ The pointer 'chars' is cast to a more strictly aligned pointer type.
169160
170161 // Branchless "are all digits?" trick from Lemire:
171162 // (x - '0') <= 9 <=> (x + 32720) <= 32729
@@ -179,9 +170,7 @@ simd_parse_if_eight_digits_unrolled(char16_t const *chars,
179170 i = i * 100000000 + parse_eight_digits_unrolled (simd_read8_to_u64 (data));
180171 return true ;
181172 }
182- FASTFLOAT_SIMD_RESTORE_WARNINGS
183173#elif defined(FASTFLOAT_NEON)
184- FASTFLOAT_SIMD_DISABLE_WARNINGS
185174 uint16x8_t const data = vld1q_u16 (reinterpret_cast <uint16_t const *>(chars));
186175
187176 // (x - '0') <= 9
@@ -193,7 +182,6 @@ simd_parse_if_eight_digits_unrolled(char16_t const *chars,
193182 i = i * 100000000 + parse_eight_digits_unrolled (simd_read8_to_u64 (data));
194183 return true ;
195184 }
196- FASTFLOAT_SIMD_RESTORE_WARNINGS
197185#else
198186 (void )chars;
199187 (void )i;
0 commit comments