Home | History | Annotate | Download | only in Mips
      1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
      2 
      3 ; Test that blez/ bgez are selected.
      4 ; RUN: llc -mtriple=mipsel-mti-linux-gnu < %s | FileCheck %s --check-prefix=MIPS32
      5 ; RUN: llc -mtriple=mips64el-mti-linux-gnu < %s | FileCheck %s --check-prefix=MIPS64
      6 ; RUN: llc -mtriple=mipsel-mti-linux-gnu -mattr=+micromips < %s | FileCheck %s --check-prefix=MM
      7 
      8 define void @test_blez(i32 %a) {
      9 ; MIPS32-LABEL: test_blez:
     10 ; MIPS32:       # %bb.0: # %entry
     11 ; MIPS32-NEXT:    blez $4, $BB0_2
     12 ; MIPS32-NEXT:    nop
     13 ; MIPS32-NEXT:  # %bb.1: # %if.then
     14 ; MIPS32-NEXT:    addiu $sp, $sp, -24
     15 ; MIPS32-NEXT:    .cfi_def_cfa_offset 24
     16 ; MIPS32-NEXT:    sw $ra, 20($sp) # 4-byte Folded Spill
     17 ; MIPS32-NEXT:    .cfi_offset 31, -4
     18 ; MIPS32-NEXT:    jal foo1
     19 ; MIPS32-NEXT:    nop
     20 ; MIPS32-NEXT:    lw $ra, 20($sp) # 4-byte Folded Reload
     21 ; MIPS32-NEXT:    addiu $sp, $sp, 24
     22 ; MIPS32-NEXT:  $BB0_2: # %if.end
     23 ; MIPS32-NEXT:    jr $ra
     24 ; MIPS32-NEXT:    nop
     25 ;
     26 ; MIPS64-LABEL: test_blez:
     27 ; MIPS64:       # %bb.0: # %entry
     28 ; MIPS64-NEXT:    sll $1, $4, 0
     29 ; MIPS64-NEXT:    blez $1, .LBB0_2
     30 ; MIPS64-NEXT:    nop
     31 ; MIPS64-NEXT:  # %bb.1: # %if.then
     32 ; MIPS64-NEXT:    daddiu $sp, $sp, -16
     33 ; MIPS64-NEXT:    .cfi_def_cfa_offset 16
     34 ; MIPS64-NEXT:    sd $ra, 8($sp) # 8-byte Folded Spill
     35 ; MIPS64-NEXT:    .cfi_offset 31, -8
     36 ; MIPS64-NEXT:    jal foo1
     37 ; MIPS64-NEXT:    nop
     38 ; MIPS64-NEXT:    ld $ra, 8($sp) # 8-byte Folded Reload
     39 ; MIPS64-NEXT:    daddiu $sp, $sp, 16
     40 ; MIPS64-NEXT:  .LBB0_2: # %if.end
     41 ; MIPS64-NEXT:    jr $ra
     42 ; MIPS64-NEXT:    nop
     43 ;
     44 ; MM-LABEL: test_blez:
     45 ; MM:       # %bb.0: # %entry
     46 ; MM-NEXT:    blez $4, $BB0_3
     47 ; MM-NEXT:    nop
     48 ; MM-NEXT:  # %bb.1: # %entry
     49 ; MM-NEXT:    j $BB0_2
     50 ; MM-NEXT:    nop
     51 ; MM-NEXT:  $BB0_2: # %if.then
     52 ; MM-NEXT:    addiu $sp, $sp, -24
     53 ; MM-NEXT:    .cfi_def_cfa_offset 24
     54 ; MM-NEXT:    sw $ra, 20($sp) # 4-byte Folded Spill
     55 ; MM-NEXT:    .cfi_offset 31, -4
     56 ; MM-NEXT:    jal foo1
     57 ; MM-NEXT:    nop
     58 ; MM-NEXT:    lw $ra, 20($sp) # 4-byte Folded Reload
     59 ; MM-NEXT:    addiu $sp, $sp, 24
     60 ; MM-NEXT:  $BB0_3: # %if.end
     61 ; MM-NEXT:    jrc $ra
     62 entry:
     63   %cmp = icmp sgt i32 %a, 0
     64   br i1 %cmp, label %if.then, label %if.end
     65 
     66 if.then:
     67   tail call void @foo1()
     68   br label %if.end
     69 
     70 if.end:
     71   ret void
     72 }
     73 
     74 declare void @foo1()
     75 
     76 define void @test_bgez(i32 %a) {
     77 ; MIPS32-LABEL: test_bgez:
     78 ; MIPS32:       # %bb.0: # %entry
     79 ; MIPS32-NEXT:    bltz $4, $BB1_2
     80 ; MIPS32-NEXT:    nop
     81 ; MIPS32-NEXT:  # %bb.1: # %if.end
     82 ; MIPS32-NEXT:    jr $ra
     83 ; MIPS32-NEXT:    nop
     84 ; MIPS32-NEXT:  $BB1_2: # %if.then
     85 ; MIPS32-NEXT:    addiu $sp, $sp, -24
     86 ; MIPS32-NEXT:    .cfi_def_cfa_offset 24
     87 ; MIPS32-NEXT:    sw $ra, 20($sp) # 4-byte Folded Spill
     88 ; MIPS32-NEXT:    .cfi_offset 31, -4
     89 ; MIPS32-NEXT:    jal foo1
     90 ; MIPS32-NEXT:    nop
     91 ; MIPS32-NEXT:    lw $ra, 20($sp) # 4-byte Folded Reload
     92 ; MIPS32-NEXT:    jr $ra
     93 ; MIPS32-NEXT:    addiu $sp, $sp, 24
     94 ;
     95 ; MIPS64-LABEL: test_bgez:
     96 ; MIPS64:       # %bb.0: # %entry
     97 ; MIPS64-NEXT:    sll $1, $4, 0
     98 ; MIPS64-NEXT:    bltz $1, .LBB1_2
     99 ; MIPS64-NEXT:    nop
    100 ; MIPS64-NEXT:  # %bb.1: # %if.end
    101 ; MIPS64-NEXT:    jr $ra
    102 ; MIPS64-NEXT:    nop
    103 ; MIPS64-NEXT:  .LBB1_2: # %if.then
    104 ; MIPS64-NEXT:    daddiu $sp, $sp, -16
    105 ; MIPS64-NEXT:    .cfi_def_cfa_offset 16
    106 ; MIPS64-NEXT:    sd $ra, 8($sp) # 8-byte Folded Spill
    107 ; MIPS64-NEXT:    .cfi_offset 31, -8
    108 ; MIPS64-NEXT:    jal foo1
    109 ; MIPS64-NEXT:    nop
    110 ; MIPS64-NEXT:    ld $ra, 8($sp) # 8-byte Folded Reload
    111 ; MIPS64-NEXT:    jr $ra
    112 ; MIPS64-NEXT:    daddiu $sp, $sp, 16
    113 ;
    114 ; MM-LABEL: test_bgez:
    115 ; MM:       # %bb.0: # %entry
    116 ; MM-NEXT:    bgez $4, $BB1_2
    117 ; MM-NEXT:    nop
    118 ; MM-NEXT:  # %bb.1: # %entry
    119 ; MM-NEXT:    j $BB1_3
    120 ; MM-NEXT:    nop
    121 ; MM-NEXT:  $BB1_2: # %if.end
    122 ; MM-NEXT:    jrc $ra
    123 ; MM-NEXT:  $BB1_3: # %if.then
    124 ; MM-NEXT:    addiu $sp, $sp, -24
    125 ; MM-NEXT:    .cfi_def_cfa_offset 24
    126 ; MM-NEXT:    sw $ra, 20($sp) # 4-byte Folded Spill
    127 ; MM-NEXT:    .cfi_offset 31, -4
    128 ; MM-NEXT:    jal foo1
    129 ; MM-NEXT:    nop
    130 ; MM-NEXT:    lw $ra, 20($sp) # 4-byte Folded Reload
    131 ; MM-NEXT:    jr $ra
    132 ; MM-NEXT:    addiu $sp, $sp, 24
    133 entry:
    134   %cmp = icmp slt i32 %a, 0
    135   br i1 %cmp, label %if.then, label %if.end
    136 
    137 if.then:
    138   tail call void @foo1()
    139   br label %if.end
    140 
    141 if.end:
    142   ret void
    143 }
    144