13b017a746ecd2865669c9c4ed06cc57055129c4
[oota-llvm.git] / test / CodeGen / PowerPC / cttz-ctlz-spec.ll
1 ; RUN: opt -S -codegenprepare < %s | FileCheck %s
2 target datalayout = "E-m:e-i64:64-n32:64"
3 target triple = "powerpc64-unknown-linux-gnu"
4
5 define i64 @test1(i64 %A) {
6 ; CHECK-LABEL: @test1(
7 ; CHECK: [[CTLZ:%[A-Za-z0-9]+]] = call i64 @llvm.ctlz.i64(i64 %A, i1 false)
8 ; CHECK-NEXT: ret i64 [[CTLZ]]
9 entry:
10   %tobool = icmp eq i64 %A, 0
11   br i1 %tobool, label %cond.end, label %cond.true
12
13 cond.true:                                        ; preds = %entry
14   %0 = tail call i64 @llvm.ctlz.i64(i64 %A, i1 true)
15   br label %cond.end
16
17 cond.end:                                         ; preds = %entry, %cond.true
18   %cond = phi i64 [ %0, %cond.true ], [ 64, %entry ]
19   ret i64 %cond
20 }
21
22 define i64 @test1b(i64 %A) {
23 ; CHECK-LABEL: @test1b(
24 ; CHECK: [[CTTZ:%[A-Za-z0-9]+]] = call i64 @llvm.cttz.i64(i64 %A, i1 false)
25 ; CHECK-NEXT: ret i64 [[CTTZ]]
26 entry:
27   %tobool = icmp eq i64 %A, 0
28   br i1 %tobool, label %cond.end, label %cond.true
29
30 cond.true:                                        ; preds = %entry
31   %0 = tail call i64 @llvm.cttz.i64(i64 %A, i1 true)
32   br label %cond.end
33
34 cond.end:                                         ; preds = %entry, %cond.true
35   %cond = phi i64 [ %0, %cond.true ], [ 64, %entry ]
36   ret i64 %cond
37 }
38
39 declare i64 @llvm.ctlz.i64(i64, i1)
40 declare i64 @llvm.cttz.i64(i64, i1)
41