Lines Matching refs:src1
352 kill_use(&insn->src1);
498 replace_pseudo(insn, &insn->src1, src);
546 pseudo_t old_a = in->src1;
548 pseudo_t old_1 = out->src1;
551 use_pseudo(in, a, &in->src1);
553 use_pseudo(out, in->target, &out->src1);
556 remove_usage(old_a, &in->src1);
558 remove_usage(old_1, &out->src1);
629 static pseudo_t eval_op(int op, unsigned size, pseudo_t src1, pseudo_t src2)
632 long long left = src1->value;
792 return replace_pseudo(insn, &insn->src1, orb);
794 if (!one_use(insn->src1))
797 struct instruction *or = insn->src1->def;
798 pseudo_t *arg = (ora == or->src1) ? &or->src1 : &or->src2;
800 return replace_pseudo(or, arg, and->src1);
818 pseudo_t src1 = or->src1;
822 if (src1->type == PSEUDO_REG) {
823 if ((rc = simplify_mask_or_and(insn, mask, src1, src2)))
827 if ((rc = simplify_mask_or_and(insn, mask, src2, src1)))
836 return replace_pseudo(insn, &insn->src1, src1);
840 return replace_pseudo(insn, &insn->src1, value_pseudo(mask));
874 switch (DEF_OPCODE(inner, sh->src1)) {
889 return eval_op(insn->opcode, size, insn->src1, insn->src2);
978 return replace_pseudo(insn, &insn->src1, def->src1);
1014 return replace_pseudo(insn, &insn->src1, def->src1);
1047 return replace_pseudo(insn, &insn->src1, pseudo->def->src1);
1054 return replace_pseudo(insn, &insn->src1, def->src1);
1063 return replace_with_pseudo(insn, insn->src1);
1086 pseudo_t old = insn->src1;
1132 use_pseudo(insn, def->src1, &insn->src1);
1134 remove_usage(old, &insn->src1);
1149 return replace_pseudo(insn, &insn->src1, def->src);
1175 pseudo_t src1, src2;
1271 src1 = insn->src1;
1274 switch (DEF_OPCODE(def, src1)) {
1390 return replace_pseudo(insn, &insn->src1, def->src);
1397 return replace_pseudo(insn, &insn->src1, def->src);
1404 return replace_pseudo(insn, &insn->src1, def->src);
1443 return replace_pseudo(insn, &insn->src1, def->src);
1470 pseudo_t old = insn->src1;
1511 if (constant(def->src1)) { // (C - y) + D --> eval(C+D) - y
1512 pseudo_t val = eval_op(OP_ADD, size, def->src1, src2);
1515 return replace_pseudo(insn, &insn->src1, val);
1543 return replace_with_pseudo(insn, insn->src1);
1553 return replace_with_pseudo(insn, insn->src1);
1554 if (insn->src1->type == PSEUDO_REG) // (x # y) + z
1555 changed |= simplify_const_rightadd(insn->src1->def, insn);
1560 return simplify_shift(insn, insn->src1, value);
1575 return replace_with_pseudo(insn, insn->src1);
1593 pseudo_t src1 = insn->src1;
1598 insn->src1 = eval_op(OP_SUB, size, src1, def->src2);
1599 return replace_pseudo(insn, &insn->src2, def->src1);
1603 if (constant(def->src1)) { // C - (D - z) --> z + eval(C-D)
1604 pseudo_t val = eval_op(OP_SUB, size, src1, def->src1);
1606 use_pseudo(insn, def->src2, &insn->src1);
1616 long long value = insn->src1->value;
1629 return replace_with_pseudo(insn, insn->src1);
1683 if (constant(insn->src1)) {
1690 if (insn->src1 == insn->src2)
1691 return simplify_binop_same_args(insn, insn->src1);
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);
1803 pseudo_t pseudo = insn->src1;
1819 return replace_pseudo(insn, &insn->src1, def->src1);
1823 switch_pseudo(def, &def->src1, insn, &insn->src2);
1831 pseudo_t src1 = *p1;
1834 switch (DEF_OPCODE(def, src1)) {
1839 swap_insn(insn, defr, def->src1, defr->src1, def->src2);
1842 if (defr->src1 == def->src1 && can_move_to(def->src1, defr)) {
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);
1860 return replace_with_pseudo(insn, def->src1);
1868 return simplify_add_one_side(insn, &insn->src1, &insn->src2) ||
1869 simplify_add_one_side(insn, &insn->src2, &insn->src1);
1874 pseudo_t src1 = insn->src1;
1878 switch (DEF_OPCODE(def, src1)) {
1880 if (def->src1 == src2) // (x + y) - x --> y
1883 return replace_with_pseudo(insn, def->src1);
1889 if (src1 == def->src1) // x - (x + z) --> -z
1891 if (src1 == def->src2) // x - (y + x) --> -y
1892 return replace_with_unop(insn, OP_NEG, def->src1);
1904 pseudo_t src1 = insn->src1;
1910 switch (DEF_OPCODE(def, src1)) {
1918 replace_pseudo(insn, &insn->src1, def->src);
1929 pseudo_t src1 = *p1;
1931 switch (DEF_OPCODE(def, src1)) {
1938 if (def->src1 == defr->src1 && def->src2 == defr->src2)
1948 replace_binop(insn, OP_SET_BE, &insn->src1, defr->src1, &insn->src2, defr->src2);
1957 swap_insn(insn, defr, def->src1, defr->src1, def->src2);
1960 if (defr->src1 == def->src1 && can_move_to(def->src1, defr)) {
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);
1974 if (can_move_to(def->src1, defr)) {
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);
1994 pseudo_t src1 = *p1;
1996 switch (DEF_OPCODE(def, src1)) {
2001 swap_insn(insn, defr, def->src1, defr->src1, def->src2);
2004 if (defr->src1 == def->src1 && can_move_to(def->src1, defr)) {
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)
2028 if (can_move_to(def->src1, defr)) {
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);
2048 pseudo_t src1 = *p1;
2050 switch (DEF_OPCODE(def, src1)) {
2055 swap_insn(insn, defr, def->src1, defr->src1, def->src2);
2058 if (defr->src1 == def->src1 && can_move_to(def->src1, defr)) {
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)
2082 if (can_move_to(def->src1, defr)) {
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);
2101 long long val = insn->src1->value;
2145 use_pseudo(insn, def->src1, &insn->src2);
2146 return replace_pseudo(insn, &insn->src1, src);
2150 return replace_pseudo(insn, &insn->src1, def->src);
2154 if (!constant(def->src1))
2157 insn->src2 = eval_unop(OP_NOT, insn->size, def->src1);
2158 return replace_pseudo(insn, &insn->src1, def->src2);
2164 return replace_pseudo(insn, &insn->src1, def->src1);
2174 use_pseudo(insn, def->src1, &insn->src2);
2175 return replace_pseudo(insn, &insn->src1, src);
2181 return replace_pseudo(insn, &insn->src1, def->src);
2184 use_pseudo(insn, def->src1, &insn->src2);
2185 return replace_pseudo(insn, &insn->src1, def->src2);
2207 new = def->src1;
2212 off = def->src1;
2339 return replace_pseudo(insn, &insn->src1, def->src1);
2374 return replace_pseudo(insn, &insn->src1, def->src);
2385 return replace_pseudo(insn, &insn->src1, def2->src1);
2391 return replace_pseudo(insn, &insn->src1, def->src);
2428 pseudo_t cond, src1, src2;
2431 cond = insn->src1;
2432 src1 = insn->src2;
2436 return replace_with_pseudo(insn, cond->value ? src1 : src2);
2437 if (src1 == src2)
2438 return replace_with_pseudo(insn, src1);
2440 if (constant(src1) && constant(src2)) {
2441 long long val1 = src1->value;
2448 src1 = src2;
2452 /* insn->src1 is already cond */
2453 insn->src2 = src1; /* Zero */
2457 if (cond == src2 && is_zero(src1)) // SEL(x, 0, x) --> 0
2458 return replace_with_pseudo(insn, src1);
2459 if (cond == src1 && is_zero(src2)) // SEL(x, x, 0) --> x
2464 if (src1 == def->src1 && src2 == def->src2)
2466 if (src2 == def->src1 && src1 == def->src2)
2470 if (src1 == def->src1 && src2 == def->src2)
2471 return replace_with_pseudo(insn, src1); // SEL(x!=y,x,y) --> x
2472 if (src2 == def->src1 && src1 == def->src2)
2473 return replace_with_pseudo(insn, src1); // SEL(y!=x,x,y) --> x
2484 if (is_negate_of(src2, src1))
2499 if ((src1 == def->src2) && (src2 == def->src3))
2508 return replace_with_pseudo(insn, src1);
2511 if (is_pow2(def->src2) && is_pow2(src1) && is_zero(src2) && insn->size == def->size && one_use(cond)) {
2528 switch (DEF_OPCODE(def, src1)) {
2530 if ((def->src1 == src2) && can_move_to(cond, def)) {
2537 swap_select(insn, def, cond, def->src1, value_pseudo(0), src2);
2545 if ((def->src1 == src1) && can_move_to(cond, def)) {
2547 swap_select(insn, def, cond, value_pseudo(0), def->src2, src1);
2550 if ((def->src2 == src1) && can_move_to(cond, def)) {
2552 swap_select(insn, def, cond, value_pseudo(0), def->src1, src1);
2575 pseudo_t src1, src2, src3;
2577 src1 = insn->src1;
2582 if (is_in_range(src1, src2->value, src3->value)) {
2619 if (constant(def->src1) && !def->src1->value)
2622 return simplify_cond_branch(insn, def, def->src1);
2637 return replace_pseudo(insn, &insn->cond, def->src1);
2692 return replace_pseudo(insn, &insn->src1, def->cond);