[Bug target/39442] In some cases __builtin_ia32_loadups generates a movaps instruction

2021-08-08 Thread pinskia at gcc dot gnu.org via Gcc-bugs
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

2009-03-12 Thread hjl dot tools at gmail dot com


--- 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

2009-03-12 Thread pluto at agmk dot net


--- 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

2009-03-12 Thread hjl dot tools at gmail dot com


--- 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

2009-03-12 Thread pluto at agmk dot net


--- 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

2009-03-12 Thread hjl dot tools at gmail dot com


--- 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