dotgnu-pnet-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[dotgnu-pnet-commits] libjit ChangeLog jit/jit-rules-x86.ins


From: Klaus Treichel
Subject: [dotgnu-pnet-commits] libjit ChangeLog jit/jit-rules-x86.ins
Date: Mon, 31 Mar 2008 19:31:41 +0000

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  <address@hidden>
+
+       * jit/jit-rules-x86.ins: Fix the sign opcode for integers and the
+       constant case for longs.
+
 2008-03-30  Klaus Treichel  <address@hidden>
 
        * 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);




reply via email to

[Prev in Thread] Current Thread [Next in Thread]