gallivm: Override getHostCPUName() "generic" w/ "pwr8" (v4)
authorBen Crocker <bcrocker@redhat.com>
Fri, 10 Feb 2017 23:08:07 +0000 (18:08 -0500)
committerEmil Velikov <emil.l.velikov@gmail.com>
Mon, 20 Feb 2017 18:21:22 +0000 (18:21 +0000)
commitb934aae36410e09892e772b26f61fed5d037fc69
treec31473e334f257a26ff746b63261991cdfd8aba0
parenta8e9c630f3dc656d107c4252b90c8e991438a3c4
gallivm: Override getHostCPUName() "generic" w/ "pwr8" (v4)

If llvm::sys::getHostCPUName() returns "generic", override
it with "pwr8" (on PPC64LE).

This is a work-around for a bug in LLVM: a table entry for "POWER8NVL"
is missing, resulting in (big-endian) "generic" being returned on
little-endian Power8NVL systems.  The result is that code that
attempts to load the least significant 32 bits of a 64-bit quantity in
memory loads the wrong half.

This omission should be fixed in the next version of LLVM (4.0),
but this work-around should be left in place in case some
future version of POWER<n> also ends up unrepresented in LLVM's table.

This workaround fixes failures in the Piglit arb_gpu_shader_fp64 conversion
tests on POWER8NVL processors.

(V4: add similar comment in the code.)

Signed-off-by: Ben Crocker <bcrocker@redhat.com>
Cc: 12.0 13.0 17.0 <mesa-stable@lists.freedesktop.org>
Acked-by: Emil Velikov <emil.velikov@collabora.com>
src/gallium/auxiliary/gallivm/lp_bld_misc.cpp