gallivm: optimize yuv decoding
authorRoland Scheidegger <sroland@vmware.com>
Fri, 24 Sep 2010 13:17:07 +0000 (15:17 +0200)
committerJosé Fonseca <jfonseca@vmware.com>
Sat, 25 Sep 2010 11:19:31 +0000 (12:19 +0100)
commit049a8cce76b1148ab00de1ae207171e519bfafca
tree2dc7640c23c22be517ee1e2d60714733ade41bc5
parent46d05d4ef99857e50d978247917f3e16574418f4
gallivm: optimize yuv decoding

this is more a proof to show vector shifts on x86 with per-element shift count
are evil. Since we can avoid the shift with a single compare/select, use that
instead. Replaces more than 20 instructions (and slow ones at that) with about 3,
and cuts compiled shader size with mesa's yuvsqure demo by over 10%
(no performance measurements done - but selection is blazing fast).
Might want to revisit that for future cpus - unfortunately AVX won't have vector
shifts neither, but AMD's XOP will, but even in that case using selection here
is probably not slower.
src/gallium/auxiliary/gallivm/lp_bld_format_yuv.c