diff options
Diffstat (limited to 'src/gallium/auxiliary/gallivm/lp_bld_arit.c')
-rw-r--r-- | src/gallium/auxiliary/gallivm/lp_bld_arit.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/src/gallium/auxiliary/gallivm/lp_bld_arit.c b/src/gallium/auxiliary/gallivm/lp_bld_arit.c index 3291ec4..08aec79 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_arit.c +++ b/src/gallium/auxiliary/gallivm/lp_bld_arit.c @@ -386,6 +386,10 @@ lp_build_add(struct lp_build_context *bld, return lp_build_intrinsic_binary(builder, intrinsic, lp_build_vec_type(bld->gallivm, bld->type), a, b); } + /* TODO: handle signed case */ + if(type.norm && !type.floating && !type.fixed && !type.sign) + a = lp_build_min_simple(bld, a, lp_build_comp(bld, b)); + if(LLVMIsConstant(a) && LLVMIsConstant(b)) if (type.floating) res = LLVMConstFAdd(a, b); @@ -663,6 +667,10 @@ lp_build_sub(struct lp_build_context *bld, return lp_build_intrinsic_binary(builder, intrinsic, lp_build_vec_type(bld->gallivm, bld->type), a, b); } + /* TODO: handle signed case */ + if(type.norm && !type.floating && !type.fixed && !type.sign) + a = lp_build_max_simple(bld, a, b); + if(LLVMIsConstant(a) && LLVMIsConstant(b)) if (type.floating) res = LLVMConstFSub(a, b); |