blob: 66fca132f04ac377431226ae14820b9cacfe8579 [file] [log] [blame]
Chandler Carruth78e4fce2011-07-02 21:34:52 +00001; RUN: llc < %s -march=thumb -mattr=+thumb2 | FileCheck %s
Anton Korobeynikov52237112009-06-17 18:13:58 +00002
3define i32 @t2ADDrc_255(i32 %lhs) {
Chandler Carruth78e4fce2011-07-02 21:34:52 +00004; CHECK: t2ADDrc_255:
5; CHECK-NOT: bx lr
6; CHECK: add{{.*}} #255
7; CHECK: bx lr
8
Dan Gohmanaceba312010-01-05 17:55:26 +00009 %Rd = add i32 %lhs, 255
Anton Korobeynikov52237112009-06-17 18:13:58 +000010 ret i32 %Rd
11}
12
13define i32 @t2ADDrc_256(i32 %lhs) {
Chandler Carruth78e4fce2011-07-02 21:34:52 +000014; CHECK: t2ADDrc_256:
15; CHECK-NOT: bx lr
16; CHECK: add{{.*}} #256
17; CHECK: bx lr
18
Dan Gohmanaceba312010-01-05 17:55:26 +000019 %Rd = add i32 %lhs, 256
Anton Korobeynikov52237112009-06-17 18:13:58 +000020 ret i32 %Rd
21}
22
23define i32 @t2ADDrc_257(i32 %lhs) {
Chandler Carruth78e4fce2011-07-02 21:34:52 +000024; CHECK: t2ADDrc_257:
25; CHECK-NOT: bx lr
26; CHECK: add{{.*}} #257
27; CHECK: bx lr
28
Dan Gohmanaceba312010-01-05 17:55:26 +000029 %Rd = add i32 %lhs, 257
Anton Korobeynikov52237112009-06-17 18:13:58 +000030 ret i32 %Rd
31}
32
33define i32 @t2ADDrc_4094(i32 %lhs) {
Chandler Carruth78e4fce2011-07-02 21:34:52 +000034; CHECK: t2ADDrc_4094:
35; CHECK-NOT: bx lr
36; CHECK: add{{.*}} #4094
37; CHECK: bx lr
38
Dan Gohmanaceba312010-01-05 17:55:26 +000039 %Rd = add i32 %lhs, 4094
Anton Korobeynikov52237112009-06-17 18:13:58 +000040 ret i32 %Rd
41}
42
43define i32 @t2ADDrc_4095(i32 %lhs) {
Chandler Carruth78e4fce2011-07-02 21:34:52 +000044; CHECK: t2ADDrc_4095:
45; CHECK-NOT: bx lr
46; CHECK: add{{.*}} #4095
47; CHECK: bx lr
48
Dan Gohmanaceba312010-01-05 17:55:26 +000049 %Rd = add i32 %lhs, 4095
Anton Korobeynikov52237112009-06-17 18:13:58 +000050 ret i32 %Rd
51}
52
53define i32 @t2ADDrc_4096(i32 %lhs) {
Chandler Carruth78e4fce2011-07-02 21:34:52 +000054; CHECK: t2ADDrc_4096:
55; CHECK-NOT: bx lr
56; CHECK: add{{.*}} #4096
57; CHECK: bx lr
58
Dan Gohmanaceba312010-01-05 17:55:26 +000059 %Rd = add i32 %lhs, 4096
Anton Korobeynikov52237112009-06-17 18:13:58 +000060 ret i32 %Rd
61}
62
63define i32 @t2ADDrr(i32 %lhs, i32 %rhs) {
Chandler Carruth78e4fce2011-07-02 21:34:52 +000064; CHECK: t2ADDrr:
65; CHECK-NOT: bx lr
66; CHECK: add
67; CHECK: bx lr
68
Dan Gohmanaceba312010-01-05 17:55:26 +000069 %Rd = add i32 %lhs, %rhs
Anton Korobeynikov52237112009-06-17 18:13:58 +000070 ret i32 %Rd
71}
72
73define i32 @t2ADDrs(i32 %lhs, i32 %rhs) {
Chandler Carruth78e4fce2011-07-02 21:34:52 +000074; CHECK: t2ADDrs:
75; CHECK-NOT: bx lr
76; CHECK: add{{.*}} lsl #8
77; CHECK: bx lr
78
Anton Korobeynikov52237112009-06-17 18:13:58 +000079 %tmp = shl i32 %rhs, 8
Dan Gohmanaceba312010-01-05 17:55:26 +000080 %Rd = add i32 %lhs, %tmp
Anton Korobeynikov52237112009-06-17 18:13:58 +000081 ret i32 %Rd
82}
83