i965/blorp: wrap emission of conditional assignment
authorTopi Pohjolainen <topi.pohjolainen@intel.com>
Sat, 30 Nov 2013 15:06:19 +0000 (17:06 +0200)
committerTopi Pohjolainen <topi.pohjolainen@intel.com>
Thu, 23 Jan 2014 06:45:25 +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 b5f1907169d7dd75cbe82412d3330e560ec8b21d..356bb9207c67de7c076b30231ca79d805bbac3f4 100644 (file)
@@ -1444,21 +1444,10 @@ brw_blorp_blit_program::clamp_tex_coords(struct brw_reg regX,
                                          struct brw_reg clampX1,
                                          struct brw_reg clampY1)
 {
-   brw_CMP(&func, vec16(brw_null_reg()), BRW_CONDITIONAL_L, regX, clampX0);
-   brw_MOV(&func, regX, clampX0);
-   brw_set_predicate_control(&func, BRW_PREDICATE_NONE);
-
-   brw_CMP(&func, vec16(brw_null_reg()), BRW_CONDITIONAL_G, regX, clampX1);
-   brw_MOV(&func, regX, clampX1);
-   brw_set_predicate_control(&func, BRW_PREDICATE_NONE);
-
-   brw_CMP(&func, vec16(brw_null_reg()), BRW_CONDITIONAL_L, regY, clampY0);
-   brw_MOV(&func, regY, clampY0);
-   brw_set_predicate_control(&func, BRW_PREDICATE_NONE);
-
-   brw_CMP(&func, vec16(brw_null_reg()), BRW_CONDITIONAL_G, regY, clampY1);
-   brw_MOV(&func, regY, clampY1);
-   brw_set_predicate_control(&func, BRW_PREDICATE_NONE);
+   emit_cond_mov(regX, clampX0, BRW_CONDITIONAL_L, regX, clampX0);
+   emit_cond_mov(regX, clampX1, BRW_CONDITIONAL_G, regX, clampX1);
+   emit_cond_mov(regY, clampY0, BRW_CONDITIONAL_L, regY, clampY0);
+   emit_cond_mov(regY, clampY1, BRW_CONDITIONAL_G, regY, clampY1);
 }
 
 /**
index 55e05f7ccdc9eab75a0c52f90f9836792540097f..555b6d34827b8fd2065ba15e3760a4b00b27eb6c 100644 (file)
@@ -57,6 +57,17 @@ protected:
                      const struct brw_reg &src_1,
                      const struct brw_reg &src_2);
 
+   inline void emit_cond_mov(const struct brw_reg &x,
+                             const struct brw_reg &y,
+                             int op,
+                             const struct brw_reg &dst,
+                             const struct brw_reg &src)
+   {
+      brw_CMP(&func, vec16(brw_null_reg()), op, x, y);
+      brw_MOV(&func, dst, src);
+      brw_set_predicate_control(&func, BRW_PREDICATE_NONE);
+   }
+
    void *mem_ctx;
    struct brw_compile func;
 };