1a5728872c7702ddd09537c95bc3cbd20e1f2fb09Daniel Dunbar// RUN: %clang_cc1 -emit-llvm -o %t %s 2d417d96037c5beb297ff4ac780f907bf3fa0a599Daniel Dunbar// RUN: not grep __builtin %t 3db7b72a82a6834680ccf1eeb51dc57e6d935c655John McCall// RUN: %clang_cc1 %s -emit-llvm -o - -triple x86_64-darwin-apple | FileCheck %s 4d417d96037c5beb297ff4ac780f907bf3fa0a599Daniel Dunbar 523afaad895486d4a9ea672f497b63ebc4c588955Daniel Dunbarint printf(const char *, ...); 6d417d96037c5beb297ff4ac780f907bf3fa0a599Daniel Dunbar 7d417d96037c5beb297ff4ac780f907bf3fa0a599Daniel Dunbarvoid p(char *str, int x) { 8d417d96037c5beb297ff4ac780f907bf3fa0a599Daniel Dunbar printf("%s: %d\n", str, x); 9d417d96037c5beb297ff4ac780f907bf3fa0a599Daniel Dunbar} 10d417d96037c5beb297ff4ac780f907bf3fa0a599Daniel Dunbarvoid q(char *str, double x) { 11d417d96037c5beb297ff4ac780f907bf3fa0a599Daniel Dunbar printf("%s: %f\n", str, x); 12d417d96037c5beb297ff4ac780f907bf3fa0a599Daniel Dunbar} 13db7b72a82a6834680ccf1eeb51dc57e6d935c655John McCallvoid r(char *str, void *ptr) { 14db7b72a82a6834680ccf1eeb51dc57e6d935c655John McCall printf("%s: %p\n", str, ptr); 15db7b72a82a6834680ccf1eeb51dc57e6d935c655John McCall} 16db7b72a82a6834680ccf1eeb51dc57e6d935c655John McCall 17db7b72a82a6834680ccf1eeb51dc57e6d935c655John McCallint random(void); 18d417d96037c5beb297ff4ac780f907bf3fa0a599Daniel Dunbar 19d417d96037c5beb297ff4ac780f907bf3fa0a599Daniel Dunbarint main() { 20d417d96037c5beb297ff4ac780f907bf3fa0a599Daniel Dunbar int N = random(); 21d417d96037c5beb297ff4ac780f907bf3fa0a599Daniel Dunbar#define P(n,args) p(#n #args, __builtin_##n args) 22d417d96037c5beb297ff4ac780f907bf3fa0a599Daniel Dunbar#define Q(n,args) q(#n #args, __builtin_##n args) 23db7b72a82a6834680ccf1eeb51dc57e6d935c655John McCall#define R(n,args) r(#n #args, __builtin_##n args) 24d417d96037c5beb297ff4ac780f907bf3fa0a599Daniel Dunbar#define V(n,args) p(#n #args, (__builtin_##n args, 0)) 25d417d96037c5beb297ff4ac780f907bf3fa0a599Daniel Dunbar P(types_compatible_p, (int, float)); 26d417d96037c5beb297ff4ac780f907bf3fa0a599Daniel Dunbar P(choose_expr, (0, 10, 20)); 27d417d96037c5beb297ff4ac780f907bf3fa0a599Daniel Dunbar P(constant_p, (sizeof(10))); 28d417d96037c5beb297ff4ac780f907bf3fa0a599Daniel Dunbar P(expect, (N == 12, 0)); 29d417d96037c5beb297ff4ac780f907bf3fa0a599Daniel Dunbar V(prefetch, (&N)); 30d417d96037c5beb297ff4ac780f907bf3fa0a599Daniel Dunbar V(prefetch, (&N, 1)); 31d417d96037c5beb297ff4ac780f907bf3fa0a599Daniel Dunbar V(prefetch, (&N, 1, 0)); 32d417d96037c5beb297ff4ac780f907bf3fa0a599Daniel Dunbar 33d417d96037c5beb297ff4ac780f907bf3fa0a599Daniel Dunbar // Numeric Constants 34d417d96037c5beb297ff4ac780f907bf3fa0a599Daniel Dunbar 35d417d96037c5beb297ff4ac780f907bf3fa0a599Daniel Dunbar Q(huge_val, ()); 36d417d96037c5beb297ff4ac780f907bf3fa0a599Daniel Dunbar Q(huge_valf, ()); 37d417d96037c5beb297ff4ac780f907bf3fa0a599Daniel Dunbar Q(huge_vall, ()); 38d417d96037c5beb297ff4ac780f907bf3fa0a599Daniel Dunbar Q(inf, ()); 39d417d96037c5beb297ff4ac780f907bf3fa0a599Daniel Dunbar Q(inff, ()); 40d417d96037c5beb297ff4ac780f907bf3fa0a599Daniel Dunbar Q(infl, ()); 41d417d96037c5beb297ff4ac780f907bf3fa0a599Daniel Dunbar 42a6cebabcf8a00dc888830dd8a3839693d3ec8429Benjamin Kramer P(fpclassify, (0, 1, 2, 3, 4, 1.0)); 43a6cebabcf8a00dc888830dd8a3839693d3ec8429Benjamin Kramer P(fpclassify, (0, 1, 2, 3, 4, 1.0f)); 44a6cebabcf8a00dc888830dd8a3839693d3ec8429Benjamin Kramer P(fpclassify, (0, 1, 2, 3, 4, 1.0l)); 45d417d96037c5beb297ff4ac780f907bf3fa0a599Daniel Dunbar // FIXME: 46d417d96037c5beb297ff4ac780f907bf3fa0a599Daniel Dunbar // P(isinf_sign, (1.0)); 47d417d96037c5beb297ff4ac780f907bf3fa0a599Daniel Dunbar 481768a6242aea0f1e0f30c15316d21212ce87152aDaniel Dunbar Q(nan, ("")); 491768a6242aea0f1e0f30c15316d21212ce87152aDaniel Dunbar Q(nanf, ("")); 501768a6242aea0f1e0f30c15316d21212ce87152aDaniel Dunbar Q(nanl, ("")); 511768a6242aea0f1e0f30c15316d21212ce87152aDaniel Dunbar Q(nans, ("")); 521768a6242aea0f1e0f30c15316d21212ce87152aDaniel Dunbar Q(nan, ("10")); 531768a6242aea0f1e0f30c15316d21212ce87152aDaniel Dunbar Q(nanf, ("10")); 541768a6242aea0f1e0f30c15316d21212ce87152aDaniel Dunbar Q(nanl, ("10")); 551768a6242aea0f1e0f30c15316d21212ce87152aDaniel Dunbar Q(nans, ("10")); 561768a6242aea0f1e0f30c15316d21212ce87152aDaniel Dunbar 571768a6242aea0f1e0f30c15316d21212ce87152aDaniel Dunbar P(isgreater, (1., 2.)); 581768a6242aea0f1e0f30c15316d21212ce87152aDaniel Dunbar P(isgreaterequal, (1., 2.)); 591768a6242aea0f1e0f30c15316d21212ce87152aDaniel Dunbar P(isless, (1., 2.)); 601768a6242aea0f1e0f30c15316d21212ce87152aDaniel Dunbar P(islessequal, (1., 2.)); 611768a6242aea0f1e0f30c15316d21212ce87152aDaniel Dunbar P(islessgreater, (1., 2.)); 621768a6242aea0f1e0f30c15316d21212ce87152aDaniel Dunbar P(isunordered, (1., 2.)); 63d417d96037c5beb297ff4ac780f907bf3fa0a599Daniel Dunbar 64d6139895f43d161a972d134ffda4229d2f548eb6Eli Friedman P(isnan, (1.)); 65d6139895f43d161a972d134ffda4229d2f548eb6Eli Friedman 66d417d96037c5beb297ff4ac780f907bf3fa0a599Daniel Dunbar // Bitwise & Numeric Functions 67d417d96037c5beb297ff4ac780f907bf3fa0a599Daniel Dunbar 681768a6242aea0f1e0f30c15316d21212ce87152aDaniel Dunbar P(abs, (N)); 691768a6242aea0f1e0f30c15316d21212ce87152aDaniel Dunbar 70d417d96037c5beb297ff4ac780f907bf3fa0a599Daniel Dunbar P(clz, (N)); 71d417d96037c5beb297ff4ac780f907bf3fa0a599Daniel Dunbar P(clzl, (N)); 72d417d96037c5beb297ff4ac780f907bf3fa0a599Daniel Dunbar P(clzll, (N)); 73d417d96037c5beb297ff4ac780f907bf3fa0a599Daniel Dunbar P(ctz, (N)); 74d417d96037c5beb297ff4ac780f907bf3fa0a599Daniel Dunbar P(ctzl, (N)); 75d417d96037c5beb297ff4ac780f907bf3fa0a599Daniel Dunbar P(ctzll, (N)); 76d417d96037c5beb297ff4ac780f907bf3fa0a599Daniel Dunbar P(ffs, (N)); 77d417d96037c5beb297ff4ac780f907bf3fa0a599Daniel Dunbar P(ffsl, (N)); 78d417d96037c5beb297ff4ac780f907bf3fa0a599Daniel Dunbar P(ffsll, (N)); 79d417d96037c5beb297ff4ac780f907bf3fa0a599Daniel Dunbar P(parity, (N)); 80d417d96037c5beb297ff4ac780f907bf3fa0a599Daniel Dunbar P(parityl, (N)); 81d417d96037c5beb297ff4ac780f907bf3fa0a599Daniel Dunbar P(parityll, (N)); 82d417d96037c5beb297ff4ac780f907bf3fa0a599Daniel Dunbar P(popcount, (N)); 83d417d96037c5beb297ff4ac780f907bf3fa0a599Daniel Dunbar P(popcountl, (N)); 84d417d96037c5beb297ff4ac780f907bf3fa0a599Daniel Dunbar P(popcountll, (N)); 85d417d96037c5beb297ff4ac780f907bf3fa0a599Daniel Dunbar Q(powi, (1.2f, N)); 86d417d96037c5beb297ff4ac780f907bf3fa0a599Daniel Dunbar Q(powif, (1.2f, N)); 87d417d96037c5beb297ff4ac780f907bf3fa0a599Daniel Dunbar Q(powil, (1.2f, N)); 88d417d96037c5beb297ff4ac780f907bf3fa0a599Daniel Dunbar 89f8ebb4154e261e34a0c77338fa1faa100ecfb28dDaniel Dunbar // Lib functions 90d417d96037c5beb297ff4ac780f907bf3fa0a599Daniel Dunbar int a, b, n = random(); // Avoid optimizing out. 91d417d96037c5beb297ff4ac780f907bf3fa0a599Daniel Dunbar char s0[10], s1[] = "Hello"; 92f8ebb4154e261e34a0c77338fa1faa100ecfb28dDaniel Dunbar V(strcat, (s0, s1)); 937a0048b3f59b9623e33bda2609c7a9fefc4a65c3Daniel Dunbar V(strcmp, (s0, s1)); 94f8ebb4154e261e34a0c77338fa1faa100ecfb28dDaniel Dunbar V(strncat, (s0, s1, n)); 95f8ebb4154e261e34a0c77338fa1faa100ecfb28dDaniel Dunbar V(strchr, (s0, s1[0])); 96f8ebb4154e261e34a0c77338fa1faa100ecfb28dDaniel Dunbar V(strrchr, (s0, s1[0])); 97f8ebb4154e261e34a0c77338fa1faa100ecfb28dDaniel Dunbar V(strcpy, (s0, s1)); 98f8ebb4154e261e34a0c77338fa1faa100ecfb28dDaniel Dunbar V(strncpy, (s0, s1, n)); 99f8ebb4154e261e34a0c77338fa1faa100ecfb28dDaniel Dunbar 100f8ebb4154e261e34a0c77338fa1faa100ecfb28dDaniel Dunbar // Object size checking 101d417d96037c5beb297ff4ac780f907bf3fa0a599Daniel Dunbar V(__memset_chk, (s0, 0, sizeof s0, n)); 102d417d96037c5beb297ff4ac780f907bf3fa0a599Daniel Dunbar V(__memcpy_chk, (s0, s1, sizeof s0, n)); 103d417d96037c5beb297ff4ac780f907bf3fa0a599Daniel Dunbar V(__memmove_chk, (s0, s1, sizeof s0, n)); 104d417d96037c5beb297ff4ac780f907bf3fa0a599Daniel Dunbar V(__mempcpy_chk, (s0, s1, sizeof s0, n)); 105d417d96037c5beb297ff4ac780f907bf3fa0a599Daniel Dunbar V(__strncpy_chk, (s0, s1, sizeof s0, n)); 106d417d96037c5beb297ff4ac780f907bf3fa0a599Daniel Dunbar V(__strcpy_chk, (s0, s1, n)); 107d417d96037c5beb297ff4ac780f907bf3fa0a599Daniel Dunbar s0[0] = 0; 108d417d96037c5beb297ff4ac780f907bf3fa0a599Daniel Dunbar V(__strcat_chk, (s0, s1, n)); 109d417d96037c5beb297ff4ac780f907bf3fa0a599Daniel Dunbar P(object_size, (s0, 0)); 110d417d96037c5beb297ff4ac780f907bf3fa0a599Daniel Dunbar P(object_size, (s0, 1)); 111d417d96037c5beb297ff4ac780f907bf3fa0a599Daniel Dunbar P(object_size, (s0, 2)); 112d417d96037c5beb297ff4ac780f907bf3fa0a599Daniel Dunbar P(object_size, (s0, 3)); 113d417d96037c5beb297ff4ac780f907bf3fa0a599Daniel Dunbar 114d417d96037c5beb297ff4ac780f907bf3fa0a599Daniel Dunbar // Whatever 115d417d96037c5beb297ff4ac780f907bf3fa0a599Daniel Dunbar 116d417d96037c5beb297ff4ac780f907bf3fa0a599Daniel Dunbar P(bswap32, (N)); 117d417d96037c5beb297ff4ac780f907bf3fa0a599Daniel Dunbar P(bswap64, (N)); 118d417d96037c5beb297ff4ac780f907bf3fa0a599Daniel Dunbar // FIXME 119d417d96037c5beb297ff4ac780f907bf3fa0a599Daniel Dunbar // V(clear_cache, (&N, &N+1)); 120d417d96037c5beb297ff4ac780f907bf3fa0a599Daniel Dunbar V(trap, ()); 121db7b72a82a6834680ccf1eeb51dc57e6d935c655John McCall R(extract_return_addr, (&N)); 122ba68b08a05587490ed4c2e3d26f3a742c995c660Eli Friedman P(signbit, (1.0)); 123d417d96037c5beb297ff4ac780f907bf3fa0a599Daniel Dunbar 124d417d96037c5beb297ff4ac780f907bf3fa0a599Daniel Dunbar return 0; 125d417d96037c5beb297ff4ac780f907bf3fa0a599Daniel Dunbar} 126d417d96037c5beb297ff4ac780f907bf3fa0a599Daniel Dunbar 127b808c952bbff821dce727dd801a1098d64394f98Chris Lattner 128b808c952bbff821dce727dd801a1098d64394f98Chris Lattner 129b808c952bbff821dce727dd801a1098d64394f98Chris Lattnervoid foo() { 130b808c952bbff821dce727dd801a1098d64394f98Chris Lattner __builtin_strcat(0, 0); 131b808c952bbff821dce727dd801a1098d64394f98Chris Lattner} 132b808c952bbff821dce727dd801a1098d64394f98Chris Lattner 133db7b72a82a6834680ccf1eeb51dc57e6d935c655John McCall// CHECK: define void @bar( 134db7b72a82a6834680ccf1eeb51dc57e6d935c655John McCallvoid bar() { 135db7b72a82a6834680ccf1eeb51dc57e6d935c655John McCall float f; 136db7b72a82a6834680ccf1eeb51dc57e6d935c655John McCall double d; 137db7b72a82a6834680ccf1eeb51dc57e6d935c655John McCall long double ld; 138db7b72a82a6834680ccf1eeb51dc57e6d935c655John McCall 139db7b72a82a6834680ccf1eeb51dc57e6d935c655John McCall // LLVM's hex representation of float constants is really unfortunate; 140db7b72a82a6834680ccf1eeb51dc57e6d935c655John McCall // basically it does a float-to-double "conversion" and then prints the 141fc8f0e14ad142ed811e90fbd9a30e419e301c717Chris Lattner // hex form of that. That gives us weird artifacts like exponents 142db7b72a82a6834680ccf1eeb51dc57e6d935c655John McCall // that aren't numerically similar to the original exponent and 143db7b72a82a6834680ccf1eeb51dc57e6d935c655John McCall // significand bit-patterns that are offset by three bits (because 144db7b72a82a6834680ccf1eeb51dc57e6d935c655John McCall // the exponent was expanded from 8 bits to 11). 145db7b72a82a6834680ccf1eeb51dc57e6d935c655John McCall // 146db7b72a82a6834680ccf1eeb51dc57e6d935c655John McCall // 0xAE98 == 1010111010011000 147db7b72a82a6834680ccf1eeb51dc57e6d935c655John McCall // 0x15D3 == 1010111010011 148db7b72a82a6834680ccf1eeb51dc57e6d935c655John McCall 149db7b72a82a6834680ccf1eeb51dc57e6d935c655John McCall f = __builtin_huge_valf(); // CHECK: float 0x7FF0000000000000 150db7b72a82a6834680ccf1eeb51dc57e6d935c655John McCall d = __builtin_huge_val(); // CHECK: double 0x7FF0000000000000 151db7b72a82a6834680ccf1eeb51dc57e6d935c655John McCall ld = __builtin_huge_vall(); // CHECK: x86_fp80 0xK7FFF8000000000000000 152db7b72a82a6834680ccf1eeb51dc57e6d935c655John McCall f = __builtin_nanf(""); // CHECK: float 0x7FF8000000000000 153db7b72a82a6834680ccf1eeb51dc57e6d935c655John McCall d = __builtin_nan(""); // CHECK: double 0x7FF8000000000000 154db7b72a82a6834680ccf1eeb51dc57e6d935c655John McCall ld = __builtin_nanl(""); // CHECK: x86_fp80 0xK7FFFC000000000000000 155db7b72a82a6834680ccf1eeb51dc57e6d935c655John McCall f = __builtin_nanf("0xAE98"); // CHECK: float 0x7FF815D300000000 156db7b72a82a6834680ccf1eeb51dc57e6d935c655John McCall d = __builtin_nan("0xAE98"); // CHECK: double 0x7FF800000000AE98 157db7b72a82a6834680ccf1eeb51dc57e6d935c655John McCall ld = __builtin_nanl("0xAE98"); // CHECK: x86_fp80 0xK7FFFC00000000000AE98 158db7b72a82a6834680ccf1eeb51dc57e6d935c655John McCall f = __builtin_nansf(""); // CHECK: float 0x7FF4000000000000 159db7b72a82a6834680ccf1eeb51dc57e6d935c655John McCall d = __builtin_nans(""); // CHECK: double 0x7FF4000000000000 160db7b72a82a6834680ccf1eeb51dc57e6d935c655John McCall ld = __builtin_nansl(""); // CHECK: x86_fp80 0xK7FFFA000000000000000 161db7b72a82a6834680ccf1eeb51dc57e6d935c655John McCall f = __builtin_nansf("0xAE98"); // CHECK: float 0x7FF015D300000000 162db7b72a82a6834680ccf1eeb51dc57e6d935c655John McCall d = __builtin_nans("0xAE98"); // CHECK: double 0x7FF000000000AE98 163db7b72a82a6834680ccf1eeb51dc57e6d935c655John McCall ld = __builtin_nansl("0xAE98");// CHECK: x86_fp80 0xK7FFF800000000000AE98 164db7b72a82a6834680ccf1eeb51dc57e6d935c655John McCall 165db7b72a82a6834680ccf1eeb51dc57e6d935c655John McCall} 166db7b72a82a6834680ccf1eeb51dc57e6d935c655John McCall// CHECK: } 16781368fbfd6d57150f66c993dc9041d62a7a32c4fChris Lattner 16881368fbfd6d57150f66c993dc9041d62a7a32c4fChris Lattner 169ed074150c9a775c5e2e1c4ececeba18ba880ce7dChris Lattner// CHECK: define void @test_float_builtins 170ed074150c9a775c5e2e1c4ececeba18ba880ce7dChris Lattnervoid test_float_builtins(float F, double D, long double LD) { 17181368fbfd6d57150f66c993dc9041d62a7a32c4fChris Lattner volatile int res; 17281368fbfd6d57150f66c993dc9041d62a7a32c4fChris Lattner res = __builtin_isinf(F); 17381368fbfd6d57150f66c993dc9041d62a7a32c4fChris Lattner // CHECK: call float @fabsf(float 17481368fbfd6d57150f66c993dc9041d62a7a32c4fChris Lattner // CHECK: fcmp oeq float {{.*}}, 0x7FF0000000000000 17581368fbfd6d57150f66c993dc9041d62a7a32c4fChris Lattner 17681368fbfd6d57150f66c993dc9041d62a7a32c4fChris Lattner res = __builtin_isinf(D); 17781368fbfd6d57150f66c993dc9041d62a7a32c4fChris Lattner // CHECK: call double @fabs(double 17881368fbfd6d57150f66c993dc9041d62a7a32c4fChris Lattner // CHECK: fcmp oeq double {{.*}}, 0x7FF0000000000000 17981368fbfd6d57150f66c993dc9041d62a7a32c4fChris Lattner 18081368fbfd6d57150f66c993dc9041d62a7a32c4fChris Lattner res = __builtin_isinf(LD); 18181368fbfd6d57150f66c993dc9041d62a7a32c4fChris Lattner // CHECK: call x86_fp80 @fabsl(x86_fp80 18281368fbfd6d57150f66c993dc9041d62a7a32c4fChris Lattner // CHECK: fcmp oeq x86_fp80 {{.*}}, 0xK7FFF8000000000000000 183ed074150c9a775c5e2e1c4ececeba18ba880ce7dChris Lattner 184ed074150c9a775c5e2e1c4ececeba18ba880ce7dChris Lattner res = __builtin_isfinite(F); 185ed074150c9a775c5e2e1c4ececeba18ba880ce7dChris Lattner // CHECK: fcmp oeq float 186ed074150c9a775c5e2e1c4ececeba18ba880ce7dChris Lattner // CHECK: call float @fabsf 187ed074150c9a775c5e2e1c4ececeba18ba880ce7dChris Lattner // CHECK: fcmp une float {{.*}}, 0x7FF0000000000000 188ed074150c9a775c5e2e1c4ececeba18ba880ce7dChris Lattner // CHECK: and i1 1896349ce94d1b4fa560bf060c5ca5ad5728ce4fad9Benjamin Kramer 1906349ce94d1b4fa560bf060c5ca5ad5728ce4fad9Benjamin Kramer res = __builtin_isnormal(F); 1916349ce94d1b4fa560bf060c5ca5ad5728ce4fad9Benjamin Kramer // CHECK: fcmp oeq float 1926349ce94d1b4fa560bf060c5ca5ad5728ce4fad9Benjamin Kramer // CHECK: call float @fabsf 1936349ce94d1b4fa560bf060c5ca5ad5728ce4fad9Benjamin Kramer // CHECK: fcmp ult float {{.*}}, 0x7FF0000000000000 1946349ce94d1b4fa560bf060c5ca5ad5728ce4fad9Benjamin Kramer // CHECK: fcmp uge float {{.*}}, 0x3810000000000000 1956349ce94d1b4fa560bf060c5ca5ad5728ce4fad9Benjamin Kramer // CHECK: and i1 1966349ce94d1b4fa560bf060c5ca5ad5728ce4fad9Benjamin Kramer // CHECK: and i1 19781368fbfd6d57150f66c993dc9041d62a7a32c4fChris Lattner} 19881368fbfd6d57150f66c993dc9041d62a7a32c4fChris Lattner 19978673d9f910e8dfe13248c2426c51d8f9fb28572John McCall// CHECK: define void @test_builtin_longjmp 20078673d9f910e8dfe13248c2426c51d8f9fb28572John McCallvoid test_builtin_longjmp(void **buffer) { 20178673d9f910e8dfe13248c2426c51d8f9fb28572John McCall // CHECK: [[BITCAST:%.*]] = bitcast 20278673d9f910e8dfe13248c2426c51d8f9fb28572John McCall // CHECK-NEXT: call void @llvm.eh.sjlj.longjmp(i8* [[BITCAST]]) 20378673d9f910e8dfe13248c2426c51d8f9fb28572John McCall __builtin_longjmp(buffer, 1); 20478673d9f910e8dfe13248c2426c51d8f9fb28572John McCall // CHECK-NEXT: unreachable 20578673d9f910e8dfe13248c2426c51d8f9fb28572John McCall} 206a841c19f7860393d6319bf40e9d662284462771dHal Finkel 207a841c19f7860393d6319bf40e9d662284462771dHal Finkel// CHECK: define i64 @test_builtin_readcyclecounter 208a841c19f7860393d6319bf40e9d662284462771dHal Finkellong long test_builtin_readcyclecounter() { 209a841c19f7860393d6319bf40e9d662284462771dHal Finkel // CHECK: call i64 @llvm.readcyclecounter() 210a841c19f7860393d6319bf40e9d662284462771dHal Finkel return __builtin_readcyclecounter(); 211a841c19f7860393d6319bf40e9d662284462771dHal Finkel} 212