From: Keith Whitwell Date: Wed, 6 Oct 2010 18:09:03 +0000 (+0100) Subject: gallivm: simpler uint8->float conversions X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=2ef6f75ab410bb188e028024e18891d7877febad;p=mesa.git gallivm: simpler uint8->float conversions LLVM seems to finds it easier to reason about these than our mantissa-manipulation code. --- diff --git a/src/gallium/auxiliary/gallivm/lp_bld_conv.c b/src/gallium/auxiliary/gallivm/lp_bld_conv.c index 3abb19272b6..20aa2577830 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_conv.c +++ b/src/gallium/auxiliary/gallivm/lp_bld_conv.c @@ -178,6 +178,16 @@ lp_build_unsigned_norm_to_float(LLVMBuilderRef builder, assert(dst_type.floating); + /* Special-case int8->float, though most cases could be handled + * this way: + */ + if (src_width == 8) { + scale = 1.0/255.0; + res = LLVMBuildSIToFP(builder, src, vec_type, ""); + res = LLVMBuildFMul(builder, res, lp_build_const_vec(dst_type, scale), ""); + return res; + } + mantissa = lp_mantissa(dst_type); n = MIN2(mantissa, src_width);