Lines Matching defs:cond
152 assert(br->cond);
167 * br cond, a, b
171 * setcc cond
173 * br cond, a, b
2428 pseudo_t cond, src1, src2;
2431 cond = insn->src1;
2435 if (constant(cond))
2436 return replace_with_pseudo(insn, cond->value ? src1 : src2);
2452 /* insn->src1 is already cond */
2457 if (cond == src2 && is_zero(src1)) // SEL(x, 0, x) --> 0
2459 if (cond == src1 && is_zero(src2)) // SEL(x, x, 0) --> x
2460 return replace_with_pseudo(insn, cond);
2462 switch (DEF_OPCODE(def, cond)) {
2477 if (!one_use(cond))
2483 if (one_use(cond) && is_zero(def->src2)) {
2495 // SEL(SEL(x, C, 0), C, 0) --> SEL(x, C, 0) == cond
2500 return replace_with_pseudo(insn, cond);
2501 return replace_pseudo(insn, &insn->cond, def->cond);
2505 return replace_pseudo(insn, &insn->cond, def->cond);
2511 if (is_pow2(def->src2) && is_pow2(src1) && is_zero(src2) && insn->size == def->size && one_use(cond)) {
2517 return replace_with_pseudo(insn, cond);
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);
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);
2593 replace_pseudo(br, &br->cond, newcond);
2604 pseudo_t cond = insn->cond;
2607 if (constant(cond))
2608 return convert_to_jump(insn, cond->value ? insn->bb_true : insn->bb_false);
2615 if (cond->type == PSEUDO_REG) {
2616 struct instruction *def = cond->def;
2637 return replace_pseudo(insn, &insn->cond, def->src1);
2641 return replace_pseudo(insn, &insn->cond, def->src);
2648 pseudo_t cond = insn->cond;
2652 if (!constant(cond))
2654 val = insn->cond->value;
2692 return replace_pseudo(insn, &insn->src1, def->cond);