2007-05-24 Andrew Pinski <andrew_pinski@playstation.sony.com>
authorpinskia <pinskia@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 25 May 2007 05:57:42 +0000 (05:57 +0000)
committerpinskia <pinskia@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 25 May 2007 05:57:42 +0000 (05:57 +0000)
        * config/spu/spu.md (smulsi3_highpart): Unshare the rtl chain.
        (umulsi3_highpart): Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@125055 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/config/spu/spu.md

index 745e89a..25eb001 100644 (file)
@@ -1,3 +1,8 @@
+2007-05-24  Andrew Pinski  <andrew_pinski@playstation.sony.com>
+
+       * config/spu/spu.md (smulsi3_highpart): Unshare the rtl chain.
+       (umulsi3_highpart): Likewise.
+
 2007-05-24  Ian Lance Taylor  <iant@google.com>
 
        PR rtl-optimization/32069
index ccaf485..b4c59cb 100644 (file)
     rtx t0_hi = gen_rtx_SUBREG (HImode, t0, 2);
     rtx t1_hi = gen_rtx_SUBREG (HImode, t1, 2);
 
-    emit_insn (gen_lshrsi3 (t0, operands[1], GEN_INT (16)));
+    rtx insn = emit_insn (gen_lshrsi3 (t0, operands[1], GEN_INT (16)));
     emit_insn (gen_lshrsi3 (t1, operands[2], GEN_INT (16)));
     emit_insn (gen_umulhisi3 (t2, op1_hi, op2_hi));
     emit_insn (gen_mpyh_si (t3, operands[1], operands[2]));
     emit_insn (gen_extendhisi2 (t20, t18));
     emit_insn (gen_addsi3 (t21, t19, t20));
     emit_insn (gen_addsi3 (operands[0], t14, t21));
+    unshare_all_rtl_in_chain (insn);
     DONE;
   })
 
     rtx op2_hi = gen_rtx_SUBREG (HImode, operands[2], 2);
     rtx t0_hi = gen_rtx_SUBREG (HImode, t0, 2);
 
-    emit_insn (gen_rotlsi3 (t0, operands[2], GEN_INT (16)));
+    rtx insn = emit_insn (gen_rotlsi3 (t0, operands[2], GEN_INT (16)));
     emit_insn (gen_umulhisi3 (t1, op1_hi, op2_hi));
     emit_insn (gen_umulhisi3 (t2, op1_hi, t0_hi));
     emit_insn (gen_mpyhhu_si (t3, operands[1], t0));
     emit_insn (gen_addx_si (t13, t4, t7, t10));
     emit_insn (gen_addx_si (t14, t13, t8, t12));
     emit_insn (gen_movsi (operands[0], t14));
+    unshare_all_rtl_in_chain (insn);
 
     DONE;
   })