On 2013-01-15 20:35, John-Mark Gurney wrote:
If you try to compile the following file:
#include <wmmintrin.h>

__m128i
bar(__m128i a, __m128i b)
{
         return _mm_aesenc_si128(a, b);
}

w/ the command:
clang -D__AES__ -c intrintest.c

You'll get the error:
fatal error: error in backend: Cannot select: intrinsic %llvm.x86.aesni.aesenc

and a intrintest.o-XXXXXXXX temp file left behind from the failed compile...

Hm, weird... On i386, this simply produces errors about SSE2 not being
enabled, and a whole bunch of other errors and warnings.

On amd64, it does indeed produce the llvm backend error you have shown.
I will report this to upstream, but there is a good chance they will say
"don't do that then". :-)


Yes, the correct way to enable the AES instructions is with the -maes
option, but I didn't know that at the time...  Looks like clang doesn't
fully clean up in this case...

I tried this on MacOSX's clang, but the smmintrin.h header prevents me
from compiling w/ the error:
In file included from /usr/bin/../lib/clang/2.1/include/wmmintrin.h:31:
/usr/bin/../lib/clang/2.1/include/smmintrin.h:28:2: error: #error "SSE4.1
       instruction set not enabled"
#error "SSE4.1 instruction set not enabled"

It'd be nice if -maes and related SSE enabling options were documented
in the man page... :)

We don't maintain our own manpage, upstream produces either .rst or .pod
files, and manpages or other docs are generated from those.  Please send
any suggestions for documentation updates to one of the appropriate
upstream mailing lists for review.
_______________________________________________
freebsd-toolchain@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-toolchain
To unsubscribe, send any mail to "freebsd-toolchain-unsubscr...@freebsd.org"

Reply via email to