--
rguenth at gcc dot gnu dot org changed:
What|Removed |Added
Keywords||missed-optimization, ra
Target Milestone|---
--- Comment #1 from hjl dot tools at gmail dot com 2008-09-04 16:02 ---
"-O2 -march=core2 -fno-ira -fno-regmove" generates
movqx(%rip), %mm0
paddd y(%rip), %mm0
movq%mm0, -8(%rsp)
movq-8(%rsp), %rax
It seems that regmove isn't effective for
--- Comment #2 from hjl dot tools at gmail dot com 2008-09-04 16:13 ---
(In reply to comment #1)
> "-O2 -march=core2 -fno-ira -fno-regmove" generates
>
> movqx(%rip), %mm0
> paddd y(%rip), %mm0
> movq%mm0, -8(%rsp)
> movq-8(%rsp), %rax
>
>
--- Comment #3 from hjl dot tools at gmail dot com 2008-09-04 17:43 ---
The problem may be in IRA_COVER_CLASSES. -mtune=core2 turns on
TARGET_INTER_UNIT_MOVES, which means move between mmx and 64bit
integer registers is cheaper than load/store. But IRA doesn't
handle it properly.
--
--- Comment #4 from hjl dot tools at gmail dot com 2008-09-04 17:54 ---
(In reply to comment #3)
> The problem may be in IRA_COVER_CLASSES. -mtune=core2 turns on
> TARGET_INTER_UNIT_MOVES, which means move between mmx and 64bit
> integer registers is cheaper than load/store. But IRA does