[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[dotgnu-pnet-commits] libjit/jit jit-rules-x86.ins jit-rules-x86.sel
From: |
Aleksey Demakov |
Subject: |
[dotgnu-pnet-commits] libjit/jit jit-rules-x86.ins jit-rules-x86.sel |
Date: |
Mon, 01 May 2006 10:47:37 +0000 |
CVSROOT: /sources/dotgnu-pnet
Module name: libjit
Branch:
Changes by: Aleksey Demakov <address@hidden> 06/05/01 10:47:37
Modified files:
jit : jit-rules-x86.ins jit-rules-x86.sel
Log message:
fix JIT_OP_ADDRESS_OF rule
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/dotgnu-pnet/libjit/jit/jit-rules-x86.ins.diff?tr1=1.2&tr2=1.3&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/dotgnu-pnet/libjit/jit/jit-rules-x86.sel.diff?tr1=1.43&tr2=1.44&r1=text&r2=text
Patches:
Index: libjit/jit/jit-rules-x86.ins
diff -u libjit/jit/jit-rules-x86.ins:1.2 libjit/jit/jit-rules-x86.ins:1.3
--- libjit/jit/jit-rules-x86.ins:1.2 Sun Apr 23 11:18:54 2006
+++ libjit/jit/jit-rules-x86.ins Mon May 1 10:47:37 2006
@@ -1,5 +1,5 @@
/*
- * jit-rules-x86.sel - Instruction selector for x86.
+ * jit-rules-x86.ins - Instruction selector for x86.
*
* Copyright (C) 2004 Southern Storm Software, Pty Ltd.
*
@@ -2075,13 +2075,13 @@
int reg;
_jit_regs_force_out(gen, insn->value1, 0);
_jit_gen_fix_value(insn->value1);
+ reg = _jit_regs_dest_value(gen, insn->dest);
inst = gen->posn.ptr;
if(!jit_cache_check_for_n(&(gen->posn), 32))
{
jit_cache_mark_full(&(gen->posn));
return;
}
- reg = _jit_regs_dest_value(gen, insn->dest);
reg = _jit_reg_info[reg].cpu_reg;
x86_lea_membase(inst, reg, X86_EBP, insn->value1->frame_offset);
gen->posn.ptr = inst;
@@ -2512,77 +2512,18 @@
}
}
-JIT_OP_STORE_RELATIVE_INT: manual
- [] -> {
- unsigned char *inst;
- int reg, reg2;
- if(insn->dest->is_constant)
- {
- reg = insn->dest->address + insn->value2->address;
- if(insn->value1->is_constant)
- {
- inst = gen->posn.ptr;
- if(!jit_cache_check_for_n(&(gen->posn), 32))
- {
- jit_cache_mark_full(&(gen->posn));
- return;
- }
- x86_mov_mem_imm(inst, reg,
insn->value1->address, 4);
- }
- else
- {
- reg2 = _jit_regs_load_value
- (gen, insn->value1, 0,
- (insn->flags &
(JIT_INSN_VALUE1_NEXT_USE |
-
JIT_INSN_VALUE1_LIVE)));
- inst = gen->posn.ptr;
- if(!jit_cache_check_for_n(&(gen->posn), 32))
- {
- jit_cache_mark_full(&(gen->posn));
- return;
- }
- reg2 = _jit_reg_info[reg2].cpu_reg;
- x86_mov_mem_reg(inst, reg, reg2, 4);
- }
- gen->posn.ptr = inst;
- }
- else
- {
- reg = _jit_regs_load_value
- (gen, insn->dest, 0,
- (insn->flags & (JIT_INSN_DEST_NEXT_USE |
-
JIT_INSN_DEST_LIVE)));
- if(!(insn->value1->is_constant))
- {
- reg2 = _jit_regs_load_value
- (gen, insn->value1, 0,
- (insn->flags &
(JIT_INSN_VALUE1_NEXT_USE |
-
JIT_INSN_VALUE1_LIVE)));
- inst = gen->posn.ptr;
- if(!jit_cache_check_for_n(&(gen->posn), 32))
- {
- jit_cache_mark_full(&(gen->posn));
- return;
- }
- reg = _jit_reg_info[reg].cpu_reg;
- reg2 = _jit_reg_info[reg2].cpu_reg;
- x86_mov_membase_reg(inst, reg,
insn->value2->address, reg2, 4);
- gen->posn.ptr = inst;
- }
- else
- {
- inst = gen->posn.ptr;
- if(!jit_cache_check_for_n(&(gen->posn), 32))
- {
- jit_cache_mark_full(&(gen->posn));
- return;
- }
- reg = _jit_reg_info[reg].cpu_reg;
- x86_mov_membase_imm(inst, reg,
insn->value2->address,
-
insn->value1->address, 4);
- gen->posn.ptr = inst;
- }
- }
+JIT_OP_STORE_RELATIVE_INT: ternary
+ [imm, imm, imm] -> {
+ x86_mov_mem_imm(inst, $1 + $3, $2, 4);
+ }
+ [imm, reg, imm] -> {
+ x86_mov_mem_reg(inst, $1 + $3, $2, 4);
+ }
+ [reg, imm, imm] -> {
+ x86_mov_membase_imm(inst, $1, $3, $2, 4);
+ }
+ [reg, reg, imm] -> {
+ x86_mov_membase_reg(inst, $1, $3, $2, 4);
}
JIT_OP_STORE_RELATIVE_LONG: manual
Index: libjit/jit/jit-rules-x86.sel
diff -u libjit/jit/jit-rules-x86.sel:1.43 libjit/jit/jit-rules-x86.sel:1.44
--- libjit/jit/jit-rules-x86.sel:1.43 Sun Feb 26 17:08:02 2006
+++ libjit/jit/jit-rules-x86.sel Mon May 1 10:47:37 2006
@@ -2080,13 +2080,13 @@
int reg;
_jit_regs_force_out(gen, insn->value1, 0);
_jit_gen_fix_value(insn->value1);
+ reg = _jit_regs_dest_value(gen, insn->dest);
inst = gen->posn.ptr;
if(!jit_cache_check_for_n(&(gen->posn), 32))
{
jit_cache_mark_full(&(gen->posn));
return;
}
- reg = _jit_regs_dest_value(gen, insn->dest);
reg = _jit_reg_info[reg].cpu_reg;
x86_lea_membase(inst, reg, X86_EBP, insn->value1->frame_offset);
gen->posn.ptr = inst;
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [dotgnu-pnet-commits] libjit/jit jit-rules-x86.ins jit-rules-x86.sel,
Aleksey Demakov <=