214 lines · c
1// REQUIRES: x86-registered-target2// RUN: %clang_cc1 %s -triple=x86_64-linux-gnu -S -o -3#define __MM_MALLOC_H4 5#include <x86intrin.h>6 7// No warnings.8extern __m256i a;9int __attribute__((target("avx"))) bar(void) {10 return _mm256_extract_epi32(a, 3);11}12 13int baz(void) {14 return bar();15}16 17int __attribute__((target("avx"))) qq_avx(void) {18 return _mm256_extract_epi32(a, 3);19}20 21int qq_noavx(void) {22 return 0;23}24 25extern __m256i a;26int qq(void) {27 if (__builtin_cpu_supports("avx"))28 return qq_avx();29 else30 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_vfmaddsubps(a, b, c);36}37 38__m128 __attribute__((target("fma4"))) fma_2(__m128 a, __m128 b, __m128 c) {39 return __builtin_ia32_vfmaddsubps(a, b, c);40}41 42__m128 __attribute__((target("fma,fma4"))) fma_3(__m128 a, __m128 b, __m128 c) {43 return __builtin_ia32_vfmaddsubps(a, b, c);44}45 46void verifyfeaturestrings(void) {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("avx512vbmi");72 (void)__builtin_cpu_supports("avx512ifma");73 (void)__builtin_cpu_supports("avx5124vnniw");74 (void)__builtin_cpu_supports("avx5124fmaps");75 (void)__builtin_cpu_supports("avx512vpopcntdq");76 (void)__builtin_cpu_supports("avx512vbmi2");77 (void)__builtin_cpu_supports("gfni");78 (void)__builtin_cpu_supports("vpclmulqdq");79 (void)__builtin_cpu_supports("avx512vnni");80 (void)__builtin_cpu_supports("avx512bitalg");81 (void)__builtin_cpu_supports("avx512bf16");82 (void)__builtin_cpu_supports("avx512vp2intersect");83 (void)__builtin_cpu_supports("f16c");84 (void)__builtin_cpu_supports("avx512fp16");85 (void)__builtin_cpu_supports("3dnow");86 (void)__builtin_cpu_supports("adx");87 (void)__builtin_cpu_supports("cldemote");88 (void)__builtin_cpu_supports("clflushopt");89 (void)__builtin_cpu_supports("clwb");90 (void)__builtin_cpu_supports("clzero");91 (void)__builtin_cpu_supports("cx16");92 (void)__builtin_cpu_supports("enqcmd");93 (void)__builtin_cpu_supports("fsgsbase");94 (void)__builtin_cpu_supports("lwp");95 (void)__builtin_cpu_supports("lzcnt");96 (void)__builtin_cpu_supports("movbe");97 (void)__builtin_cpu_supports("movdir64b");98 (void)__builtin_cpu_supports("movdiri");99 (void)__builtin_cpu_supports("mwaitx");100 (void)__builtin_cpu_supports("pconfig");101 (void)__builtin_cpu_supports("pku");102 (void)__builtin_cpu_supports("prefetchwt1");103 (void)__builtin_cpu_supports("prfchw");104 (void)__builtin_cpu_supports("ptwrite");105 (void)__builtin_cpu_supports("rdpid");106 (void)__builtin_cpu_supports("rdrnd");107 (void)__builtin_cpu_supports("rdseed");108 (void)__builtin_cpu_supports("rtm");109 (void)__builtin_cpu_supports("serialize");110 (void)__builtin_cpu_supports("sgx");111 (void)__builtin_cpu_supports("sha");112 (void)__builtin_cpu_supports("shstk");113 (void)__builtin_cpu_supports("tbm");114 (void)__builtin_cpu_supports("tsxldtrk");115 (void)__builtin_cpu_supports("vaes");116 (void)__builtin_cpu_supports("waitpkg");117 (void)__builtin_cpu_supports("wbnoinvd");118 (void)__builtin_cpu_supports("xsave");119 (void)__builtin_cpu_supports("xsavec");120 (void)__builtin_cpu_supports("xsaveopt");121 (void)__builtin_cpu_supports("xsaves");122 (void)__builtin_cpu_supports("amx-tile");123 (void)__builtin_cpu_supports("amx-int8");124 (void)__builtin_cpu_supports("amx-bf16");125 (void)__builtin_cpu_supports("uintr");126 (void)__builtin_cpu_supports("hreset");127 (void)__builtin_cpu_supports("kl");128 (void)__builtin_cpu_supports("widekl");129 (void)__builtin_cpu_supports("avxvnni");130 (void)__builtin_cpu_supports("avxifma");131 (void)__builtin_cpu_supports("avxvnniint8");132 (void)__builtin_cpu_supports("avxneconvert");133 (void)__builtin_cpu_supports("cmpccxadd");134 (void)__builtin_cpu_supports("amx-fp16");135 (void)__builtin_cpu_supports("prefetchi");136 (void)__builtin_cpu_supports("raoint");137 (void)__builtin_cpu_supports("amx-complex");138 (void)__builtin_cpu_supports("avxvnniint16");139 (void)__builtin_cpu_supports("sm3");140 (void)__builtin_cpu_supports("sha512");141 (void)__builtin_cpu_supports("sm4");142 (void)__builtin_cpu_supports("apxf");143 (void)__builtin_cpu_supports("usermsr");144 (void)__builtin_cpu_supports("avx10.1");145 (void)__builtin_cpu_supports("avx10.2");146 (void)__builtin_cpu_supports("movrs");147}148 149void verifycpustrings(void) {150 (void)__builtin_cpu_is("alderlake");151 (void)__builtin_cpu_is("amd");152 (void)__builtin_cpu_is("amdfam10h");153 (void)__builtin_cpu_is("amdfam15h");154 (void)__builtin_cpu_is("amdfam17h");155 (void)__builtin_cpu_is("atom");156 (void)__builtin_cpu_is("barcelona");157 (void)__builtin_cpu_is("bdver1");158 (void)__builtin_cpu_is("bdver2");159 (void)__builtin_cpu_is("bdver3");160 (void)__builtin_cpu_is("bdver4");161 (void)__builtin_cpu_is("bonnell");162 (void)__builtin_cpu_is("broadwell");163 (void)__builtin_cpu_is("btver1");164 (void)__builtin_cpu_is("btver2");165 (void)__builtin_cpu_is("cannonlake");166 (void)__builtin_cpu_is("cascadelake");167 (void)__builtin_cpu_is("cooperlake");168 (void)__builtin_cpu_is("core2");169 (void)__builtin_cpu_is("corei7");170 (void)__builtin_cpu_is("goldmont");171 (void)__builtin_cpu_is("goldmont-plus");172 (void)__builtin_cpu_is("grandridge");173 (void)__builtin_cpu_is("graniterapids");174 (void)__builtin_cpu_is("emeraldrapids");175 (void)__builtin_cpu_is("graniterapids-d");176 (void)__builtin_cpu_is("arrowlake");177 (void)__builtin_cpu_is("arrowlake-s");178 (void)__builtin_cpu_is("lunarlake");179 (void)__builtin_cpu_is("clearwaterforest");180 (void)__builtin_cpu_is("pantherlake");181 (void)__builtin_cpu_is("wildcatlake");182 (void)__builtin_cpu_is("novalake");183 (void)__builtin_cpu_is("haswell");184 (void)__builtin_cpu_is("icelake-client");185 (void)__builtin_cpu_is("icelake-server");186 (void)__builtin_cpu_is("intel");187 (void)__builtin_cpu_is("istanbul");188 (void)__builtin_cpu_is("ivybridge");189 (void)__builtin_cpu_is("knl");190 (void)__builtin_cpu_is("knm");191 (void)__builtin_cpu_is("meteorlake");192 (void)__builtin_cpu_is("nehalem");193 (void)__builtin_cpu_is("raptorlake");194 (void)__builtin_cpu_is("rocketlake");195 (void)__builtin_cpu_is("sandybridge");196 (void)__builtin_cpu_is("shanghai");197 (void)__builtin_cpu_is("sierraforest");198 (void)__builtin_cpu_is("silvermont");199 (void)__builtin_cpu_is("skylake");200 (void)__builtin_cpu_is("skylake-avx512");201 (void)__builtin_cpu_is("slm");202 (void)__builtin_cpu_is("tigerlake");203 (void)__builtin_cpu_is("sapphirerapids");204 (void)__builtin_cpu_is("tremont");205 (void)__builtin_cpu_is("gracemont");206 (void)__builtin_cpu_is("westmere");207 (void)__builtin_cpu_is("znver1");208 (void)__builtin_cpu_is("znver2");209 (void)__builtin_cpu_is("znver3");210 (void)__builtin_cpu_is("znver4");211 (void)__builtin_cpu_is("znver5");212 (void)__builtin_cpu_is("diamondrapids");213}214