1*d21b3d34SFangrui Song // RUN: %clangxx_msan -O0 %s -c -o %t 2*d21b3d34SFangrui Song // RUN: %clangxx_msan -O3 %s -c -o %t 3*d21b3d34SFangrui Song 4*d21b3d34SFangrui Song // Regression test for MemorySanitizer instrumentation of a select instruction 5*d21b3d34SFangrui Song // with vector arguments. 6*d21b3d34SFangrui Song 7*d21b3d34SFangrui Song #if defined(__x86_64__) 8*d21b3d34SFangrui Song #include <emmintrin.h> 9*d21b3d34SFangrui Song select(bool b,__m128d c,__m128d d)10*d21b3d34SFangrui Song__m128d select(bool b, __m128d c, __m128d d) 11*d21b3d34SFangrui Song { 12*d21b3d34SFangrui Song return b ? c : d; 13*d21b3d34SFangrui Song } 14*d21b3d34SFangrui Song #elif defined (__mips64) || defined (__powerpc64__) 15*d21b3d34SFangrui Song typedef double __w64d __attribute__ ((vector_size(16))); 16*d21b3d34SFangrui Song select(bool b,__w64d c,__w64d d)17*d21b3d34SFangrui Song__w64d select(bool b, __w64d c, __w64d d) 18*d21b3d34SFangrui Song { 19*d21b3d34SFangrui Song return b ? c : d; 20*d21b3d34SFangrui Song } 21*d21b3d34SFangrui Song #endif 22