1*9880d681SAndroid Build Coastguard Worker; RUN: llc -march=hexagon --filetype=obj < %s -o - | llvm-objdump -d - | FileCheck %s 2*9880d681SAndroid Build Coastguard Worker 3*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind 4*9880d681SAndroid Build Coastguard Workerdefine i32 @cmpeq(i32 %i) #0 { 5*9880d681SAndroid Build Coastguard Workerentry: 6*9880d681SAndroid Build Coastguard Worker %i.addr = alloca i32, align 4 7*9880d681SAndroid Build Coastguard Worker store i32 %i, i32* %i.addr, align 4 8*9880d681SAndroid Build Coastguard Worker %0 = load i32, i32* %i.addr, align 4 9*9880d681SAndroid Build Coastguard Worker %1 = call i32 @llvm.hexagon.C2.cmpeq(i32 %0, i32 1) 10*9880d681SAndroid Build Coastguard Worker ret i32 %1 11*9880d681SAndroid Build Coastguard Worker} 12*9880d681SAndroid Build Coastguard Worker; CHECK: { p{{[0-3]}} = cmp.eq(r{{[0-9]}}, r{{[0-9]}}) 13*9880d681SAndroid Build Coastguard Worker 14*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind readnone 15*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.hexagon.C2.cmpeq(i32, i32) #1 16*9880d681SAndroid Build Coastguard Worker 17*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind 18*9880d681SAndroid Build Coastguard Workerdefine i32 @cmpgt(i32 %i) #0 { 19*9880d681SAndroid Build Coastguard Workerentry: 20*9880d681SAndroid Build Coastguard Worker %i.addr = alloca i32, align 4 21*9880d681SAndroid Build Coastguard Worker store i32 %i, i32* %i.addr, align 4 22*9880d681SAndroid Build Coastguard Worker %0 = load i32, i32* %i.addr, align 4 23*9880d681SAndroid Build Coastguard Worker %1 = call i32 @llvm.hexagon.C2.cmpgt(i32 %0, i32 2) 24*9880d681SAndroid Build Coastguard Worker ret i32 %1 25*9880d681SAndroid Build Coastguard Worker} 26*9880d681SAndroid Build Coastguard Worker; CHECK: { p{{[0-3]}} = cmp.gt(r{{[0-9]}}, r{{[0-9]}}) 27*9880d681SAndroid Build Coastguard Worker 28*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind readnone 29*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.hexagon.C2.cmpgt(i32, i32) #1 30*9880d681SAndroid Build Coastguard Worker 31*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind 32*9880d681SAndroid Build Coastguard Workerdefine i32 @cmpgtu(i32 %i) #0 { 33*9880d681SAndroid Build Coastguard Workerentry: 34*9880d681SAndroid Build Coastguard Worker %i.addr = alloca i32, align 4 35*9880d681SAndroid Build Coastguard Worker store i32 %i, i32* %i.addr, align 4 36*9880d681SAndroid Build Coastguard Worker %0 = load i32, i32* %i.addr, align 4 37*9880d681SAndroid Build Coastguard Worker %1 = call i32 @llvm.hexagon.C2.cmpgtu(i32 %0, i32 3) 38*9880d681SAndroid Build Coastguard Worker ret i32 %1 39*9880d681SAndroid Build Coastguard Worker} 40*9880d681SAndroid Build Coastguard Worker; CHECK: { p{{[0-3]}} = cmp.gtu(r{{[0-9]}}, r{{[0-9]}}) 41*9880d681SAndroid Build Coastguard Worker 42*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind readnone 43*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.hexagon.C2.cmpgtu(i32, i32) #1 44*9880d681SAndroid Build Coastguard Worker 45*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind 46*9880d681SAndroid Build Coastguard Workerdefine i32 @cmplt(i32 %i) #0 { 47*9880d681SAndroid Build Coastguard Workerentry: 48*9880d681SAndroid Build Coastguard Worker %i.addr = alloca i32, align 4 49*9880d681SAndroid Build Coastguard Worker store i32 %i, i32* %i.addr, align 4 50*9880d681SAndroid Build Coastguard Worker %0 = load i32, i32* %i.addr, align 4 51*9880d681SAndroid Build Coastguard Worker %1 = call i32 @llvm.hexagon.C2.cmplt(i32 %0, i32 4) 52*9880d681SAndroid Build Coastguard Worker ret i32 %1 53*9880d681SAndroid Build Coastguard Worker} 54*9880d681SAndroid Build Coastguard Worker; CHECK: { p{{[0-3]}} = cmp.gt(r{{[0-9]}}, r{{[0-9]}}) 55*9880d681SAndroid Build Coastguard Worker 56*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind readnone 57*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.hexagon.C2.cmplt(i32, i32) #1 58*9880d681SAndroid Build Coastguard Worker 59*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind 60*9880d681SAndroid Build Coastguard Workerdefine i32 @cmpltu(i32 %i) #0 { 61*9880d681SAndroid Build Coastguard Workerentry: 62*9880d681SAndroid Build Coastguard Worker %i.addr = alloca i32, align 4 63*9880d681SAndroid Build Coastguard Worker store i32 %i, i32* %i.addr, align 4 64*9880d681SAndroid Build Coastguard Worker %0 = load i32, i32* %i.addr, align 4 65*9880d681SAndroid Build Coastguard Worker %1 = call i32 @llvm.hexagon.C2.cmpltu(i32 %0, i32 5) 66*9880d681SAndroid Build Coastguard Worker ret i32 %1 67*9880d681SAndroid Build Coastguard Worker} 68*9880d681SAndroid Build Coastguard Worker; CHECK: { p{{[0-3]}} = cmp.gtu(r{{[0-9]}}, r{{[0-9]}}) 69*9880d681SAndroid Build Coastguard Worker 70*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind readnone 71*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.hexagon.C2.cmpltu(i32, i32) #1 72*9880d681SAndroid Build Coastguard Worker 73*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind 74*9880d681SAndroid Build Coastguard Workerdefine i32 @cmpeqi(i32 %i) #0 { 75*9880d681SAndroid Build Coastguard Workerentry: 76*9880d681SAndroid Build Coastguard Worker %i.addr = alloca i32, align 4 77*9880d681SAndroid Build Coastguard Worker store i32 %i, i32* %i.addr, align 4 78*9880d681SAndroid Build Coastguard Worker %0 = load i32, i32* %i.addr, align 4 79*9880d681SAndroid Build Coastguard Worker %1 = call i32 @llvm.hexagon.C2.cmpeqi(i32 %0, i32 10) 80*9880d681SAndroid Build Coastguard Worker ret i32 %1 81*9880d681SAndroid Build Coastguard Worker} 82*9880d681SAndroid Build Coastguard Worker; CHECK: { p{{[0-3]}} = cmp.eq(r{{[0-9]}}, {{.*}}#10) 83*9880d681SAndroid Build Coastguard Worker 84*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind readnone 85*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.hexagon.C2.cmpeqi(i32, i32) #1 86*9880d681SAndroid Build Coastguard Worker 87*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind 88*9880d681SAndroid Build Coastguard Workerdefine i32 @cmpgti(i32 %i) #0 { 89*9880d681SAndroid Build Coastguard Workerentry: 90*9880d681SAndroid Build Coastguard Worker %i.addr = alloca i32, align 4 91*9880d681SAndroid Build Coastguard Worker store i32 %i, i32* %i.addr, align 4 92*9880d681SAndroid Build Coastguard Worker %0 = load i32, i32* %i.addr, align 4 93*9880d681SAndroid Build Coastguard Worker %1 = call i32 @llvm.hexagon.C2.cmpgti(i32 %0, i32 20) 94*9880d681SAndroid Build Coastguard Worker ret i32 %1 95*9880d681SAndroid Build Coastguard Worker} 96*9880d681SAndroid Build Coastguard Worker; CHECK: { p{{[0-3]}} = cmp.gt(r{{[0-9]}}, {{.*}}#20) 97*9880d681SAndroid Build Coastguard Worker 98*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind readnone 99*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.hexagon.C2.cmpgti(i32, i32) #1 100*9880d681SAndroid Build Coastguard Worker 101*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind 102*9880d681SAndroid Build Coastguard Workerdefine i32 @cmpgtui(i32 %i) #0 { 103*9880d681SAndroid Build Coastguard Workerentry: 104*9880d681SAndroid Build Coastguard Worker %i.addr = alloca i32, align 4 105*9880d681SAndroid Build Coastguard Worker store i32 %i, i32* %i.addr, align 4 106*9880d681SAndroid Build Coastguard Worker %0 = load i32, i32* %i.addr, align 4 107*9880d681SAndroid Build Coastguard Worker %1 = call i32 @llvm.hexagon.C2.cmpgtui(i32 %0, i32 40) 108*9880d681SAndroid Build Coastguard Worker ret i32 %1 109*9880d681SAndroid Build Coastguard Worker} 110*9880d681SAndroid Build Coastguard Worker; CHECK: { p{{[0-3]}} = cmp.gtu(r{{[0-9]}}, {{.*}}#40) 111*9880d681SAndroid Build Coastguard Worker 112*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind readnone 113*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.hexagon.C2.cmpgtui(i32, i32) #1 114*9880d681SAndroid Build Coastguard Worker 115*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind 116*9880d681SAndroid Build Coastguard Workerdefine i32 @cmpgei(i32 %i) #0 { 117*9880d681SAndroid Build Coastguard Workerentry: 118*9880d681SAndroid Build Coastguard Worker %i.addr = alloca i32, align 4 119*9880d681SAndroid Build Coastguard Worker store i32 %i, i32* %i.addr, align 4 120*9880d681SAndroid Build Coastguard Worker %0 = load i32, i32* %i.addr, align 4 121*9880d681SAndroid Build Coastguard Worker %1 = call i32 @llvm.hexagon.C2.cmpgei(i32 %0, i32 3) 122*9880d681SAndroid Build Coastguard Worker ret i32 %1 123*9880d681SAndroid Build Coastguard Worker} 124*9880d681SAndroid Build Coastguard Worker; CHECK: { p{{[0-3]}} = cmp.gt(r{{[0-9]}}, {{.*}}#2) 125*9880d681SAndroid Build Coastguard Worker 126*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind readnone 127*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.hexagon.C2.cmpgei(i32, i32) #1 128*9880d681SAndroid Build Coastguard Worker 129*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind 130*9880d681SAndroid Build Coastguard Workerdefine i32 @cmpgeu(i32 %i) #0 { 131*9880d681SAndroid Build Coastguard Workerentry: 132*9880d681SAndroid Build Coastguard Worker %i.addr = alloca i32, align 4 133*9880d681SAndroid Build Coastguard Worker store i32 %i, i32* %i.addr, align 4 134*9880d681SAndroid Build Coastguard Worker %0 = load i32, i32* %i.addr, align 4 135*9880d681SAndroid Build Coastguard Worker %1 = call i32 @llvm.hexagon.C2.cmpgeui(i32 %0, i32 3) 136*9880d681SAndroid Build Coastguard Worker ret i32 %1 137*9880d681SAndroid Build Coastguard Worker} 138*9880d681SAndroid Build Coastguard Worker; CHECK: { p{{[0-3]}} = cmp.gtu(r{{[0-9]}}, {{.*}}#2) 139*9880d681SAndroid Build Coastguard Worker 140*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind readnone 141*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.hexagon.C2.cmpgeui(i32, i32) #1 142*9880d681SAndroid Build Coastguard Worker 143*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind 144*9880d681SAndroid Build Coastguard Workerdefine i32 @cmpgeu0(i32 %i) #0 { 145*9880d681SAndroid Build Coastguard Workerentry: 146*9880d681SAndroid Build Coastguard Worker %i.addr = alloca i32, align 4 147*9880d681SAndroid Build Coastguard Worker store i32 %i, i32* %i.addr, align 4 148*9880d681SAndroid Build Coastguard Worker %0 = load i32, i32* %i.addr, align 4 149*9880d681SAndroid Build Coastguard Worker %1 = call i32 @llvm.hexagon.C2.cmpgeui(i32 %0, i32 0) 150*9880d681SAndroid Build Coastguard Worker ret i32 %1 151*9880d681SAndroid Build Coastguard Worker} 152*9880d681SAndroid Build Coastguard Worker; CHECK: { p{{[0-3]}} = cmp.eq(r{{[0-9]}}, r{{[0-9]}}) 153*9880d681SAndroid Build Coastguard Worker 154*9880d681SAndroid Build Coastguard Worker 155*9880d681SAndroid Build Coastguard Workerattributes #0 = { nounwind "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } 156*9880d681SAndroid Build Coastguard Workerattributes #1 = { nounwind readnone } 157*9880d681SAndroid Build Coastguard Worker 158*9880d681SAndroid Build Coastguard Worker!llvm.ident = !{!0} 159*9880d681SAndroid Build Coastguard Worker 160*9880d681SAndroid Build Coastguard Worker!0 = !{!"Clang 3.1"} 161*9880d681SAndroid Build Coastguard Worker 162