Module: Mesa Branch: master Commit: d11111a5510815afb73f3a863330ddf51d5021df URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=d11111a5510815afb73f3a863330ddf51d5021df
Author: Roland Scheidegger <srol...@vmware.com> Date: Sat Apr 16 23:26:46 2016 +0200 gallivm: don't use vector selects with llvm 3.7 llvm 3.7 sometimes simply miscompiles vector selects. See https://bugs.freedesktop.org/show_bug.cgi?id=94972 This was fixed in llvm r249669 (https://llvm.org/bugs/show_bug.cgi?id=24532). Reviewed-by: Jose Fonseca <jfons...@vmware.com> --- src/gallium/auxiliary/gallivm/lp_bld_logic.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/gallium/auxiliary/gallivm/lp_bld_logic.c b/src/gallium/auxiliary/gallivm/lp_bld_logic.c index 91f316c..620aece 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_logic.c +++ b/src/gallium/auxiliary/gallivm/lp_bld_logic.c @@ -315,14 +315,16 @@ lp_build_select(struct lp_build_context *bld, mask = LLVMBuildTrunc(builder, mask, LLVMInt1TypeInContext(lc), ""); res = LLVMBuildSelect(builder, mask, a, b, ""); } - else if (LLVMIsConstant(mask) || - LLVMGetInstructionOpcode(mask) == LLVMSExt) { + else if (!(HAVE_LLVM == 0x0307) && + (LLVMIsConstant(mask) || + LLVMGetInstructionOpcode(mask) == LLVMSExt)) { /* Generate a vector select. * * Using vector selects should avoid emitting intrinsics hence avoid - * hidering optimization passes, but vector selects weren't properly + * hindering optimization passes, but vector selects weren't properly * supported yet for a long time, and LLVM will generate poor code when * the mask is not the result of a comparison. + * Also, llvm 3.7 may miscompile them (bug 94972). */ /* Convert the mask to a vector of booleans. _______________________________________________ mesa-commit mailing list mesa-commit@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-commit