[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: |
Aleksey Demakov |
Subject: |
[dotgnu-pnet-commits] libjit ChangeLog jit/jit-rules-x86.ins |
Date: |
Fri, 10 Nov 2006 21:03:09 +0000 |
CVSROOT: /sources/dotgnu-pnet
Module name: libjit
Changes by: Aleksey Demakov <avd> 06/11/10 21:03:09
Modified files:
. : ChangeLog
jit : jit-rules-x86.ins
Log message:
add JIT_OP_IABS and JIT_OP_LABS rules
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/libjit/ChangeLog?cvsroot=dotgnu-pnet&r1=1.278&r2=1.279
http://cvs.savannah.gnu.org/viewcvs/libjit/jit/jit-rules-x86.ins?cvsroot=dotgnu-pnet&r1=1.18&r2=1.19
Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/dotgnu-pnet/libjit/ChangeLog,v
retrieving revision 1.278
retrieving revision 1.279
diff -u -b -r1.278 -r1.279
--- ChangeLog 4 Nov 2006 14:57:10 -0000 1.278
+++ ChangeLog 10 Nov 2006 21:03:09 -0000 1.279
@@ -1,3 +1,7 @@
+2006-11-11 Aleksey Demakov <address@hidden>
+
+ * jit/jit-rules-x86.ins: add JIT_OP_IABS and JIT_OP_LABS rules.
+
2006-11-04 Aleksey Demakov <address@hidden>
* jit/jit-rules-x86.ins: make comparison opcodes use three-address
Index: jit/jit-rules-x86.ins
===================================================================
RCS file: /sources/dotgnu-pnet/libjit/jit/jit-rules-x86.ins,v
retrieving revision 1.18
retrieving revision 1.19
diff -u -b -r1.18 -r1.19
--- jit/jit-rules-x86.ins 4 Nov 2006 14:57:10 -0000 1.18
+++ jit/jit-rules-x86.ins 10 Nov 2006 21:03:09 -0000 1.19
@@ -1248,6 +1248,27 @@
x86_fsqrt(inst);
}
+/*
+ * Absolute, minimum, maximum, and sign.
+ */
+
+JIT_OP_IABS:
+ [reg("eax"), scratch("edx")] -> {
+ x86_cdq(inst);
+ x86_alu_reg_reg(inst, X86_XOR, $1, $2);
+ x86_alu_reg_reg(inst, X86_SUB, $1, $2);
+ }
+
+JIT_OP_LABS:
+ [lreg, scratch("?")] -> {
+ x86_mov_reg_reg(inst, $2, %1, 4);
+ x86_shift_reg_imm(inst, X86_SAR, $2, 31);
+ x86_alu_reg_reg(inst, X86_XOR, $1, $2);
+ x86_alu_reg_reg(inst, X86_XOR, %1, $2);
+ x86_alu_reg_reg(inst, X86_SUB, $1, $2);
+ x86_alu_reg_reg(inst, X86_SBB, %1, $2);
+ }
+
JIT_OP_FABS, JIT_OP_DABS, JIT_OP_NFABS: unary, stack
[freg] -> {
x86_fabs(inst);