Line 1215... |
Line 1215... |
} else {
|
} else {
|
change_insn_type (ii, II_NOP);
|
change_insn_type (ii, II_NOP);
|
}
|
}
|
}
|
}
|
|
|
/* Add sfor instruction at the end, prioritizing flags */
|
/* Add conditional or instruction at the end, prioritizing flags */
|
ii = &n->bb[b1].insn[ob->ninsn - 1];
|
ii = &n->bb[b1].insn[ob->ninsn - 1];
|
change_insn_type (ii, II_SFOR);
|
change_insn_type (ii, II_CMOV);
|
ii->op[0] = FLAG_REG; ii->opt[0] = OPT_REGISTER | OPT_DEST;
|
ii->op[0] = FLAG_REG; ii->opt[0] = OPT_REGISTER | OPT_DEST;
|
if (pb->insn[pb->ninsn - 1].type & IT_BRANCH) {
|
if (pb->insn[pb->ninsn - 1].type & IT_BRANCH) {
|
ii->op[1] = pb->insn[pb->ninsn - 1].op[1];
|
ii->op[1] = pb->insn[pb->ninsn - 1].op[1];
|
ii->opt[1] = pb->insn[pb->ninsn - 1].opt[1];
|
ii->opt[1] = pb->insn[pb->ninsn - 1].opt[1];
|
} else {
|
} else {
|
Line 1233... |
Line 1233... |
ii->opt[2] = n->bb[b1 - 1].insn[pb->ninsn - 1].opt[1];
|
ii->opt[2] = n->bb[b1 - 1].insn[pb->ninsn - 1].opt[1];
|
} else {
|
} else {
|
ii->op[2] = REF (b1 - 1, pb->ninsn - 1);
|
ii->op[2] = REF (b1 - 1, pb->ninsn - 1);
|
ii->opt[2] = OPT_REF;
|
ii->opt[2] = OPT_REF;
|
}
|
}
|
ii->opt[3] = OPT_NONE;
|
/* {z = x || y;} is same as {z = x ? x : y;} */
|
|
ii->op[3] = ii->op[1]; ii->opt[3] = ii->opt[1];
|
ii->type = IT_COND;
|
ii->type = IT_COND;
|
|
|
/* Only one should be in loop, so we remove any INLOOP flags from duplicates */
|
/* Only one should be in loop, so we remove any INLOOP flags from duplicates */
|
n->bb[b1].type &= ~(BB_END | BB_INLOOP);
|
n->bb[b1].type &= ~(BB_END | BB_INLOOP);
|
n->bb[b1].prev[0] = prevart_b;
|
n->bb[b1].prev[0] = prevart_b;
|
Line 1358... |
Line 1359... |
} else {
|
} else {
|
change_insn_type (ii, II_NOP);
|
change_insn_type (ii, II_NOP);
|
}
|
}
|
}
|
}
|
|
|
/* Add sfor instruction at the end, prioritizing flags */
|
/* Add conditional or instruction at the end, prioritizing flags */
|
ii = &n->bb[b1].insn[ob->ninsn - 1];
|
ii = &n->bb[b1].insn[ob->ninsn - 1];
|
change_insn_type (ii, II_SFOR);
|
change_insn_type (ii, II_CMOV);
|
ii->op[0] = FLAG_REG; ii->opt[0] = OPT_REGISTER | OPT_DEST;
|
ii->op[0] = FLAG_REG; ii->opt[0] = OPT_REGISTER | OPT_DEST;
|
if (pb->insn[pb->ninsn - 1].type & IT_BRANCH) {
|
if (pb->insn[pb->ninsn - 1].type & IT_BRANCH) {
|
ii->op[1] = pb->insn[pb->ninsn - 1].op[1];
|
ii->op[1] = pb->insn[pb->ninsn - 1].op[1];
|
ii->opt[1] = pb->insn[pb->ninsn - 1].opt[1];
|
ii->opt[1] = pb->insn[pb->ninsn - 1].opt[1];
|
} else {
|
} else {
|
Line 1376... |
Line 1377... |
ii->opt[2] = n->bb[b1 - 1].insn[pb->ninsn - 1].opt[1];
|
ii->opt[2] = n->bb[b1 - 1].insn[pb->ninsn - 1].opt[1];
|
} else {
|
} else {
|
ii->op[2] = REF (b1 - 1, pb->ninsn - 1);
|
ii->op[2] = REF (b1 - 1, pb->ninsn - 1);
|
ii->opt[2] = OPT_REF;
|
ii->opt[2] = OPT_REF;
|
}
|
}
|
ii->opt[3] = OPT_NONE;
|
/* {z = x || y;} is same as {z = x ? x : y;} */
|
|
ii->op[3] = ii->op[1]; ii->opt[3] = ii->opt[1];
|
ii->type = IT_COND;
|
ii->type = IT_COND;
|
|
|
/* Only one should be in loop, so we remove any INLOOP flags from duplicates */
|
/* Only one should be in loop, so we remove any INLOOP flags from duplicates */
|
n->bb[b1].type &= ~(BB_END | BB_INLOOP);
|
n->bb[b1].type &= ~(BB_END | BB_INLOOP);
|
n->bb[b1].prev[0] = prevart_b;
|
n->bb[b1].prev[0] = prevart_b;
|