This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug rtl-optimization/17236] inefficient code for long long multiply on x86
- From: "ubizjak at gmail dot com" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 18 Dec 2007 18:20:17 -0000
- Subject: [Bug rtl-optimization/17236] inefficient code for long long multiply on x86
- References: <bug-17236-1008@http.gcc.gnu.org/bugzilla/>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- Comment #15 from ubizjak at gmail dot com 2007-12-18 18:20 -------
(In reply to comment #7)
> mull %ebx
> leal (%ecx,%edx), %esi ; what the heck, a simple addl could do!
> movl %esi, %edx
Something disturbs RA to emit two DImode moves:
(insn:HI 10 36 37 2 m.c:2 (parallel [
(set (reg:DI 0 ax)
(mult:DI (zero_extend:DI (reg:SI 0 ax))
(zero_extend:DI (reg:SI 3 bx [orig:64 a ] [64]))))
(clobber (reg:CC 17 flags))
]) 304 {*umulsidi3_insn} (nil))
(insn 37 10 11 2 m.c:2 (set (reg:DI 3 bx [61])
(reg:DI 0 ax)) 88 {*movdi_2} (nil))
(note:HI 11 37 12 2 NOTE_INSN_DELETED)
(insn:HI 12 11 18 2 m.c:2 (parallel [
(set (reg:SI 4 si [+4 ])
(plus:SI (reg:SI 2 cx [62])
(reg:SI 4 si [+4 ])))
(clobber (reg:CC 17 flags))
]) 249 {*addsi_1} (nil))
(insn:HI 18 12 24 2 m.c:4 (set (reg/i:DI 0 ax [ <result> ])
(reg:DI 3 bx [61])) 88 {*movdi_2} (nil))
(insn 24 18 33 2 m.c:4 (use (reg/i:DI 0 ax [ <result> ])) -1 (nil))
Note two moves [(insn 36) and (insn 37)] around (insn 12).
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=17236