1 ; Test to make sure intrinsics are automatically upgraded. 2 ; RUN: llvm-as < %s | llvm-dis | FileCheck %s 3 4 declare i8 @llvm.ctlz.i8(i8) 5 declare i16 @llvm.ctlz.i16(i16) 6 declare i32 @llvm.ctlz.i32(i32) 7 declare i42 @llvm.ctlz.i42(i42) ; Not a power-of-2 8 9 10 declare i32 @llvm.objectsize.i32(i8*, i1) nounwind readonly 11 12 13 define void @test.ctlz(i8 %a, i16 %b, i32 %c, i42 %d) { 14 ; CHECK: @test.ctlz 15 16 entry: 17 ; CHECK: call i8 @llvm.ctlz.i8(i8 %a, i1 false) 18 call i8 @llvm.ctlz.i8(i8 %a) 19 ; CHECK: call i16 @llvm.ctlz.i16(i16 %b, i1 false) 20 call i16 @llvm.ctlz.i16(i16 %b) 21 ; CHECK: call i32 @llvm.ctlz.i32(i32 %c, i1 false) 22 call i32 @llvm.ctlz.i32(i32 %c) 23 ; CHECK: call i42 @llvm.ctlz.i42(i42 %d, i1 false) 24 call i42 @llvm.ctlz.i42(i42 %d) 25 26 ret void 27 } 28 29 declare i8 @llvm.cttz.i8(i8) 30 declare i16 @llvm.cttz.i16(i16) 31 declare i32 @llvm.cttz.i32(i32) 32 declare i42 @llvm.cttz.i42(i42) ; Not a power-of-2 33 34 define void @test.cttz(i8 %a, i16 %b, i32 %c, i42 %d) { 35 ; CHECK: @test.cttz 36 37 entry: 38 ; CHECK: call i8 @llvm.cttz.i8(i8 %a, i1 false) 39 call i8 @llvm.cttz.i8(i8 %a) 40 ; CHECK: call i16 @llvm.cttz.i16(i16 %b, i1 false) 41 call i16 @llvm.cttz.i16(i16 %b) 42 ; CHECK: call i32 @llvm.cttz.i32(i32 %c, i1 false) 43 call i32 @llvm.cttz.i32(i32 %c) 44 ; CHECK: call i42 @llvm.cttz.i42(i42 %d, i1 false) 45 call i42 @llvm.cttz.i42(i42 %d) 46 47 ret void 48 } 49 50 51 @a = private global [60 x i8] zeroinitializer, align 1 52 53 define i32 @test.objectsize() { 54 ; CHECK-LABEL: @test.objectsize( 55 ; CHECK: @llvm.objectsize.i32.p0i8 56 ; CHECK-DAG: declare i32 @llvm.objectsize.i32.p0i8 57 %s = call i32 @llvm.objectsize.i32(i8* getelementptr inbounds ([60 x i8]* @a, i32 0, i32 0), i1 false) 58 ret i32 %s 59 } 60