Skip to content

Commit

Permalink
[libc] Use __builtin_ctzll instead of __builtin_ctzl in elements_x86.h.
Browse files Browse the repository at this point in the history
__builtin_ctzl takes an unsigned long argument which need not be 64-bit
long on all platforms. Using __builtin_ctzll, which takes an unsigned
long long argument, ensures that 64-bit values will be handled on a
wider range of platforms.

Without this change, the test corresponding to M512 fails in Windows.

Reviewed By: gchatelet

Differential Revision: https://reviews.llvm.org/D104897
  • Loading branch information
Siva Chandra Reddy committed Jun 25, 2021
1 parent fdd4c19 commit 2e9c75d
Showing 1 changed file with 1 addition and 1 deletion.
2 changes: 1 addition & 1 deletion libc/src/string/memory_utils/elements_x86.h
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ template <typename Base> struct Vector : public Base {
}

static int CharDiff(const char *a, const char *b, uint64_t mask) {
const size_t diff_index = __builtin_ctzl(mask);
const size_t diff_index = __builtin_ctzll(mask);
const int ca = (unsigned char)a[diff_index];
const int cb = (unsigned char)b[diff_index];
return ca - cb;
Expand Down

0 comments on commit 2e9c75d

Please sign in to comment.