111 lines · plain
1; RUN: llc < %s -mtriple thumbv6m-eabi | FileCheck %s2 3define i32 @slt_poweroftwo(i32 %a) {4; CHECK-LABEL: slt_poweroftwo:5; CHECK: .long 40956 %b = icmp slt i32 %a, 40967 br i1 %b, label %true, label %false8 9true:10 ret i32 111 12false:13 ret i32 214}15 16define i32 @sle_poweroftwo(i32 %a) {17; CHECK-LABEL: sle_poweroftwo:18; CHECK: movs r1, #119; CHECK: lsls r1, r1, #1220 %b = icmp sle i32 %a, 409621 br i1 %b, label %true, label %false22 23true:24 ret i32 125 26false:27 ret i32 228}29 30define i32 @sge_poweroftwo(i32 %a) {31; CHECK-LABEL: sge_poweroftwo:32; CHECK: movs r1, #133; CHECK: lsls r1, r1, #1234 %b = icmp sge i32 %a, 409635 br i1 %b, label %true, label %false36 37true:38 ret i32 139 40false:41 ret i32 242}43 44define i32 @sgt_poweroftwo(i32 %a) {45; CHECK-LABEL: sgt_poweroftwo:46; CHECK: .long 409747 %b = icmp sgt i32 %a, 409648 br i1 %b, label %true, label %false49 50true:51 ret i32 152 53false:54 ret i32 255}56 57define i32 @slt_nearpoweroftwo(i32 %a) {58; CHECK-LABEL: slt_nearpoweroftwo:59; CHECK: movs r1, #160; CHECK: lsls r1, r1, #1261 %b = icmp slt i32 %a, 409762 br i1 %b, label %true, label %false63 64true:65 ret i32 166 67false:68 ret i32 269}70 71define i32 @sle_nearpoweroftwo(i32 %a) {72; CHECK-LABEL: sle_nearpoweroftwo:73; CHECK: .long 409574 %b = icmp sle i32 %a, 409575 br i1 %b, label %true, label %false76 77true:78 ret i32 179 80false:81 ret i32 282}83 84 85define i32 @sge_nearpoweroftwo(i32 %a) {86; CHECK-LABEL: sge_nearpoweroftwo:87; CHECK: .long 409788 %b = icmp sge i32 %a, 409789 br i1 %b, label %true, label %false90 91true:92 ret i32 193 94false:95 ret i32 296}97 98define i32 @sgt_nearpoweroftwo(i32 %a) {99; CHECK-LABEL: sgt_nearpoweroftwo:100; CHECK: movs r1, #1101; CHECK: lsls r1, r1, #12102 %b = icmp sgt i32 %a, 4095103 br i1 %b, label %true, label %false104 105true:106 ret i32 1107 108false:109 ret i32 2110}111