Home | History | Annotate | Download | only in Mips
      1 ; RUN: llc -march=mipsel < %s | FileCheck %s
      2 ; RUN: llc  -march=mips -mcpu=mips32r6 -mattr=micromips -relocation-model=pic < %s -asm-show-inst | FileCheck %s -check-prefix=MMR6
      3 
      4 @g1 = external global i32
      5 
      6 ; CHECK-LABEL: seteq0:
      7 ; CHECK:  sltiu ${{[0-9]+}}, $4, 1
      8 ; MMR6:   sltiu ${{[0-9]+}}, $4, 1
      9 ; MMR6:   <MCInst #{{[0-9]+}} SLTiu_MM
     10 
     11 define i32 @seteq0(i32 %a) {
     12 entry:
     13   %cmp = icmp eq i32 %a, 0
     14   %conv = zext i1 %cmp to i32
     15   ret i32 %conv
     16 }
     17 
     18 ; CHECK-LABEL: setne0:
     19 ; CHECK:  sltu ${{[0-9]+}}, $zero, $4
     20 ; MMR6:   sltu ${{[0-9]+}}, $zero, $4
     21 ; MMR6:   <MCInst #{{[0-9]+}} SLTu_MM
     22 
     23 define i32 @setne0(i32 %a) {
     24 entry:
     25   %cmp = icmp ne i32 %a, 0
     26   %conv = zext i1 %cmp to i32
     27   ret i32 %conv
     28 }
     29 
     30 ; CHECK-LABEL: slti_beq0:
     31 ; CHECK:  slti $[[R0:[0-9]+]], $4, -32768
     32 ; MMR6:   slti $[[R0:[0-9]+]], $4, -32768
     33 ; MMR6:   <MCInst #{{[0-9]+}} SLTi_MM
     34 ; CHECK:  beqz $[[R0]]
     35 
     36 define void @slti_beq0(i32 %a) {
     37 entry:
     38   %cmp = icmp slt i32 %a, -32768
     39   br i1 %cmp, label %if.then, label %if.end
     40 
     41 if.then:
     42   store i32 %a, i32* @g1, align 4
     43   br label %if.end
     44 
     45 if.end:
     46   ret void
     47 }
     48 
     49 ; CHECK-LABEL: slti_beq1:
     50 ; CHECK:  slt ${{[0-9]+}}
     51 ; MMR6:   slt ${{[0-9]+}}
     52 ; MMR6:   <MCInst #{{[0-9]+}} SLT_MM
     53 
     54 define void @slti_beq1(i32 %a) {
     55 entry:
     56   %cmp = icmp slt i32 %a, -32769
     57   br i1 %cmp, label %if.then, label %if.end
     58 
     59 if.then:
     60   store i32 %a, i32* @g1, align 4
     61   br label %if.end
     62 
     63 if.end:
     64   ret void
     65 }
     66 
     67 ; CHECK-LABEL: slti_beq2:
     68 ; CHECK:  slti $[[R0:[0-9]+]], $4, 32767
     69 ; MMR6:   slti $[[R0:[0-9]+]], $4, 32767
     70 ; MMR6:   <MCInst #{{[0-9]+}} SLTi_MM
     71 ; CHECK:  beqz $[[R0]]
     72 
     73 define void @slti_beq2(i32 %a) {
     74 entry:
     75   %cmp = icmp slt i32 %a, 32767
     76   br i1 %cmp, label %if.then, label %if.end
     77 
     78 if.then:
     79   store i32 %a, i32* @g1, align 4
     80   br label %if.end
     81 
     82 if.end:
     83   ret void
     84 }
     85 
     86 ; CHECK-LABEL: slti_beq3:
     87 ; CHECK:  slt ${{[0-9]+}}
     88 ; MMR6:   slt ${{[0-9]+}}
     89 ; MMR6:   <MCInst #{{[0-9]+}} SLT_MM
     90 
     91 define void @slti_beq3(i32 %a) {
     92 entry:
     93   %cmp = icmp slt i32 %a, 32768
     94   br i1 %cmp, label %if.then, label %if.end
     95 
     96 if.then:
     97   store i32 %a, i32* @g1, align 4
     98   br label %if.end
     99 
    100 if.end:
    101   ret void
    102 }
    103 
    104 ; CHECK-LABEL: sltiu_beq0:
    105 ; CHECK:  sltiu $[[R0:[0-9]+]], $4, 32767
    106 ; MMR6:   sltiu $[[R0:[0-9]+]], $4, 32767
    107 ; MMR6:   <MCInst #{{[0-9]+}} SLTiu_MM
    108 ; CHECK:  beqz $[[R0]]
    109 
    110 define void @sltiu_beq0(i32 %a) {
    111 entry:
    112   %cmp = icmp ult i32 %a, 32767
    113   br i1 %cmp, label %if.then, label %if.end
    114 
    115 if.then:
    116   store i32 %a, i32* @g1, align 4
    117   br label %if.end
    118 
    119 if.end:
    120   ret void
    121 }
    122 
    123 ; CHECK-LABEL: sltiu_beq1:
    124 ; CHECK:  sltu ${{[0-9]+}}
    125 ; MMR6:   sltu ${{[0-9]+}}
    126 ; MMR6:   <MCInst #{{[0-9]+}} SLTu_MM
    127 
    128 define void @sltiu_beq1(i32 %a) {
    129 entry:
    130   %cmp = icmp ult i32 %a, 32768
    131   br i1 %cmp, label %if.then, label %if.end
    132 
    133 if.then:
    134   store i32 %a, i32* @g1, align 4
    135   br label %if.end
    136 
    137 if.end:
    138   ret void
    139 }
    140 
    141 ; CHECK-LABEL: sltiu_beq2:
    142 ; CHECK:  sltiu $[[R0:[0-9]+]], $4, -32768
    143 ; MMR6:   sltiu $[[R0:[0-9]+]], $4, -32768
    144 ; MMR6:   <MCInst #{{[0-9]+}} SLTiu_MM
    145 ; CHECK:  beqz $[[R0]]
    146 
    147 define void @sltiu_beq2(i32 %a) {
    148 entry:
    149   %cmp = icmp ult i32 %a, -32768
    150   br i1 %cmp, label %if.then, label %if.end
    151 
    152 if.then:
    153   store i32 %a, i32* @g1, align 4
    154   br label %if.end
    155 
    156 if.end:
    157   ret void
    158 }
    159 
    160 ; CHECK-LABEL: sltiu_beq3:
    161 ; CHECK:  sltu ${{[0-9]+}}
    162 ; MMR6:   sltu ${{[0-9]+}}
    163 ; MMR6:   <MCInst #{{[0-9]+}} SLTu_MM
    164 
    165 define void @sltiu_beq3(i32 %a) {
    166 entry:
    167   %cmp = icmp ult i32 %a, -32769
    168   br i1 %cmp, label %if.then, label %if.end
    169 
    170 if.then:
    171   store i32 %a, i32* @g1, align 4
    172   br label %if.end
    173 
    174 if.end:
    175   ret void
    176 }
    177