Home | History | Annotate | Download | only in MBlaze
      1 ; Ensure that shifts are lowered to loops when the barrel shifter unit is
      2 ; not available in the hardware and that loops are not used when the
      3 ; barrel shifter unit is available in the hardware.
      4 ;
      5 ; RUN: llc < %s -march=mblaze | FileCheck -check-prefix=FUN %s
      6 ; RUN: llc < %s -march=mblaze -mattr=+barrel | FileCheck -check-prefix=SHT %s
      7 
      8 define i8 @test_i8(i8 %a, i8 %b) {
      9     ; FUN:        test_i8:
     10     ; SHT:        test_i8:
     11 
     12     %tmp.1 = shl i8 %a, %b
     13     ; FUN:        andi
     14     ; FUN:        add
     15     ; FUN:        bnei
     16     ; SHT-NOT:    bnei
     17 
     18     ret i8 %tmp.1
     19     ; FUN:        rtsd
     20     ; SHT:        rtsd
     21     ; FUN-NOT:    bsll
     22     ; SHT-NEXT:   bsll
     23 }
     24 
     25 define i8 @testc_i8(i8 %a, i8 %b) {
     26     ; FUN:        testc_i8:
     27     ; SHT:        testc_i8:
     28 
     29     %tmp.1 = shl i8 %a, 5
     30     ; FUN:        andi
     31     ; FUN:        add
     32     ; FUN:        bnei
     33     ; SHT-NOT:    andi
     34     ; SHT-NOT:    add
     35     ; SHT-NOT:    bnei
     36 
     37     ret i8 %tmp.1
     38     ; FUN:        rtsd
     39     ; SHT:        rtsd
     40     ; FUN-NOT:    bsll
     41     ; SHT-NEXT:   bslli
     42 }
     43 
     44 define i16 @test_i16(i16 %a, i16 %b) {
     45     ; FUN:        test_i16:
     46     ; SHT:        test_i16:
     47 
     48     %tmp.1 = shl i16 %a, %b
     49     ; FUN:        andi
     50     ; FUN:        add
     51     ; FUN:        bnei
     52     ; SHT-NOT:    bnei
     53 
     54     ret i16 %tmp.1
     55     ; FUN:        rtsd
     56     ; SHT:        rtsd
     57     ; FUN-NOT:    bsll
     58     ; SHT-NEXT:   bsll
     59 }
     60 
     61 define i16 @testc_i16(i16 %a, i16 %b) {
     62     ; FUN:        testc_i16:
     63     ; SHT:        testc_i16:
     64 
     65     %tmp.1 = shl i16 %a, 5
     66     ; FUN:        andi
     67     ; FUN:        add
     68     ; FUN:        bnei
     69     ; SHT-NOT:    andi
     70     ; SHT-NOT:    add
     71     ; SHT-NOT:    bnei
     72 
     73     ret i16 %tmp.1
     74     ; FUN:        rtsd
     75     ; SHT:        rtsd
     76     ; FUN-NOT:    bsll
     77     ; SHT-NEXT:   bslli
     78 }
     79 
     80 define i32 @test_i32(i32 %a, i32 %b) {
     81     ; FUN:        test_i32:
     82     ; SHT:        test_i32:
     83 
     84     %tmp.1 = shl i32 %a, %b
     85     ; FUN:        andi
     86     ; FUN:        add
     87     ; FUN:        bnei
     88     ; SHT-NOT:    andi
     89     ; SHT-NOT:    bnei
     90 
     91     ret i32 %tmp.1
     92     ; FUN:        rtsd
     93     ; SHT:        rtsd
     94     ; FUN-NOT:    bsll
     95     ; SHT-NEXT:   bsll
     96 }
     97 
     98 define i32 @testc_i32(i32 %a, i32 %b) {
     99     ; FUN:        testc_i32:
    100     ; SHT:        testc_i32:
    101 
    102     %tmp.1 = shl i32 %a, 5
    103     ; FUN:        andi
    104     ; FUN:        add
    105     ; FUN:        bnei
    106     ; SHT-NOT:    andi
    107     ; SHT-NOT:    add
    108     ; SHT-NOT:    bnei
    109 
    110     ret i32 %tmp.1
    111     ; FUN:        rtsd
    112     ; SHT:        rtsd
    113     ; FUN-NOT:    bsll
    114     ; SHT-NEXT:   bslli
    115 }
    116