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

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

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

revision 1181 by zherczeg, Sat Oct 20 21:33:38 2012 UTC revision 1182 by zherczeg, Sun Oct 28 05:22:32 2012 UTC
# Line 1065  SLJIT_API_FUNC_ATTRIBUTE int sljit_emit_ Line 1065  SLJIT_API_FUNC_ATTRIBUTE int sljit_emit_
1065          compiler->mode32 = op & SLJIT_INT_OP;          compiler->mode32 = op & SLJIT_INT_OP;
1066  #endif  #endif
1067    
1068          if (GET_OPCODE(op) >= SLJIT_MOV && GET_OPCODE(op) <= SLJIT_MOVU_SI) {          if (GET_OPCODE(op) >= SLJIT_MOV && GET_OPCODE(op) <= SLJIT_MOVU_P) {
1069                  op = GET_OPCODE(op);                  op = GET_OPCODE(op);
1070  #if (defined SLJIT_CONFIG_X86_64 && SLJIT_CONFIG_X86_64)  #if (defined SLJIT_CONFIG_X86_64 && SLJIT_CONFIG_X86_64)
1071                  compiler->mode32 = 0;                  compiler->mode32 = 0;
1072  #endif  #endif
1073    
1074                  SLJIT_COMPILE_ASSERT(SLJIT_MOV + 7 == SLJIT_MOVU, movu_offset);                  SLJIT_COMPILE_ASSERT(SLJIT_MOV + 8 == SLJIT_MOVU, movu_offset);
1075                  if (op >= SLJIT_MOVU) {                  if (op >= SLJIT_MOVU) {
1076                          update = 1;                          update = 1;
1077                          op -= 7;                          op -= 8;
1078                  }                  }
1079    
1080                  if (src & SLJIT_IMM) {                  if (src & SLJIT_IMM) {
1081                          switch (op) {                          switch (op) {
1082                          case SLJIT_MOV_UB:                          case SLJIT_MOV_UB:
1083                                  srcw = (unsigned char)srcw;                                  srcw = (sljit_ub)srcw;
1084                                  break;                                  break;
1085                          case SLJIT_MOV_SB:                          case SLJIT_MOV_SB:
1086                                  srcw = (signed char)srcw;                                  srcw = (sljit_b)srcw;
1087                                  break;                                  break;
1088                          case SLJIT_MOV_UH:                          case SLJIT_MOV_UH:
1089                                  srcw = (unsigned short)srcw;                                  srcw = (sljit_uh)srcw;
1090                                  break;                                  break;
1091                          case SLJIT_MOV_SH:                          case SLJIT_MOV_SH:
1092                                  srcw = (signed short)srcw;                                  srcw = (sljit_h)srcw;
1093                                  break;                                  break;
1094  #if (defined SLJIT_CONFIG_X86_64 && SLJIT_CONFIG_X86_64)  #if (defined SLJIT_CONFIG_X86_64 && SLJIT_CONFIG_X86_64)
1095                          case SLJIT_MOV_UI:                          case SLJIT_MOV_UI:
1096                                  srcw = (unsigned int)srcw;                                  srcw = (sljit_ui)srcw;
1097                                  break;                                  break;
1098                          case SLJIT_MOV_SI:                          case SLJIT_MOV_SI:
1099                                  srcw = (signed int)srcw;                                  srcw = (sljit_i)srcw;
1100                                  break;                                  break;
1101  #endif  #endif
1102                          }                          }
# Line 1115  SLJIT_API_FUNC_ATTRIBUTE int sljit_emit_ Line 1115  SLJIT_API_FUNC_ATTRIBUTE int sljit_emit_
1115                  }                  }
1116    
1117  #if (defined SLJIT_CONFIG_X86_32 && SLJIT_CONFIG_X86_32)  #if (defined SLJIT_CONFIG_X86_32 && SLJIT_CONFIG_X86_32)
1118                  if (SLJIT_UNLIKELY(dst_is_ereg) && (!(op == SLJIT_MOV || op == SLJIT_MOV_UI || op == SLJIT_MOV_SI) || (src & SLJIT_MEM))) {                  if (SLJIT_UNLIKELY(dst_is_ereg) && (!(op == SLJIT_MOV || op == SLJIT_MOV_UI || op == SLJIT_MOV_SI || op == SLJIT_MOV_P) || (src & SLJIT_MEM))) {
1119                          SLJIT_ASSERT(dst == SLJIT_MEM1(SLJIT_LOCALS_REG));                          SLJIT_ASSERT(dst == SLJIT_MEM1(SLJIT_LOCALS_REG));
1120                          dst = TMP_REGISTER;                          dst = TMP_REGISTER;
1121                  }                  }
# Line 1123  SLJIT_API_FUNC_ATTRIBUTE int sljit_emit_ Line 1123  SLJIT_API_FUNC_ATTRIBUTE int sljit_emit_
1123    
1124                  switch (op) {                  switch (op) {
1125                  case SLJIT_MOV:                  case SLJIT_MOV:
1126                    case SLJIT_MOV_P:
1127  #if (defined SLJIT_CONFIG_X86_32 && SLJIT_CONFIG_X86_32)  #if (defined SLJIT_CONFIG_X86_32 && SLJIT_CONFIG_X86_32)
1128                  case SLJIT_MOV_UI:                  case SLJIT_MOV_UI:
1129                  case SLJIT_MOV_SI:                  case SLJIT_MOV_SI:
# Line 1130  SLJIT_API_FUNC_ATTRIBUTE int sljit_emit_ Line 1131  SLJIT_API_FUNC_ATTRIBUTE int sljit_emit_
1131                          FAIL_IF(emit_mov(compiler, dst, dstw, src, srcw));                          FAIL_IF(emit_mov(compiler, dst, dstw, src, srcw));
1132                          break;                          break;
1133                  case SLJIT_MOV_UB:                  case SLJIT_MOV_UB:
1134                          FAIL_IF(emit_mov_byte(compiler, 0, dst, dstw, src, (src & SLJIT_IMM) ? (unsigned char)srcw : srcw));                          FAIL_IF(emit_mov_byte(compiler, 0, dst, dstw, src, srcw));
1135                          break;                          break;
1136                  case SLJIT_MOV_SB:                  case SLJIT_MOV_SB:
1137                          FAIL_IF(emit_mov_byte(compiler, 1, dst, dstw, src, (src & SLJIT_IMM) ? (signed char)srcw : srcw));                          FAIL_IF(emit_mov_byte(compiler, 1, dst, dstw, src, srcw));
1138                          break;                          break;
1139                  case SLJIT_MOV_UH:                  case SLJIT_MOV_UH:
1140                          FAIL_IF(emit_mov_half(compiler, 0, dst, dstw, src, (src & SLJIT_IMM) ? (unsigned short)srcw : srcw));                          FAIL_IF(emit_mov_half(compiler, 0, dst, dstw, src, srcw));
1141                          break;                          break;
1142                  case SLJIT_MOV_SH:                  case SLJIT_MOV_SH:
1143                          FAIL_IF(emit_mov_half(compiler, 1, dst, dstw, src, (src & SLJIT_IMM) ? (signed short)srcw : srcw));                          FAIL_IF(emit_mov_half(compiler, 1, dst, dstw, src, srcw));
1144                          break;                          break;
1145  #if (defined SLJIT_CONFIG_X86_64 && SLJIT_CONFIG_X86_64)  #if (defined SLJIT_CONFIG_X86_64 && SLJIT_CONFIG_X86_64)
1146                  case SLJIT_MOV_UI:                  case SLJIT_MOV_UI:
1147                          FAIL_IF(emit_mov_int(compiler, 0, dst, dstw, src, (src & SLJIT_IMM) ? (unsigned int)srcw : srcw));                          FAIL_IF(emit_mov_int(compiler, 0, dst, dstw, src, srcw));
1148                          break;                          break;
1149                  case SLJIT_MOV_SI:                  case SLJIT_MOV_SI:
1150                          FAIL_IF(emit_mov_int(compiler, 1, dst, dstw, src, (src & SLJIT_IMM) ? (signed int)srcw : srcw));                          FAIL_IF(emit_mov_int(compiler, 1, dst, dstw, src, srcw));
1151                          break;                          break;
1152  #endif  #endif
1153                  }                  }

Legend:
Removed from v.1181  
changed lines
  Added in v.1182

  ViewVC Help
Powered by ViewVC 1.1.5