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