diff options
author | Roger Sayle <roger@eyesopen.com> | 2004-03-12 17:21:32 +0000 |
---|---|---|
committer | Roger Sayle <sayle@gcc.gnu.org> | 2004-03-12 17:21:32 +0000 |
commit | 8937b6a2095b723cbdb1fd2be7cd6011c52fce1a (patch) | |
tree | 6e220f8fca216ac71f052dffc290bc8aa6ad57fd | |
parent | b8d5073947757bd6cdec3bcb2a12af9933747c92 (diff) | |
download | gcc-8937b6a2095b723cbdb1fd2be7cd6011c52fce1a.zip gcc-8937b6a2095b723cbdb1fd2be7cd6011c52fce1a.tar.gz gcc-8937b6a2095b723cbdb1fd2be7cd6011c52fce1a.tar.bz2 |
* config/i386/i386.c (ix86_split_ashrdi): Optimize shift by 63.
From-SVN: r79397
-rw-r--r-- | gcc/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/config/i386/i386.c | 9 |
2 files changed, 12 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index e2821e3..ca4525c 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,7 @@ +2004-03-12 Roger Sayle <roger@eyesopen.com> + + * config/i386/i386.c (ix86_split_ashrdi): Optimize shift by 63. + 2004-03-12 Matt Austern <austern@apple.com> * 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 58e2633..dadd18d 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]); |