http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56298



--- Comment #9 from Piotr Wyderski <piotr.wyderski at gmail dot com> 2013-02-12 
17:22:08 UTC ---

(In reply to comment #8)



> Compiling that with icc -S t.c results in

> 

> f:

> # parameter 1: %xmm0

> # parameter 2: %xmm1

> ..B1.1:                         # Preds ..B1.0

> ..___tag_value_f.1:                                             #3.33

>         aesenc    %xmm1, %xmm0                                  #5.16

>         ret                                                     #5.16



So it seems that ICC and MSVC are in one team here, while

GCC and CLang/LLVM are in the other. And since I consider

ICC the one to be followed, as the *mmintrin.h files are provided

in GCC for exactly that purpose, the conclusion is that GCC

behaves in a wrong way.



Jakub: you are right, the __builtin_* functions are not expected

to be available when the target does not support them. But intrinsics

are not like that and ultimately it is the (wrong) choice of a

GCC implementer to base the intrinsic functions' implementation

on builtins. Inline assembly would not cause such a problem.



Just to be clear: I am perfectly aware how hard would it be to

reimplement the intrinsics from scratch, but there *is* a problem.

Reply via email to