Thu Aug 2 17:36:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
authorPaolo Molaro <lupus@oddwiz.org>
Thu, 2 Aug 2007 15:18:57 +0000 (15:18 -0000)
committerPaolo Molaro <lupus@oddwiz.org>
Thu, 2 Aug 2007 15:18:57 +0000 (15:18 -0000)
* mini-ppc.c: avoid an invalid encoding of unsigned right shift by 0
to be emitted (bug #82281).

svn path=/trunk/mono/; revision=83288

mono/mini/ChangeLog
mono/mini/mini-ppc.c

index f1e33b484c741001fcddb29c7cecd719b81cf0de..644e8146181c8b8e03975c6d663a4f7056187c03 100644 (file)
@@ -1,3 +1,9 @@
+
+Thu Aug 2 17:36:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
+
+       * mini-ppc.c: avoid an invalid encoding of unsigned right shift by 0
+       to be emitted (bug #82281).
+
 2007-08-01  Martin Baulig  <martin@ximian.com>
 
        Merged the `debugger-dublin' branch.
index 6965f7dbd0de9477926d2f00ddb88c611c0160e4..171b4005a10c19f36fd5e0878c6152300aeaad8d 100644 (file)
@@ -2381,7 +2381,10 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                        ppc_srawi (code, ins->dreg, ins->sreg1, (ins->inst_imm & 0x1f));
                        break;
                case OP_SHR_UN_IMM:
-                       ppc_rlwinm (code, ins->dreg, ins->sreg1, (32 - (ins->inst_imm & 0x1f)), (ins->inst_imm & 0x1f), 31);
+                       if (ins->inst_imm)
+                               ppc_rlwinm (code, ins->dreg, ins->sreg1, (32 - (ins->inst_imm & 0x1f)), (ins->inst_imm & 0x1f), 31);
+                       else
+                               ppc_mr (code, ins->dreg, ins->sreg1);
                        break;
                case CEE_SHR_UN:
                        ppc_srw (code, ins->dreg, ins->sreg1, ins->sreg2);