summaryrefslogtreecommitdiffstats
path: root/compiler-rt/test/msan/vector_select.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'compiler-rt/test/msan/vector_select.cpp')
-rw-r--r--compiler-rt/test/msan/vector_select.cpp21
1 files changed, 21 insertions, 0 deletions
diff --git a/compiler-rt/test/msan/vector_select.cpp b/compiler-rt/test/msan/vector_select.cpp
new file mode 100644
index 00000000000..0cf11649780
--- /dev/null
+++ b/compiler-rt/test/msan/vector_select.cpp
@@ -0,0 +1,21 @@
+// RUN: %clangxx_msan -O0 %s -c -o %t
+// RUN: %clangxx_msan -O3 %s -c -o %t
+
+// Regression test for MemorySanitizer instrumentation of a select instruction
+// with vector arguments.
+
+#if defined(__x86_64__)
+#include <emmintrin.h>
+
+__m128d select(bool b, __m128d c, __m128d d)
+{
+ return b ? c : d;
+}
+#elif defined (__mips64) || defined (__powerpc64__)
+typedef double __w64d __attribute__ ((vector_size(16)));
+
+__w64d select(bool b, __w64d c, __w64d d)
+{
+ return b ? c : d;
+}
+#endif
OpenPOWER on IntegriCloud