summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKenneth Graunke <[email protected]>2015-02-10 03:36:48 -0800
committerKenneth Graunke <[email protected]>2015-02-17 15:24:15 -0800
commit598d144cef412f114bddccc5d3c428682b41a7c2 (patch)
treef97cee0e201ec9e19b30c8228430c90c5e2b9915
parent7bf774034a20e6864d63caf8c65cc424454b1bed (diff)
i915c: Use the actual MIN instruction.
Matt Turner noticed that the hardware has always had a MIN instruction, but the driver always used MAX+MOV for no apparent reason. This should cut an instruction, and a temporary, allowing more programs to run in hardware. Signed-off-by: Kenneth Graunke <[email protected]> Reviewed-by: Ian Romanick <[email protected]> Reviewed-by: Matt Turner <[email protected]>
-rw-r--r--src/mesa/drivers/dri/i915/i915_fragprog.c16
1 files changed, 1 insertions, 15 deletions
diff --git a/src/mesa/drivers/dri/i915/i915_fragprog.c b/src/mesa/drivers/dri/i915/i915_fragprog.c
index 96fdd3c2c3f..d42da5a6b61 100644
--- a/src/mesa/drivers/dri/i915/i915_fragprog.c
+++ b/src/mesa/drivers/dri/i915/i915_fragprog.c
@@ -671,21 +671,7 @@ upload_program(struct i915_fragment_program *p)
break;
case OPCODE_MIN:
- src0 = src_vector(p, &inst->SrcReg[0], program);
- src1 = src_vector(p, &inst->SrcReg[1], program);
- tmp = i915_get_utemp(p);
- flags = get_result_flags(inst);
-
- i915_emit_arith(p,
- A0_MAX,
- tmp, flags & A0_DEST_CHANNEL_ALL, 0,
- negate(src0, 1, 1, 1, 1),
- negate(src1, 1, 1, 1, 1), 0);
-
- i915_emit_arith(p,
- A0_MOV,
- get_result_vector(p, inst),
- flags, 0, negate(tmp, 1, 1, 1, 1), 0, 0);
+ EMIT_2ARG_ARITH(A0_MIN);
break;
case OPCODE_MOV: