summaryrefslogtreecommitdiffstats
path: root/src/mesa
diff options
context:
space:
mode:
authorMatt Turner <[email protected]>2013-02-19 12:51:08 -0800
committerMatt Turner <[email protected]>2013-02-28 13:19:00 -0800
commitf78a7ff6b2ed90896876df7790d4701eb7ba2b8d (patch)
tree76d99444dfc73fbc60cf32d97ee275bad00539c5 /src/mesa
parent0a1d145e5f1e6120e70e9b46e069167a0d653579 (diff)
i965/fp: Use the LRP instruction for OPCODE_LRP.
Reviewed-by: Eric Anholt <[email protected]> Reviewed-by: Kenneth Graunke <[email protected]>
Diffstat (limited to 'src/mesa')
-rw-r--r--src/mesa/drivers/dri/i965/brw_fs_fp.cpp12
1 files changed, 4 insertions, 8 deletions
diff --git a/src/mesa/drivers/dri/i965/brw_fs_fp.cpp b/src/mesa/drivers/dri/i965/brw_fs_fp.cpp
index 5f5f6a9ba76..50e63daa6e9 100644
--- a/src/mesa/drivers/dri/i965/brw_fs_fp.cpp
+++ b/src/mesa/drivers/dri/i965/brw_fs_fp.cpp
@@ -316,14 +316,10 @@ fs_visitor::emit_fragment_program_code()
case OPCODE_LRP:
for (int i = 0; i < 4; i++) {
if (fpi->DstReg.WriteMask & (1 << i)) {
- fs_reg neg_src0 = regoffset(src[0], i);
- neg_src0.negate = !neg_src0.negate;
- fs_reg temp = fs_reg(this, glsl_type::float_type);
- fs_reg temp2 = fs_reg(this, glsl_type::float_type);
- emit(ADD(temp, neg_src0, fs_reg(1.0f)));
- emit(MUL(temp, temp, regoffset(src[2], i)));
- emit(MUL(temp2, regoffset(src[0], i), regoffset(src[1], i)));
- emit(ADD(regoffset(dst, i), temp, temp2));
+ fs_reg a = regoffset(src[0], i);
+ fs_reg y = regoffset(src[1], i);
+ fs_reg x = regoffset(src[2], i);
+ emit_lrp(regoffset(dst, i), x, y, a);
}
}
break;