1*9880d681SAndroid Build Coastguard Worker; RUN: llc -march=hexagon < %s | FileCheck %s 2*9880d681SAndroid Build Coastguard Worker; Check that we generate compare to predicate register. 3*9880d681SAndroid Build Coastguard Worker 4*9880d681SAndroid Build Coastguard Workerdefine i32 @compare1(i32 %a, i32 %b) nounwind { 5*9880d681SAndroid Build Coastguard Worker; CHECK: p{{[0-3]}}{{ *}}={{ *[!]?}}cmp.eq(r{{[0-9]+}},{{ *}}r{{[0-9]+}}) 6*9880d681SAndroid Build Coastguard Workerentry: 7*9880d681SAndroid Build Coastguard Worker %cmp = icmp ne i32 %a, %b 8*9880d681SAndroid Build Coastguard Worker %add = add nsw i32 %a, %b 9*9880d681SAndroid Build Coastguard Worker %sub = sub nsw i32 %a, %b 10*9880d681SAndroid Build Coastguard Worker %add.sub = select i1 %cmp, i32 %add, i32 %sub 11*9880d681SAndroid Build Coastguard Worker ret i32 %add.sub 12*9880d681SAndroid Build Coastguard Worker} 13*9880d681SAndroid Build Coastguard Worker 14*9880d681SAndroid Build Coastguard Workerdefine i32 @compare2(i32 %a) nounwind { 15*9880d681SAndroid Build Coastguard Worker; CHECK: p{{[0-3]}}{{ *}}={{ *[!]?}}cmp.eq(r{{[0-9]+}},{{ *}}#10) 16*9880d681SAndroid Build Coastguard Workerentry: 17*9880d681SAndroid Build Coastguard Worker %cmp = icmp ne i32 %a, 10 18*9880d681SAndroid Build Coastguard Worker %add = add nsw i32 %a, 10 19*9880d681SAndroid Build Coastguard Worker %sub = sub nsw i32 %a, 10 20*9880d681SAndroid Build Coastguard Worker %add.sub = select i1 %cmp, i32 %add, i32 %sub 21*9880d681SAndroid Build Coastguard Worker ret i32 %add.sub 22*9880d681SAndroid Build Coastguard Worker} 23*9880d681SAndroid Build Coastguard Worker 24*9880d681SAndroid Build Coastguard Workerdefine i32 @compare3(i32 %a, i32 %b) nounwind { 25*9880d681SAndroid Build Coastguard Worker; CHECK: p{{[0-3]}}{{ *}}={{ *}}cmp.gt(r{{[0-9]+}},{{ *}}r{{[0-9]+}}) 26*9880d681SAndroid Build Coastguard Workerentry: 27*9880d681SAndroid Build Coastguard Worker %cmp = icmp sgt i32 %a, %b 28*9880d681SAndroid Build Coastguard Worker %sub = sub nsw i32 %a, %b 29*9880d681SAndroid Build Coastguard Worker %add = add nsw i32 %a, %b 30*9880d681SAndroid Build Coastguard Worker %sub.add = select i1 %cmp, i32 %sub, i32 %add 31*9880d681SAndroid Build Coastguard Worker ret i32 %sub.add 32*9880d681SAndroid Build Coastguard Worker} 33*9880d681SAndroid Build Coastguard Worker 34*9880d681SAndroid Build Coastguard Workerdefine i32 @compare4(i32 %a) nounwind { 35*9880d681SAndroid Build Coastguard Worker; CHECK: p{{[0-3]}}{{ *}}={{ *}}cmp.gt(r{{[0-9]+}},{{ *}}#10) 36*9880d681SAndroid Build Coastguard Workerentry: 37*9880d681SAndroid Build Coastguard Worker %cmp = icmp sgt i32 %a, 10 38*9880d681SAndroid Build Coastguard Worker %sub = sub nsw i32 %a, 10 39*9880d681SAndroid Build Coastguard Worker %add = add nsw i32 %a, 10 40*9880d681SAndroid Build Coastguard Worker %sub.add = select i1 %cmp, i32 %sub, i32 %add 41*9880d681SAndroid Build Coastguard Worker ret i32 %sub.add 42*9880d681SAndroid Build Coastguard Worker} 43*9880d681SAndroid Build Coastguard Worker 44