xref: /aosp_15_r20/external/llvm/test/CodeGen/Hexagon/cmp_pred.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; RUN: llc -march=hexagon -mcpu=hexagonv5  < %s | FileCheck %s
2*9880d681SAndroid Build Coastguard Worker; Generate various cmpb instruction followed by if (p0) .. if (!p0)...
3*9880d681SAndroid Build Coastguard Workertarget triple = "hexagon"
4*9880d681SAndroid Build Coastguard Worker
5*9880d681SAndroid Build Coastguard Workerdefine i32 @Func_3Ugt(i32 %Enum_Par_Val, i32 %pv2) nounwind readnone {
6*9880d681SAndroid Build Coastguard Workerentry:
7*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: mux
8*9880d681SAndroid Build Coastguard Worker  %cmp = icmp ugt i32 %Enum_Par_Val, %pv2
9*9880d681SAndroid Build Coastguard Worker  %selv = zext i1 %cmp to i32
10*9880d681SAndroid Build Coastguard Worker  ret i32 %selv
11*9880d681SAndroid Build Coastguard Worker}
12*9880d681SAndroid Build Coastguard Worker
13*9880d681SAndroid Build Coastguard Workerdefine i32 @Func_3Uge(i32 %Enum_Par_Val, i32 %pv2) nounwind readnone {
14*9880d681SAndroid Build Coastguard Workerentry:
15*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: mux
16*9880d681SAndroid Build Coastguard Worker  %cmp = icmp uge i32 %Enum_Par_Val, %pv2
17*9880d681SAndroid Build Coastguard Worker  %selv = zext i1 %cmp to i32
18*9880d681SAndroid Build Coastguard Worker  ret i32 %selv
19*9880d681SAndroid Build Coastguard Worker}
20*9880d681SAndroid Build Coastguard Worker
21*9880d681SAndroid Build Coastguard Workerdefine i32 @Func_3Ult(i32 %Enum_Par_Val, i32 %pv2) nounwind readnone {
22*9880d681SAndroid Build Coastguard Workerentry:
23*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: mux
24*9880d681SAndroid Build Coastguard Worker  %cmp = icmp ult i32 %Enum_Par_Val, %pv2
25*9880d681SAndroid Build Coastguard Worker  %selv = zext i1 %cmp to i32
26*9880d681SAndroid Build Coastguard Worker  ret i32 %selv
27*9880d681SAndroid Build Coastguard Worker}
28*9880d681SAndroid Build Coastguard Worker
29*9880d681SAndroid Build Coastguard Workerdefine i32 @Func_3Ule(i32 %Enum_Par_Val, i32 %pv2) nounwind readnone {
30*9880d681SAndroid Build Coastguard Workerentry:
31*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: mux
32*9880d681SAndroid Build Coastguard Worker  %cmp = icmp ule i32 %Enum_Par_Val, %pv2
33*9880d681SAndroid Build Coastguard Worker  %selv = zext i1 %cmp to i32
34*9880d681SAndroid Build Coastguard Worker  ret i32 %selv
35*9880d681SAndroid Build Coastguard Worker}
36*9880d681SAndroid Build Coastguard Worker
37*9880d681SAndroid Build Coastguard Workerdefine i32 @Func_3Ueq(i32 %Enum_Par_Val, i32 %pv2) nounwind readnone {
38*9880d681SAndroid Build Coastguard Workerentry:
39*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: mux
40*9880d681SAndroid Build Coastguard Worker  %cmp = icmp eq i32 %Enum_Par_Val, %pv2
41*9880d681SAndroid Build Coastguard Worker  %selv = zext i1 %cmp to i32
42*9880d681SAndroid Build Coastguard Worker  ret i32 %selv
43*9880d681SAndroid Build Coastguard Worker}
44*9880d681SAndroid Build Coastguard Worker
45*9880d681SAndroid Build Coastguard Workerdefine i32 @Func_3Une(i32 %Enum_Par_Val, i32 %pv2) nounwind readnone {
46*9880d681SAndroid Build Coastguard Workerentry:
47*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: mux
48*9880d681SAndroid Build Coastguard Worker  %cmp = icmp ne i32 %Enum_Par_Val, %pv2
49*9880d681SAndroid Build Coastguard Worker  %selv = zext i1 %cmp to i32
50*9880d681SAndroid Build Coastguard Worker  ret i32 %selv
51*9880d681SAndroid Build Coastguard Worker}
52*9880d681SAndroid Build Coastguard Worker
53*9880d681SAndroid Build Coastguard Workerdefine i32 @Func_3UneC(i32 %Enum_Par_Val) nounwind readnone {
54*9880d681SAndroid Build Coastguard Workerentry:
55*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: mux
56*9880d681SAndroid Build Coastguard Worker  %cmp = icmp ne i32 %Enum_Par_Val, 122
57*9880d681SAndroid Build Coastguard Worker  %selv = zext i1 %cmp to i32
58*9880d681SAndroid Build Coastguard Worker  ret i32 %selv
59*9880d681SAndroid Build Coastguard Worker}
60*9880d681SAndroid Build Coastguard Worker
61*9880d681SAndroid Build Coastguard Workerdefine i32 @Func_3gt(i32 %Enum_Par_Val, i32 %pv2) nounwind readnone {
62*9880d681SAndroid Build Coastguard Workerentry:
63*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: mux
64*9880d681SAndroid Build Coastguard Worker  %cmp = icmp sgt i32 %Enum_Par_Val, %pv2
65*9880d681SAndroid Build Coastguard Worker  %selv = zext i1 %cmp to i32
66*9880d681SAndroid Build Coastguard Worker  ret i32 %selv
67*9880d681SAndroid Build Coastguard Worker}
68*9880d681SAndroid Build Coastguard Worker
69*9880d681SAndroid Build Coastguard Workerdefine i32 @Func_3ge(i32 %Enum_Par_Val, i32 %pv2) nounwind readnone {
70*9880d681SAndroid Build Coastguard Workerentry:
71*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: mux
72*9880d681SAndroid Build Coastguard Worker  %cmp = icmp sge i32 %Enum_Par_Val, %pv2
73*9880d681SAndroid Build Coastguard Worker  %selv = zext i1 %cmp to i32
74*9880d681SAndroid Build Coastguard Worker  ret i32 %selv
75*9880d681SAndroid Build Coastguard Worker}
76*9880d681SAndroid Build Coastguard Worker
77*9880d681SAndroid Build Coastguard Workerdefine i32 @Func_3lt(i32 %Enum_Par_Val, i32 %pv2) nounwind readnone {
78*9880d681SAndroid Build Coastguard Workerentry:
79*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: mux
80*9880d681SAndroid Build Coastguard Worker  %cmp = icmp slt i32 %Enum_Par_Val, %pv2
81*9880d681SAndroid Build Coastguard Worker  %selv = zext i1 %cmp to i32
82*9880d681SAndroid Build Coastguard Worker  ret i32 %selv
83*9880d681SAndroid Build Coastguard Worker}
84*9880d681SAndroid Build Coastguard Worker
85*9880d681SAndroid Build Coastguard Workerdefine i32 @Func_3le(i32 %Enum_Par_Val, i32 %pv2) nounwind readnone {
86*9880d681SAndroid Build Coastguard Workerentry:
87*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: mux
88*9880d681SAndroid Build Coastguard Worker  %cmp = icmp sle i32 %Enum_Par_Val, %pv2
89*9880d681SAndroid Build Coastguard Worker  %selv = zext i1 %cmp to i32
90*9880d681SAndroid Build Coastguard Worker  ret i32 %selv
91*9880d681SAndroid Build Coastguard Worker}
92*9880d681SAndroid Build Coastguard Worker
93*9880d681SAndroid Build Coastguard Workerdefine i32 @Func_3eq(i32 %Enum_Par_Val, i32 %pv2) nounwind readnone {
94*9880d681SAndroid Build Coastguard Workerentry:
95*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: mux
96*9880d681SAndroid Build Coastguard Worker  %cmp = icmp eq i32 %Enum_Par_Val, %pv2
97*9880d681SAndroid Build Coastguard Worker  %selv = zext i1 %cmp to i32
98*9880d681SAndroid Build Coastguard Worker  ret i32 %selv
99*9880d681SAndroid Build Coastguard Worker}
100*9880d681SAndroid Build Coastguard Worker
101*9880d681SAndroid Build Coastguard Workerdefine i32 @Func_3ne(i32 %Enum_Par_Val, i32 %pv2) nounwind readnone {
102*9880d681SAndroid Build Coastguard Workerentry:
103*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: mux
104*9880d681SAndroid Build Coastguard Worker  %cmp = icmp ne i32 %Enum_Par_Val, %pv2
105*9880d681SAndroid Build Coastguard Worker  %selv = zext i1 %cmp to i32
106*9880d681SAndroid Build Coastguard Worker  ret i32 %selv
107*9880d681SAndroid Build Coastguard Worker}
108*9880d681SAndroid Build Coastguard Worker
109*9880d681SAndroid Build Coastguard Workerdefine i32 @Func_3neC(i32 %Enum_Par_Val) nounwind readnone {
110*9880d681SAndroid Build Coastguard Workerentry:
111*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: mux
112*9880d681SAndroid Build Coastguard Worker  %cmp = icmp ne i32 %Enum_Par_Val, 122
113*9880d681SAndroid Build Coastguard Worker  %selv = zext i1 %cmp to i32
114*9880d681SAndroid Build Coastguard Worker  ret i32 %selv
115*9880d681SAndroid Build Coastguard Worker}
116