[Mesa-dev] [PATCH] gallivm: Have a default emit function for min/max opcode

Tom Stellard tom at stellard.net
Tue Dec 4 17:12:21 PST 2012


On Wed, Dec 05, 2012 at 12:08:15AM +0100, Vincent Lejeune wrote:
> ---
>  src/gallium/auxiliary/gallivm/lp_bld_tgsi_action.c | 29 ++++++++++++++++++++++
>  1 file changed, 29 insertions(+)

Reviewed-by: Tom Stellard <thomas.stellard at amd.com>

> 
> 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 */
> -- 
> 1.8.0.1
> 
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev


More information about the mesa-dev mailing list