Home | History | Annotate | Download | only in Assembler
      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