i965: Implement VS MAX in a more obvious way.
authorEric Anholt <eric@anholt.net>
Wed, 28 Apr 2010 19:47:51 +0000 (12:47 -0700)
committerEric Anholt <eric@anholt.net>
Thu, 29 Apr 2010 15:34:14 +0000 (08:34 -0700)
This should be functionally equivalent, with the possible exception of
NaN handling.

src/mesa/drivers/dri/i965/brw_vs_emit.c

index e83c9bf1051b338346526d2d2bf7ab1a4b6ccf87..dc6ab81c4acc3a7967c6d09358b744d290e47ef7 100644 (file)
@@ -49,7 +49,7 @@ brw_vs_arg_can_be_immediate(enum prog_opcode opcode, int arg)
       [OPCODE_DP3] = 2,
       [OPCODE_DP4] = 2,
       [OPCODE_DPH] = 2,
-      [OPCODE_MAX] = 1,
+      [OPCODE_MAX] = 2,
       [OPCODE_MIN] = 2,
       [OPCODE_MUL] = 2,
       [OPCODE_SEQ] = 2,
@@ -490,8 +490,8 @@ static void emit_max( struct brw_compile *p,
                      struct brw_reg arg0,
                      struct brw_reg arg1 )
 {
-   brw_CMP(p, brw_null_reg(), BRW_CONDITIONAL_L, arg0, arg1);
-   brw_SEL(p, dst, arg1, arg0);
+   brw_CMP(p, brw_null_reg(), BRW_CONDITIONAL_GE, arg0, arg1);
+   brw_SEL(p, dst, arg0, arg1);
    brw_set_predicate_control(p, BRW_PREDICATE_NONE);
 }