xref: /aosp_15_r20/external/llvm/test/CodeGen/Hexagon/cmp.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
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