xref: /llvm-project/clang/test/CodeGen/count-builtins.c (revision 1412816686bd4a7b9d7fe72b14c5c4e62d8d4062)
1*14128166SBenjamin Kramer // RUN: %clang_cc1 %s -emit-llvm -o - | FileCheck %s
2*14128166SBenjamin Kramer 
3*14128166SBenjamin Kramer int leading, trailing, pop;
4*14128166SBenjamin Kramer 
test_i16(short P)5*14128166SBenjamin Kramer void test_i16(short P) {
6*14128166SBenjamin Kramer   leading = __builtin_clzs(P);
7*14128166SBenjamin Kramer   trailing = __builtin_ctzs(P);
8*14128166SBenjamin Kramer 
9*14128166SBenjamin Kramer // CHECK: @test_i16
10*14128166SBenjamin Kramer // CHECK: call i16 @llvm.ctlz.i16
11*14128166SBenjamin Kramer // CHECK: call i16 @llvm.cttz.i16
12*14128166SBenjamin Kramer }
13*14128166SBenjamin Kramer 
test_i32(int P)14*14128166SBenjamin Kramer void test_i32(int P) {
15*14128166SBenjamin Kramer   leading = __builtin_clz(P);
16*14128166SBenjamin Kramer   trailing = __builtin_ctz(P);
17*14128166SBenjamin Kramer   pop = __builtin_popcount(P);
18*14128166SBenjamin Kramer 
19*14128166SBenjamin Kramer // CHECK: @test_i32
20*14128166SBenjamin Kramer // CHECK: call i32 @llvm.ctlz.i32
21*14128166SBenjamin Kramer // CHECK: call i32 @llvm.cttz.i32
22*14128166SBenjamin Kramer // CHECK: call i32 @llvm.ctpop.i32
23*14128166SBenjamin Kramer }
24*14128166SBenjamin Kramer 
test_i64(float P)25*14128166SBenjamin Kramer void test_i64(float P) {
26*14128166SBenjamin Kramer   leading = __builtin_clzll(P);
27*14128166SBenjamin Kramer   trailing = __builtin_ctzll(P);
28*14128166SBenjamin Kramer   pop = __builtin_popcountll(P);
29*14128166SBenjamin Kramer // CHECK: @test_i64
30*14128166SBenjamin Kramer // CHECK: call i64 @llvm.ctlz.i64
31*14128166SBenjamin Kramer // CHECK: call i64 @llvm.cttz.i64
32*14128166SBenjamin Kramer // CHECK: call i64 @llvm.ctpop.i64
33*14128166SBenjamin Kramer }
34