<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On 2 April 2018 at 14:00, via cfe-users <span dir="ltr"><<a href="mailto:cfe-users@lists.llvm.org" target="_blank">cfe-users@lists.llvm.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br>
> Date: Sat, 31 Mar 2018 23:51:22 -0400<br>
> From: Jeffrey Walton via cfe-users <<a href="mailto:cfe-users@lists.llvm.org">cfe-users@lists.llvm.org</a>><br>
> To: "CFE-Users (Clang)" <<a href="mailto:cfe-users@lists.llvm.org">cfe-users@lists.llvm.org</a>><br>
> Subject: [cfe-users] Problems with hexadecimal constant,<br>
>    _mm_set_epi64x and sign conversion<br>
> Message-ID:<br>
>    <<a href="mailto:CAH8yC8k8DLaRANj9Z9gHnDJx-dcTafwHqz4gYt42dAyMbuBrJg@mail.gmail.com">CAH8yC8k8DLaRANj9Z9gHnDJx-<wbr>dcTafwHqz4gYt42dAyMbuBrJg@<wbr>mail.gmail.com</a>><br>
> Content-Type: text/plain; charset="UTF-8"<br>
><br>
> I'm having trouble with Travis during testing. The failed test is<br>
> available at <a href="https://travis-ci.org/Tarsnap/scrypt/jobs/360781179" rel="noreferrer" target="_blank">https://travis-ci.org/Tarsnap/<wbr>scrypt/jobs/360781179</a>.<br>
><br>
> Clang has rejected my attempts to use the constant (no suffix, ULL and LL):<br>
><br>
> MSG = _mm_add_epi32(MSG0, _mm_set_epi64x(<wbr>0xE9B5DBA5B5C0FBCF,<br>
> 0x71374491428A2F98));<br>
><br>
> MSG = _mm_add_epi32(MSG0, _mm_set_epi64x(<wbr>0xE9B5DBA5B5C0FBCFULL,<br>
> 0x71374491428A2F98ULL));<br>
><br>
> MSG = _mm_add_epi32(MSG0, _mm_set_epi64x(<wbr>0xE9B5DBA5B5C0FBCFLL,<br>
> 0x71374491428A2F98LL));<br>
><br>
> The message the compiler provides is:<br>
><br>
> crypto_sha256_shani.c:50:44: error: implicit conversion changes<br>
> signedness: 'unsigned long' to 'long long' [-Werror,-Wsign-conversion]<br>
><br>
> The code came from Intel and I doubt it is defective.<br>
><br>
> How do I trick Clang to accept the hexadecimal value?<br></blockquote><div><br></div><div>A hex value is unsigned by definition, so attaching "LL" to the end won't work. The prototype of _mm_add_epi32 

(a.o.) has the ints as signed. So, the answer is to just c-cast the hex values to long long (AFAICS), or suppress the warning.<br><br></div><div>degski<br></div></div></div></div>