aboutsummaryrefslogtreecommitdiff
path: root/src/liblzma/common/memcmplen.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/liblzma/common/memcmplen.h')
-rw-r--r--src/liblzma/common/memcmplen.h19
1 files changed, 4 insertions, 15 deletions
diff --git a/src/liblzma/common/memcmplen.h b/src/liblzma/common/memcmplen.h
index c1efc9e28b77..dcfd8d6f89d1 100644
--- a/src/liblzma/common/memcmplen.h
+++ b/src/liblzma/common/memcmplen.h
@@ -61,8 +61,7 @@ lzma_memcmplen(const uint8_t *buf1, const uint8_t *buf2,
// to __builtin_clzll().
#define LZMA_MEMCMPLEN_EXTRA 8
while (len < limit) {
- const uint64_t x = *(const uint64_t *)(buf1 + len)
- - *(const uint64_t *)(buf2 + len);
+ const uint64_t x = read64ne(buf1 + len) - read64ne(buf2 + len);
if (x != 0) {
# if defined(_M_X64) // MSVC or Intel C compiler on Windows
unsigned long tmp;
@@ -99,15 +98,7 @@ lzma_memcmplen(const uint8_t *buf1, const uint8_t *buf2,
_mm_loadu_si128((const __m128i *)(buf2 + len))));
if (x != 0) {
-# if defined(__INTEL_COMPILER)
- len += _bit_scan_forward(x);
-# elif defined(_MSC_VER)
- unsigned long tmp;
- _BitScanForward(&tmp, x);
- len += tmp;
-# else
- len += __builtin_ctz(x);
-# endif
+ len += ctz32(x);
return my_min(len, limit);
}
@@ -120,8 +111,7 @@ lzma_memcmplen(const uint8_t *buf1, const uint8_t *buf2,
// Generic 32-bit little endian method
# define LZMA_MEMCMPLEN_EXTRA 4
while (len < limit) {
- uint32_t x = *(const uint32_t *)(buf1 + len)
- - *(const uint32_t *)(buf2 + len);
+ uint32_t x = read32ne(buf1 + len) - read32ne(buf2 + len);
if (x != 0) {
if ((x & 0xFFFF) == 0) {
len += 2;
@@ -143,8 +133,7 @@ lzma_memcmplen(const uint8_t *buf1, const uint8_t *buf2,
// Generic 32-bit big endian method
# define LZMA_MEMCMPLEN_EXTRA 4
while (len < limit) {
- uint32_t x = *(const uint32_t *)(buf1 + len)
- ^ *(const uint32_t *)(buf2 + len);
+ uint32_t x = read32ne(buf1 + len) ^ read32ne(buf2 + len);
if (x != 0) {
if ((x & 0xFFFF0000) == 0) {
len += 2;