[Bug target/39442] In some cases __builtin_ia32_loadups generates a movaps instruction
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=39442 Andrew Pinski changed: What|Removed |Added Status|UNCONFIRMED |RESOLVED Keywords||wrong-code Known to fail||4.1.2 Known to work||4.4.7, 4.5.3, 4.6.4, 4.7.1, ||4.9.1, 6.1.0 Resolution|--- |FIXED Target Milestone|--- |4.4.0 --- Comment #6 from Andrew Pinski --- Fixed in GCC 4.4.0.
[Bug target/39442] In some cases __builtin_ia32_loadups generates a movaps instruction
--- Comment #1 from hjl dot tools at gmail dot com 2009-03-12 15:06 --- I believe this is fixed in gcc 4.4.0. -- hjl dot tools at gmail dot com changed: What|Removed |Added CC||hjl dot tools at gmail dot ||com http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39442
[Bug target/39442] In some cases __builtin_ia32_loadups generates a movaps instruction
--- Comment #2 from pluto at agmk dot net 2009-03-12 15:37 --- on x86_64/4.4.0 i see correct movups and weird aligned moves[*]. main: subq$24, %rsp xorl%edi, %edi callget_arg movups (%rax), %xmm1 xorl%edi, %edi movaps %xmm1, (%rsp) [*] callget_arg movaps (%rsp), %xmm1 [*] movups (%rax), %xmm0 callsse_func addq$24, %rsp ret -- pluto at agmk dot net changed: What|Removed |Added CC||pluto at agmk dot net http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39442
[Bug target/39442] In some cases __builtin_ia32_loadups generates a movaps instruction
--- Comment #3 from hjl dot tools at gmail dot com 2009-03-12 15:47 --- (In reply to comment #2) on x86_64/4.4.0 i see correct movups and weird aligned moves[*]. main: subq$24, %rsp xorl%edi, %edi callget_arg movups (%rax), %xmm1 xorl%edi, %edi movaps %xmm1, (%rsp) [*] We can use movaps since stack is aligned at 16byte here. callget_arg movaps (%rsp), %xmm1 [*] Same here. movups (%rax), %xmm0 callsse_func addq$24, %rsp ret -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39442
[Bug target/39442] In some cases __builtin_ia32_loadups generates a movaps instruction
--- Comment #4 from pluto at agmk dot net 2009-03-12 15:53 --- (In reply to comment #3) callget_arg movups (%rax), %xmm1 xorl%edi, %edi movaps %xmm1, (%rsp) [*] We can use movaps since stack is aligned at 16byte here. callget_arg movaps (%rsp), %xmm1 [*] Same here. of course you can, but what for transfer xmm1=(rsp)=xmm1? -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39442
[Bug target/39442] In some cases __builtin_ia32_loadups generates a movaps instruction
--- Comment #5 from hjl dot tools at gmail dot com 2009-03-12 16:03 --- (In reply to comment #4) (In reply to comment #3) callget_arg movups (%rax), %xmm1 xorl%edi, %edi movaps %xmm1, (%rsp) [*] We can use movaps since stack is aligned at 16byte here. callget_arg movaps (%rsp), %xmm1 [*] Same here. of course you can, but what for transfer xmm1=(rsp)=xmm1? xmm1 is a caller saved register. get_arg may change xmm1. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39442