* sh.md (ffssi2): Fix emitted code.
authorJ"orn Rennecke <joern.rennecke@superh.com>
Wed, 9 Oct 2002 15:07:19 +0000 (15:07 +0000)
committerJoern Rennecke <amylaar@gcc.gnu.org>
Wed, 9 Oct 2002 15:07:19 +0000 (16:07 +0100)
From-SVN: r57984

gcc/ChangeLog
gcc/config/sh/sh.md

index fa25ad7351e236fd30bbcdebf76bbf2f43d2a42a..5df0457561d0ec4d7a608f3be7b3eec113066425 100644 (file)
@@ -1,3 +1,7 @@
+Wed Oct  9 15:54:49 2002  J"orn Rennecke <joern.rennecke@superh.com>
+
+       * sh.md (ffssi2): Fix emitted code.
+
 2002-10-09  Ulrich Weigand  <uweigand@de.ibm.com>
 
        * cse.c (insn_live_p): Pass insn pattern, not full insn
index b23766474cfdebf29ca034f47aa0832646bb646a..2c02ee373130b312bd96d333d88cf30b5253204c 100644 (file)
   rtx discratch = gen_reg_rtx (DImode);
   rtx last;
 
-  emit_insn (gen_adddi3z_media (discratch, operands[1],
-                               force_reg (SImode, GEN_INT (-1))));
-  emit_insn (gen_andcdi3 (discratch, discratch,
-                         simplify_gen_subreg (DImode, operands[1],
-                                              SImode, 0)));
+  emit_insn (gen_adddi3 (discratch,
+                        simplify_gen_subreg (DImode, operands[1], SImode, 0),
+                        GEN_INT (-1)));
+  emit_insn (gen_andcdi3 (discratch,
+                         simplify_gen_subreg (DImode, operands[1], SImode, 0),
+                         discratch));
   emit_insn (gen_nsbsi (scratch, discratch));
   last = emit_insn (gen_subsi3 (operands[0],
-                               force_reg (SImode, GEN_INT (-64)), scratch));
+                               force_reg (SImode, GEN_INT (63)), scratch));
   REG_NOTES (last)
     = gen_rtx_EXPR_LIST (REG_EQUAL,
                         gen_rtx_FFS (SImode, operands[0]), REG_NOTES (last));