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