mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 18:18:06 +02:00
gallivm: use fallback code for mul_hi with llvm >= 7.0
LLVM 7.0 ditched the pmulu intrinsics. This is only a trivial patch to use the fallback code instead. It'll likely produce atrocious code since the pattern doesn't match what llvm itself uses in its autoupgrade paths, hence the pattern won't be recognized. Should fix https://bugs.freedesktop.org/show_bug.cgi?id=111496 Reviewed-by: Jose Fonseca <jfonseca@vmware.com> Reviewed-by: Dave Airlie <airlied@redhat.com>
This commit is contained in:
parent
b650ecfe31
commit
332b21db55
1 changed files with 6 additions and 1 deletions
|
|
@ -1169,8 +1169,13 @@ lp_build_mul_32_lohi_cpu(struct lp_build_context *bld,
|
|||
* https://llvm.org/bugs/show_bug.cgi?id=30845
|
||||
* So, whip up our own code, albeit only for length 4 and 8 (which
|
||||
* should be good enough)...
|
||||
* FIXME: For llvm >= 7.0 we should match the autoupgrade pattern
|
||||
* (bitcast/and/mul/shuffle for unsigned, bitcast/shl/ashr/mul/shuffle
|
||||
* for signed), which the fallback code does not, without this llvm
|
||||
* will likely still produce atrocious code.
|
||||
*/
|
||||
if ((bld->type.length == 4 || bld->type.length == 8) &&
|
||||
if (HAVE_LLVM < 0x0700 &&
|
||||
(bld->type.length == 4 || bld->type.length == 8) &&
|
||||
((util_cpu_caps.has_sse2 && (bld->type.sign == 0)) ||
|
||||
util_cpu_caps.has_sse4_1)) {
|
||||
const char *intrinsic = NULL;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue