Lines Matching defs:argw
703 static sljit_s32 getput_arg_fast(struct sljit_compiler *compiler, sljit_s32 flags, sljit_s32 reg_ar, sljit_s32 arg, sljit_sw argw)
707 if ((!(flags & WRITE_BACK) || !(arg & REG_MASK)) && !(arg & OFFS_REG_MASK) && argw <= SIMM_MAX && argw >= SIMM_MIN) {
712 | TA(reg_ar) | IMM(argw), ((flags & MEM_MASK) <= GPR_REG && (flags & LOAD_DATA)) ? reg_ar : MOVABLE_INS));
721 static sljit_s32 can_cache(sljit_s32 arg, sljit_sw argw, sljit_s32 next_arg, sljit_sw next_argw)
727 argw &= 0x3;
729 if (argw && argw == next_argw && (arg == next_arg || (arg & OFFS_REG_MASK) == (next_arg & OFFS_REG_MASK)))
735 if (((next_argw - argw) <= SIMM_MAX && (next_argw - argw) >= SIMM_MIN))
744 static sljit_s32 getput_arg(struct sljit_compiler *compiler, sljit_s32 flags, sljit_s32 reg_ar, sljit_s32 arg, sljit_sw argw, sljit_s32 next_arg, sljit_sw next_argw)
765 SLJIT_ASSERT(argw == 0);
770 argw &= 0x3;
773 if (argw == compiler->cache_argw) {
778 if (arg == next_arg && argw == (next_argw & 0x3)) {
780 compiler->cache_argw = argw;
789 if (SLJIT_UNLIKELY(argw)) {
791 compiler->cache_argw = argw;
792 FAIL_IF(push_inst(compiler, SLL_W | T(OFFS_REG(arg)) | D(TMP_REG3) | SH_IMM(argw), DR(TMP_REG3)));
795 if (arg == next_arg && argw == (next_argw & 0x3)) {
797 compiler->cache_argw = argw;
798 FAIL_IF(push_inst(compiler, ADDU_W | S(base) | T(!argw ? OFFS_REG(arg) : TMP_REG3) | D(TMP_REG3), DR(TMP_REG3)));
802 FAIL_IF(push_inst(compiler, ADDU_W | S(base) | T(!argw ? OFFS_REG(arg) : TMP_REG3) | DA(tmp_ar), tmp_ar));
807 if (argw <= SIMM_MAX && argw >= SIMM_MIN) {
808 if (argw)
809 FAIL_IF(push_inst(compiler, ADDIU_W | S(base) | T(base) | IMM(argw), DR(base)));
812 if (compiler->cache_arg == SLJIT_MEM && argw - compiler->cache_argw <= SIMM_MAX && argw - compiler->cache_argw >= SIMM_MIN) {
813 if (argw != compiler->cache_argw) {
814 FAIL_IF(push_inst(compiler, ADDIU_W | S(TMP_REG3) | T(TMP_REG3) | IMM(argw - compiler->cache_argw), DR(TMP_REG3)));
815 compiler->cache_argw = argw;
821 compiler->cache_argw = argw;
822 FAIL_IF(load_immediate(compiler, DR(TMP_REG3), argw));
829 if (compiler->cache_arg == arg && argw - compiler->cache_argw <= SIMM_MAX && argw - compiler->cache_argw >= SIMM_MIN) {
830 if (argw != compiler->cache_argw) {
831 FAIL_IF(push_inst(compiler, ADDIU_W | S(TMP_REG3) | T(TMP_REG3) | IMM(argw - compiler->cache_argw), DR(TMP_REG3)));
832 compiler->cache_argw = argw;
837 if (compiler->cache_arg == SLJIT_MEM && argw - compiler->cache_argw <= SIMM_MAX && argw - compiler->cache_argw >= SIMM_MIN) {
838 if (argw != compiler->cache_argw)
839 FAIL_IF(push_inst(compiler, ADDIU_W | S(TMP_REG3) | T(TMP_REG3) | IMM(argw - compiler->cache_argw), DR(TMP_REG3)));
843 FAIL_IF(load_immediate(compiler, DR(TMP_REG3), argw));
845 compiler->cache_argw = argw;
850 if (arg == next_arg && next_argw - argw <= SIMM_MAX && next_argw - argw >= SIMM_MIN) {
860 static SLJIT_INLINE sljit_s32 emit_op_mem(struct sljit_compiler *compiler, sljit_s32 flags, sljit_s32 reg_ar, sljit_s32 arg, sljit_sw argw)
862 if (getput_arg_fast(compiler, flags, reg_ar, arg, argw))
866 return getput_arg(compiler, flags, reg_ar, arg, argw, 0, 0);