| // REQUIRES: x86-registered-target |
| // RUN: %clang_cc1 %s -triple=x86_64-linux-gnu -S -o - |
| #define __MM_MALLOC_H |
| |
| #include <x86intrin.h> |
| |
| // No warnings. |
| extern __m256i a; |
| int __attribute__((target("avx"))) bar(__m256i a) { |
| return _mm256_extract_epi32(a, 3); |
| } |
| |
| int baz() { |
| return bar(a); |
| } |
| |
| int __attribute__((target("avx"))) qq_avx(__m256i a) { |
| return _mm256_extract_epi32(a, 3); |
| } |
| |
| int qq_noavx() { |
| return 0; |
| } |
| |
| extern __m256i a; |
| int qq() { |
| if (__builtin_cpu_supports("avx")) |
| return qq_avx(a); |
| else |
| return qq_noavx(); |
| } |
| |
| // Test that fma and fma4 are both separately and combined valid for an fma intrinsic. |
| __m128 __attribute__((target("fma"))) fma_1(__m128 a, __m128 b, __m128 c) { |
| return __builtin_ia32_vfmaddps(a, b, c); |
| } |
| |
| __m128 __attribute__((target("fma4"))) fma_2(__m128 a, __m128 b, __m128 c) { |
| return __builtin_ia32_vfmaddps(a, b, c); |
| } |
| |
| __m128 __attribute__((target("fma,fma4"))) fma_3(__m128 a, __m128 b, __m128 c) { |
| return __builtin_ia32_vfmaddps(a, b, c); |
| } |
| |
| void verifyfeaturestrings() { |
| (void)__builtin_cpu_supports("cmov"); |
| (void)__builtin_cpu_supports("mmx"); |
| (void)__builtin_cpu_supports("popcnt"); |
| (void)__builtin_cpu_supports("sse"); |
| (void)__builtin_cpu_supports("sse2"); |
| (void)__builtin_cpu_supports("sse3"); |
| (void)__builtin_cpu_supports("ssse3"); |
| (void)__builtin_cpu_supports("sse4.1"); |
| (void)__builtin_cpu_supports("sse4.2"); |
| (void)__builtin_cpu_supports("avx"); |
| (void)__builtin_cpu_supports("avx2"); |
| (void)__builtin_cpu_supports("sse4a"); |
| (void)__builtin_cpu_supports("fma4"); |
| (void)__builtin_cpu_supports("xop"); |
| (void)__builtin_cpu_supports("fma"); |
| (void)__builtin_cpu_supports("avx512f"); |
| (void)__builtin_cpu_supports("bmi"); |
| (void)__builtin_cpu_supports("bmi2"); |
| (void)__builtin_cpu_supports("aes"); |
| (void)__builtin_cpu_supports("pclmul"); |
| (void)__builtin_cpu_supports("avx512vl"); |
| (void)__builtin_cpu_supports("avx512bw"); |
| (void)__builtin_cpu_supports("avx512dq"); |
| (void)__builtin_cpu_supports("avx512cd"); |
| (void)__builtin_cpu_supports("avx512er"); |
| (void)__builtin_cpu_supports("avx512pf"); |
| (void)__builtin_cpu_supports("avx512vbmi"); |
| (void)__builtin_cpu_supports("avx512ifma"); |
| (void)__builtin_cpu_supports("avx5124vnniw"); |
| (void)__builtin_cpu_supports("avx5124fmaps"); |
| (void)__builtin_cpu_supports("avx512vpopcntdq"); |
| } |
| |
| void verifycpustrings() { |
| (void)__builtin_cpu_is("amd"); |
| (void)__builtin_cpu_is("amdfam10h"); |
| (void)__builtin_cpu_is("amdfam15h"); |
| (void)__builtin_cpu_is("amdfam17h"); |
| (void)__builtin_cpu_is("atom"); |
| (void)__builtin_cpu_is("barcelona"); |
| (void)__builtin_cpu_is("bdver1"); |
| (void)__builtin_cpu_is("bdver2"); |
| (void)__builtin_cpu_is("bdver3"); |
| (void)__builtin_cpu_is("bdver4"); |
| (void)__builtin_cpu_is("bonnell"); |
| (void)__builtin_cpu_is("broadwell"); |
| (void)__builtin_cpu_is("btver1"); |
| (void)__builtin_cpu_is("btver2"); |
| (void)__builtin_cpu_is("cannonlake"); |
| (void)__builtin_cpu_is("core2"); |
| (void)__builtin_cpu_is("corei7"); |
| (void)__builtin_cpu_is("haswell"); |
| (void)__builtin_cpu_is("intel"); |
| (void)__builtin_cpu_is("istanbul"); |
| (void)__builtin_cpu_is("ivybridge"); |
| (void)__builtin_cpu_is("knl"); |
| (void)__builtin_cpu_is("knm"); |
| (void)__builtin_cpu_is("nehalem"); |
| (void)__builtin_cpu_is("sandybridge"); |
| (void)__builtin_cpu_is("shanghai"); |
| (void)__builtin_cpu_is("silvermont"); |
| (void)__builtin_cpu_is("skylake"); |
| (void)__builtin_cpu_is("skylake-avx512"); |
| (void)__builtin_cpu_is("slm"); |
| (void)__builtin_cpu_is("westmere"); |
| (void)__builtin_cpu_is("znver1"); |
| } |