diff options
Diffstat (limited to 'compiler-rt/test/msan/vector_select.cpp')
-rw-r--r-- | compiler-rt/test/msan/vector_select.cpp | 21 |
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 |