[Top][All Lists]
[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);