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