Clang Project

clang_source_code/test/CodeGen/target-builtin-noerror.c
1// REQUIRES: x86-registered-target
2// RUN: %clang_cc1 %s -triple=x86_64-linux-gnu -S -o -
3#define __MM_MALLOC_H
4
5#include <x86intrin.h>
6
7// No warnings.
8extern __m256i a;
9int __attribute__((target("avx"))) bar(__m256i a) {
10  return _mm256_extract_epi32(a, 3);
11}
12
13int baz() {
14  return bar(a);
15}
16
17int __attribute__((target("avx"))) qq_avx(__m256i a) {
18  return _mm256_extract_epi32(a, 3);
19}
20
21int qq_noavx() {
22  return 0;
23}
24
25extern __m256i a;
26int qq() {
27  if (__builtin_cpu_supports("avx"))
28    return qq_avx(a);
29  else
30    return qq_noavx();
31}
32
33// Test that fma and fma4 are both separately and combined valid for an fma intrinsic.
34__m128 __attribute__((target("fma"))) fma_1(__m128 a, __m128 b, __m128 c) {
35  return __builtin_ia32_vfmaddps(a, b, c);
36}
37
38__m128 __attribute__((target("fma4"))) fma_2(__m128 a, __m128 b, __m128 c) {
39  return __builtin_ia32_vfmaddps(a, b, c);
40}
41
42__m128 __attribute__((target("fma,fma4"))) fma_3(__m128 a, __m128 b, __m128 c) {
43  return __builtin_ia32_vfmaddps(a, b, c);
44}
45
46void verifyfeaturestrings() {
47  (void)__builtin_cpu_supports("cmov");
48  (void)__builtin_cpu_supports("mmx");
49  (void)__builtin_cpu_supports("popcnt");
50  (void)__builtin_cpu_supports("sse");
51  (void)__builtin_cpu_supports("sse2");
52  (void)__builtin_cpu_supports("sse3");
53  (void)__builtin_cpu_supports("ssse3");
54  (void)__builtin_cpu_supports("sse4.1");
55  (void)__builtin_cpu_supports("sse4.2");
56  (void)__builtin_cpu_supports("avx");
57  (void)__builtin_cpu_supports("avx2");
58  (void)__builtin_cpu_supports("sse4a");
59  (void)__builtin_cpu_supports("fma4");
60  (void)__builtin_cpu_supports("xop");
61  (void)__builtin_cpu_supports("fma");
62  (void)__builtin_cpu_supports("avx512f");
63  (void)__builtin_cpu_supports("bmi");
64  (void)__builtin_cpu_supports("bmi2");
65  (void)__builtin_cpu_supports("aes");
66  (void)__builtin_cpu_supports("pclmul");
67  (void)__builtin_cpu_supports("avx512vl");
68  (void)__builtin_cpu_supports("avx512bw");
69  (void)__builtin_cpu_supports("avx512dq");
70  (void)__builtin_cpu_supports("avx512cd");
71  (void)__builtin_cpu_supports("avx512er");
72  (void)__builtin_cpu_supports("avx512pf");
73  (void)__builtin_cpu_supports("avx512vbmi");
74  (void)__builtin_cpu_supports("avx512ifma");
75  (void)__builtin_cpu_supports("avx5124vnniw");
76  (void)__builtin_cpu_supports("avx5124fmaps");
77  (void)__builtin_cpu_supports("avx512vpopcntdq");
78  (void)__builtin_cpu_supports("avx512vbmi2");
79  (void)__builtin_cpu_supports("gfni");
80  (void)__builtin_cpu_supports("vpclmulqdq");
81  (void)__builtin_cpu_supports("avx512vnni");
82  (void)__builtin_cpu_supports("avx512bitalg");
83}
84
85void verifycpustrings() {
86  (void)__builtin_cpu_is("amd");
87  (void)__builtin_cpu_is("amdfam10h");
88  (void)__builtin_cpu_is("amdfam15h");
89  (void)__builtin_cpu_is("amdfam17h");
90  (void)__builtin_cpu_is("atom");
91  (void)__builtin_cpu_is("barcelona");
92  (void)__builtin_cpu_is("bdver1");
93  (void)__builtin_cpu_is("bdver2");
94  (void)__builtin_cpu_is("bdver3");
95  (void)__builtin_cpu_is("bdver4");
96  (void)__builtin_cpu_is("bonnell");
97  (void)__builtin_cpu_is("broadwell");
98  (void)__builtin_cpu_is("btver1");
99  (void)__builtin_cpu_is("btver2");
100  (void)__builtin_cpu_is("cannonlake");
101  (void)__builtin_cpu_is("cascadelake");
102  (void)__builtin_cpu_is("core2");
103  (void)__builtin_cpu_is("corei7");
104  (void)__builtin_cpu_is("goldmont");
105  (void)__builtin_cpu_is("goldmont-plus");
106  (void)__builtin_cpu_is("haswell");
107  (void)__builtin_cpu_is("icelake-client");
108  (void)__builtin_cpu_is("icelake-server");
109  (void)__builtin_cpu_is("intel");
110  (void)__builtin_cpu_is("istanbul");
111  (void)__builtin_cpu_is("ivybridge");
112  (void)__builtin_cpu_is("knl");
113  (void)__builtin_cpu_is("knm");
114  (void)__builtin_cpu_is("nehalem");
115  (void)__builtin_cpu_is("sandybridge");
116  (void)__builtin_cpu_is("shanghai");
117  (void)__builtin_cpu_is("silvermont");
118  (void)__builtin_cpu_is("skylake");
119  (void)__builtin_cpu_is("skylake-avx512");
120  (void)__builtin_cpu_is("slm");
121  (void)__builtin_cpu_is("tremont");
122  (void)__builtin_cpu_is("westmere");
123  (void)__builtin_cpu_is("znver1");
124  (void)__builtin_cpu_is("znver2");
125}
126