From: José Fonseca Date: Mon, 31 Aug 2009 09:00:38 +0000 (+0100) Subject: llvmpipe: In the abcense of a min/max intrinsic, use the comparison intrinsics. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=45fb66ab7bc1cbb150e055826dc61b542739cc35;p=mesa.git llvmpipe: In the abcense of a min/max intrinsic, use the comparison intrinsics. --- diff --git a/src/gallium/drivers/llvmpipe/lp_bld_arit.c b/src/gallium/drivers/llvmpipe/lp_bld_arit.c index 710e6246d74..09a57ff33d5 100644 --- a/src/gallium/drivers/llvmpipe/lp_bld_arit.c +++ b/src/gallium/drivers/llvmpipe/lp_bld_arit.c @@ -52,6 +52,7 @@ #include "lp_bld_type.h" #include "lp_bld_const.h" #include "lp_bld_intr.h" +#include "lp_bld_logic.h" #include "lp_bld_arit.h" @@ -98,11 +99,8 @@ lp_build_min_simple(struct lp_build_context *bld, if(intrinsic) return lp_build_intrinsic_binary(bld->builder, intrinsic, lp_build_vec_type(bld->type), a, b); - if(type.floating) - cond = LLVMBuildFCmp(bld->builder, LLVMRealULT, a, b, ""); - else - cond = LLVMBuildICmp(bld->builder, type.sign ? LLVMIntSLT : LLVMIntULT, a, b, ""); - return LLVMBuildSelect(bld->builder, cond, a, b, ""); + cond = lp_build_cmp(bld, PIPE_FUNC_LESS, a, b); + return lp_build_select(bld, cond, a, b); } @@ -149,11 +147,8 @@ lp_build_max_simple(struct lp_build_context *bld, if(intrinsic) return lp_build_intrinsic_binary(bld->builder, intrinsic, lp_build_vec_type(bld->type), a, b); - if(type.floating) - cond = LLVMBuildFCmp(bld->builder, LLVMRealULT, a, b, ""); - else - cond = LLVMBuildICmp(bld->builder, type.sign ? LLVMIntSLT : LLVMIntULT, a, b, ""); - return LLVMBuildSelect(bld->builder, cond, b, a, ""); + cond = lp_build_cmp(bld, PIPE_FUNC_GREATER, a, b); + return lp_build_select(bld, cond, a, b); } diff --git a/src/gallium/drivers/llvmpipe/lp_bld_logic.c b/src/gallium/drivers/llvmpipe/lp_bld_logic.c index 1e1ecf805bc..d6dfd853422 100644 --- a/src/gallium/drivers/llvmpipe/lp_bld_logic.c +++ b/src/gallium/drivers/llvmpipe/lp_bld_logic.c @@ -33,7 +33,6 @@ */ -#include "pipe/p_defines.h" #include "lp_bld_type.h" #include "lp_bld_const.h" #include "lp_bld_intr.h" diff --git a/src/gallium/drivers/llvmpipe/lp_bld_logic.h b/src/gallium/drivers/llvmpipe/lp_bld_logic.h index 0989f9f2078..29b9e1c45b8 100644 --- a/src/gallium/drivers/llvmpipe/lp_bld_logic.h +++ b/src/gallium/drivers/llvmpipe/lp_bld_logic.h @@ -39,6 +39,8 @@ #include +#include "pipe/p_defines.h" /* For PIPE_FUNC_xxx */ + union lp_type type; struct lp_build_context;