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