[ARM] More MVE compare vector splat combines for ANDs
[llvm-complete.git] / test / CodeGen / Thumb / thumb1-cmp.ll
blob7368957f20fd9374a8a1bb74161004912ea9c395
1 ; RUN: llc < %s -mtriple thumbv6m-eabi | FileCheck %s
3 define 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
9 true:
10   ret i32 1
12 false:
13   ret i32 2
16 define 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
23 true:
24   ret i32 1
26 false:
27   ret i32 2
30 define 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
37 true:
38   ret i32 1
40 false:
41   ret i32 2
44 define 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
50 true:
51   ret i32 1
53 false:
54   ret i32 2
57 define 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
64 true:
65   ret i32 1
67 false:
68   ret i32 2
71 define 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
77 true:
78   ret i32 1
80 false:
81   ret i32 2
85 define 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
91 true:
92   ret i32 1
94 false:
95   ret i32 2
98 define 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
105 true:
106   ret i32 1
108 false:
109   ret i32 2