From 57592e04c92b796c5a765c467e068d8bc5b51c5e Mon Sep 17 00:00:00 2001 From: wuggy Date: Sat, 19 Sep 2026 03:27:30 -0700 Subject: [PATCH] Revert "JS optimisations pt.3" This reverts commit 5f2a3dd02898cd7a242801402370431538cfa2af. --- js/src/jsstr.h | 34 ++++++++++------------------------ 1 file changed, 10 insertions(+), 24 deletions(-) diff --git a/js/src/jsstr.h b/js/src/jsstr.h index b86d8bde20..7162559e94 100644 --- a/js/src/jsstr.h +++ b/js/src/jsstr.h @@ -487,15 +487,10 @@ CopyAndInflateChars(char16_t* dst, const char* src, size_t srclen) size_t i = 0; const __m128i zero = _mm_setzero_si128(); for (; i + 32 <= srclen; i += 32) { - uint64_t value0, value1, value2, value3; - js_memcpy(&value0, src + i, sizeof(value0)); - js_memcpy(&value1, src + i + 8, sizeof(value1)); - js_memcpy(&value2, src + i + 16, sizeof(value2)); - js_memcpy(&value3, src + i + 24, sizeof(value3)); - const __m128i bytes0 = _mm_cvtsi64_si128(static_cast(value0)); - const __m128i bytes1 = _mm_cvtsi64_si128(static_cast(value1)); - const __m128i bytes2 = _mm_cvtsi64_si128(static_cast(value2)); - const __m128i bytes3 = _mm_cvtsi64_si128(static_cast(value3)); + const __m128i bytes0 = _mm_loadl_epi64(reinterpret_cast(src + i)); + const __m128i bytes1 = _mm_loadl_epi64(reinterpret_cast(src + i + 8)); + const __m128i bytes2 = _mm_loadl_epi64(reinterpret_cast(src + i + 16)); + const __m128i bytes3 = _mm_loadl_epi64(reinterpret_cast(src + i + 24)); _mm_storeu_si128(reinterpret_cast<__m128i*>(dst + i), _mm_unpacklo_epi8(bytes0, zero)); _mm_storeu_si128(reinterpret_cast<__m128i*>(dst + i + 8), @@ -506,9 +501,7 @@ CopyAndInflateChars(char16_t* dst, const char* src, size_t srclen) _mm_unpacklo_epi8(bytes3, zero)); } for (; i + 8 <= srclen; i += 8) { - uint64_t value; - js_memcpy(&value, src + i, sizeof(value)); - const __m128i bytes8 = _mm_cvtsi64_si128(static_cast(value)); + const __m128i bytes8 = _mm_loadl_epi64(reinterpret_cast(src + i)); _mm_storeu_si128(reinterpret_cast<__m128i*>(dst + i), _mm_unpacklo_epi8(bytes8, zero)); } @@ -527,15 +520,10 @@ CopyAndInflateChars(char16_t* dst, const JS::Latin1Char* src, size_t srclen) size_t i = 0; const __m128i zero = _mm_setzero_si128(); for (; i + 32 <= srclen; i += 32) { - uint64_t value0, value1, value2, value3; - js_memcpy(&value0, src + i, sizeof(value0)); - js_memcpy(&value1, src + i + 8, sizeof(value1)); - js_memcpy(&value2, src + i + 16, sizeof(value2)); - js_memcpy(&value3, src + i + 24, sizeof(value3)); - const __m128i bytes0 = _mm_cvtsi64_si128(static_cast(value0)); - const __m128i bytes1 = _mm_cvtsi64_si128(static_cast(value1)); - const __m128i bytes2 = _mm_cvtsi64_si128(static_cast(value2)); - const __m128i bytes3 = _mm_cvtsi64_si128(static_cast(value3)); + const __m128i bytes0 = _mm_loadl_epi64(reinterpret_cast(src + i)); + const __m128i bytes1 = _mm_loadl_epi64(reinterpret_cast(src + i + 8)); + const __m128i bytes2 = _mm_loadl_epi64(reinterpret_cast(src + i + 16)); + const __m128i bytes3 = _mm_loadl_epi64(reinterpret_cast(src + i + 24)); _mm_storeu_si128(reinterpret_cast<__m128i*>(dst + i), _mm_unpacklo_epi8(bytes0, zero)); _mm_storeu_si128(reinterpret_cast<__m128i*>(dst + i + 8), @@ -546,9 +534,7 @@ CopyAndInflateChars(char16_t* dst, const JS::Latin1Char* src, size_t srclen) _mm_unpacklo_epi8(bytes3, zero)); } for (; i + 8 <= srclen; i += 8) { - uint64_t value; - js_memcpy(&value, src + i, sizeof(value)); - const __m128i bytes8 = _mm_cvtsi64_si128(static_cast(value)); + const __m128i bytes8 = _mm_loadl_epi64(reinterpret_cast(src + i)); _mm_storeu_si128(reinterpret_cast<__m128i*>(dst + i), _mm_unpacklo_epi8(bytes8, zero)); }