Lines Matching refs:argw
840 static sljit_s32 getput_arg_fast(struct sljit_compiler *compiler, sljit_s32 flags, sljit_s32 reg, sljit_s32 arg, sljit_sw argw)
847 if ((arg & REG_MASK) && !(arg & OFFS_REG_MASK) && argw <= 255 && argw >= -256) {
852 argw &= 0x1ff;
854 | (shift << 30) | RT(reg) | RN(arg) | (argw << 12)));
861 argw &= 0x3;
862 if (argw && argw != shift)
869 | RN(arg & REG_MASK) | RM(OFFS_REG(arg)) | (argw ? (1 << 12) : 0)));
874 if (argw >= 0 && (argw >> shift) <= 0xfff && (argw & ((1 << shift) - 1)) == 0) {
879 | RT(reg) | RN(arg) | (argw << (10 - shift))));
883 if (argw > 255 || argw < -256)
890 | RT(reg) | RN(arg) | ((argw & 0x1ff) << 12)));
897 static sljit_s32 can_cache(sljit_s32 arg, sljit_sw argw, sljit_s32 next_arg, sljit_sw next_argw)
904 diff = argw - next_argw;
910 if (argw == next_argw)
913 diff = argw - next_argw;
922 sljit_s32 arg, sljit_sw argw, sljit_s32 next_arg, sljit_sw next_argw)
943 if (argw >= 0 && argw <= 0xffffff) {
944 if ((argw & 0xfff) != 0)
945 FAIL_IF(push_inst(compiler, ADDI | RD(other_r) | RN(other_r) | ((argw & 0xfff) << 10)));
946 if (argw >> 12)
947 FAIL_IF(push_inst(compiler, ADDI | (1 << 22) | RD(other_r) | RN(other_r) | ((argw >> 12) << 10)));
950 else if (argw < 0 && argw >= -0xffffff) {
951 argw = -argw;
952 if ((argw & 0xfff) != 0)
953 FAIL_IF(push_inst(compiler, SUBI | RD(other_r) | RN(other_r) | ((argw & 0xfff) << 10)));
954 if (argw >> 12)
955 FAIL_IF(push_inst(compiler, SUBI | (1 << 22) | RD(other_r) | RN(other_r) | ((argw >> 12) << 10)));
960 if (argw == compiler->cache_argw) {
962 argw = 0;
964 else if (emit_set_delta(compiler, TMP_REG3, TMP_REG3, argw - compiler->cache_argw) != SLJIT_ERR_UNSUPPORTED) {
966 compiler->cache_argw = argw;
968 argw = 0;
972 if (argw) {
973 FAIL_IF(load_immediate(compiler, TMP_REG3, argw));
975 compiler->cache_argw = argw;
977 argw = 0;
990 FAIL_IF(push_inst(compiler, ADD | RD(tmp_r) | RN(arg) | RM(other_r) | ((argw & 0x3) << 10)));
995 diff = argw - compiler->cache_argw;
1005 if (argw >= 0 && argw <= 0xffffff && (argw & ((1 << shift) - 1)) == 0) {
1006 FAIL_IF(push_inst(compiler, ADDI | (1 << 22) | RD(tmp_r) | RN(arg & REG_MASK) | ((argw >> 12) << 10)));
1008 | RT(reg) | RN(tmp_r) | ((argw & 0xfff) << (10 - shift)));
1011 diff = argw - next_argw;
1016 if (compiler->cache_argw == argw)
1018 if (emit_set_delta(compiler, TMP_REG3, TMP_REG3, argw - compiler->cache_argw) != SLJIT_ERR_UNSUPPORTED) {
1020 compiler->cache_argw = argw;
1025 compiler->cache_argw = argw;
1026 if (next_arg && emit_set_delta(compiler, TMP_REG3, arg, argw) != SLJIT_ERR_UNSUPPORTED) {
1032 FAIL_IF(load_immediate(compiler, TMP_REG3, argw));
1047 static SLJIT_INLINE sljit_s32 emit_op_mem(struct sljit_compiler *compiler, sljit_s32 flags, sljit_s32 reg, sljit_s32 arg, sljit_sw argw)
1049 argw))
1053 return getput_arg(compiler, flags, reg, arg, argw, 0, 0);
1558 static sljit_s32 emit_fop_mem(struct sljit_compiler *compiler, sljit_s32 flags, sljit_s32 reg, sljit_s32 arg, sljit_sw argw)
1571 argw &= 3;
1572 if (!argw || argw == shift)
1574 | RN(arg & REG_MASK) | RM(OFFS_REG(arg)) | (argw ? (1 << 12) : 0));
1577 FAIL_IF(push_inst(compiler, ADD | RD(TMP_REG1) | RN(arg) | RM(other_r) | (argw << 10)));
1579 argw = 0;
1583 if (arg && argwargw >> shift) <= 0xfff) && (argw & ((1 << shift) - 1)) == 0)
1584 return push_inst(compiler, STR_FI | ins_bits | VT(reg) | RN(arg) | (argw << (10 - shift)));
1586 if (arg && argw <= 255 && argw >= -256)
1587 return push_inst(compiler, STUR_FI | ins_bits | VT(reg) | RN(arg) | ((argw & 0x1ff) << 12));
1590 if (compiler->cache_arg == SLJIT_MEM && argw != compiler->cache_argw) {
1591 diff = argw - compiler->cache_argw;
1594 if (emit_set_delta(compiler, TMP_REG3, TMP_REG3, argw - compiler->cache_argw) != SLJIT_ERR_UNSUPPORTED) {
1596 compiler->cache_argw = argw;
1600 if (compiler->cache_arg != SLJIT_MEM || argw != compiler->cache_argw) {
1602 compiler->cache_argw = argw;
1603 FAIL_IF(load_immediate(compiler, TMP_REG3, argw));