"Fossies" - the Fresh Open Source Software Archive  

Source code changes of the file "sljit/sljitNativeMIPS_32.c" between
pcre-8.43.tar.bz2 and pcre-8.44.tar.bz2

About: The PCRE library implements Perl compatible regular expression pattern matching.

sljitNativeMIPS_32.c  (pcre-8.43.tar.bz2):sljitNativeMIPS_32.c  (pcre-8.44.tar.bz2)
skipping to change at line 371 skipping to change at line 371
if (is_carry) if (is_carry)
FAIL_IF(push_inst(compiler, SLTU | S(dst) | TA(OTHER_FLAG ) | D(TMP_REG1), DR(TMP_REG1))); FAIL_IF(push_inst(compiler, SLTU | S(dst) | TA(OTHER_FLAG ) | D(TMP_REG1), DR(TMP_REG1)));
FAIL_IF(push_inst(compiler, SUBU | S(dst) | TA(OTHER_FLAG) | D(ds t), DR(dst))); FAIL_IF(push_inst(compiler, SUBU | S(dst) | TA(OTHER_FLAG) | D(ds t), DR(dst)));
return (is_carry) ? push_inst(compiler, OR | SA(EQUAL_FLAG) | T(T MP_REG1) | DA(OTHER_FLAG), OTHER_FLAG) : SLJIT_SUCCESS; return (is_carry) ? push_inst(compiler, OR | SA(EQUAL_FLAG) | T(T MP_REG1) | DA(OTHER_FLAG), OTHER_FLAG) : SLJIT_SUCCESS;
case SLJIT_MUL: case SLJIT_MUL:
SLJIT_ASSERT(!(flags & SRC2_IMM)); SLJIT_ASSERT(!(flags & SRC2_IMM));
if (GET_FLAG_TYPE(op) != SLJIT_MUL_OVERFLOW) { if (GET_FLAG_TYPE(op) != SLJIT_MUL_OVERFLOW) {
#if (defined SLJIT_MIPS_R1 && SLJIT_MIPS_R1) #if (defined SLJIT_MIPS_R1 && SLJIT_MIPS_R1) || (defined SLJIT_MIPS_R6 && SLJIT_ MIPS_R6)
return push_inst(compiler, MUL | S(src1) | T(src2) | D(ds t), DR(dst)); return push_inst(compiler, MUL | S(src1) | T(src2) | D(ds t), DR(dst));
#else #else /* !SLJIT_MIPS_R1 && !SLJIT_MIPS_R6 */
FAIL_IF(push_inst(compiler, MULT | S(src1) | T(src2), MOV ABLE_INS)); FAIL_IF(push_inst(compiler, MULT | S(src1) | T(src2), MOV ABLE_INS));
return push_inst(compiler, MFLO | D(dst), DR(dst)); return push_inst(compiler, MFLO | D(dst), DR(dst));
#endif #endif /* SLJIT_MIPS_R1 || SLJIT_MIPS_R6 */
} }
#if (defined SLJIT_MIPS_R6 && SLJIT_MIPS_R6)
FAIL_IF(push_inst(compiler, MUL | S(src1) | T(src2) | D(dst), DR(
dst)));
FAIL_IF(push_inst(compiler, MUH | S(src1) | T(src2) | DA(EQUAL_FL
AG), EQUAL_FLAG));
#else /* !SLJIT_MIPS_R6 */
FAIL_IF(push_inst(compiler, MULT | S(src1) | T(src2), MOVABLE_INS )); FAIL_IF(push_inst(compiler, MULT | S(src1) | T(src2), MOVABLE_INS ));
FAIL_IF(push_inst(compiler, MFHI | DA(EQUAL_FLAG), EQUAL_FLAG)); FAIL_IF(push_inst(compiler, MFHI | DA(EQUAL_FLAG), EQUAL_FLAG));
FAIL_IF(push_inst(compiler, MFLO | D(dst), DR(dst))); FAIL_IF(push_inst(compiler, MFLO | D(dst), DR(dst)));
#endif /* SLJIT_MIPS_R6 */
FAIL_IF(push_inst(compiler, SRA | T(dst) | DA(OTHER_FLAG) | SH_IM M(31), OTHER_FLAG)); FAIL_IF(push_inst(compiler, SRA | T(dst) | DA(OTHER_FLAG) | SH_IM M(31), OTHER_FLAG));
return push_inst(compiler, SUBU | SA(EQUAL_FLAG) | TA(OTHER_FLAG) | DA(OTHER_FLAG), OTHER_FLAG); return push_inst(compiler, SUBU | SA(EQUAL_FLAG) | TA(OTHER_FLAG) | DA(OTHER_FLAG), OTHER_FLAG);
case SLJIT_AND: case SLJIT_AND:
EMIT_LOGICAL(ANDI, AND); EMIT_LOGICAL(ANDI, AND);
return SLJIT_SUCCESS; return SLJIT_SUCCESS;
case SLJIT_OR: case SLJIT_OR:
EMIT_LOGICAL(ORI, OR); EMIT_LOGICAL(ORI, OR);
return SLJIT_SUCCESS; return SLJIT_SUCCESS;
skipping to change at line 423 skipping to change at line 428
static SLJIT_INLINE sljit_s32 emit_const(struct sljit_compiler *compiler, sljit_ s32 dst, sljit_sw init_value) static SLJIT_INLINE sljit_s32 emit_const(struct sljit_compiler *compiler, sljit_ s32 dst, sljit_sw init_value)
{ {
FAIL_IF(push_inst(compiler, LUI | T(dst) | IMM(init_value >> 16), DR(dst) )); FAIL_IF(push_inst(compiler, LUI | T(dst) | IMM(init_value >> 16), DR(dst) ));
return push_inst(compiler, ORI | S(dst) | T(dst) | IMM(init_value), DR(ds t)); return push_inst(compiler, ORI | S(dst) | T(dst) | IMM(init_value), DR(ds t));
} }
SLJIT_API_FUNC_ATTRIBUTE void sljit_set_jump_addr(sljit_uw addr, sljit_uw new_ta rget, sljit_sw executable_offset) SLJIT_API_FUNC_ATTRIBUTE void sljit_set_jump_addr(sljit_uw addr, sljit_uw new_ta rget, sljit_sw executable_offset)
{ {
sljit_ins *inst = (sljit_ins *)addr; sljit_ins *inst = (sljit_ins *)addr;
SLJIT_ASSERT((inst[0] & 0xffe00000) == LUI && (inst[1] & 0xfc000000) == O RI);
inst[0] = (inst[0] & 0xffff0000) | ((new_target >> 16) & 0xffff); inst[0] = (inst[0] & 0xffff0000) | ((new_target >> 16) & 0xffff);
inst[1] = (inst[1] & 0xffff0000) | (new_target & 0xffff); inst[1] = (inst[1] & 0xffff0000) | (new_target & 0xffff);
inst = (sljit_ins *)SLJIT_ADD_EXEC_OFFSET(inst, executable_offset); inst = (sljit_ins *)SLJIT_ADD_EXEC_OFFSET(inst, executable_offset);
SLJIT_CACHE_FLUSH(inst, inst + 2); SLJIT_CACHE_FLUSH(inst, inst + 2);
} }
SLJIT_API_FUNC_ATTRIBUTE void sljit_set_const(sljit_uw addr, sljit_sw new_consta nt, sljit_sw executable_offset) SLJIT_API_FUNC_ATTRIBUTE void sljit_set_const(sljit_uw addr, sljit_sw new_consta nt, sljit_sw executable_offset)
{ {
sljit_ins *inst = (sljit_ins *)addr; sljit_ins *inst = (sljit_ins *)addr;
SLJIT_ASSERT((inst[0] & 0xffe00000) == LUI && (inst[1] & 0xfc000000) == O RI);
inst[0] = (inst[0] & 0xffff0000) | ((new_constant >> 16) & 0xffff); inst[0] = (inst[0] & 0xffff0000) | ((new_constant >> 16) & 0xffff);
inst[1] = (inst[1] & 0xffff0000) | (new_constant & 0xffff); inst[1] = (inst[1] & 0xffff0000) | (new_constant & 0xffff);
inst = (sljit_ins *)SLJIT_ADD_EXEC_OFFSET(inst, executable_offset); inst = (sljit_ins *)SLJIT_ADD_EXEC_OFFSET(inst, executable_offset);
SLJIT_CACHE_FLUSH(inst, inst + 2); SLJIT_CACHE_FLUSH(inst, inst + 2);
} }
static sljit_s32 call_with_args(struct sljit_compiler *compiler, sljit_s32 arg_t ypes, sljit_ins *ins_ptr) static sljit_s32 call_with_args(struct sljit_compiler *compiler, sljit_s32 arg_t ypes, sljit_ins *ins_ptr)
{ {
sljit_s32 stack_offset = 0; sljit_s32 stack_offset = 0;
sljit_s32 arg_count = 0; sljit_s32 arg_count = 0;
 End of changes. 7 change blocks. 
3 lines changed or deleted 12 lines changed or added

Home  |  About  |  Features  |  All  |  Newest  |  Dox  |  Diffs  |  RSS Feeds  |  Screenshots  |  Comments  |  Imprint  |  Privacy  |  HTTP(S)