i965/blorp: wrap emission of if-equal-assignment
authorTopi Pohjolainen <topi.pohjolainen@intel.com>
Sat, 30 Nov 2013 15:11:41 +0000 (17:11 +0200)
committerTopi Pohjolainen <topi.pohjolainen@intel.com>
Thu, 23 Jan 2014 06:45:28 +0000 (08:45 +0200)
Signed-off-by: Topi Pohjolainen <topi.pohjolainen@intel.com>
Reviewed-by: Paul Berry <stereotype441@gmail.com>
src/mesa/drivers/dri/i965/brw_blorp_blit.cpp
src/mesa/drivers/dri/i965/brw_blorp_blit_eu.h

index 356bb9207c67de7c076b30231ca79d805bbac3f4..da10cf0ecbd216b2465c496e09fd3f45335c40c8 100644 (file)
@@ -1682,34 +1682,16 @@ brw_blorp_blit_program::manual_blend_bilinear(unsigned num_samples)
          brw_IF(&func, BRW_EXECUTE_16);
          {
             brw_MOV(&func, vec16(t2), brw_imm_d(5));
-            brw_CMP(&func, vec16(brw_null_reg()), BRW_CONDITIONAL_EQ,
-                    S, brw_imm_d(1));
-            brw_MOV(&func, vec16(t2), brw_imm_d(2));
-            brw_set_predicate_control(&func, BRW_PREDICATE_NONE);
-            brw_CMP(&func, vec16(brw_null_reg()), BRW_CONDITIONAL_EQ,
-                    S, brw_imm_d(2));
-            brw_MOV(&func, vec16(t2), brw_imm_d(4));
-            brw_set_predicate_control(&func, BRW_PREDICATE_NONE);
-            brw_CMP(&func, vec16(brw_null_reg()), BRW_CONDITIONAL_EQ,
-                    S, brw_imm_d(3));
-            brw_MOV(&func, vec16(t2), brw_imm_d(6));
-            brw_set_predicate_control(&func, BRW_PREDICATE_NONE);
+            emit_if_eq_mov(S, 1, vec16(t2), 2);
+            emit_if_eq_mov(S, 2, vec16(t2), 4);
+            emit_if_eq_mov(S, 3, vec16(t2), 6);
          }
          brw_ELSE(&func);
          {
             brw_MOV(&func, vec16(t2), brw_imm_d(0));
-            brw_CMP(&func, vec16(brw_null_reg()), BRW_CONDITIONAL_EQ,
-                    S, brw_imm_d(5));
-            brw_MOV(&func, vec16(t2), brw_imm_d(3));
-            brw_set_predicate_control(&func, BRW_PREDICATE_NONE);
-            brw_CMP(&func, vec16(brw_null_reg()), BRW_CONDITIONAL_EQ,
-                    S, brw_imm_d(6));
-            brw_MOV(&func, vec16(t2), brw_imm_d(7));
-            brw_set_predicate_control(&func, BRW_PREDICATE_NONE);
-            brw_CMP(&func, vec16(brw_null_reg()), BRW_CONDITIONAL_EQ,
-                    S, brw_imm_d(7));
-            brw_MOV(&func, vec16(t2), brw_imm_d(1));
-            brw_set_predicate_control(&func, BRW_PREDICATE_NONE);
+            emit_if_eq_mov(S, 5, vec16(t2), 3);
+            emit_if_eq_mov(S, 6, vec16(t2), 7);
+            emit_if_eq_mov(S, 7, vec16(t2), 1);
          }
          brw_ENDIF(&func);
          brw_MOV(&func, vec16(S), t2);
index 555b6d34827b8fd2065ba15e3760a4b00b27eb6c..34e8da901cf895e429a11df011e4dda9041e86bb 100644 (file)
@@ -68,6 +68,12 @@ protected:
       brw_set_predicate_control(&func, BRW_PREDICATE_NONE);
    }
 
+   inline void emit_if_eq_mov(const struct brw_reg &x, unsigned y,
+                              const struct brw_reg &dst, unsigned src)
+   {
+      emit_cond_mov(x, brw_imm_d(y), BRW_CONDITIONAL_EQ, dst, brw_imm_d(src));
+   }
+
    void *mem_ctx;
    struct brw_compile func;
 };