Module: Mesa Branch: master Commit: 2d97f77b9f4ea58afe19f93dfc7ac7ed96819669 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=2d97f77b9f4ea58afe19f93dfc7ac7ed96819669
Author: Vincent Lejeune <v...@ovi.com> Date: Thu Nov 29 23:43:31 2012 +0100 gallivm: Have a default emit function for min/max opcode Reveiwed-by: Tom Stellard <thomas.stellard at amd.com> --- src/gallium/auxiliary/gallivm/lp_bld_tgsi_action.c | 29 ++++++++++++++++++++ 1 files changed, 29 insertions(+), 0 deletions(-) diff --git a/src/gallium/auxiliary/gallivm/lp_bld_tgsi_action.c b/src/gallium/auxiliary/gallivm/lp_bld_tgsi_action.c index cd57fae..cc4bd2e 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_tgsi_action.c +++ b/src/gallium/auxiliary/gallivm/lp_bld_tgsi_action.c @@ -744,6 +744,32 @@ 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) +{ + LLVMBuilderRef builder = bld_base->base.gallivm->builder; + emit_data->output[emit_data->chan] = LLVMBuildSelect(builder, + LLVMBuildFCmp(builder, LLVMRealUGE, + emit_data->args[0], emit_data->args[1], ""), + 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) +{ + LLVMBuilderRef builder = bld_base->base.gallivm->builder; + emit_data->output[emit_data->chan] = LLVMBuildSelect(builder, + LLVMBuildFCmp(builder, LLVMRealUGE, + emit_data->args[0], emit_data->args[1], ""), + emit_data->args[1], emit_data->args[0], ""); +} + /* TGSI_OPCODE_XPD */ static void @@ -844,6 +870,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 */ _______________________________________________ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit