1*9880d681SAndroid Build Coastguard Worker; RUN: llc -mcpu=pwr7 < %s | FileCheck %s 2*9880d681SAndroid Build Coastguard Workertarget datalayout = "E-m:e-i64:64-n32:64" 3*9880d681SAndroid Build Coastguard Workertarget triple = "powerpc64-unknown-linux-gnu" 4*9880d681SAndroid Build Coastguard Worker 5*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind readnone 6*9880d681SAndroid Build Coastguard Workerdefine signext i32 @crbitsoff(i32 signext %v1, i32 signext %v2) #0 { 7*9880d681SAndroid Build Coastguard Workerentry: 8*9880d681SAndroid Build Coastguard Worker %tobool = icmp ne i32 %v1, 0 9*9880d681SAndroid Build Coastguard Worker %lnot = icmp eq i32 %v2, 0 10*9880d681SAndroid Build Coastguard Worker %and3 = and i1 %tobool, %lnot 11*9880d681SAndroid Build Coastguard Worker %and = zext i1 %and3 to i32 12*9880d681SAndroid Build Coastguard Worker ret i32 %and 13*9880d681SAndroid Build Coastguard Worker 14*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: @crbitsoff 15*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: cmplwi {{[0-9]+}}, 3, 0 16*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: li [[REG2:[0-9]+]], 1 17*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: cntlzw [[REG3:[0-9]+]], 18*9880d681SAndroid Build Coastguard Worker; CHECK: isel [[REG4:[0-9]+]], 0, [[REG2]] 19*9880d681SAndroid Build Coastguard Worker; CHECK: and 3, [[REG4]], [[REG3]] 20*9880d681SAndroid Build Coastguard Worker; CHECK: blr 21*9880d681SAndroid Build Coastguard Worker} 22*9880d681SAndroid Build Coastguard Worker 23*9880d681SAndroid Build Coastguard Workerdefine signext i32 @crbitson(i32 signext %v1, i32 signext %v2) #1 { 24*9880d681SAndroid Build Coastguard Workerentry: 25*9880d681SAndroid Build Coastguard Worker %tobool = icmp ne i32 %v1, 0 26*9880d681SAndroid Build Coastguard Worker %lnot = icmp eq i32 %v2, 0 27*9880d681SAndroid Build Coastguard Worker %and3 = and i1 %tobool, %lnot 28*9880d681SAndroid Build Coastguard Worker %and = zext i1 %and3 to i32 29*9880d681SAndroid Build Coastguard Worker ret i32 %and 30*9880d681SAndroid Build Coastguard Worker 31*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: @crbitson 32*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: cmpwi {{[0-9]+}}, 3, 0 33*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: cmpwi {{[0-9]+}}, 4, 0 34*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: li [[REG2:[0-9]+]], 1 35*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: crorc [[REG3:[0-9]+]], 36*9880d681SAndroid Build Coastguard Worker; CHECK: isel 3, 0, [[REG2]], [[REG3]] 37*9880d681SAndroid Build Coastguard Worker; CHECK: blr 38*9880d681SAndroid Build Coastguard Worker} 39*9880d681SAndroid Build Coastguard Worker 40*9880d681SAndroid Build Coastguard Worker 41*9880d681SAndroid Build Coastguard Workerattributes #0 = { nounwind readnone "target-features"="-crbits" } 42*9880d681SAndroid Build Coastguard Workerattributes #1 = { nounwind readnone } 43*9880d681SAndroid Build Coastguard Worker 44