xref: /llvm-project/llvm/test/CodeGen/Thumb/thumb1-cmp.ll (revision 9e3bb196cba231fdc85c5d272762d8c881697299)
1; RUN: llc < %s -mtriple thumbv6m-eabi | FileCheck %s
2
3define i32 @slt_poweroftwo(i32 %a) {
4; CHECK-LABEL: slt_poweroftwo:
5; CHECK: .long   4095
6  %b = icmp slt i32 %a, 4096
7  br i1 %b, label %true, label %false
8
9true:
10  ret i32 1
11
12false:
13  ret i32 2
14}
15
16define i32 @sle_poweroftwo(i32 %a) {
17; CHECK-LABEL: sle_poweroftwo:
18; CHECK: movs    r1, #1
19; CHECK: lsls    r1, r1, #12
20  %b = icmp sle i32 %a, 4096
21  br i1 %b, label %true, label %false
22
23true:
24  ret i32 1
25
26false:
27  ret i32 2
28}
29
30define i32 @sge_poweroftwo(i32 %a) {
31; CHECK-LABEL: sge_poweroftwo:
32; CHECK: movs    r1, #1
33; CHECK: lsls    r1, r1, #12
34  %b = icmp sge i32 %a, 4096
35  br i1 %b, label %true, label %false
36
37true:
38  ret i32 1
39
40false:
41  ret i32 2
42}
43
44define i32 @sgt_poweroftwo(i32 %a) {
45; CHECK-LABEL: sgt_poweroftwo:
46; CHECK: .long   4097
47  %b = icmp sgt i32 %a, 4096
48  br i1 %b, label %true, label %false
49
50true:
51  ret i32 1
52
53false:
54  ret i32 2
55}
56
57define i32 @slt_nearpoweroftwo(i32 %a) {
58; CHECK-LABEL: slt_nearpoweroftwo:
59; CHECK: movs    r1, #1
60; CHECK: lsls    r1, r1, #12
61  %b = icmp slt i32 %a, 4097
62  br i1 %b, label %true, label %false
63
64true:
65  ret i32 1
66
67false:
68  ret i32 2
69}
70
71define i32 @sle_nearpoweroftwo(i32 %a) {
72; CHECK-LABEL: sle_nearpoweroftwo:
73; CHECK: .long   4095
74  %b = icmp sle i32 %a, 4095
75  br i1 %b, label %true, label %false
76
77true:
78  ret i32 1
79
80false:
81  ret i32 2
82}
83
84
85define i32 @sge_nearpoweroftwo(i32 %a) {
86; CHECK-LABEL: sge_nearpoweroftwo:
87; CHECK: .long   4097
88  %b = icmp sge i32 %a, 4097
89  br i1 %b, label %true, label %false
90
91true:
92  ret i32 1
93
94false:
95  ret i32 2
96}
97
98define i32 @sgt_nearpoweroftwo(i32 %a) {
99; CHECK-LABEL: sgt_nearpoweroftwo:
100; CHECK: movs    r1, #1
101; CHECK: lsls    r1, r1, #12
102  %b = icmp sgt i32 %a, 4095
103  br i1 %b, label %true, label %false
104
105true:
106  ret i32 1
107
108false:
109  ret i32 2
110}
111