i965: Use the SEL instruction to implement MIN and MAX.
Saves an instruction over doing conditional moves.
This commit is contained in:
parent
13a13fcb80
commit
ba541b0769
|
@ -633,14 +633,10 @@ void emit_max(struct brw_compile *p,
|
|||
|
||||
for (i = 0; i < 4; i++) {
|
||||
if (mask & (1<<i)) {
|
||||
brw_set_saturate(p, (mask & SATURATE) ? 1 : 0);
|
||||
brw_MOV(p, dst[i], arg0[i]);
|
||||
brw_set_saturate(p, 0);
|
||||
|
||||
brw_CMP(p, brw_null_reg(), BRW_CONDITIONAL_L, arg0[i], arg1[i]);
|
||||
brw_CMP(p, brw_null_reg(), BRW_CONDITIONAL_GE, arg0[i], arg1[i]);
|
||||
|
||||
brw_set_saturate(p, (mask & SATURATE) ? 1 : 0);
|
||||
brw_MOV(p, dst[i], arg1[i]);
|
||||
brw_SEL(p, dst[i], arg0[i], arg1[i]);
|
||||
brw_set_saturate(p, 0);
|
||||
brw_set_predicate_control_flag_value(p, 0xff);
|
||||
}
|
||||
|
@ -657,14 +653,10 @@ void emit_min(struct brw_compile *p,
|
|||
|
||||
for (i = 0; i < 4; i++) {
|
||||
if (mask & (1<<i)) {
|
||||
brw_set_saturate(p, (mask & SATURATE) ? 1 : 0);
|
||||
brw_MOV(p, dst[i], arg1[i]);
|
||||
brw_set_saturate(p, 0);
|
||||
|
||||
brw_CMP(p, brw_null_reg(), BRW_CONDITIONAL_L, arg0[i], arg1[i]);
|
||||
|
||||
brw_set_saturate(p, (mask & SATURATE) ? 1 : 0);
|
||||
brw_MOV(p, dst[i], arg0[i]);
|
||||
brw_SEL(p, dst[i], arg0[i], arg1[i]);
|
||||
brw_set_saturate(p, 0);
|
||||
brw_set_predicate_control_flag_value(p, 0xff);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue