- /* Only the last source register can be a constant, so if the MOV in
- * the "then" clause uses a constant, we need to put it in a
- * temporary.
- */
- fs_reg src0(then_mov[i]->src[0]);
- if (src0.file == IMM) {
- src0 = fs_reg(this, glsl_type::float_type);
- src0.type = then_mov[i]->src[0].type;
- mov_imm_inst[i] = MOV(src0, then_mov[i]->src[0]);
- }
-
- sel_inst[i] = SEL(then_mov[i]->dst, src0, else_mov[i]->src[0]);
-
- if (brw->gen == 6 && if_inst->conditional_mod) {
- /* For Sandybridge with IF with embedded comparison */
- sel_inst[i]->predicate = BRW_PREDICATE_NORMAL;
- } else {
- /* Separate CMP and IF instructions */
- sel_inst[i]->predicate = if_inst->predicate;
- sel_inst[i]->predicate_inverse = if_inst->predicate_inverse;
+ /* Check that source types for mov operations match. */
+ if (then_mov[i]->src[0].type != else_mov[i]->src[0].type) {
+ movs = i;
+ break;