blob: 011e61caea966f91568225d7145b2085ebaa1682 [file] [log] [blame]
Bob Wilsonb9350312009-10-27 06:16:45 +00001; RUN: llc < %s -march=arm | FileCheck %s
Rafael Espindola61369da2006-08-14 19:01:24 +00002
Tanya Lattner6263f942008-02-17 20:02:20 +00003define i32 @f1(i32* %v) {
Bob Wilsonb9350312009-10-27 06:16:45 +00004; CHECK: f1:
5; CHECK: ldr r0
Rafael Espindola61369da2006-08-14 19:01:24 +00006entry:
Evan Cheng055b0312009-06-29 07:51:04 +00007 %tmp = load i32* %v
Tanya Lattner6263f942008-02-17 20:02:20 +00008 ret i32 %tmp
Rafael Espindola61369da2006-08-14 19:01:24 +00009}
10
Tanya Lattner6263f942008-02-17 20:02:20 +000011define i32 @f2(i32* %v) {
Bob Wilsonb9350312009-10-27 06:16:45 +000012; CHECK: f2:
13; CHECK: ldr r0
Rafael Espindola61369da2006-08-14 19:01:24 +000014entry:
Evan Cheng055b0312009-06-29 07:51:04 +000015 %tmp2 = getelementptr i32* %v, i32 1023
16 %tmp = load i32* %tmp2
Tanya Lattner6263f942008-02-17 20:02:20 +000017 ret i32 %tmp
Rafael Espindola61369da2006-08-14 19:01:24 +000018}
19
Tanya Lattner6263f942008-02-17 20:02:20 +000020define i32 @f3(i32* %v) {
Bob Wilsonb9350312009-10-27 06:16:45 +000021; CHECK: f3:
22; CHECK: mov
23; CHECK: ldr r0
Rafael Espindola61369da2006-08-14 19:01:24 +000024entry:
Evan Cheng055b0312009-06-29 07:51:04 +000025 %tmp2 = getelementptr i32* %v, i32 1024
26 %tmp = load i32* %tmp2
Tanya Lattner6263f942008-02-17 20:02:20 +000027 ret i32 %tmp
Rafael Espindola61369da2006-08-14 19:01:24 +000028}
Tanya Lattner6263f942008-02-17 20:02:20 +000029
Evan Cheng055b0312009-06-29 07:51:04 +000030define i32 @f4(i32 %base) {
Bob Wilsonb9350312009-10-27 06:16:45 +000031; CHECK: f4:
32; CHECK-NOT: mvn
33; CHECK: ldr r0
Evan Cheng055b0312009-06-29 07:51:04 +000034entry:
35 %tmp1 = sub i32 %base, 128
36 %tmp2 = inttoptr i32 %tmp1 to i32*
37 %tmp3 = load i32* %tmp2
38 ret i32 %tmp3
39}
40
41define i32 @f5(i32 %base, i32 %offset) {
Bob Wilsonb9350312009-10-27 06:16:45 +000042; CHECK: f5:
43; CHECK: ldr r0
Evan Cheng055b0312009-06-29 07:51:04 +000044entry:
45 %tmp1 = add i32 %base, %offset
46 %tmp2 = inttoptr i32 %tmp1 to i32*
47 %tmp3 = load i32* %tmp2
48 ret i32 %tmp3
49}
50
51define i32 @f6(i32 %base, i32 %offset) {
Bob Wilsonb9350312009-10-27 06:16:45 +000052; CHECK: f6:
53; CHECK: ldr r0{{.*}}lsl{{.*}}
Evan Cheng055b0312009-06-29 07:51:04 +000054entry:
55 %tmp1 = shl i32 %offset, 2
56 %tmp2 = add i32 %base, %tmp1
57 %tmp3 = inttoptr i32 %tmp2 to i32*
58 %tmp4 = load i32* %tmp3
59 ret i32 %tmp4
60}
61
62define i32 @f7(i32 %base, i32 %offset) {
Bob Wilsonb9350312009-10-27 06:16:45 +000063; CHECK: f7:
64; CHECK: ldr r0{{.*}}lsr{{.*}}
Evan Cheng055b0312009-06-29 07:51:04 +000065entry:
66 %tmp1 = lshr i32 %offset, 2
67 %tmp2 = add i32 %base, %tmp1
68 %tmp3 = inttoptr i32 %tmp2 to i32*
69 %tmp4 = load i32* %tmp3
70 ret i32 %tmp4
71}