[cfe-users] cfe-users Digest, Vol 63, Issue 2

degski via cfe-users cfe-users at lists.llvm.org
Tue Apr 3 05:15:31 PDT 2018


On 2 April 2018 at 14:00, via cfe-users <cfe-users at lists.llvm.org> wrote:

>
> > Date: Sat, 31 Mar 2018 23:51:22 -0400
> > From: Jeffrey Walton via cfe-users <cfe-users at lists.llvm.org>
> > To: "CFE-Users (Clang)" <cfe-users at lists.llvm.org>
> > Subject: [cfe-users] Problems with hexadecimal constant,
> >    _mm_set_epi64x and sign conversion
> > Message-ID:
> >    <CAH8yC8k8DLaRANj9Z9gHnDJx-dcTafwHqz4gYt42dAyMbuBrJg at mail.gmail.com>
> > Content-Type: text/plain; charset="UTF-8"
> >
> > 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?
>

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.

degski
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-users/attachments/20180403/3c39ce3f/attachment.html>


More information about the cfe-users mailing list