}
/* If the "then" value is a gimple value and the "else" value matters,
- create a VEC_COND_EXPR between them, then see if it can be further
+ create a (VEC_)COND_EXPR between them, then see if it can be further
simplified. */
gimple_match_op new_op;
if (res_op->cond.else_value
- && VECTOR_TYPE_P (res_op->type)
&& gimple_simplified_result_is_gimple_val (res_op))
{
- tree len = res_op->cond.len;
- if (!len)
- new_op.set_op (VEC_COND_EXPR, res_op->type,
- res_op->cond.cond, res_op->ops[0],
- res_op->cond.else_value);
+ if (VECTOR_TYPE_P (res_op->type))
+ {
+ tree len = res_op->cond.len;
+ if (!len)
+ new_op.set_op (VEC_COND_EXPR, res_op->type,
+ res_op->cond.cond, res_op->ops[0],
+ res_op->cond.else_value);
+ else
+ new_op.set_op (IFN_VCOND_MASK_LEN, res_op->type,
+ res_op->cond.cond, res_op->ops[0],
+ res_op->cond.else_value,
+ res_op->cond.len, res_op->cond.bias);
+ }
else
- new_op.set_op (IFN_VCOND_MASK_LEN, res_op->type,
+ new_op.set_op (COND_EXPR, res_op->type,
res_op->cond.cond, res_op->ops[0],
- res_op->cond.else_value,
- res_op->cond.len, res_op->cond.bias);
+ res_op->cond.else_value);
*res_op = new_op;
return gimple_resimplify3 (seq, res_op, valueize);
}