aboutsummaryrefslogtreecommitdiffstats
path: root/src/util/fast_idiv_by_const.c
Commit message (Collapse)AuthorAgeFilesLines
* util: Add power-of-two divisor support to compute_fast_udiv_infoMarek Olšák2018-10-101-0/+21
| | | | | Reviewed-by: Jason Ekstrand <[email protected]> Reviewed-by: Marek Olšák <[email protected]>
* util: Generalize fast integer division to be variable bit-widthJason Ekstrand2018-10-101-32/+30
| | | | | | | | | | | | | | | There's nothing inherently fixed-width in the code. All that's required to generalize it is to make everything internally 64-bit and pass UINT_BITS in as a parameter to util_compute_fast_[us]div_info. With that, it can now handle 8, 16, 32, and 64-bit integer division by a constant. We also add support for division by 1 and by other powers of 2. This is useful if you want to divide by a uniform value in a shader where you have the opportunity to adjust the uniform on the CPU before passing it in. Reviewed-by: Marek Olšák <[email protected]>
* util: import public domain code for integer division by a constantMarek Olšák2018-10-101-0/+224
Compilers can use this to generate optimal code for integer division by a constant. Additionally, an unsigned division by a uniform that is constant but not known at compile time can still be optimized by passing 2-4 division factors to the shader as uniforms and executing one of the fast_udiv* variants. The signed division algorithm doesn't have this capability. Reviewed-by: Jason Ekstrand <[email protected]> Reviewed-by: Marek Olšák <[email protected]>