/[pcre]/code/trunk/sljit/sljitNativeX86_64.c
ViewVC logotype

Diff of /code/trunk/sljit/sljitNativeX86_64.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 860 by zherczeg, Mon Jan 9 20:12:58 2012 UTC revision 867 by zherczeg, Fri Jan 13 13:34:07 2012 UTC
# Line 802  static int emit_mov_int(struct sljit_com Line 802  static int emit_mov_int(struct sljit_com
802                  return SLJIT_SUCCESS; /* Empty instruction. */                  return SLJIT_SUCCESS; /* Empty instruction. */
803    
804          if (src & SLJIT_IMM) {          if (src & SLJIT_IMM) {
805                  if (dst >= SLJIT_TEMPORARY_REG1 && dst <= SLJIT_NO_REGISTERS)                  if (dst >= SLJIT_TEMPORARY_REG1 && dst <= SLJIT_NO_REGISTERS) {
806                            if (sign || ((sljit_uw)srcw <= 0x7fffffff)) {
807                                    code = emit_x86_instruction(compiler, 1, SLJIT_IMM, (sljit_w)(sljit_i)srcw, dst, dstw);
808                                    FAIL_IF(!code);
809                                    *code = 0xc7;
810                                    return SLJIT_SUCCESS;
811                            }
812                          return emit_load_imm64(compiler, dst, srcw);                          return emit_load_imm64(compiler, dst, srcw);
813                    }
814                  compiler->mode32 = 1;                  compiler->mode32 = 1;
815                  code = emit_x86_instruction(compiler, 1, SLJIT_IMM, (sljit_w)(int)srcw, dst, dstw);                  code = emit_x86_instruction(compiler, 1, SLJIT_IMM, (sljit_w)(sljit_i)srcw, dst, dstw);
816                  FAIL_IF(!code);                  FAIL_IF(!code);
817                  *code = 0xc7;                  *code = 0xc7;
818                  compiler->mode32 = 0;                  compiler->mode32 = 0;
# Line 821  static int emit_mov_int(struct sljit_com Line 828  static int emit_mov_int(struct sljit_com
828                          code = emit_x86_instruction(compiler, 1, dst_r, 0, src, srcw);                          code = emit_x86_instruction(compiler, 1, dst_r, 0, src, srcw);
829                          FAIL_IF(!code);                          FAIL_IF(!code);
830                          *code++ = 0x63;                          *code++ = 0x63;
                 } else if (dst_r == src) {  
                         compiler->mode32 = 0;  
                         code = emit_x86_instruction(compiler, 1 | EX86_SHIFT_INS, SLJIT_IMM, 32, dst, 0);  
                         FAIL_IF(!code);  
                         *code |= 0x4 << 3;  
                         code = emit_x86_instruction(compiler, 1 | EX86_SHIFT_INS, SLJIT_IMM, 32, dst, 0);  
                         FAIL_IF(!code);  
                         *code |= 0x7 << 3;  
831                  } else {                  } else {
                         /* xor reg, reg. */  
                         code = emit_x86_instruction(compiler, 1, dst_r, 0, dst_r, 0);  
                         FAIL_IF(!code);  
                         *code++ = 0x33;  
832                          compiler->mode32 = 1;                          compiler->mode32 = 1;
833                          code = emit_x86_instruction(compiler, 1, dst_r, 0, src, srcw);                          FAIL_IF(emit_mov(compiler, dst_r, 0, src, srcw));
                         FAIL_IF(!code);  
                         *code++ = 0x8b;  
834                          compiler->mode32 = 0;                          compiler->mode32 = 0;
835                  }                  }
836          }          }

Legend:
Removed from v.860  
changed lines
  Added in v.867

  ViewVC Help
Powered by ViewVC 1.1.5