CVSROOT:        /cvsroot/dotgnu-pnet
Module name:    libjit
Changes by:     Klaus Treichel <ktreichel>      08/03/31 19:31:41

Modified files:
        .              : ChangeLog 
        jit            : jit-rules-x86.ins 

Log message:
        Fix the sign opcode on x86 for integers and the constant case for longs.

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/libjit/ChangeLog?cvsroot=dotgnu-pnet&r1=1.358&r2=1.359
http://cvs.savannah.gnu.org/viewcvs/libjit/jit/jit-rules-x86.ins?cvsroot=dotgnu-pnet&r1=1.34&r2=1.35

Patches:
Index: ChangeLog
===================================================================
RCS file: /cvsroot/dotgnu-pnet/libjit/ChangeLog,v
retrieving revision 1.358
retrieving revision 1.359
diff -u -b -r1.358 -r1.359
--- ChangeLog   30 Mar 2008 16:05:57 -0000      1.358
+++ ChangeLog   31 Mar 2008 19:31:41 -0000      1.359
@@ -1,3 +1,8 @@
+2008-03-31  Klaus Treichel  <[EMAIL PROTECTED]>
+
+       * jit/jit-rules-x86.ins: Fix the sign opcode for integers and the
+       constant case for longs.
+
 2008-03-30  Klaus Treichel  <[EMAIL PROTECTED]>
 
        * jit/jit-gen-x86-64.h: Add macros for the test, imul, cdw/cdq/cqo

Index: jit/jit-rules-x86.ins
===================================================================
RCS file: /cvsroot/dotgnu-pnet/libjit/jit/jit-rules-x86.ins,v
retrieving revision 1.34
retrieving revision 1.35
diff -u -b -r1.34 -r1.35
--- jit/jit-rules-x86.ins       29 Mar 2008 18:45:25 -0000      1.34
+++ jit/jit-rules-x86.ins       31 Mar 2008 19:31:41 -0000      1.35
@@ -1472,13 +1472,21 @@
                {
                        x86_mov_reg_imm(inst, $1, -1);
                }
+               else if($2 > 0)
+               {
+                       x86_mov_reg_imm(inst, $1, 1);
+               }
                else
                {
                        x86_clear_reg(inst, $1);
                }
        }
-       [reg] -> {
+       [reg, scratch reg] -> {
+               x86_clear_reg(inst, $2);
+               x86_test_reg_reg(inst, $1, $1);
+               x86_set_reg(inst,X86_CC_GT, $2, 1);
                x86_shift_reg_imm(inst, X86_SAR, $1, 31);
+               x86_alu_reg_reg(inst, X86_ADD, $1, $2);
        }
 
 JIT_OP_LSIGN:
@@ -1488,6 +1496,10 @@
                {
                        x86_mov_reg_imm(inst, $1, -1);
                }
+               else if(value > 0)
+               {
+                       x86_mov_reg_imm(inst, $1, 1);
+               }
                else
                {
                        x86_clear_reg(inst, $1);


_______________________________________________
dotgnu-pnet-commits mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/dotgnu-pnet-commits

Reply via email to