c1c890d919af5c233a6eaf6a91ed5e143dd24026
[oota-llvm.git] / test / CodeGen / MBlaze / shift.ll
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-LABEL:        test_i8:
10     ; SHT-LABEL:        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-LABEL:        testc_i8:
27     ; SHT-LABEL:        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-LABEL:        test_i16:
46     ; SHT-LABEL:        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-LABEL:        testc_i16:
63     ; SHT-LABEL:        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-LABEL:        test_i32:
82     ; SHT-LABEL:        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-LABEL:        testc_i32:
100     ; SHT-LABEL:        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 }