blob: c50a23354678d2e66ef838c0414f9c5f6b655768 [file] [log] [blame]
Dan Gohmanfce288f2009-09-09 00:09:15 +00001; RUN: llc < %s -march=arm | FileCheck %s
Evan Chengaf9e7a72009-07-21 00:31:12 +00002
Anton Korobeynikova9790d72010-05-15 18:16:59 +00003define i32 @t9(i32 %v) nounwind readnone {
Evan Chengaf9e7a72009-07-21 00:31:12 +00004entry:
Anton Korobeynikova9790d72010-05-15 18:16:59 +00005; CHECK: t9:
Evan Chengaf9e7a72009-07-21 00:31:12 +00006; CHECK: add r0, r0, r0, lsl #3
7 %0 = mul i32 %v, 9
8 ret i32 %0
9}
10
Anton Korobeynikova9790d72010-05-15 18:16:59 +000011define i32 @t7(i32 %v) nounwind readnone {
Evan Chengaf9e7a72009-07-21 00:31:12 +000012entry:
Anton Korobeynikova9790d72010-05-15 18:16:59 +000013; CHECK: t7:
Evan Chengaf9e7a72009-07-21 00:31:12 +000014; CHECK: rsb r0, r0, r0, lsl #3
15 %0 = mul i32 %v, 7
16 ret i32 %0
17}
Anton Korobeynikova9790d72010-05-15 18:16:59 +000018
19define i32 @t5(i32 %v) nounwind readnone {
20entry:
21; CHECK: t5:
22; CHECK: add r0, r0, r0, lsl #2
23 %0 = mul i32 %v, 5
24 ret i32 %0
25}
26
27define i32 @t3(i32 %v) nounwind readnone {
28entry:
29; CHECK: t3:
30; CHECK: add r0, r0, r0, lsl #1
31 %0 = mul i32 %v, 3
32 ret i32 %0
33}
34
35define i32 @t12288(i32 %v) nounwind readnone {
36entry:
37; CHECK: t12288:
38; CHECK: add r0, r0, r0, lsl #1
Jim Grosbach9ce75622010-09-17 21:58:46 +000039; CHECK: lsl{{.*}}#12
Anton Korobeynikova9790d72010-05-15 18:16:59 +000040 %0 = mul i32 %v, 12288
41 ret i32 %0
42}
43
Anton Korobeynikov2d7ea042012-03-19 19:19:50 +000044define i32 @tn9(i32 %v) nounwind readnone {
45entry:
46; CHECK: tn9:
47; CHECK: add r0, r0, r0, lsl #3
48; CHECK: rsb r0, r0, #0
49 %0 = mul i32 %v, -9
50 ret i32 %0
51}
52
53define i32 @tn7(i32 %v) nounwind readnone {
54entry:
55; CHECK: tn7:
56; CHECK: sub r0, r0, r0, lsl #3
57 %0 = mul i32 %v, -7
58 ret i32 %0
59}
60
61define i32 @tn5(i32 %v) nounwind readnone {
62entry:
63; CHECK: tn5:
64; CHECK: add r0, r0, r0, lsl #2
65; CHECK: rsb r0, r0, #0
66 %0 = mul i32 %v, -5
67 ret i32 %0
68}
69
70define i32 @tn3(i32 %v) nounwind readnone {
71entry:
72; CHECK: tn3:
73; CHECK: sub r0, r0, r0, lsl #2
74 %0 = mul i32 %v, -3
75 ret i32 %0
76}
77
78define i32 @tn12288(i32 %v) nounwind readnone {
79entry:
80; CHECK: tn12288:
81; CHECK: sub r0, r0, r0, lsl #2
82; CHECK: lsl{{.*}}#12
83 %0 = mul i32 %v, -12288
84 ret i32 %0
85}