Home | History | Annotate | Download | only in Thumb
      1 ; RUN: llc < %s -mtriple thumbv6m-eabi | FileCheck %s
      2 
      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
      8 
      9 true:
     10   ret i32 1
     11 
     12 false:
     13   ret i32 2
     14 }
     15 
     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
     22 
     23 true:
     24   ret i32 1
     25 
     26 false:
     27   ret i32 2
     28 }
     29 
     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
     36 
     37 true:
     38   ret i32 1
     39 
     40 false:
     41   ret i32 2
     42 }
     43 
     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
     49 
     50 true:
     51   ret i32 1
     52 
     53 false:
     54   ret i32 2
     55 }
     56 
     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
     63 
     64 true:
     65   ret i32 1
     66 
     67 false:
     68   ret i32 2
     69 }
     70 
     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
     76 
     77 true:
     78   ret i32 1
     79 
     80 false:
     81   ret i32 2
     82 }
     83 
     84 
     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
     90 
     91 true:
     92   ret i32 1
     93 
     94 false:
     95   ret i32 2
     96 }
     97 
     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
    104 
    105 true:
    106   ret i32 1
    107 
    108 false:
    109   ret i32 2
    110 }
    111