gallivm: don't use pavg.b intrinsic on llvm >= 6.0
authorRoland Scheidegger <sroland@vmware.com>
Thu, 20 Dec 2018 23:57:04 +0000 (00:57 +0100)
committerRoland Scheidegger <sroland@vmware.com>
Fri, 21 Dec 2018 16:35:05 +0000 (17:35 +0100)
commitf3b1acff48492cf1b0dc0f5dab71ecc3f5806265
treec37b5b1b483b3c7151cf28ffda5e72cd21aa8dff
parenta8d020c3dcb9afa720e60f1785bff1505cfbc115
gallivm: don't use pavg.b intrinsic on llvm >= 6.0

This intrinsic disppeared with llvm 6.0, using it ends up in segfaults
(due to llvm issuing call to NULL address in the jited shaders).
Add code doing the same thing as the autoupgrade code in llvm so it
can be matched and replaced back with a pavgb.

While here, also improve lp_test_format, so it tests both with and without
cache (as it was, it tested the cache versions only, whereas cache is
actually disabled in llvmpipe, and in any case even with it enabled
vertex and geometry shaders wouldn't use it). (Although at least for
the unorm8 uncached fetch, the code is still quite different to what
llvmpipe is using, since that would use unorm8x16 type, whereas
the test code is using unorm8x4 type, hence disabling some intrinsic
paths.)

Fixes: 6f4083143bb8 ("gallivm: use llvm jit code for decoding s3tc")
Reviewed-by: Jose Fonseca <jfonseca@vmware.com>
Tested-by: Michel Dänzer <michel.daenzer@amd.com>
src/gallium/auxiliary/gallivm/lp_bld_format_s3tc.c
src/gallium/drivers/llvmpipe/lp_test_format.c