--- src/gallium/auxiliary/gallivm/lp_bld_tgsi_action.c | 31 ++++++++++++++++++++++ 1 file changed, 31 insertions(+)
diff --git a/src/gallium/auxiliary/gallivm/lp_bld_tgsi_action.c b/src/gallium/auxiliary/gallivm/lp_bld_tgsi_action.c index ff21879..070945c 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_tgsi_action.c +++ b/src/gallium/auxiliary/gallivm/lp_bld_tgsi_action.c @@ -743,6 +743,34 @@ umul_emit( emit_data->args[0], emit_data->args[1]); } +/* TGSI_OPCODE_MAX */ +static void fmax_emit( + const struct lp_build_tgsi_action * action, + struct lp_build_tgsi_context * bld_base, + struct lp_build_emit_data * emit_data) +{ + LLVMValueRef comparison; + comparison = lp_build_cmp(&bld_base->base, PIPE_FUNC_GEQUAL, emit_data->args[0], + emit_data->args[1]); + emit_data->output[emit_data->chan] = lp_build_select(&bld_base->base, + comparison, emit_data->args[0], + emit_data->args[1]); +} + +/* TGSI_OPCODE_MIN */ +static void fmin_emit( + const struct lp_build_tgsi_action * action, + struct lp_build_tgsi_context * bld_base, + struct lp_build_emit_data * emit_data) +{ + LLVMValueRef comparison; + comparison = lp_build_cmp(&bld_base->base, PIPE_FUNC_GEQUAL, emit_data->args[0], + emit_data->args[1]); + emit_data->output[emit_data->chan] = lp_build_select(&bld_base->base, + comparison, emit_data->args[1], + emit_data->args[0]); +} + /* TGSI_OPCODE_XPD */ static void @@ -843,6 +871,9 @@ lp_set_default_actions(struct lp_build_tgsi_context * bld_base) bld_base->op_actions[TGSI_OPCODE_U2F].emit = u2f_emit; bld_base->op_actions[TGSI_OPCODE_UMAD].emit = umad_emit; bld_base->op_actions[TGSI_OPCODE_UMUL].emit = umul_emit; + + bld_base->op_actions[TGSI_OPCODE_MAX].emit = fmax_emit; + bld_base->op_actions[TGSI_OPCODE_MIN].emit = fmin_emit; } /* CPU Only default actions */ -- 1.8.0 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev