[cfe-users] Problems with hexadecimal constant, _mm_set_epi64x and sign conversion

Jeffrey Walton via cfe-users cfe-users at lists.llvm.org
Sat Mar 31 20:51:22 PDT 2018


I'm having trouble with Travis during testing. The failed test is
available at https://travis-ci.org/Tarsnap/scrypt/jobs/360781179.

Clang has rejected my attempts to use the constant (no suffix, ULL and LL):

MSG = _mm_add_epi32(MSG0, _mm_set_epi64x(0xE9B5DBA5B5C0FBCF,
0x71374491428A2F98));

MSG = _mm_add_epi32(MSG0, _mm_set_epi64x(0xE9B5DBA5B5C0FBCFULL,
0x71374491428A2F98ULL));

MSG = _mm_add_epi32(MSG0, _mm_set_epi64x(0xE9B5DBA5B5C0FBCFLL,
0x71374491428A2F98LL));

The message the compiler provides is:

crypto_sha256_shani.c:50:44: error: implicit conversion changes
signedness: 'unsigned long' to 'long long' [-Werror,-Wsign-conversion]

The code came from Intel and I doubt it is defective.

How do I trick Clang to accept the hexadecimal value?

Thanks in advance.



More information about the cfe-users mailing list