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 Sambucvoid 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 Sambucvoid 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 Sambucvoid 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