summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJosé Fonseca <[email protected]>2012-10-10 19:44:49 +0100
committerJosé Fonseca <[email protected]>2012-10-12 18:52:28 +0100
commitbf2edc776b02a2a63862bf69a23adf666ecfcc57 (patch)
tree9190851410f4d7c59ebb0902bff9e4d292332306
parent9ccf91f9ef72f63871b0a8c6b43f7bd452d73b94 (diff)
gallivm: Don't use llvm.x86.avx.max/min.ps.256 inadvertently.
Could happen when CPU supports AVX, but LLVM doesn't.
-rw-r--r--src/gallium/auxiliary/gallivm/lp_bld_arit.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/src/gallium/auxiliary/gallivm/lp_bld_arit.c b/src/gallium/auxiliary/gallivm/lp_bld_arit.c
index d23ff0bf996..f6310a8ef30 100644
--- a/src/gallium/auxiliary/gallivm/lp_bld_arit.c
+++ b/src/gallium/auxiliary/gallivm/lp_bld_arit.c
@@ -92,7 +92,7 @@ lp_build_min_simple(struct lp_build_context *bld,
intrinsic = "llvm.x86.sse.min.ss";
intr_size = 128;
}
- else if (type.length <= 4 || !util_cpu_caps.has_avx) {
+ else if (type.length <= 4 || !util_cpu_caps.has_avx || lp_native_vector_width < 256) {
intrinsic = "llvm.x86.sse.min.ps";
intr_size = 128;
}
@@ -106,7 +106,7 @@ lp_build_min_simple(struct lp_build_context *bld,
intrinsic = "llvm.x86.sse2.min.sd";
intr_size = 128;
}
- else if (type.length == 2 || !util_cpu_caps.has_avx) {
+ else if (type.length == 2 || !util_cpu_caps.has_avx || lp_native_vector_width < 256) {
intrinsic = "llvm.x86.sse2.min.pd";
intr_size = 128;
}
@@ -182,7 +182,7 @@ lp_build_max_simple(struct lp_build_context *bld,
intrinsic = "llvm.x86.sse.max.ss";
intr_size = 128;
}
- else if (type.length <= 4 || !util_cpu_caps.has_avx) {
+ else if (type.length <= 4 || !util_cpu_caps.has_avx || lp_native_vector_width < 256) {
intrinsic = "llvm.x86.sse.max.ps";
intr_size = 128;
}
@@ -196,7 +196,7 @@ lp_build_max_simple(struct lp_build_context *bld,
intrinsic = "llvm.x86.sse2.max.sd";
intr_size = 128;
}
- else if (type.length == 2 || !util_cpu_caps.has_avx) {
+ else if (type.length == 2 || !util_cpu_caps.has_avx || lp_native_vector_width < 256) {
intrinsic = "llvm.x86.sse2.max.pd";
intr_size = 128;
}