]> git.unchartedbackwaters.co.uk Git - francis/libjit.git/commitdiff
remove excessive and buggy patterns from JIT_OP_EXPAND_INT and
authorAleksey Demakov <ademakov@gmail.com>
Sun, 22 Oct 2006 23:51:41 +0000 (23:51 +0000)
committerAleksey Demakov <ademakov@gmail.com>
Sun, 22 Oct 2006 23:51:41 +0000 (23:51 +0000)
JIT_OP_EXPAND_UINT rules

ChangeLog
jit/jit-rules-x86.ins

index 109fc9d9399c7eed8c19ec6314d1c9749d95daea..7f686dcdba4d1bab30587eac280cd2ba4f62a53f 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2006-10-23  Aleksey Demakov  <ademakov@gmail.com>
+
+       * jit/jit-rules-x86.ins: JIT_OP_EXPAND_INT and JIT_OP_EXPAND_UINT
+       rules were broken for local byte or short values. Fixed by removing
+       the local pattern altogether as the reg pattern produces the same
+       code but without the bug.
+
 2006-10-18  Aleksey Demakov  <ademakov@gmail.com>
 
        * jit/jit-reg-alloc.c (clobbers_register, bind_value): enable
index f1f97f5c0d5e9e8db4e71f1f930f032ef598f75c..97dd12bf797a6bfb08b257fc5e8b4069d4299498 100644 (file)
@@ -118,16 +118,6 @@ JIT_OP_LOW_WORD:
        }
        
 JIT_OP_EXPAND_INT:
-       [=lreg, imm] -> {
-               x86_mov_reg_imm(inst, $1, $2);
-               x86_mov_reg_reg(inst, %1, $1, 4);
-               x86_shift_reg_imm(inst, X86_SAR, %1, 31);
-       }
-       [=lreg, local] -> {
-               x86_mov_reg_membase(inst, $1, X86_EBP, $2, 4);
-               x86_mov_reg_reg(inst, %1, $1, 4);
-               x86_shift_reg_imm(inst, X86_SAR, %1, 31);
-       }
        [=lreg, reg] -> {
                if($1 != $2)
                {
@@ -138,14 +128,6 @@ JIT_OP_EXPAND_INT:
        }
 
 JIT_OP_EXPAND_UINT:
-       [=lreg, imm] -> {
-               x86_mov_reg_imm(inst, $1, $2);
-               x86_clear_reg(inst, %1);
-       }
-       [=lreg, local] -> {
-               x86_mov_reg_membase(inst, $1, X86_EBP, $2, 4);
-               x86_clear_reg(inst, %1);
-       }
        [=lreg, reg] -> {
                if($1 != $2)
                {