[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[dotgnu-pnet-commits] libjit ChangeLog jit/jit-gen-arm.h jit/jit-rule...
From: |
Aleksey Demakov |
Subject: |
[dotgnu-pnet-commits] libjit ChangeLog jit/jit-gen-arm.h jit/jit-rule... |
Date: |
Wed, 25 Mar 2009 17:33:49 +0000 |
CVSROOT: /sources/dotgnu-pnet
Module name: libjit
Changes by: Aleksey Demakov <avd> 09/03/25 17:33:49
Modified files:
. : ChangeLog
jit : jit-gen-arm.h jit-rules-arm.ins
Log message:
arm fixes
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/libjit/ChangeLog?cvsroot=dotgnu-pnet&r1=1.416&r2=1.417
http://cvs.savannah.gnu.org/viewcvs/libjit/jit/jit-gen-arm.h?cvsroot=dotgnu-pnet&r1=1.11&r2=1.12
http://cvs.savannah.gnu.org/viewcvs/libjit/jit/jit-rules-arm.ins?cvsroot=dotgnu-pnet&r1=1.4&r2=1.5
Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/dotgnu-pnet/libjit/ChangeLog,v
retrieving revision 1.416
retrieving revision 1.417
diff -u -b -r1.416 -r1.417
--- ChangeLog 24 Mar 2009 16:12:40 -0000 1.416
+++ ChangeLog 25 Mar 2009 17:33:48 -0000 1.417
@@ -1,3 +1,8 @@
+2009-03-25 Michele Tartara <address@hidden>
+
+ * jit/jit-gen-arm.h (arm_alu_cc_reg): fix a typo.
+ * jit/jit-rules-arm.ins (JIT_OP_IDIV): support negative dividends.
+
2009-03-24 Aleksey Demakov <address@hidden>
* jit/jit-rules.h (jit_reg_other_reg): add macro.
Index: jit/jit-gen-arm.h
===================================================================
RCS file: /sources/dotgnu-pnet/libjit/jit/jit-gen-arm.h,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -b -r1.11 -r1.12
--- jit/jit-gen-arm.h 22 Mar 2009 21:22:06 -0000 1.11
+++ jit/jit-gen-arm.h 25 Mar 2009 17:33:49 -0000 1.12
@@ -421,7 +421,7 @@
} while (0)
#define arm_alu_cc_reg(inst,opc,dreg,sreg) \
do { \
- arm_inst_add((inst), = arm_execute_cc | \
+ arm_inst_add((inst), arm_execute_cc | \
(((unsigned int)(opc))
<< 21) | \
(((unsigned int)(dreg))
<< 12) | \
((unsigned
int)(sreg))); \
Index: jit/jit-rules-arm.ins
===================================================================
RCS file: /sources/dotgnu-pnet/libjit/jit/jit-rules-arm.ins,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -b -r1.4 -r1.5
--- jit/jit-rules-arm.ins 24 Mar 2009 01:17:44 -0000 1.4
+++ jit/jit-rules-arm.ins 25 Mar 2009 17:33:49 -0000 1.5
@@ -189,8 +189,16 @@
[reg, immu8, if("$2 == 1")] -> {
/* Division by 1. Return the value itself */
}
- [reg, immu8, if("($2 % 2) == 0")] -> {
- /* Handle special cases of small immediate divides */
+ [reg, immu8, if("($2 > 0) && (((jit_nuint)$2) & (((jit_nuint)$2) - 1))
== 0")] -> {
+ /* Handle special cases of small immediate divides: divisions
by positive powers of two */
+ /* NB: (n & (n-1)) == 0 if and only if n is a power of 2 */
+
+ /* Move the dividend in the work register, setting the codes
(in order to know if it's positive or negative) */
+ arm_alu_cc_reg(inst, ARM_MOV, ARM_WORK, $1);
+
+ /* If the dividend is negative, make it positive (0-x = -x)*/
+ arm_alu_reg_imm8_cond(inst, ARM_RSB, $1, ARM_WORK, 0,
ARM_CC_MI);
+
switch($2)
{
//Integer divide by shifting
@@ -236,6 +244,10 @@
}
break;
}
+
+ /* If the dividend was negative, make it negative again (0-x =
-x)*/
+ arm_alu_reg_imm8_cond(inst, ARM_RSB, $1, $1, 0, ARM_CC_MI);
+
}
[reg, imm, if("$2 == -1")] -> {
/* Dividing by -1 simply negates */
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [dotgnu-pnet-commits] libjit ChangeLog jit/jit-gen-arm.h jit/jit-rule...,
Aleksey Demakov <=