Mesa (master): gallivm: Use vector selects on LLVM 3.3+.
Jose Fonseca
jrfonseca at kemper.freedesktop.org
Fri Apr 1 08:05:37 UTC 2016
Module: Mesa
Branch: master
Commit: cdf7c6b83dad7eb6a7600af61403315b02dcf13f
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=cdf7c6b83dad7eb6a7600af61403315b02dcf13f
Author: Jose Fonseca <jfonseca at vmware.com>
Date: Thu Mar 31 23:37:34 2016 +0100
gallivm: Use vector selects on LLVM 3.3+.
This is an old patch I had around.
Vector selects seem to work well from LLVM 3.3. Using them should
improve code quality, as it might make constant propagation pass more
effective.
Tested lp_test_*
Reviewed-by: Roland Scheidegger <sroland at 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 19d30d0..5b0b6c6 100644
--- a/src/gallium/auxiliary/gallivm/lp_bld_logic.c
+++ b/src/gallium/auxiliary/gallivm/lp_bld_logic.c
@@ -314,11 +314,13 @@ lp_build_select(struct lp_build_context *bld,
mask = LLVMBuildTrunc(builder, mask, LLVMInt1TypeInContext(lc), "");
res = LLVMBuildSelect(builder, mask, a, b, "");
}
- else if (0) {
+ else if (HAVE_LLVM >= 0x0303) {
/* Generate a vector select.
*
- * XXX: Using vector selects would avoid emitting intrinsics, but they aren't
- * properly supported yet.
+ * Using vector selects would avoid emitting intrinsics, but they weren't
+ * properly supported yet for a long time.
+ *
+ * LLVM 3.3 appears to reliably support it.
*
* LLVM 3.1 supports it, but it yields buggy code (e.g. lp_blend_test).
*
More information about the mesa-commit
mailing list