summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTopi Pohjolainen <[email protected]>2013-11-29 13:05:57 +0200
committerTopi Pohjolainen <[email protected]>2014-01-23 08:45:44 +0200
commitbbab8068d2adb2dd9c09882cc8a19e62cf0ea8f0 (patch)
tree83b6c3ce9281cc92da8cb609d2aa8283facd2c94
parentde6ea2fe251b9c0039472f7ac1ad023044cde77d (diff)
i965/blorp: wrap OR (/brw_OR(&func, /emit_or(/)
Signed-off-by: Topi Pohjolainen <[email protected]> Reviewed-by: Paul Berry <[email protected]>
-rw-r--r--src/mesa/drivers/dri/i965/brw_blorp_blit.cpp48
-rw-r--r--src/mesa/drivers/dri/i965/brw_blorp_blit_eu.h7
2 files changed, 31 insertions, 24 deletions
diff --git a/src/mesa/drivers/dri/i965/brw_blorp_blit.cpp b/src/mesa/drivers/dri/i965/brw_blorp_blit.cpp
index 432c11c5372..f9d1079eb5a 100644
--- a/src/mesa/drivers/dri/i965/brw_blorp_blit.cpp
+++ b/src/mesa/drivers/dri/i965/brw_blorp_blit.cpp
@@ -1167,17 +1167,17 @@ brw_blorp_blit_program::translate_tiling(bool old_tiled_w, bool new_tiled_w)
emit_shr(t1, t1, brw_imm_uw(1)); /* (X & ~0b1011) >> 1 */
emit_and(t2, Y, brw_imm_uw(1)); /* Y & 0b1 */
emit_shl(t2, t2, brw_imm_uw(2)); /* (Y & 0b1) << 2 */
- brw_OR(&func, t1, t1, t2); /* (X & ~0b1011) >> 1 | (Y & 0b1) << 2 */
+ emit_or(t1, t1, t2); /* (X & ~0b1011) >> 1 | (Y & 0b1) << 2 */
emit_and(t2, X, brw_imm_uw(1)); /* X & 0b1 */
- brw_OR(&func, Xp, t1, t2);
+ emit_or(Xp, t1, t2);
emit_and(t1, Y, brw_imm_uw(0xfffe)); /* Y & ~0b1 */
emit_shl(t1, t1, brw_imm_uw(1)); /* (Y & ~0b1) << 1 */
emit_and(t2, X, brw_imm_uw(8)); /* X & 0b1000 */
emit_shr(t2, t2, brw_imm_uw(2)); /* (X & 0b1000) >> 2 */
- brw_OR(&func, t1, t1, t2); /* (Y & ~0b1) << 1 | (X & 0b1000) >> 2 */
+ emit_or(t1, t1, t2); /* (Y & ~0b1) << 1 | (X & 0b1000) >> 2 */
emit_and(t2, X, brw_imm_uw(2)); /* X & 0b10 */
emit_shr(t2, t2, brw_imm_uw(1)); /* (X & 0b10) >> 1 */
- brw_OR(&func, Yp, t1, t2);
+ emit_or(Yp, t1, t2);
SWAP_XY_AND_XPYP();
} else {
/* Applying the same logic as above, but in reverse, we obtain the
@@ -1190,18 +1190,18 @@ brw_blorp_blit_program::translate_tiling(bool old_tiled_w, bool new_tiled_w)
emit_shl(t1, t1, brw_imm_uw(1)); /* (X & ~0b101) << 1 */
emit_and(t2, Y, brw_imm_uw(2)); /* Y & 0b10 */
emit_shl(t2, t2, brw_imm_uw(2)); /* (Y & 0b10) << 2 */
- brw_OR(&func, t1, t1, t2); /* (X & ~0b101) << 1 | (Y & 0b10) << 2 */
+ emit_or(t1, t1, t2); /* (X & ~0b101) << 1 | (Y & 0b10) << 2 */
emit_and(t2, Y, brw_imm_uw(1)); /* Y & 0b1 */
emit_shl(t2, t2, brw_imm_uw(1)); /* (Y & 0b1) << 1 */
- brw_OR(&func, t1, t1, t2); /* (X & ~0b101) << 1 | (Y & 0b10) << 2
+ emit_or(t1, t1, t2); /* (X & ~0b101) << 1 | (Y & 0b10) << 2
| (Y & 0b1) << 1 */
emit_and(t2, X, brw_imm_uw(1)); /* X & 0b1 */
- brw_OR(&func, Xp, t1, t2);
+ emit_or(Xp, t1, t2);
emit_and(t1, Y, brw_imm_uw(0xfffc)); /* Y & ~0b11 */
emit_shr(t1, t1, brw_imm_uw(1)); /* (Y & ~0b11) >> 1 */
emit_and(t2, X, brw_imm_uw(4)); /* X & 0b100 */
emit_shr(t2, t2, brw_imm_uw(2)); /* (X & 0b100) >> 2 */
- brw_OR(&func, Yp, t1, t2);
+ emit_or(Yp, t1, t2);
SWAP_XY_AND_XPYP();
}
}
@@ -1244,20 +1244,20 @@ brw_blorp_blit_program::encode_msaa(unsigned num_samples,
emit_and(t1, X, brw_imm_uw(0xfffe)); /* X & ~0b1 */
if (!s_is_zero) {
emit_and(t2, S, brw_imm_uw(1)); /* S & 0b1 */
- brw_OR(&func, t1, t1, t2); /* (X & ~0b1) | (S & 0b1) */
+ emit_or(t1, t1, t2); /* (X & ~0b1) | (S & 0b1) */
}
emit_shl(t1, t1, brw_imm_uw(1)); /* (X & ~0b1) << 1
| (S & 0b1) << 1 */
emit_and(t2, X, brw_imm_uw(1)); /* X & 0b1 */
- brw_OR(&func, Xp, t1, t2);
+ emit_or(Xp, t1, t2);
emit_and(t1, Y, brw_imm_uw(0xfffe)); /* Y & ~0b1 */
emit_shl(t1, t1, brw_imm_uw(1)); /* (Y & ~0b1) << 1 */
if (!s_is_zero) {
emit_and(t2, S, brw_imm_uw(2)); /* S & 0b10 */
- brw_OR(&func, t1, t1, t2); /* (Y & ~0b1) << 1 | (S & 0b10) */
+ emit_or(t1, t1, t2); /* (Y & ~0b1) << 1 | (S & 0b10) */
}
emit_and(t2, Y, brw_imm_uw(1)); /* Y & 0b1 */
- brw_OR(&func, Yp, t1, t2);
+ emit_or(Yp, t1, t2);
break;
case 8:
/* encode_msaa(8, IMS, X, Y, S) = (X', Y', 0)
@@ -1269,22 +1269,22 @@ brw_blorp_blit_program::encode_msaa(unsigned num_samples,
emit_shl(t1, t1, brw_imm_uw(2)); /* (X & ~0b1) << 2 */
if (!s_is_zero) {
emit_and(t2, S, brw_imm_uw(4)); /* S & 0b100 */
- brw_OR(&func, t1, t1, t2); /* (X & ~0b1) << 2 | (S & 0b100) */
+ emit_or(t1, t1, t2); /* (X & ~0b1) << 2 | (S & 0b100) */
emit_and(t2, S, brw_imm_uw(1)); /* S & 0b1 */
emit_shl(t2, t2, brw_imm_uw(1)); /* (S & 0b1) << 1 */
- brw_OR(&func, t1, t1, t2); /* (X & ~0b1) << 2 | (S & 0b100)
+ emit_or(t1, t1, t2); /* (X & ~0b1) << 2 | (S & 0b100)
| (S & 0b1) << 1 */
}
emit_and(t2, X, brw_imm_uw(1)); /* X & 0b1 */
- brw_OR(&func, Xp, t1, t2);
+ emit_or(Xp, t1, t2);
emit_and(t1, Y, brw_imm_uw(0xfffe)); /* Y & ~0b1 */
emit_shl(t1, t1, brw_imm_uw(1)); /* (Y & ~0b1) << 1 */
if (!s_is_zero) {
emit_and(t2, S, brw_imm_uw(2)); /* S & 0b10 */
- brw_OR(&func, t1, t1, t2); /* (Y & ~0b1) << 1 | (S & 0b10) */
+ emit_or(t1, t1, t2); /* (Y & ~0b1) << 1 | (S & 0b10) */
}
emit_and(t2, Y, brw_imm_uw(1)); /* Y & 0b1 */
- brw_OR(&func, Yp, t1, t2);
+ emit_or(Yp, t1, t2);
break;
}
SWAP_XY_AND_XPYP();
@@ -1333,15 +1333,15 @@ brw_blorp_blit_program::decode_msaa(unsigned num_samples,
emit_and(t1, X, brw_imm_uw(0xfffc)); /* X & ~0b11 */
emit_shr(t1, t1, brw_imm_uw(1)); /* (X & ~0b11) >> 1 */
emit_and(t2, X, brw_imm_uw(1)); /* X & 0b1 */
- brw_OR(&func, Xp, t1, t2);
+ emit_or(Xp, t1, t2);
emit_and(t1, Y, brw_imm_uw(0xfffc)); /* Y & ~0b11 */
emit_shr(t1, t1, brw_imm_uw(1)); /* (Y & ~0b11) >> 1 */
emit_and(t2, Y, brw_imm_uw(1)); /* Y & 0b1 */
- brw_OR(&func, Yp, t1, t2);
+ emit_or(Yp, t1, t2);
emit_and(t1, Y, brw_imm_uw(2)); /* Y & 0b10 */
emit_and(t2, X, brw_imm_uw(2)); /* X & 0b10 */
emit_shr(t2, t2, brw_imm_uw(1)); /* (X & 0b10) >> 1 */
- brw_OR(&func, S, t1, t2);
+ emit_or(S, t1, t2);
break;
case 8:
/* decode_msaa(8, IMS, X, Y, 0) = (X', Y', S)
@@ -1352,17 +1352,17 @@ brw_blorp_blit_program::decode_msaa(unsigned num_samples,
emit_and(t1, X, brw_imm_uw(0xfff8)); /* X & ~0b111 */
emit_shr(t1, t1, brw_imm_uw(2)); /* (X & ~0b111) >> 2 */
emit_and(t2, X, brw_imm_uw(1)); /* X & 0b1 */
- brw_OR(&func, Xp, t1, t2);
+ emit_or(Xp, t1, t2);
emit_and(t1, Y, brw_imm_uw(0xfffc)); /* Y & ~0b11 */
emit_shr(t1, t1, brw_imm_uw(1)); /* (Y & ~0b11) >> 1 */
emit_and(t2, Y, brw_imm_uw(1)); /* Y & 0b1 */
- brw_OR(&func, Yp, t1, t2);
+ emit_or(Yp, t1, t2);
emit_and(t1, X, brw_imm_uw(4)); /* X & 0b100 */
emit_and(t2, Y, brw_imm_uw(2)); /* Y & 0b10 */
- brw_OR(&func, t1, t1, t2); /* (X & 0b100) | (Y & 0b10) */
+ emit_or(t1, t1, t2); /* (X & 0b100) | (Y & 0b10) */
emit_and(t2, X, brw_imm_uw(2)); /* X & 0b10 */
emit_shr(t2, t2, brw_imm_uw(1)); /* (X & 0b10) >> 1 */
- brw_OR(&func, S, t1, t2);
+ emit_or(S, t1, t2);
break;
}
s_is_zero = false;
diff --git a/src/mesa/drivers/dri/i965/brw_blorp_blit_eu.h b/src/mesa/drivers/dri/i965/brw_blorp_blit_eu.h
index bb01df316ac..11007895920 100644
--- a/src/mesa/drivers/dri/i965/brw_blorp_blit_eu.h
+++ b/src/mesa/drivers/dri/i965/brw_blorp_blit_eu.h
@@ -123,6 +123,13 @@ protected:
brw_SHL(&func, dst, src1, src2);
}
+ inline void emit_or(const struct brw_reg& dst,
+ const struct brw_reg& src1,
+ const struct brw_reg& src2)
+ {
+ brw_OR(&func, dst, src1, src2);
+ }
+
void *mem_ctx;
struct brw_compile func;
};