[Patch v2 1/4] Replace i2f() in r600_blit.c with an optimized version.
Michel Dänzer
michel at daenzer.net
Tue Aug 14 03:33:29 PDT 2012
On Sam, 2012-08-11 at 10:30 -0700, Steven Fuerst wrote:
> We use __fls() to find the most significant bit. Using that, the
> loop can be avoided. A second trick is to use the behaviour of the
> rotate instructions to expand the range of the unsigned int to float
> conversion to the full 32 bits in a branchless way.
>
> The routine is now exact up to 2^24. Above that, we truncate which
> is equivalent to rounding towards zero.
>
> Signed-off-by: Steven Fuerst <svfuerst at gmail.com>
It might be better to reorder the series to use a shared int2float first
and then optimize that. Either way though, although I haven't really
looked into the floating point encoding aspects, the series is
Reviewed-by: Michel Dänzer <michel.daenzer at amd.com>
--
Earthling Michel Dänzer | http://www.amd.com
Libre software enthusiast | Debian, X and DRI developer
More information about the dri-devel
mailing list