Lines Matching refs:src2

342 		kill_use(&insn->src2);
499 remove_usage(insn->src2, &insn->src2);
512 insn->src2 = value_pseudo(val);
547 pseudo_t old_b = in->src2;
549 pseudo_t old_2 = out->src2;
552 use_pseudo(in, b, &in->src2);
554 use_pseudo(out, c, &out->src2);
557 remove_usage(old_b, &in->src2);
559 remove_usage(old_2, &out->src2);
629 static pseudo_t eval_op(int op, unsigned size, pseudo_t src1, pseudo_t src2)
633 long long right = src2->value;
782 pseudo_t src2 = and->src2;
786 if (!constant(src2))
788 omask = src2->value;
798 pseudo_t *arg = (ora == or->src1) ? &or->src1 : &or->src2;
804 and->src2 = value_pseudo(nmask);
819 pseudo_t src2 = or->src2;
823 if ((rc = simplify_mask_or_and(insn, mask, src1, src2)))
826 if (src2->type == PSEUDO_REG) {
827 if ((rc = simplify_mask_or_and(insn, mask, src2, src1)))
829 } else if (src2->type == PSEUDO_VAL) {
830 unsigned long long oval = src2->value;
844 return replace_pseudo(or, &or->src2, value_pseudo(nval));
859 int shift = sh->src2->value;
872 if (!constant(sh->src2) || sh->tainted)
889 return eval_op(insn->opcode, size, insn->src1, insn->src2);
907 insn->src2 = value_pseudo(sval);
917 pseudo_t src2;
938 src2 = def->src2;
939 if (src2->type != PSEUDO_VAL)
941 nval = src2->value;
970 if (!constant(def->src2))
973 omask = def->src2->value;
982 def->src2 = insn->src2;
984 insn->src2 = value_pseudo(omask >> value);
994 if (def->src2 != insn->src2)
1006 if (!constant(def->src2))
1009 omask = def->src2->value;
1020 if (def->src2 != insn->src2)
1031 src2 = def->src2;
1032 if (src2->type != PSEUDO_VAL)
1034 nval = src2->value;
1046 insn->src2 = value_pseudo(value);
1053 insn->src2 = value_pseudo(mask);
1068 return replace_with_pseudo(insn, insn->src2);
1117 if (def->src2->type != PSEUDO_VAL)
1119 if (def->src2->value != 1)
1133 use_pseudo(insn, def->src2, &insn->src2);
1164 def->src2 = value_pseudo(bits_mask(osize));
1175 pseudo_t src1, src2;
1272 src2 = insn->src2;
1273 value = src2->value;
1276 if (!constant(def->src2))
1278 bits = def->src2->value;
1337 if (!constant(def->src2))
1339 bits = def->src2->value;
1389 insn->src2 = value_pseudo(zero_extend(value, osize));
1429 def->src2 = value_pseudo(bits);
1496 insn->src2 = value_pseudo(nmask);
1507 pseudo_t src2 = insn->src2;
1512 pseudo_t val = eval_op(OP_ADD, size, def->src1, src2);
1514 use_pseudo(insn, def->src2, &insn->src2);
1524 long long value = insn->src2->value;
1532 return replace_with_pseudo(insn, insn->src2);
1548 insn->src2 = eval_unop(OP_NEG, insn->size, insn->src2);
1573 return replace_with_pseudo(insn, insn->src2);
1597 if (constant(def->src2)) { // C - (y + D) --> eval(C-D) - y
1598 insn->src1 = eval_op(OP_SUB, size, src1, def->src2);
1599 return replace_pseudo(insn, &insn->src2, def->src1);
1606 use_pseudo(insn, def->src2, &insn->src1);
1607 return replace_pseudo(insn, &insn->src2, val);
1621 return replace_with_pseudo(insn, insn->src2);
1633 return replace_with_unop(insn, OP_NEG, insn->src2);
1634 if (insn->src2->type == PSEUDO_REG)
1635 return simplify_const_leftsub(insn, insn->src2->def);
1684 if (constant(insn->src2))
1688 if (constant(insn->src2))
1690 if (insn->src1 == insn->src2)
1740 if (canonical_order(insn->src1, insn->src2))
1743 switch_pseudo(insn, &insn->src1, insn, &insn->src2);
1749 if (canonical_order(insn->src1, insn->src2))
1752 switch_pseudo(insn, &insn->src1, insn, &insn->src2);
1805 if (!simple_pseudo(insn->src2))
1814 if (!simple_pseudo(def->src2))
1816 if (constant(def->src2) && constant(insn->src2)) {
1818 insn->src2 = eval_op(insn->opcode, insn->size, insn->src2, def->src2);
1823 switch_pseudo(def, &def->src1, insn, &insn->src2);
1832 pseudo_t src2 = *p2;
1837 if (defr->src2 == def->src2 && can_move_to(def->src2, defr)) {
1839 swap_insn(insn, defr, def->src1, defr->src1, def->src2);
1844 swap_insn(insn, defr, def->src2, defr->src2, def->src1);
1847 if (defr->src1 == def->src2 && can_move_to(def->src1, defr)) {
1849 swap_insn(insn, defr, def->src1, defr->src2, def->src2);
1856 return replace_binop(insn, OP_SUB, &insn->src1, src2, &insn->src2, def->src);
1859 if (def->src2 == src2) // (x - y) + y --> x
1868 return simplify_add_one_side(insn, &insn->src1, &insn->src2) ||
1869 simplify_add_one_side(insn, &insn->src2, &insn->src1);
1875 pseudo_t src2 = insn->src2;
1880 if (def->src1 == src2) // (x + y) - x --> y
1881 return replace_with_pseudo(insn, def->src2);
1882 if (def->src2 == src2) // (x + y) - y --> x
1887 switch (DEF_OPCODE(def, src2)) {
1890 return replace_with_unop(insn, OP_NEG, def->src2);
1891 if (src1 == def->src2) // x - (y + x) --> -y
1896 return replace_pseudo(insn, &insn->src2, def->src);
1905 pseudo_t src2 = insn->src2;
1913 if ((src = is_same_op(src2, def->opcode, osize))) {
1919 return replace_pseudo(insn, &insn->src2, src);
1938 if (def->src1 == defr->src1 && def->src2 == defr->src2)
1941 if (def->opcode == OP_SET_GE && is_zero(def->src2)) {
1944 if (!is_positive(defr->src2, defr->itype->bit_size))
1948 replace_binop(insn, OP_SET_BE, &insn->src1, defr->src1, &insn->src2, defr->src2);
1955 if (defr->src2 == def->src2 && can_move_to(def->src2, defr)) {
1957 swap_insn(insn, defr, def->src1, defr->src1, def->src2);
1962 swap_insn(insn, defr, def->src2, defr->src2, def->src1);
1965 if (defr->src1 == def->src2 && can_move_to(def->src1, defr)) {
1967 swap_insn(insn, defr, def->src1, defr->src2, def->src2);
1973 if (DEF_OPCODE(defr, *p2) == def->opcode && defr->src2 == def->src2) {
1976 swap_insn(insn, defr, def->src1, defr->src1, def->src2);
1987 return simplify_and_one_side(insn, &insn->src1, &insn->src2) ||
1988 simplify_and_one_side(insn, &insn->src2, &insn->src1);
1999 if (defr->src2 == def->src2 && can_move_to(def->src2, defr)) {
2001 swap_insn(insn, defr, def->src1, defr->src1, def->src2);
2006 swap_insn(insn, defr, def->src2, defr->src2, def->src1);
2009 if (defr->src1 == def->src2 && can_move_to(def->src1, defr)) {
2011 swap_insn(insn, defr, def->src1, defr->src2, def->src2);
2022 if (def->src1 == defr->src1 && def->src2 == defr->src2)
2027 if (DEF_OPCODE(defr, *p2) == def->opcode && defr->src2 == def->src2) {
2030 swap_insn(insn, defr, def->src1, defr->src1, def->src2);
2041 return simplify_ior_one_side(insn, &insn->src1, &insn->src2) ||
2042 simplify_ior_one_side(insn, &insn->src2, &insn->src1);
2053 if (defr->src2 == def->src2 && can_move_to(def->src2, defr)) {
2055 swap_insn(insn, defr, def->src1, defr->src1, def->src2);
2060 swap_insn(insn, defr, def->src2, defr->src2, def->src1);
2063 if (defr->src1 == def->src2 && can_move_to(def->src1, defr)) {
2065 swap_insn(insn, defr, def->src1, defr->src2, def->src2);
2076 if (def->src1 == defr->src1 && def->src2 == defr->src2)
2081 if (DEF_OPCODE(defr, *p2) == def->opcode && defr->src2 == def->src2) {
2084 swap_insn(insn, defr, def->src1, defr->src1, def->src2);
2095 return simplify_xor_one_side(insn, &insn->src1, &insn->src2) ||
2096 simplify_xor_one_side(insn, &insn->src2, &insn->src1);
2141 if (!constant(def->src2))
2144 src = eval_unop(OP_NOT, insn->size, def->src2);
2145 use_pseudo(insn, def->src1, &insn->src2);
2149 insn->src2 = value_pseudo(1);
2157 insn->src2 = eval_unop(OP_NOT, insn->size, def->src1);
2158 return replace_pseudo(insn, &insn->src1, def->src2);
2160 if (!constant(def->src2))
2163 insn->src2 = eval_unop(OP_NOT, insn->size, def->src2);
2170 if (!constant(def->src2))
2173 src = eval_unop(OP_NEG, insn->size, def->src2);
2174 use_pseudo(insn, def->src1, &insn->src2);
2180 insn->src2 = value_pseudo(1);
2184 use_pseudo(insn, def->src1, &insn->src2);
2185 return replace_pseudo(insn, &insn->src1, def->src2);
2208 off = def->src2;
2278 val = def->src2;
2294 insn->src2 = value_pseudo(mask);
2318 insn->src2 = val;
2338 use_pseudo(insn, def->src2, &insn->src2);
2380 if (def2->src2 != value_pseudo(size - def->size))
2384 insn->src2 = def2->src2;
2390 insn->src2 = value_pseudo((1ULL << def->size) - 1);
2428 pseudo_t cond, src1, src2;
2432 src1 = insn->src2;
2433 src2 = insn->src3;
2436 return replace_with_pseudo(insn, cond->value ? src1 : src2);
2437 if (src1 == src2)
2440 if (constant(src1) && constant(src2)) {
2442 long long val2 = src2->value;
2448 src1 = src2;
2453 insn->src2 = src1; /* Zero */
2457 if (cond == src2 && is_zero(src1)) // SEL(x, 0, x) --> 0
2459 if (cond == src1 && is_zero(src2)) // SEL(x, x, 0) --> x
2464 if (src1 == def->src1 && src2 == def->src2)
2465 return replace_with_pseudo(insn, src2); // SEL(x==y,x,y) --> y
2466 if (src2 == def->src1 && src1 == def->src2)
2467 return replace_with_pseudo(insn, src2); // SEL(y==x,x,y) --> y
2470 if (src1 == def->src1 && src2 == def->src2)
2472 if (src2 == def->src1 && src1 == def->src2)
2481 return switch_pseudo(insn, &insn->src2, insn, &insn->src3);
2483 if (one_use(cond) && is_zero(def->src2)) {
2484 if (is_negate_of(src2, src1))
2490 if (constant(def->src2) && constant(def->src3)) {
2499 if ((src1 == def->src2) && (src2 == def->src3))
2503 if (!def->src2->value) {
2504 switch_pseudo(insn, &insn->src2, insn, &insn->src3);
2511 if (is_pow2(def->src2) && is_pow2(src1) && is_zero(src2) && insn->size == def->size && one_use(cond)) {
2512 unsigned s1 = log2_exact(def->src2->value);
2513 unsigned s2 = log2_exact(insn->src2->value);
2522 insn->src2 = value_pseudo(shift);
2530 if ((def->src1 == src2) && can_move_to(cond, def)) {
2532 swap_select(insn, def, cond, def->src2, value_pseudo(0), src2);
2535 if ((def->src2 == src2) && can_move_to(cond, def)) {
2537 swap_select(insn, def, cond, def->src1, value_pseudo(0), src2);
2543 switch (DEF_OPCODE(def, src2)) {
2547 swap_select(insn, def, cond, value_pseudo(0), def->src2, src1);
2550 if ((def->src2 == src1) && can_move_to(cond, def)) {
2575 pseudo_t src1, src2, src3;
2578 src2 = insn->src2;
2580 if (src2->type != PSEUDO_VAL || src3->type != PSEUDO_VAL)
2582 if (is_in_range(src1, src2->value, src3->value)) {
2620 return simplify_cond_branch(insn, def, def->src2);
2621 if (constant(def->src2) && !def->src2->value)
2625 if (constant(def->src2) && constant(def->src3)) {
2626 long long val1 = def->src2->value;
2688 if ((bbt = is_label(def->src2)) && (bbf = is_label(def->src3))) {