From: sayle Date: Fri, 12 Mar 2004 17:21:32 +0000 (+0000) Subject: * config/i386/i386.c (ix86_split_ashrdi): Optimize shift by 63. X-Git-Url: http://git.sourceforge.jp/view?p=pf3gnuchains%2Fgcc-fork.git;a=commitdiff_plain;h=c1fc26c116ca2268df4f3d9912030935e88e308d * config/i386/i386.c (ix86_split_ashrdi): Optimize shift by 63. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@79397 138bc75d-0d04-0410-961f-82ee72b054a4 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index e2821e3deda..ca4525cda39 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,7 @@ +2004-03-12 Roger Sayle + + * config/i386/i386.c (ix86_split_ashrdi): Optimize shift by 63. + 2004-03-12 Matt Austern * target.h (struct gcc_target): New target hook, unwind_label. diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index 58e26333a5c..dadd18def82 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -10873,7 +10873,14 @@ ix86_split_ashrdi (rtx *operands, rtx scratch) split_di (operands, 2, low, high); count = INTVAL (operands[2]) & 63; - if (count >= 32) + if (count == 63) + { + emit_move_insn (high[0], high[1]); + emit_insn (gen_ashrsi3 (high[0], high[0], GEN_INT (31))); + emit_move_insn (low[0], high[0]); + + } + else if (count >= 32) { emit_move_insn (low[0], high[1]);