From: Kenneth Graunke Date: Tue, 10 Feb 2015 11:36:47 +0000 (-0800) Subject: i915g: Use the actual MIN instruction. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=7bf774034a20e6864d63caf8c65cc424454b1bed;p=mesa.git i915g: 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 Reviewed-by: Ian Romanick Reviewed-by: Matt Turner --- diff --git a/src/gallium/drivers/i915/i915_fpc_translate.c b/src/gallium/drivers/i915/i915_fpc_translate.c index 4f5fdd84e66..b74f8239bb4 100644 --- a/src/gallium/drivers/i915/i915_fpc_translate.c +++ b/src/gallium/drivers/i915/i915_fpc_translate.c @@ -764,21 +764,7 @@ i915_translate_instruction(struct i915_fp_compile *p, break; case TGSI_OPCODE_MIN: - src0 = src_vector(p, &inst->Src[0], fs); - src1 = src_vector(p, &inst->Src[1], fs); - 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->Dst[0]), - flags, 0, negate(tmp, 1, 1, 1, 1), 0, 0); + emit_simple_arith(p, inst, A0_MIN, 2, fs); break; case TGSI_OPCODE_MOV: