gallivm: fix SCALED -> NORM conversions
authorRoland Scheidegger <sroland@vmware.com>
Tue, 17 Jun 2014 23:34:49 +0000 (01:34 +0200)
committerRoland Scheidegger <sroland@vmware.com>
Wed, 18 Jun 2014 17:52:57 +0000 (19:52 +0200)
commit56335b44417bc3d49625f9637e2b95457f522ad2
treea4910f758a54d84d3548b97108114af08c412b3d
parent7928b946adbcbbb835c0080967bbb538f6bd35dc
gallivm: fix SCALED -> NORM conversions

Such conversions (which are most likely rather pointless in practice) were
resulting in shifts with negative shift counts and shifts with counts the same
as the bit width. This was always undefined in llvm, the code generated was
rather horrendous but happened to work.
So make sure such shifts are filtered out and replaced with something that
works (the generated code is still just as horrendous as before).

This fixes lp_test_format, https://bugs.freedesktop.org/show_bug.cgi?id=73846.

v2: prettify by using build context shift helpers.

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