[libc] Use __builtin_ctzll instead of __builtin_ctzl in elements_x86.h.

__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
This commit is contained in:
Siva Chandra Reddy 2021-06-25 05:43:47 +00:00
parent fdd4c199a1
commit 2e9c75daff

View File

@ -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;