gallivm: remove unused float coord wrapping for aos sampling
authorRoland Scheidegger <sroland@vmware.com>
Fri, 7 Dec 2018 01:28:01 +0000 (02:28 +0100)
committerRoland Scheidegger <sroland@vmware.com>
Wed, 12 Dec 2018 02:50:03 +0000 (03:50 +0100)
commit86c45fe960603f97604c885e01f5a69030309809
treeb6ce2285033698b7b98930492c2fd25be6e59da3
parent721c296bdc37a1d7ff67667f5da6df448f50117a
gallivm: remove unused float coord wrapping for aos sampling

AoS sampling tries to use integers for coord wrapping when possible,
as it should be faster. However, for AVX, this was suboptimal, because
only floats can use 8x32bit vectors, whereas integers have to be split
into 4x32bit vectors. (I believe part of why it was slower was also
that at least earlier llvm versions had trouble optimizing it properly,
since you can still do simple bit ops with 8x32bit vectors, so a
sequence of int add / and / int add / and with such vectors would
actually end up doing 128bit inserts/extracts between the operations
instead of just doing the cheap 128bit ands.)
Hence, a special float coord wrapping path was added to AoS sampling.
But this path was actually disabled for a long time already, since we
found that just splitting everything before entering the AoS path was
still sligthly faster usually, so none of this float coord wrapping
code was used anymore (AoS sampling code, when avx2 isn't supported,
never sees vectors with length > 4). I thought it might be useful some
day again, but I'm not interested anymore in optimizing for very weird
instruction sets which have support for 256bit vectors for floats but
not for ints, so just drop it.

Reviewed-by: Jose Fonseca <jfonseca@vmware.com>
src/gallium/auxiliary/gallivm/lp_bld_sample_aos.c