11d02dd24SPiotr Zegar // RUN: %check_clang_tidy -std=c++11-or-later %s portability-simd-intrinsics %t -- \ 2*e8a3ddafSNathan James // RUN: -config='{CheckOptions: { \ 3*e8a3ddafSNathan James // RUN: portability-simd-intrinsics.Suggest: false \ 4*e8a3ddafSNathan James // RUN: }}' -- -target x86_64 51d02dd24SPiotr Zegar // RUN: %check_clang_tidy -std=c++11,c++14,c++17 %s portability-simd-intrinsics -check-suffix=BEFORE-CXX20 %t -- \ 6*e8a3ddafSNathan James // RUN: -config='{CheckOptions: { \ 7*e8a3ddafSNathan James // RUN: portability-simd-intrinsics.Suggest: true \ 8*e8a3ddafSNathan James // RUN: }}' -- -target x86_64 989a1d03eSRichard // RUN: %check_clang_tidy -std=c++20-or-later %s portability-simd-intrinsics -check-suffix=CXX20 %t -- \ 10*e8a3ddafSNathan James // RUN: -config='{CheckOptions: { \ 11*e8a3ddafSNathan James // RUN: portability-simd-intrinsics.Suggest: true \ 12*e8a3ddafSNathan James // RUN: }}' -- -target x86_64 1389a1d03eSRichard 1489a1d03eSRichard typedef long long __m128i __attribute__((vector_size(16))); 1589a1d03eSRichard typedef double __m256 __attribute__((vector_size(32))); 1689a1d03eSRichard 1789a1d03eSRichard __m128i _mm_add_epi32(__m128i, __m128i); 1889a1d03eSRichard __m256 _mm256_load_pd(double const *); 1989a1d03eSRichard void _mm256_store_pd(double *, __m256); 2089a1d03eSRichard 2189a1d03eSRichard int _mm_add_fake(int, int); 2289a1d03eSRichard X86()2389a1d03eSRichardvoid X86() { 2489a1d03eSRichard __m128i i0, i1; 2589a1d03eSRichard __m256 d0; 2689a1d03eSRichard 2789a1d03eSRichard _mm_add_epi32(i0, i1); 281d02dd24SPiotr Zegar // CHECK-MESSAGES-BEFORE-CXX20: :[[@LINE-1]]:3: warning: '_mm_add_epi32' can be replaced by operator+ on std::experimental::simd objects [portability-simd-intrinsics] 2989a1d03eSRichard // CHECK-MESSAGES-CXX20: :[[@LINE-2]]:3: warning: '_mm_add_epi32' can be replaced by operator+ on std::simd objects [portability-simd-intrinsics] 301d02dd24SPiotr Zegar // CHECK-MESSAGES: :[[@LINE-3]]:3: warning: '_mm_add_epi32' is a non-portable x86_64 intrinsic function [portability-simd-intrinsics] 3189a1d03eSRichard d0 = _mm256_load_pd(0); 3289a1d03eSRichard _mm256_store_pd(0, d0); 3389a1d03eSRichard 3489a1d03eSRichard _mm_add_fake(0, 1); 3589a1d03eSRichard } 36