This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
f7: 0f 7f 5c 24 f0 movq %mm3,-0x10(%rsp) fc: 0f 7f 54 24 f8 movq %mm2,-0x8(%rsp) 101: 48 8b 5c 24 f8 mov -0x8(%rsp),%rbx 106: 48 89 5c 38 40 mov %rbx,0x40(%rax,%rdi,1) 10b: 48 8b 5c 24 f0 mov -0x10(%rsp),%rbx 110: 48 89 5c 38 48 mov %rbx,0x48(%rax,%rdi,1)
As you see in the intrinsic version gcc moves to mmx register to the stack, reloads from the stack and writes to the destination. Why?
I don't know whether earlier gcc 4.2 versions produced such stupid code.
Compiling as 32 does similar stupidity, though gcc reloads into a mmx register...
[1] http://gcc.gnu.org/bugzilla/show_bug.cgi?id=22076 [2] http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34256
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |