Home | History | Annotate | Download | only in X86
      1 ; RUN: llc < %s -march=x86-64 -mattr=+lzcnt | FileCheck %s
      2 
      3 declare i8 @llvm.ctlz.i8(i8, i1) nounwind readnone
      4 declare i16 @llvm.ctlz.i16(i16, i1) nounwind readnone
      5 declare i32 @llvm.ctlz.i32(i32, i1) nounwind readnone
      6 declare i64 @llvm.ctlz.i64(i64, i1) nounwind readnone
      7 
      8 define i8 @t1(i8 %x) nounwind  {
      9 	%tmp = tail call i8 @llvm.ctlz.i8( i8 %x, i1 false )
     10 	ret i8 %tmp
     11 ; CHECK-LABEL: t1:
     12 ; CHECK: lzcntl
     13 }
     14 
     15 define i16 @t2(i16 %x) nounwind  {
     16 	%tmp = tail call i16 @llvm.ctlz.i16( i16 %x, i1 false )
     17 	ret i16 %tmp
     18 ; CHECK-LABEL: t2:
     19 ; CHECK: lzcntw
     20 }
     21 
     22 define i32 @t3(i32 %x) nounwind  {
     23 	%tmp = tail call i32 @llvm.ctlz.i32( i32 %x, i1 false )
     24 	ret i32 %tmp
     25 ; CHECK-LABEL: t3:
     26 ; CHECK: lzcntl
     27 }
     28 
     29 define i64 @t4(i64 %x) nounwind  {
     30 	%tmp = tail call i64 @llvm.ctlz.i64( i64 %x, i1 false )
     31 	ret i64 %tmp
     32 ; CHECK-LABEL: t4:
     33 ; CHECK: lzcntq
     34 }
     35 
     36 define i8 @t5(i8 %x) nounwind  {
     37 	%tmp = tail call i8 @llvm.ctlz.i8( i8 %x, i1 true )
     38 	ret i8 %tmp
     39 ; CHECK-LABEL: t5:
     40 ; CHECK: lzcntl
     41 }
     42 
     43 define i16 @t6(i16 %x) nounwind  {
     44 	%tmp = tail call i16 @llvm.ctlz.i16( i16 %x, i1 true )
     45 	ret i16 %tmp
     46 ; CHECK-LABEL: t6:
     47 ; CHECK: lzcntw
     48 }
     49 
     50 define i32 @t7(i32 %x) nounwind  {
     51 	%tmp = tail call i32 @llvm.ctlz.i32( i32 %x, i1 true )
     52 	ret i32 %tmp
     53 ; CHECK-LABEL: t7:
     54 ; CHECK: lzcntl
     55 }
     56 
     57 define i64 @t8(i64 %x) nounwind  {
     58 	%tmp = tail call i64 @llvm.ctlz.i64( i64 %x, i1 true )
     59 	ret i64 %tmp
     60 ; CHECK-LABEL: t8:
     61 ; CHECK: lzcntq
     62 }
     63